From 7f85835a8f9a1986d8133987d100d22fb9fc7386 Mon Sep 17 00:00:00 2001 From: luk3yx Date: Wed, 3 Aug 2022 14:01:36 +1200 Subject: [PATCH] Re-add static_spawn.lua (fixes #81) --- builtin/game/init.lua | 1 + builtin/game/static_spawn.lua | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 builtin/game/static_spawn.lua diff --git a/builtin/game/init.lua b/builtin/game/init.lua index e71a8eeb9..500e2aa90 100644 --- a/builtin/game/init.lua +++ b/builtin/game/init.lua @@ -25,6 +25,7 @@ dofile(gamepath .. "auth.lua") dofile(commonpath .. "chatcommands.lua") dofile(gamepath .. "chat.lua") dofile(commonpath .. "information_formspecs.lua") +dofile(gamepath .. "static_spawn.lua") dofile(gamepath .. "detached_inventory.lua") assert(loadfile(gamepath .. "falling.lua"))(builtin_shared) dofile(gamepath .. "features.lua") diff --git a/builtin/game/static_spawn.lua b/builtin/game/static_spawn.lua new file mode 100644 index 000000000..6a7706fc0 --- /dev/null +++ b/builtin/game/static_spawn.lua @@ -0,0 +1,23 @@ +-- Minetest: builtin/static_spawn.lua + +local static_spawnpoint_string = core.settings:get("static_spawnpoint") +if static_spawnpoint_string and + static_spawnpoint_string ~= "" and + not core.setting_get_pos("static_spawnpoint") then + error('The static_spawnpoint setting is invalid: "' .. + static_spawnpoint_string .. '"') +end + +local function put_player_in_spawn(player_obj) + local static_spawnpoint = core.setting_get_pos("static_spawnpoint") or core.get_world_spawnpoint() + if not static_spawnpoint then + return false + end + core.log("action", "Moving " .. player_obj:get_player_name() .. + " to spawnpoint at " .. core.pos_to_string(static_spawnpoint)) + player_obj:set_pos(static_spawnpoint) + return true +end + +core.register_on_newplayer(put_player_in_spawn) +core.register_on_respawnplayer(put_player_in_spawn)