41 lines
1.0 KiB
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)
|