From 21d78e0b654cb0cb3032c4f3eca9e1d03f9b396c Mon Sep 17 00:00:00 2001 From: AntumDeluge Date: Mon, 29 May 2017 01:40:40 -0700 Subject: [PATCH] Add debugging output in case of denied spawn --- spawn.lua | 80 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 43 insertions(+), 37 deletions(-) diff --git a/spawn.lua b/spawn.lua index 4ea4ee1..a9841f3 100644 --- a/spawn.lua +++ b/spawn.lua @@ -17,50 +17,56 @@ minetest.register_abm({ interval = spawn_interval, chance = spawn_chance, action = function(pos, node, _, active_object_count_wider) + local spawnit = true + if active_object_count_wider > 5 then - return + spawnit = false end - -- Check light value of node - pos.y = pos.y+1 - local node_light = minetest.get_node_light(pos) + if spawnit then + -- Check light value of node + pos.y = pos.y+1 + local node_light = minetest.get_node_light(pos) - -- Debugging spawning - sneeker.log_debug('Node light level at ' .. tostring(pos.x) .. ',' .. tostring(pos.y) .. ': ' .. tostring(node_light)) + -- Debugging spawning + sneeker.log_debug("Node light level at " .. tostring(pos.x) .. "," .. tostring(pos.y) .. ": " .. tostring(node_light)) - if not node_light then - return - end - if node_light > sneeker.spawn_maxlight then - return - end - if node_light < -1 then - return + if not node_light or node_light > sneeker.spawn_maxlight or node_light < -1 then + spawnit = false + end + + -- Spawn range + if pos.y > 31000 then + spawnit = false + end + + -- Node must be touching air + if minetest.get_node(pos).name ~= "air" then + spawnit = false + end + pos.y = pos.y+1 + if minetest.get_node(pos).name ~= "air" then + spawnit = false + end + + if spawnit then + -- Get total count of sneekers in world + local name, count + for name in pairs(minetest.luaentities) do + if name == sneeker.mob_name then + count = count + 1 + end + end + if count >= sneeker.spawn_cap then + spawnit = false -- Max sneekers already exist + end + end end - -- Spawn range - if pos.y > 31000 then - return + if spawnit then + sneeker.spawn(pos) + else + sneeker.log_debug("Spawn denied") end - - -- Node must be touching air - if minetest.get_node(pos).name ~= "air" then - return - end - pos.y = pos.y+1 - if minetest.get_node(pos).name ~= "air" then - return - end - - -- Get total count of sneekers in world - local name, count - for name in pairs(minetest.luaentities) do - if name == sneeker.mob_name then - count = count + 1 - end - end - if count >= sneeker.spawn_cap then return end -- Max sneekers already exist - - sneeker.spawn(pos) end })