Skip to content

Commit

Permalink
Kick players from beds that have ceased existing
Browse files Browse the repository at this point in the history
  • Loading branch information
appgurueu committed Nov 15, 2024
1 parent a8f7a89 commit 49d874a
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 5 deletions.
11 changes: 9 additions & 2 deletions mods/beds/api.lua
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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",
Expand Down
17 changes: 14 additions & 3 deletions mods/beds/functions.lua
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 49d874a

Please sign in to comment.