yl_spawnit/mobs_banshee.lua

41 lines
1.0 KiB
Lua
Raw Permalink Normal View History

-- 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
2023-07-20 01:07:27 +02:00
spawnit.register({
entity_name = "mobs_banshee:banshee",
2023-07-20 18:30:15 +02:00
groups = { monster = 1 },
2023-07-20 20:11:17 +02:00
chance = yl_spawnit.base_chance,
2023-07-20 18:36:19 +02:00
near = { "bones:bones" },
2023-07-20 01:07:27 +02:00
max_in_area = 1,
max_in_area_radius = 16,
2023-07-20 20:11:17 +02:00
min_time_of_day = yl_spawnit.dusk,
max_time_of_day = yl_spawnit.dawn,
min_player_distance = (mobs_banshee.reach or 14) + 1,
2023-07-20 01:07:27 +02:00
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)