Logikraft/formspecs.lua
2024-05-20 00:14:34 +02:00

40 lines
1.4 KiB
Lua

local _contexts = {}
function logikraft.showNameFormspec(playername,pos)
local node = minetest.get_node(pos)
local nodedesc = minetest.registered_nodes[node.name].description
local text = "Please enter the name of the " .. nodedesc .. " at ("..tostring(pos.x)..","..tostring(pos.y)..","..tostring(pos.z)..")"
local meta = minetest.get_meta(pos)
local oldname = meta:get_string("logikraft:name") or ""
local formspec = {
"formspec_version[4]",
"size[6,3.476]",
"label[0.375,0.5;", minetest.formspec_escape(text), "]",
"field[0.375,1.25;5.25,0.8;name;".. minetest.formspec_escape(nodedesc) .. " name;"..oldname.."]",
"button_exit[1.5,2.3;3,0.8;commit;OK]"
}
_contexts[playername] = pos
minetest.show_formspec(playername, "logikraft:nameFormSpec", table.concat(formspec, ""))
end
minetest.register_on_player_receive_fields(function(player, formname, fields)
if formname ~= "logikraft:nameFormSpec" then return end
if fields.commit then
local pname = player:get_player_name()
if _contexts[pname]
then
local meta = minetest.get_meta(_contexts[pname])
meta:set_string("logikraft:name",fields.name)
minetest.chat_send_player(pname, "Set to "..fields.name)
else
minetest.chat_send_player(pname, "Could not get pos data from formspec")
end
end
end)