local S = minetest.get_translator("mcl_void_damage") local voidtimer = 0 minetest.register_globalstep(function(dtime) voidtimer = voidtimer + dtime if voidtimer > 0.5 then voidtimer = 0 local objs = minetest.object_refs local enable_damage = minetest.settings:get_bool("enable_damage") for id, obj in pairs(objs) do local pos = obj:get_pos() local void, void_deadly = mcl_worlds.is_in_void(pos) if void_deadly then local is_player = obj:is_player() local ent = obj:get_luaentity() local immortal_val = obj:get_armor_groups().immortal local is_immortal = false if immortal_val and immortal_val > 0 then is_immortal = true end if is_immortal or not enable_damage then if is_player then -- If damage is disabled, we can't kill players. -- So we just teleport the player back to spawn. local spawn = mcl_spawn.get_spawn_pos(obj) obj:set_pos(spawn) mcl_worlds.dimension_change(obj, mcl_worlds.pos_to_dimension(spawn)) minetest.chat_send_player(obj:get_player_name(), S("The void is off-limits to you!")) else obj:remove() end elseif enable_damage and not is_immortal then -- Damage enabled, not immortal: Deal void damage (4 HP / 0.5 seconds) if obj:get_hp() > 0 then if is_player then mcl_death_messages.player_damage(obj, S("@1 fell into the endless void.", obj:get_player_name())) end obj:set_hp(obj:get_hp() - 4) end end end end end end)