mirror of
https://codeberg.org/tenplus1/mobs_redo.git
synced 2024-12-24 01:30:22 +01:00
add entity count check for spawners
This commit is contained in:
parent
cce6eabd81
commit
da5e8ef635
18
spawner.lua
18
spawner.lua
@ -71,6 +71,9 @@ minetest.register_node("mobs:spawner", {
|
||||
end,
|
||||
})
|
||||
|
||||
|
||||
local max_per_block = tonumber(minetest.setting_get("max_objects_per_block") or 99)
|
||||
|
||||
-- spawner abm
|
||||
minetest.register_abm({
|
||||
label = "Mob spawner node",
|
||||
@ -81,6 +84,11 @@ minetest.register_abm({
|
||||
|
||||
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
|
||||
local meta = minetest.get_meta(pos)
|
||||
local comm = meta:get_string("command"):split(" ")
|
||||
@ -98,17 +106,23 @@ minetest.register_abm({
|
||||
return
|
||||
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
|
||||
local objs = minetest.get_objects_inside_radius(pos, 9)
|
||||
local count = 0
|
||||
local ent = nil
|
||||
|
||||
-- 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()
|
||||
|
||||
if ent and ent.name == mob then
|
||||
if ent and ent.name and ent.name == mob then
|
||||
count = count + 1
|
||||
end
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user