Skip to content

Commit 6d280f9

Browse files
committed
Kick players from beds that have ceased existing
1 parent 093cd28 commit 6d280f9

File tree

2 files changed

+23
-5
lines changed

2 files changed

+23
-5
lines changed

mods/beds/api.lua

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,15 @@ local function destruct_bed(pos, n)
2525
end
2626
end
2727

28+
beds.is_bed_node = {}
29+
30+
local function register_bed_node(name, def)
31+
beds.is_bed_node[name] = true
32+
core.register_node(name, def)
33+
end
34+
2835
function beds.register_bed(name, def)
29-
minetest.register_node(name .. "_bottom", {
36+
register_bed_node(name .. "_bottom", {
3037
description = def.description,
3138
inventory_image = def.inventory_image,
3239
wield_image = def.wield_image,
@@ -150,7 +157,7 @@ function beds.register_bed(name, def)
150157
end,
151158
})
152159

153-
minetest.register_node(name .. "_top", {
160+
register_bed_node(name .. "_top", {
154161
drawtype = "nodebox",
155162
tiles = def.tiles.top,
156163
use_texture_alpha = "clip",

mods/beds/functions.lua

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -170,13 +170,24 @@ end
170170

171171
-- Public functions
172172

173+
function beds.kick_player(player)
174+
lay_down(player, nil, nil, false)
175+
end
176+
173177
function beds.kick_players()
174-
for name, _ in pairs(beds.player) do
175-
local player = minetest.get_player_by_name(name)
176-
lay_down(player, nil, nil, false)
178+
for name in pairs(beds.player) do
179+
beds.kick_players(core.get_player_by_name(name))
177180
end
178181
end
179182

183+
core.register_globalstep(function()
184+
for name, bed_pos in pairs(beds.bed_position) do
185+
if not beds.is_bed_node[core.get_node(bed_pos).name] then
186+
beds.kick_player(core.get_player_by_name(name))
187+
end
188+
end
189+
end)
190+
180191
function beds.skip_night()
181192
minetest.set_timeofday(0.23)
182193
end

0 commit comments

Comments
 (0)