3 minetest
.register_globalstep(function(dtime
)
4 voidtimer
= voidtimer
+ dtime
5 if voidtimer
> 0.5 then
7 local objs
= minetest
.object_refs
8 local enable_damage
= minetest
.settings
:get_bool("enable_damage")
9 for id
, obj
in pairs(objs
) do
10 local pos
= obj
:get_pos()
11 local void
, void_deadly
= mcl_worlds
.is_in_void(pos
)
13 local is_player
= obj
:is_player()
14 local ent
= obj
:get_luaentity()
15 local immortal_val
= obj
:get_armor_groups().immortal
16 local is_immortal
= false
17 if immortal_val
and immortal_val
> 0 then
20 if is_immortal
or not enable_damage
then
22 -- If damage is disabled, we can't kill players.
23 -- So we just teleport the player back to spawn.
24 local spawn
= mcl_spawn
.get_spawn_pos(obj
)
26 mcl_worlds
.dimension_change(obj
, mcl_worlds
.pos_to_dimension(spawn
))
27 minetest
.chat_send_player(obj
:get_player_name(), "The void is off-limits to you!")
31 elseif enable_damage
and not is_immortal
then
32 -- Damage enabled, not immortal: Deal void damage (4 HP / 0.5 seconds)
33 if obj
:get_hp() > 0 then
35 mcl_death_messages
.player_damage(obj
, string.format("%s fell into the endless void.", obj
:get_player_name()))
37 obj
:set_hp(obj
:get_hp() - 4)