Update monster spawner code from Mobs Redo

This commit is contained in:
Wuzzy 2017-05-24 23:12:13 +02:00
parent 134647a453
commit d8a201ae2d
1 changed files with 16 additions and 2 deletions

View File

@ -78,6 +78,9 @@ minetest.register_node("mobs:spawner", {
_mcl_hardness = 5, _mcl_hardness = 5,
}) })
local max_per_block = tonumber(minetest.setting_get("max_objects_per_block") or 99)
-- spawner abm -- spawner abm
minetest.register_abm({ minetest.register_abm({
label = "Monster Spawner spawning a monster", label = "Monster Spawner spawning a monster",
@ -88,6 +91,11 @@ minetest.register_abm({
action = function(pos, node, active_object_count, active_object_count_wider) action = function(pos, node, active_object_count, active_object_count_wider)
-- return if too many entities already
if active_object_count_wider >= max_per_block then
return
end
-- get meta and command -- get meta and command
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local comm = meta:get_string("command"):split(" ") local comm = meta:get_string("command"):split(" ")
@ -105,17 +113,23 @@ minetest.register_abm({
return return
end end
-- are we spawning a registered mob?
if not mobs.spawning_mobs[mob] then
print ("--- mob doesn't exist", mob)
return
end
-- check objects inside 9x9 area around spawner -- check objects inside 9x9 area around spawner
local objs = minetest.get_objects_inside_radius(pos, 9) local objs = minetest.get_objects_inside_radius(pos, 9)
local count = 0 local count = 0
local ent = nil local ent = nil
-- count mob objects of same type in area -- count mob objects of same type in area
for k, obj in pairs(objs) do for k, obj in ipairs(objs) do
ent = obj:get_luaentity() ent = obj:get_luaentity()
if ent and ent.name == mob then if ent and ent.name and ent.name == mob then
count = count + 1 count = count + 1
end end
end end