89 lines
1.9 KiB
Lua
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
|
|
})
|