From f9f7600017967672ec28ecf139d9d520d64fcef0 Mon Sep 17 00:00:00 2001 From: number Zero Date: Fri, 8 Jul 2016 22:59:51 +0300 Subject: Command block server crash fixed Before that, command block would crash the server if activated when no players are online --- mesecons_commandblock/init.lua | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'mesecons_commandblock/init.lua') diff --git a/mesecons_commandblock/init.lua b/mesecons_commandblock/init.lua index b1a0c6f..6cd0027 100644 --- a/mesecons_commandblock/init.lua +++ b/mesecons_commandblock/init.lua @@ -93,9 +93,22 @@ local function receive_fields(pos, formname, fields, sender) end local function resolve_commands(commands, pos) + local players = minetest.get_connected_players() + + -- No players online: remove all commands containing + -- @nearest, @farthest and @random + if #players == 0 then + commands = commands:gsub("[^\r\n]+", function (line) + if line:find("@nearest") then return "" end + if line:find("@farthest") then return "" end + if line:find("@random") then return "" end + return line + end) + return commands + end + local nearest, farthest = nil, nil local min_distance, max_distance = math.huge, -1 - local players = minetest.get_connected_players() for index, player in pairs(players) do local distance = vector.distance(pos, player:getpos()) if distance < min_distance then -- cgit v1.2.3