local S = minetest.get_translator("default") local SIGN_MAX_TEXT_LENGTH = 64 minetest.register_node( "default:sign", { description = S("Sign"), drawtype = "nodebox", tiles = {"default_sign.png"}, inventory_image = "default_sign_inventory.png", wield_image = "default_sign_inventory.png", paramtype = "light", paramtype2 = "wallmounted", sunlight_propagates = true, walkable = false, node_box = { type = "wallmounted", wall_top = {-0.5+(1/16), 0.5, -0.5+(4/16), 0.5-(1/16), 0.5-(1/16), 0.5-(4/16)}, wall_bottom = {-0.5+(1/16), -0.5, -0.5+(4/16), 0.5-(1/16), -0.5+(1/16), 0.5-(4/16)}, wall_side = {-0.5, -0.5+(4/16), -0.5+(1/16), -0.5+(1/16), 0.5-(4/16), 0.5-(1/16)}, }, groups = {choppy = 2,dig_immediate = 2,attached_node = 1}, is_ground_content = false, sounds = default.node_sound_defaults(), on_construct = function(pos) --local n = minetest.get_node(pos) local meta = minetest.get_meta(pos) meta:set_string("formspec", default.ui.get_page("default:field")) -- Show empty sign text in quotation marks meta:set_string("infotext", S('""')) meta:set_string("text", "") end, on_receive_fields = function(pos, formname, fields, sender) if fields.text == nil then return end local meta = minetest.get_meta(pos) local text = fields.text if string.len(text) > SIGN_MAX_TEXT_LENGTH then text = string.sub(text, 1, SIGN_MAX_TEXT_LENGTH) end minetest.log("action", (sender:get_player_name() or "").. " wrote \""..text.."\" to sign at ".. minetest.pos_to_string(pos)) meta:set_string("text", text) -- Show sign text in quotation marks meta:set_string("infotext", S('"@1"', text)) default.write_name(pos, meta:get_string("text")) end, on_destruct = function(pos) default.write_name(pos, "") end })