From 40f574bea55d5ae5977feaea9c559fd9762e351e Mon Sep 17 00:00:00 2001 From: ElectricSolstice Date: Sun, 13 Oct 2013 21:31:28 -0700 Subject: [PATCH] Configuration of which monsters spawn has been added. --- api.lua | 86 +++++++++++++++++++++++++++++---------------------------- 1 file changed, 44 insertions(+), 42 deletions(-) diff --git a/api.lua b/api.lua index d81f8e1..480e90b 100644 --- a/api.lua +++ b/api.lua @@ -470,49 +470,51 @@ end mobs.spawning_mobs = {} function mobs:register_spawn(name, nodes, max_light, min_light, chance, active_object_count, max_height, spawn_func) - mobs.spawning_mobs[name] = true - minetest.register_abm({ - nodenames = nodes, - neighbors = {"air"}, - interval = 30, - chance = chance, - action = function(pos, node, _, active_object_count_wider) - if active_object_count_wider > active_object_count then - return + if minetest.setting_getbool(string.gsub(name,":","_").."_spawn") ~= false then + mobs.spawning_mobs[name] = true + minetest.register_abm({ + nodenames = nodes, + neighbors = {"air"}, + interval = 30, + chance = chance, + action = function(pos, node, _, active_object_count_wider) + if active_object_count_wider > active_object_count then + return + end + if not mobs.spawning_mobs[name] then + return + end + pos.y = pos.y+1 + if not minetest.env:get_node_light(pos) then + return + end + if minetest.env:get_node_light(pos) > max_light then + return + end + if minetest.env:get_node_light(pos) < min_light then + return + end + if pos.y > max_height then + return + end + if minetest.env:get_node(pos).name ~= "air" then + return + end + pos.y = pos.y+1 + if minetest.env:get_node(pos).name ~= "air" then + return + end + if spawn_func and not spawn_func(pos, node) then + return + end + + if minetest.setting_getbool("display_mob_spawn") then + minetest.chat_send_all("[mobs] Add "..name.." at "..minetest.pos_to_string(pos)) + end + minetest.env:add_entity(pos, name) end - if not mobs.spawning_mobs[name] then - return - end - pos.y = pos.y+1 - if not minetest.env:get_node_light(pos) then - return - end - if minetest.env:get_node_light(pos) > max_light then - return - end - if minetest.env:get_node_light(pos) < min_light then - return - end - if pos.y > max_height then - return - end - if minetest.env:get_node(pos).name ~= "air" then - return - end - pos.y = pos.y+1 - if minetest.env:get_node(pos).name ~= "air" then - return - end - if spawn_func and not spawn_func(pos, node) then - return - end - - if minetest.setting_getbool("display_mob_spawn") then - minetest.chat_send_all("[mobs] Add "..name.." at "..minetest.pos_to_string(pos)) - end - minetest.env:add_entity(pos, name) - end - }) + }) + end end function mobs:register_arrow(name, def)