From 2b4427a3adba8cd48b006ed123b71a79f456f5c2 Mon Sep 17 00:00:00 2001
From: Peter Nerlich <peter.nerlich+dev@googlemail.com>
Date: Thu, 22 Apr 2021 23:10:55 +0200
Subject: [PATCH] fix stopping trains

---
 advtrains/stop_on_inactivity.lua | 6 ++++--
 init.lua                         | 2 ++
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/advtrains/stop_on_inactivity.lua b/advtrains/stop_on_inactivity.lua
index 8d6addd..b7acfa8 100644
--- a/advtrains/stop_on_inactivity.lua
+++ b/advtrains/stop_on_inactivity.lua
@@ -1,6 +1,6 @@
 local DISABLE_TIMEOUT = tonumber(minetest.settings:get("kif_custom.advtrains.disable_timeout")) or 60 * 60
 
-local trains_disabled = #minetest.get_connected_players == 0
+local trains_disabled = #minetest.get_connected_players() == 0
 local disable_job = nil
 
 
@@ -11,15 +11,17 @@ minetest.register_on_joinplayer(function(player, last_login)
 		disable_job = nil
 	end
 	if trains_disabled then
+		minetest.log("action", "[kif_custom] Enabling trains.")
 		trains_disabled = false
 	end
 end)
 
 minetest.register_on_leaveplayer(function(player, timed_out)
-	if #minetest.get_connected_players() == 0 then
+	if #minetest.get_connected_players() <= 1 then	-- leaving player is still counted
 		-- deactivate trains
 		if disable_job == nil then
 			disable_job = minetest.after(DISABLE_TIMEOUT, function()
+				minetest.log("action", "[kif_custom] No player logged in for a time. Disabling trains.")
 				trains_disabled = true
 				disable_job = nil
 			end)
diff --git a/init.lua b/init.lua
index 06e50e2..3c8f6f6 100644
--- a/init.lua
+++ b/init.lua
@@ -13,6 +13,8 @@ dofile(MP.."/missing_recipes.lua")
 dofile(MP.."/advtrains/survival_recipes.lua")
 -- make trains ignore microblocks and some others
 dofile(MP.."/advtrains/ignore_collisions.lua")
+-- make trains stop some time after last player left server
+dofile(MP.."/advtrains/stop_on_inactivity.lua")
 
 -- warning message for default password (if set)
 if minetest.settings:get("default_password") then
-- 
GitLab