1
0
mirror of https://github.com/minetest/minetest_game.git synced 2025-01-05 04:50:18 +01:00

Kick players from beds that have ceased existing

This commit is contained in:
Lars Mueller 2024-11-15 01:19:52 +01:00
parent a8f7a89dac
commit 49d874a4a1
2 changed files with 23 additions and 5 deletions

View File

@ -25,8 +25,15 @@ local function destruct_bed(pos, n)
end
end
beds.is_bed_node = {}
local function register_bed_node(name, def)
beds.is_bed_node[name] = true
core.register_node(name, def)
end
function beds.register_bed(name, def)
minetest.register_node(name .. "_bottom", {
register_bed_node(name .. "_bottom", {
description = def.description,
inventory_image = def.inventory_image,
wield_image = def.wield_image,
@ -150,7 +157,7 @@ function beds.register_bed(name, def)
end,
})
minetest.register_node(name .. "_top", {
register_bed_node(name .. "_top", {
drawtype = "nodebox",
tiles = def.tiles.top,
use_texture_alpha = "clip",

View File

@ -170,13 +170,24 @@ end
-- Public functions
function beds.kick_player(player)
lay_down(player, nil, nil, false)
end
function beds.kick_players()
for name, _ in pairs(beds.player) do
local player = minetest.get_player_by_name(name)
lay_down(player, nil, nil, false)
for name in pairs(beds.player) do
beds.kick_players(core.get_player_by_name(name))
end
end
core.register_globalstep(function()
for name, bed_pos in pairs(beds.bed_position) do
if not beds.is_bed_node[core.get_node(bed_pos).name] then
beds.kick_player(core.get_player_by_name(name))
end
end
end)
function beds.skip_night()
minetest.set_timeofday(0.23)
end