Zombie piglin no longer prevent sleep unless hostile.

This commit is contained in:
ancientmarinerdev 2023-05-14 22:48:33 +01:00
parent d6192dda67
commit e2688c03e3
1 changed files with 9 additions and 5 deletions

View File

@ -117,19 +117,23 @@ local function lay_down(player, pos, bed_pos, state, skip)
end
-- No sleeping if monsters nearby.
-- The exceptions above apply.
-- Zombie piglin only prevent sleep while they are hostle.
for _, obj in pairs(minetest.get_objects_inside_radius(bed_pos, 8)) do
if obj and not obj:is_player() then
local ent = obj:get_luaentity()
local mobname = ent.name
local def = minetest.registered_entities[mobname]
-- Approximation of monster detection range
if def.is_mob and ((mobname ~= "mobs_mc:pigman" and def.type == "monster" and not monster_exceptions[mobname]) or (mobname == "mobs_mc:pigman" and ent.state == "attack")) then
if math.abs(bed_pos.y - obj:get_pos().y) <= 5 then
return false, S("You can't sleep now, monsters are nearby!")
if def.is_mob and (def.type == "monster" or mobname == "mobs_mc:zombified_piglin") then
if monster_exceptions[mobname] or
(mobname == "mobs_mc:zombified_piglin" and ent.state ~= "attack") then
-- Some exceptions do not prevent sleep. Zombie piglin only prevent sleep while they are hostile.
else
if math.abs(bed_pos.y - obj:get_pos().y) <= 5 then
return false, S("You can't sleep now, monsters are nearby!")
end
end
end
end
end
end