2021-03-29 20:45:34 +01:00

89 lines
1.9 KiB
Lua

local S = minetest.get_translator("sfinv_home")
-- static spawn position
local statspawn = minetest.string_to_pos(
minetest.settings:get("static_spawnpoint")) or {x = 0, y = 12, z = 0}
local get_formspec = function(name)
local formspec = "size[6,2]"
.. "button_exit[2,2.5;4,1;home_gui_go;" .. S("Go Home") .. "]"
.. "button_exit[2,4.5;4,1;home_gui_set;" .. S("Set Home") .. "]"
.. "button_exit[2,6.5;4,1;home_gui_spawn;" .. S("Spawn") .. "]"
local home = sethome.get(name)
if home then
formspec = formspec
.. "label[2,1.5;" .. S("Home set to:") .. " "
.. minetest.pos_to_string(vector.round(home)) .. "]"
else
formspec = formspec
.. "label[2,1.5;" .. S("Home point has not been set!") .. "]"
end
return formspec
end
-- register homegui page
sfinv.register_page("sfinv_home:homegui", {
title = S("Home"),
get = function(self, player, context)
local name = player:get_player_name()
return sfinv.make_formspec(player, context, get_formspec(name))
end,
is_in_nav = function(self, player, context)
local name = player:get_player_name()
return minetest.get_player_privs(name).home
end,
on_enter = function(self, player, context) end,
on_leave = function(self, player, context) end,
on_player_receive_fields = function(self, player, context, fields)
local name = player:get_player_name()
if not minetest.get_player_privs(name).home then
return
end
if fields.home_gui_set then
sethome.set(name, player:get_pos())
sfinv.set_player_inventory_formspec(player)
elseif fields.home_gui_go then
sethome.go(name)
elseif fields.home_gui_spawn then
player:set_pos(statspawn)
end
end
})
-- spawn command
minetest.register_chatcommand("spawn", {
description = S("Go to Spawn"),
privs = {home = true},
func = function(name)
local player = minetest.get_player_by_name(name)
player:set_pos(statspawn)
end
})