forked from VoxeLibre/VoxeLibre
Prevent player from sleeping if monsters or too far from bed
This commit is contained in:
parent
2b3a2e67b5
commit
299bb332dc
|
@ -50,6 +50,27 @@ local function lay_down(player, pos, bed_pos, state, skip)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if bed_pos then
|
||||||
|
-- No sleeping if monsters nearby
|
||||||
|
local objs = minetest.get_objects_inside_radius(bed_pos, 8)
|
||||||
|
for _, obj in ipairs(objs) do
|
||||||
|
if obj ~= nil and not obj:is_player() then
|
||||||
|
local def = minetest.registered_entities[obj:get_luaentity().name]
|
||||||
|
-- Approximation of monster detection range
|
||||||
|
if def._cmi_is_mob and def.type == "monster" and math.abs(bed_pos.y - obj:get_pos().y) <= 5 then
|
||||||
|
minetest.chat_send_player(name, "You can't sleep now, monsters are nearby!")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- No sleeping if too far away
|
||||||
|
if vector.distance(bed_pos, pos) > 2 then
|
||||||
|
minetest.chat_send_player(name, "You can't sleep, the bed's too far away!")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- stand up
|
-- stand up
|
||||||
if state ~= nil and not state then
|
if state ~= nil and not state then
|
||||||
local p = mcl_beds.pos[name] or nil
|
local p = mcl_beds.pos[name] or nil
|
||||||
|
|
Loading…
Reference in New Issue