From dbaa1c5ad20715bc85f995e7f06ceaed8957e52e Mon Sep 17 00:00:00 2001 From: tacigar Date: Wed, 21 Dec 2016 16:47:43 +0900 Subject: [PATCH] Add Nametag --- maidroid_tool/init.lua | 1 + maidroid_tool/nametag.lua | 58 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 maidroid_tool/nametag.lua diff --git a/maidroid_tool/init.lua b/maidroid_tool/init.lua index a7ae94e..55daad7 100644 --- a/maidroid_tool/init.lua +++ b/maidroid_tool/init.lua @@ -12,3 +12,4 @@ dofile(maidroid_tool.modpath .. "/api.lua") dofile(maidroid_tool.modpath .. "/core_writer.lua") dofile(maidroid_tool.modpath .. "/egg_writer.lua") dofile(maidroid_tool.modpath .. "/crafting.lua") +dofile(maidroid_tool.modpath .. "/nametag.lua") diff --git a/maidroid_tool/nametag.lua b/maidroid_tool/nametag.lua new file mode 100644 index 0000000..a62baed --- /dev/null +++ b/maidroid_tool/nametag.lua @@ -0,0 +1,58 @@ +------------------------------------------------------------ +-- Copyright (c) 2016 tacigar. All rights reserved. +-- https://github.com/tacigar/maidroid +------------------------------------------------------------ + +local formspec = "size[4,1.25]" + .. default.gui_bg + .. default.gui_bg_img + .. default.gui_slots + .. "button_exit[3,0.25;1,0.875;apply_name;Apply]" + .. "field[0.5,0.5;2.75,1;name;name;]" + +local maidroid_buf = {} -- for buffer of target maidroids. + +minetest.register_craftitem("maidroid_tool:nametag", { + description = "maidroid tool : nametag", + inventory_image = "maidroid_tool_nametag.png", + stack_max = 1, + + on_use = function(itemstack, user, pointed_thing) + if pointed_thing.type ~= "object" then + return nil + end + + local obj = pointed_thing.ref + local luaentity = obj:get_luaentity() + + if not obj:is_player() and luaentity then + local name = luaentity.name + print(name) + print(luaentity:is_named()) + + if maidroid.registered_maidroids[name] and not luaentity:is_named() then + local player_name = user:get_player_name() + + minetest.show_formspec(player_name, "maidroid_tool:nametag", formspec) + maidroid_buf[player_name] = luaentity + return itemstack + end + end + return nil + end, +}) + +minetest.register_on_player_receive_fields(function(player, formname, fields) + if formname ~= "maidroid_tool:nametag" then + return + end + + if fields.name then + local luaentity = maidroid_buf[player:get_player_name()] + luaentity.nametag = fields.name + + luaentity.object:set_nametag_attributes{ + text = fields.name, + } + end +end)