yl_spawnit/mobs_banshee.lua

41 lines
1.0 KiB
Lua

-- https://gitea.your-land.de/your-land/bugtracker/issues/5238#issuecomment-61128
local function is_valid_bones(pos)
local meta = minetest.get_meta(pos)
if meta:get_string("owner") ~= "" then
-- prevent spawning on fresh bones
return false
end
local inv = meta:get_inventory()
if inv:is_empty("main") then
-- prevent spawning on player-placed bones nodes
return false
end
return true
end
spawnit.register({
entity_name = "mobs_banshee:banshee",
groups = { monster = 1 },
chance = yl_spawnit.base_chance,
near = { "bones:bones" },
max_in_area = 1,
max_in_area_radius = 16,
min_time_of_day = yl_spawnit.dusk,
max_time_of_day = yl_spawnit.dawn,
min_player_distance = (mobs_banshee.reach or 14) + 1,
spawn_in_protected = false,
check_pos = function(pos)
local pos1 = vector.subtract(pos, 1)
local pos2 = vector.add(pos, 1)
local poss = minetest.find_nodes_in_area(pos1, pos2, "bones:bones")
for i = 1, #poss do
if is_valid_bones(poss[i]) then
return true
end
end
return false
end,
}, yl_spawnit.settings.check_nodes)