53 lines
1.3 KiB
Lua
53 lines
1.3 KiB
Lua
local NAME = minetest.get_current_modname()
|
|
|
|
local formspec =
|
|
"size[6,1]" ..
|
|
"real_coordinates[true]" ..
|
|
"textarea[0,0;5,1;name;Name;]" ..
|
|
"button_exit[5,0;1,1;confirm;Confirm]" ..
|
|
"bgcolor[#FC05E344;false]"
|
|
|
|
local player_pointed_pos = {}
|
|
|
|
minetest.register_craftitem(NAME .. ":nametag", {
|
|
description = "Nametag",
|
|
inventory_image = "nametag.png",
|
|
stack_max = 128,
|
|
on_place = function(itemstack, placer, pointed_thing)
|
|
-- TODO Check that nodes does not already interact with the grid
|
|
if pointed_thing["type"] == "node" then
|
|
local n = placer:get_player_name()
|
|
player_pointed_pos[n] = pointed_thing.under
|
|
minetest.show_formspec(n, NAME .. ":nametag", formspec)
|
|
end
|
|
return itemstack
|
|
end
|
|
})
|
|
|
|
minetest.register_on_player_receive_fields(function(player, form, fields)
|
|
if form ~= NAME .. ":nametag" then
|
|
return false
|
|
end
|
|
|
|
local p = player_pointed_pos[player:get_player_name()]
|
|
|
|
if p and fields.name then
|
|
local meta = minetest.get_meta(p)
|
|
meta:set_string("infotext", fields.name)
|
|
local stack = player:get_wielded_item()
|
|
stack:set_count(stack:get_count() -1)
|
|
player:set_wielded_item(stack)
|
|
return true
|
|
end
|
|
|
|
end)
|
|
|
|
|
|
minetest.register_craft({
|
|
type = "shapeless",
|
|
output = NAME .. ":nametag",
|
|
recipe = {
|
|
"farming:string", "default:paper"
|
|
}
|
|
})
|