mirror of
https://github.com/luanti-org/minetest_game.git
synced 2025-04-30 13:11:41 -04:00
Merge f317a8943a
into 838ad60ad0
This commit is contained in:
commit
84c4ec093c
4 changed files with 25 additions and 5 deletions
|
@ -9,6 +9,7 @@ read_globals = {
|
||||||
"DIR_DELIM",
|
"DIR_DELIM",
|
||||||
"core",
|
"core",
|
||||||
"minetest",
|
"minetest",
|
||||||
|
"core",
|
||||||
"dump",
|
"dump",
|
||||||
"vector",
|
"vector",
|
||||||
"VoxelManip", "VoxelArea",
|
"VoxelManip", "VoxelArea",
|
||||||
|
|
|
@ -47,6 +47,7 @@ Beds API
|
||||||
|
|
||||||
* `beds.can_dig(bed_pos)` Returns a boolean whether the bed at `bed_pos` may be dug
|
* `beds.can_dig(bed_pos)` Returns a boolean whether the bed at `bed_pos` may be dug
|
||||||
* `beds.read_spawns() ` Returns a table containing players respawn positions
|
* `beds.read_spawns() ` Returns a table containing players respawn positions
|
||||||
|
* `beds.kick(player)` Forces `player` to leave bed
|
||||||
* `beds.kick_players()` Forces all players to leave bed
|
* `beds.kick_players()` Forces all players to leave bed
|
||||||
* `beds.skip_night()` Sets world time to morning and saves respawn position of all players currently sleeping
|
* `beds.skip_night()` Sets world time to morning and saves respawn position of all players currently sleeping
|
||||||
* `beds.day_interval` Is a table with keys "start" and "finish". Allows you
|
* `beds.day_interval` Is a table with keys "start" and "finish". Allows you
|
||||||
|
|
|
@ -38,8 +38,15 @@ local function destruct_bed(pos, n)
|
||||||
beds.remove_spawns_at(pos)
|
beds.remove_spawns_at(pos)
|
||||||
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)
|
function beds.register_bed(name, def)
|
||||||
minetest.register_node(name .. "_bottom", {
|
register_bed_node(name .. "_bottom", {
|
||||||
description = def.description,
|
description = def.description,
|
||||||
inventory_image = def.inventory_image,
|
inventory_image = def.inventory_image,
|
||||||
wield_image = def.wield_image,
|
wield_image = def.wield_image,
|
||||||
|
@ -166,7 +173,7 @@ function beds.register_bed(name, def)
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node(name .. "_top", {
|
register_bed_node(name .. "_top", {
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
tiles = def.tiles.top,
|
tiles = def.tiles.top,
|
||||||
use_texture_alpha = "clip",
|
use_texture_alpha = "clip",
|
||||||
|
|
|
@ -170,12 +170,23 @@ end
|
||||||
|
|
||||||
-- Public functions
|
-- Public functions
|
||||||
|
|
||||||
function beds.kick_players()
|
function beds.kick(player)
|
||||||
for name, _ in pairs(beds.player) do
|
|
||||||
local player = minetest.get_player_by_name(name)
|
|
||||||
lay_down(player, nil, nil, false)
|
lay_down(player, nil, nil, false)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function beds.kick_players()
|
||||||
|
for name in pairs(beds.player) do
|
||||||
|
beds.kick(core.get_player_by_name(name))
|
||||||
end
|
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(core.get_player_by_name(name))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
function beds.skip_night()
|
function beds.skip_night()
|
||||||
minetest.set_timeofday(0.23)
|
minetest.set_timeofday(0.23)
|
||||||
|
|
Loading…
Add table
Reference in a new issue