From a71ae8e01314d0653f785a022a898636cdf54424 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Rollo Date: Sat, 13 Jan 2018 12:38:55 +0100 Subject: Version 1.0 --- signs/README.md | 2 +- signs/nodes.lua | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'signs') diff --git a/signs/README.md b/signs/README.md index 9e678de..0282d2e 100644 --- a/signs/README.md +++ b/signs/README.md @@ -2,7 +2,7 @@ This mod provides various signs with text display. Text is locked if area is protected. -For more information, see the [forum topic](https://forum.minetest.net/viewtopic.php?f=11&t=13563) at the Minetest forums. +For more information, see the [forum topic](https://forum.minetest.net/viewtopic.php?t=19365) at the Minetest forums. **Dependancies**: default, display\_lib, font\_lib diff --git a/signs/nodes.lua b/signs/nodes.lua index 2b8ab66..926d6e3 100644 --- a/signs/nodes.lua +++ b/signs/nodes.lua @@ -104,7 +104,7 @@ local models = { entity_fields = { right = -3/32, size = { x = 12/16, y = 6/16 }, - resolution = { x = 112, y = 64 }, + resolution = { x = 9, y = 5 }, maxlines = 2, color="#000", }, @@ -127,7 +127,7 @@ local models = { entity_fields = { right = 3/32, size = { x = 12/16, y = 6/16 }, - resolution = { x = 112, y = 64 }, + resolution = { x = 9, y = 5 }, maxlines = 2, color = "#000", }, @@ -149,7 +149,7 @@ local models = { width = 26/32, height = 30/32, entity_fields = { - resolution = { x = 144, y = 64 }, + resolution = { x = 11, y = 5 }, maxlines = 1, color="#000", valign="top", -- cgit v1.2.3 From ea36ed50d886677c79ec7ddf056c9815f040835e Mon Sep 17 00:00:00 2001 From: Pierre-Yves Rollo Date: Thu, 18 Jan 2018 21:46:10 +0100 Subject: Added display_lib.entity_spacing variable to centralize entity spacing. --- signs/common.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'signs') diff --git a/signs/common.lua b/signs/common.lua index 49c6dd4..b49716e 100644 --- a/signs/common.lua +++ b/signs/common.lua @@ -158,7 +158,7 @@ function signs.register_sign(mod, name, model) display_entities = { ["signs:display_text"] = { on_display_update = font_lib.on_display_update, - depth = 0.499 - model.depth, + depth = 0.5 - display_lib.entity_spacing - model.depth, size = { x = model.width, y = model.height }, resolution = { x = 64, y = 64 }, maxlines = 1, -- cgit v1.2.3 From 1c1be8a7c13cb664551503b88516c75b189aed87 Mon Sep 17 00:00:00 2001 From: Thomas--S Date: Sat, 27 Jan 2018 17:40:42 +0100 Subject: Update the entities as soon as mapblock is loaded Useful e.g. after /clearobjects Introduces the group `display_lib_node` --- signs/common.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'signs') diff --git a/signs/common.lua b/signs/common.lua index b49716e..8e899ef 100644 --- a/signs/common.lua +++ b/signs/common.lua @@ -153,7 +153,7 @@ function signs.register_sign(mod, name, model) fixed = {-model.width/2, -model.height/2, 0.5, model.width/2, model.height/2, 0.5 - model.depth}, }, - groups = {choppy=2, dig_immediate=2, not_blocking_trains = 1}, + groups = {choppy=2, dig_immediate=2, not_blocking_trains = 1, display_lib_node = 1}, sounds = default.node_sound_defaults(), display_entities = { ["signs:display_text"] = { -- cgit v1.2.3 From 60e80180c61ad2d851a6f6794c73b5b3b6d002b8 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Rollo Date: Sun, 28 Jan 2018 19:08:07 +0100 Subject: Copyright notices update --- signs/copyright.txt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'signs') diff --git a/signs/copyright.txt b/signs/copyright.txt index d6f87c4..9e3b294 100644 --- a/signs/copyright.txt +++ b/signs/copyright.txt @@ -1,4 +1,10 @@ Code, Textures and Models by Pierre-Yves Rollo (pyrollo) -intllib support (i18n) by fat115 +intllib support (i18n) by (fat115) intllib fallback code and tools by Diego Martínez (kaeza) -Extra contributors : (gpcf) +Extra contributors: +(gpcf) +(Thomas--S) +Translations: +Muhammad Nur Hidayat Yasuyoshi (MuhdNurHidayat) +(fat115) + -- cgit v1.2.3 From 3483f34fa9ac7c537f2ccf1d52b52f147e736659 Mon Sep 17 00:00:00 2001 From: Thomas--S Date: Wed, 31 Jan 2018 21:13:03 +0100 Subject: Use default formspec style --- signs/common.lua | 2 ++ signs/nodes.lua | 1 + 2 files changed, 3 insertions(+) (limited to 'signs') diff --git a/signs/common.lua b/signs/common.lua index 8e899ef..3665ab5 100644 --- a/signs/common.lua +++ b/signs/common.lua @@ -37,6 +37,7 @@ function signs.set_formspec(pos) if maxlines == 1 then formspec = "size[6,3]".. + default.gui_bg .. default.gui_bg_img .. default.gui_slots .. "field[0.5,0.7;5.5,1;display_text;"..F("Text")..";${display_text}]".. "button_exit[2,2;2,1;ok;"..F("Write").."]" else @@ -46,6 +47,7 @@ function signs.set_formspec(pos) end formspec = "size[6,4]".. + default.gui_bg .. default.gui_bg_img .. default.gui_slots .. "textarea[0.5,0.7;5.5,2;display_text;"..F("Text")..""..extralabel..";${display_text}]".. "button_exit[2,3;2,1;ok;"..F("Write").."]" end diff --git a/signs/nodes.lua b/signs/nodes.lua index 926d6e3..354bfd6 100644 --- a/signs/nodes.lua +++ b/signs/nodes.lua @@ -59,6 +59,7 @@ local function edit_poster(pos, node, player) if not minetest.is_protected(pos, player:get_player_name()) then formspec = "size[6.5,7.5]".. + default.gui_bg .. default.gui_bg_img .. default.gui_slots .. "field[0.5,0.7;6,1;display_text;"..F("Title")..";".. minetest.formspec_escape(meta:get_string("display_text")).."]".. "textarea[0.5,1.7;6,6;text;"..F("Text")..";".. -- cgit v1.2.3 From f3970f641eb60bf92492b6715084273cc1bceb74 Mon Sep 17 00:00:00 2001 From: Thomas--S Date: Thu, 1 Feb 2018 16:54:55 +0100 Subject: Seperate signs API from signs definitions Change modnames from *_lib to *_api --- signs/common.lua | 173 ++++++------------------------------------------ signs/compatibility.lua | 6 +- signs/depends.txt | 5 +- signs/nodes.lua | 28 ++++---- 4 files changed, 42 insertions(+), 170 deletions(-) (limited to 'signs') diff --git a/signs/common.lua b/signs/common.lua index 3665ab5..2b40db2 100644 --- a/signs/common.lua +++ b/signs/common.lua @@ -21,113 +21,40 @@ local S = signs.intllib local F = function(...) return minetest.formspec_escape(S(...)) end -function signs.set_display_text(pos,text) - local meta = minetest.get_meta(pos) - meta:set_string("display_text", text) - meta:set_string("infotext", "\""..text.."\"") - display_lib.update_entities(pos) -end -function signs.set_formspec(pos) - local meta = minetest.get_meta(pos) - local ndef = minetest.registered_nodes[minetest.get_node(pos).name] - if ndef and ndef.display_entities and ndef.display_entities["signs:display_text"] then - local maxlines = ndef.display_entities["signs:display_text"].maxlines - local formspec - - if maxlines == 1 then - formspec = "size[6,3]".. - default.gui_bg .. default.gui_bg_img .. default.gui_slots .. - "field[0.5,0.7;5.5,1;display_text;"..F("Text")..";${display_text}]".. - "button_exit[2,2;2,1;ok;"..F("Write").."]" - else - local extralabel = "" - if maxlines then - extralabel = F(" (first %s lines only)"):format(maxlines) - end - - formspec = "size[6,4]".. - default.gui_bg .. default.gui_bg_img .. default.gui_slots .. - "textarea[0.5,0.7;5.5,2;display_text;"..F("Text")..""..extralabel..";${display_text}]".. - "button_exit[2,3;2,1;ok;"..F("Write").."]" - end +--Backwards compatibility functions - meta:set_string("formspec", formspec) - end +signs.set_display_text = function(...) + minetest.log("warning", "signs.set_display_text() is deprecated, please use signs_api.set_display_text() instead.") + return signs_api.set_display_text(...) end -function signs.on_receive_fields(pos, formname, fields, player) - if not minetest.is_protected(pos, player:get_player_name()) then - if fields and (fields.ok or fields.key_enter) then - signs.set_display_text(pos, fields.display_text) - end - end +signs.set_formspec = function(...) + minetest.log("warning", "signs.set_formspec() is deprecated, please use signs_api.set_formspec() instead.") + return signs_api.set_formspec(...) end --- On place callback for direction signs --- (chooses which sign according to look direction) -function signs.on_place_direction(itemstack, placer, pointed_thing) - local name = itemstack:get_name() - local ndef = minetest.registered_nodes[name] - - local bdir = {x = pointed_thing.under.x - pointed_thing.above.x, - y = pointed_thing.under.y - pointed_thing.above.y, - z = pointed_thing.under.z - pointed_thing.above.z} - local pdir = placer:get_look_dir() - - local ndir, test - - if ndef.paramtype2 == "facedir" then - if bdir.x == 0 and bdir.z == 0 then - -- Ceiling or floor pointed (facedir chosen from player dir) - ndir = minetest.dir_to_facedir({x=pdir.x, y=0, z=pdir.z}) - else - -- Wall pointed - ndir = minetest.dir_to_facedir(bdir) - end - - test = {[0]=-pdir.x, pdir.z, pdir.x, -pdir.z} - end - - if ndef.paramtype2 == "wallmounted" then - ndir = minetest.dir_to_wallmounted(bdir) - if ndir == 0 or ndir == 1 then - -- Ceiling or floor - ndir = minetest.dir_to_wallmounted({x=pdir.x, y=0, z=pdir.z}) - end - - test = {0, pdir.z, -pdir.z, -pdir.x, pdir.x} - end +signs.on_receive_fields = function(...) + minetest.log("warning", "signs.on_receive_fields() is deprecated, please use signs_api.on_receive_fields() instead.") + return signs_api.on_receive_fields(...) +end - -- Only for direction signs - if ndef.signs_other_dir then - if test[ndir] > 0 then - itemstack:set_name(ndef.signs_other_dir) - end - itemstack = minetest.item_place(itemstack, placer, pointed_thing, ndir) - itemstack:set_name(name) +signs.on_place_direction = function(...) + minetest.log("warning", "signs.on_place_direction() is deprecated, please use signs_api.on_place_direction() instead.") + return signs_api.on_place_direction(...) +end - return itemstack - else - return minetest.item_place(itemstack, placer, pointed_thing, ndir) - end +signs.on_rotate = function(...) + minetest.log("warning", "signs.on_rotate() is deprecated, please use signs_api.on_rotate() instead.") + return signs_api.on_rotate(...) end --- Handles screwdriver rotation. Direction is affected for direction signs -function signs.on_rotate(pos, node, player, mode, new_param2) - if mode == 2 then - local ndef = minetest.registered_nodes[node.name] - if ndef.signs_other_dir then - minetest.swap_node(pos, {name = ndef.signs_other_dir, - param1 = node.param1, param2 = node.param2}) - display_lib.update_entities(pos) - end - else - display_lib.on_rotate(pos, node, user, mode, new_param2) - end - return false; +signs.register_sign = function(...) + minetest.log("warning", "signs.register_sign() is deprecated, please use signs_api.register_sign() instead.") + return signs_api.register_sign(...) end + -- Generic callback for show_formspec displayed formspecs of "sign" mod minetest.register_on_player_receive_fields(function(player, formname, fields) @@ -142,59 +69,3 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end end end) - -function signs.register_sign(mod, name, model) - -- Default fields - local fields = { - sunlight_propagates = true, - paramtype = "light", - paramtype2 = "facedir", - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = {-model.width/2, -model.height/2, 0.5, - model.width/2, model.height/2, 0.5 - model.depth}, - }, - groups = {choppy=2, dig_immediate=2, not_blocking_trains = 1, display_lib_node = 1}, - sounds = default.node_sound_defaults(), - display_entities = { - ["signs:display_text"] = { - on_display_update = font_lib.on_display_update, - depth = 0.5 - display_lib.entity_spacing - model.depth, - size = { x = model.width, y = model.height }, - resolution = { x = 64, y = 64 }, - maxlines = 1, - }, - - }, - on_place = display_lib.on_place, - on_construct = function(pos) - signs.set_formspec(pos) - display_lib.on_construct(pos) - end, - on_destruct = display_lib.on_destruct, - on_rotate = signs.on_rotate, - on_receive_fields = signs.on_receive_fields, - on_punch = function(pos, node, player, pointed_thing) display_lib.update_entities(pos) end, - } - - -- Node fields override - for key, value in pairs(model.node_fields) do - if key == "groups" then - for key2, value2 in pairs(value) do - fields[key][key2] = value2 - end - else - fields[key] = value - end - end - - if not fields.wield_image then fields.wield_image = fields.inventory_image end - - -- Entity fields override - for key, value in pairs(model.entity_fields) do - fields.display_entities["signs:display_text"][key] = value - end - - minetest.register_node(mod..":"..name, fields) -end diff --git a/signs/compatibility.lua b/signs/compatibility.lua index 3284230..e798a67 100644 --- a/signs/compatibility.lua +++ b/signs/compatibility.lua @@ -43,9 +43,9 @@ local function compatibility_check_1(pos, node) node.name = convert_nodes[node.name] if node.name then node.param2 = wallmounted_to_facedir[node.param2] - display_lib.on_destruct(pos) + display_api.on_destruct(pos) minetest.swap_node(pos, node) - display_lib.on_construct(pos) + display_api.on_construct(pos) end end @@ -76,7 +76,7 @@ local function compatibility_check_2(pos, node) end end -- Create new entity - display_lib.update_entities(pos) + display_api.update_entities(pos) end minetest.register_lbm({ name = "signs:conpatibility_2", diff --git a/signs/depends.txt b/signs/depends.txt index 3feca07..ad3bb8f 100644 --- a/signs/depends.txt +++ b/signs/depends.txt @@ -1,4 +1,5 @@ default intllib? -display_lib -font_lib +display_api +font_api +signs_api diff --git a/signs/nodes.lua b/signs/nodes.lua index 354bfd6..18bf1d6 100644 --- a/signs/nodes.lua +++ b/signs/nodes.lua @@ -28,7 +28,7 @@ local function display_poster(pos, node, player) local def = minetest.registered_nodes[node.name].display_entities["signs:display_text"] -- Title texture - local titletexture = font_lib.make_multiline_texture( + local titletexture = font_api.make_multiline_texture( def.font_name, meta:get_string("display_text"), 116, 12, def.maxlines, def.valign, def.color) @@ -61,9 +61,9 @@ local function edit_poster(pos, node, player) "size[6.5,7.5]".. default.gui_bg .. default.gui_bg_img .. default.gui_slots .. "field[0.5,0.7;6,1;display_text;"..F("Title")..";".. - minetest.formspec_escape(meta:get_string("display_text")).."]".. + minetest.formspec_escape(meta:get_string("display_text")).."]".. "textarea[0.5,1.7;6,6;text;"..F("Text")..";".. - minetest.formspec_escape(meta:get_string("text")).."]".. + minetest.formspec_escape(meta:get_string("text")).."]".. "button_exit[2.25,7;2,1;write;"..F("Write").."]" minetest.show_formspec(player:get_player_name(), node.name.."@"..minetest.pos_to_string(pos)..":edit", @@ -87,14 +87,14 @@ local function on_receive_fields_poster(pos, formname, fields, player) meta:set_string("text", fields.text) meta:set_string("infotext", "\""..fields.display_text .."\"\n"..S("(right-click to read more text)")) - display_lib.update_entities(pos) + display_api.update_entities(pos) display_poster(pos, node, player) end end end -- Text entity for all signs -display_lib.register_display_entity("signs:display_text") +display_api.register_display_entity("signs:display_text") -- Sign models and registration local models = { @@ -103,7 +103,7 @@ local models = { width = 14/16, height = 7/16, entity_fields = { - right = -3/32, + right = -3/32, size = { x = 12/16, y = 6/16 }, resolution = { x = 9, y = 5 }, maxlines = 2, @@ -113,8 +113,8 @@ local models = { description = S("Wooden direction sign"), tiles = { "signs_wooden_direction.png" }, inventory_image = "signs_wooden_inventory.png", - signs_other_dir = 'signs:wooden_left_sign', - on_place = signs.on_place_direction, + signs_other_dir = 'signs:wooden_left_sign', + on_place = signs_api.on_place_direction, drawtype = "mesh", mesh = "signs_dir_right.obj", selection_box = { type="fixed", fixed = {-0.5, -7/32, 0.5, 7/16, 7/32, 7/16}}, @@ -126,7 +126,7 @@ local models = { width = 14/16, height = 7/16, entity_fields = { - right = 3/32, + right = 3/32, size = { x = 12/16, y = 6/16 }, resolution = { x = 9, y = 5 }, maxlines = 2, @@ -136,7 +136,7 @@ local models = { description = S("Wooden direction sign"), tiles = { "signs_wooden_direction.png" }, inventory_image = "signs_wooden_inventory.png", - signs_other_dir = 'signs:wooden_right_sign', + signs_other_dir = 'signs:wooden_right_sign', drawtype = "mesh", mesh = "signs_dir_left.obj", selection_box = { type="fixed", fixed = {-7/16, -7/32, 0.5, 0.5, 7/32, 7/16}}, @@ -158,10 +158,10 @@ local models = { node_fields = { description = S("Poster"), tiles = { "signs_poster_sides.png", "signs_poster_sides.png", - "signs_poster_sides.png", "signs_poster_sides.png", - "signs_poster_sides.png", "signs_poster.png" }, + "signs_poster_sides.png", "signs_poster_sides.png", + "signs_poster_sides.png", "signs_poster.png" }, inventory_image = "signs_poster_inventory.png", - on_construct = display_lib.on_construct, + on_construct = display_api.on_construct, on_rightclick = display_poster, on_receive_fields = on_receive_fields_poster, }, @@ -171,6 +171,6 @@ local models = { -- Node registration for name, model in pairs(models) do - signs.register_sign("signs", name, model) + signs_api.register_sign("signs", name, model) end -- cgit v1.2.3 From 8661a5ca622f35284b6631b0a4364e1961dbfaec Mon Sep 17 00:00:00 2001 From: Pierre-Yves Rollo Date: Mon, 9 Jul 2018 13:55:07 +0200 Subject: Fixed crash when opening Poster formspec due to change in font_api. --- signs/nodes.lua | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'signs') diff --git a/signs/nodes.lua b/signs/nodes.lua index 18bf1d6..bad9811 100644 --- a/signs/nodes.lua +++ b/signs/nodes.lua @@ -28,9 +28,8 @@ local function display_poster(pos, node, player) local def = minetest.registered_nodes[node.name].display_entities["signs:display_text"] -- Title texture - local titletexture = font_api.make_multiline_texture( - def.font_name, meta:get_string("display_text"), - 116, 12, def.maxlines, def.valign, def.color) + local titletexture = font:make_text_texture( + meta:get_string("display_text"), 116, 12, 1, "center") formspec = "size[7,9]".. -- cgit v1.2.3 From e51afb851c996ad60d59b2c1f3e608b0d9b50864 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Rollo Date: Mon, 9 Jul 2018 14:04:51 +0200 Subject: Fix Poster crash (amend) --- signs/nodes.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'signs') diff --git a/signs/nodes.lua b/signs/nodes.lua index bad9811..d635f8f 100644 --- a/signs/nodes.lua +++ b/signs/nodes.lua @@ -26,7 +26,8 @@ local function display_poster(pos, node, player) local formspec local meta = minetest.get_meta(pos) local def = minetest.registered_nodes[node.name].display_entities["signs:display_text"] - + local font = font_api.get_font(meta:get_string("font") or def.font_name) + -- Title texture local titletexture = font:make_text_texture( meta:get_string("display_text"), 116, 12, 1, "center") -- cgit v1.2.3 From 8c7557e45d4744fe35ad058950062cf771640126 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Rollo Date: Fri, 13 Jul 2018 20:41:53 +0200 Subject: Rework all nodes displaying text according to new font_api --- signs/nodes.lua | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'signs') diff --git a/signs/nodes.lua b/signs/nodes.lua index d635f8f..7e2dbe8 100644 --- a/signs/nodes.lua +++ b/signs/nodes.lua @@ -30,12 +30,12 @@ local function display_poster(pos, node, player) -- Title texture local titletexture = font:make_text_texture( - meta:get_string("display_text"), 116, 12, 1, "center") + meta:get_string("display_text"), font:get_height()*8.4, font:get_height(), 1, "center") formspec = "size[7,9]".. "background[0,0;7,9;signs_poster_formspec.png]".. - "image[0,0;8.4,1.5;"..titletexture.."]".. + "image[0,-0.2;8.4,2;"..titletexture.."]".. "textarea[0.3,1.5;7,8;;"..minetest.colorize("#111", minetest.formspec_escape(meta:get_string("text")))..";]".. "bgcolor[#0000]" @@ -105,7 +105,6 @@ local models = { entity_fields = { right = -3/32, size = { x = 12/16, y = 6/16 }, - resolution = { x = 9, y = 5 }, maxlines = 2, color="#000", }, @@ -128,7 +127,6 @@ local models = { entity_fields = { right = 3/32, size = { x = 12/16, y = 6/16 }, - resolution = { x = 9, y = 5 }, maxlines = 2, color = "#000", }, @@ -150,10 +148,10 @@ local models = { width = 26/32, height = 30/32, entity_fields = { - resolution = { x = 11, y = 5 }, + top = -11/32, + size = { x = 26/32, y = 6/32 }, maxlines = 1, - color="#000", - valign="top", + color = "#000", }, node_fields = { description = S("Poster"), -- cgit v1.2.3 From 2793e0ab8f67b28120bc19086efe126c96cd79dd Mon Sep 17 00:00:00 2001 From: Pierre-Yves Rollo Date: Thu, 20 Sep 2018 15:27:42 +0200 Subject: Added simple wooden sign --- signs/nodes.lua | 24 +++++++++++++++++++----- signs/textures/signs_wooden_inventory.png | Bin 606 -> 581 bytes 2 files changed, 19 insertions(+), 5 deletions(-) (limited to 'signs') diff --git a/signs/nodes.lua b/signs/nodes.lua index 7e2dbe8..7500297 100644 --- a/signs/nodes.lua +++ b/signs/nodes.lua @@ -27,7 +27,7 @@ local function display_poster(pos, node, player) local meta = minetest.get_meta(pos) local def = minetest.registered_nodes[node.name].display_entities["signs:display_text"] local font = font_api.get_font(meta:get_string("font") or def.font_name) - + -- Title texture local titletexture = font:make_text_texture( meta:get_string("display_text"), font:get_height()*8.4, font:get_height(), 1, "center") @@ -77,7 +77,7 @@ local function on_receive_fields_poster(pos, formname, fields, player) local node = minetest.get_node(pos) if not minetest.is_protected(pos, player:get_player_name()) and fields then - if formname == node.name.."@"..minetest.pos_to_string(pos)..":display" and + if formname == node.name.."@"..minetest.pos_to_string(pos)..":display" and fields.edit then edit_poster(pos, node, player) end @@ -98,6 +98,21 @@ display_api.register_display_entity("signs:display_text") -- Sign models and registration local models = { + wooden_sign = { + depth = 1/16, + width = 14/16, + height = 12/16, + entity_fields = { + size = { x = 12/16, y = 10/16 }, + maxlines = 3, + color = "#000", + }, + node_fields = { + description = S("Wooden sign"), + tiles = { "signs_wooden.png" }, + inventory_image = "signs_wooden_inventory.png", + }, + }, wooden_right_sign = { depth = 1/16, width = 14/16, @@ -111,7 +126,7 @@ local models = { node_fields = { description = S("Wooden direction sign"), tiles = { "signs_wooden_direction.png" }, - inventory_image = "signs_wooden_inventory.png", + inventory_image = "signs_wooden_direction_inventory.png", signs_other_dir = 'signs:wooden_left_sign', on_place = signs_api.on_place_direction, drawtype = "mesh", @@ -133,7 +148,7 @@ local models = { node_fields = { description = S("Wooden direction sign"), tiles = { "signs_wooden_direction.png" }, - inventory_image = "signs_wooden_inventory.png", + inventory_image = "signs_wooden_direction_inventory.png", signs_other_dir = 'signs:wooden_right_sign', drawtype = "mesh", mesh = "signs_dir_left.obj", @@ -171,4 +186,3 @@ for name, model in pairs(models) do signs_api.register_sign("signs", name, model) end - diff --git a/signs/textures/signs_wooden_inventory.png b/signs/textures/signs_wooden_inventory.png index d997480..bb7e949 100644 Binary files a/signs/textures/signs_wooden_inventory.png and b/signs/textures/signs_wooden_inventory.png differ -- cgit v1.2.3 From c1f7b571b8a7592b79fd2f9d01507e642ed35597 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Rollo Date: Thu, 20 Sep 2018 21:15:23 +0200 Subject: Add missing textures --- signs/textures/signs_wooden.png | Bin 0 -> 574 bytes signs/textures/signs_wooden_direction_inventory.png | Bin 0 -> 546 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 signs/textures/signs_wooden.png create mode 100644 signs/textures/signs_wooden_direction_inventory.png (limited to 'signs') diff --git a/signs/textures/signs_wooden.png b/signs/textures/signs_wooden.png new file mode 100644 index 0000000..164948a Binary files /dev/null and b/signs/textures/signs_wooden.png differ diff --git a/signs/textures/signs_wooden_direction_inventory.png b/signs/textures/signs_wooden_direction_inventory.png new file mode 100644 index 0000000..1b8e3d4 Binary files /dev/null and b/signs/textures/signs_wooden_direction_inventory.png differ -- cgit v1.2.3 From c1835931e52769bf50425990370b60dfc9d17f63 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Rollo Date: Thu, 1 Nov 2018 18:10:26 +0100 Subject: Added labels and wooden signs --- signs/crafts.lua | 47 +++++- signs/nodes.lua | 75 +++++++-- signs/svg/poster.svg | 171 ++++++++++++--------- signs/textures/signs_label.png | Bin 0 -> 404 bytes signs/textures/signs_label_medium_inventory.png | Bin 0 -> 406 bytes signs/textures/signs_label_small_inventory.png | Bin 0 -> 417 bytes .../textures/signs_wooden_direction_inventory.png | Bin 546 -> 710 bytes signs/textures/signs_wooden_long.png | Bin 0 -> 524 bytes signs/textures/signs_wooden_long_inventory.png | Bin 0 -> 636 bytes 9 files changed, 202 insertions(+), 91 deletions(-) create mode 100644 signs/textures/signs_label.png create mode 100644 signs/textures/signs_label_medium_inventory.png create mode 100644 signs/textures/signs_label_small_inventory.png create mode 100644 signs/textures/signs_wooden_long.png create mode 100644 signs/textures/signs_wooden_long_inventory.png (limited to 'signs') diff --git a/signs/crafts.lua b/signs/crafts.lua index b4e0206..ef82dbc 100644 --- a/signs/crafts.lua +++ b/signs/crafts.lua @@ -2,17 +2,60 @@ minetest.register_craft({ output = 'signs:wooden_right_sign', recipe = { {'group:wood', 'group:wood', 'group:wood'}, - {'group:wood', 'group:wood', ''}, + {'group:wood', 'group:wood', 'dye:black'}, {'', '', ''}, } }) +minetest.register_craft({ + output = 'signs:wooden_right_sign', + type = 'shapeless', + recipe = { 'signs:wooden_long_sign' } +}) + +minetest.register_craft({ + output = 'signs:wooden_long_sign', + recipe = { + {'group:wood', 'dye:black', 'group:wood'}, + {'group:wood', 'group:wood', 'group:wood'}, + {'', '', ''}, + } +}) + +minetest.register_craft({ + output = 'signs:wooden_long_sign', + type = 'shapeless', + recipe = { 'signs:wooden_right_sign' } +}) + +minetest.register_craft({ + output = 'signs:wooden_sign', + recipe = { + {'', 'dye:black', ''}, + {'group:wood', 'group:wood', 'group:wood'}, + {'group:wood', 'group:wood', 'group:wood'}, + } +}) + minetest.register_craft({ output = 'signs:paper_poster', recipe = { - {'default:paper', 'default:paper', ''}, + {'default:paper', 'default:paper', 'dye:black'}, {'default:paper', 'default:paper', ''}, {'default:paper', 'default:paper', ''}, } }) +minetest.register_craft({ + output = 'signs:label_small', + recipe = { + {'default:paper', 'dye:black'}, + } +}) + +minetest.register_craft({ + output = 'signs:label_small', + recipe = { + {'default:paper', 'default:paper', 'dye:black'}, + } +}) diff --git a/signs/nodes.lua b/signs/nodes.lua index 7500297..c74ab6f 100644 --- a/signs/nodes.lua +++ b/signs/nodes.lua @@ -77,12 +77,12 @@ local function on_receive_fields_poster(pos, formname, fields, player) local node = minetest.get_node(pos) if not minetest.is_protected(pos, player:get_player_name()) and fields then - if formname == node.name.."@"..minetest.pos_to_string(pos)..":display" and - fields.edit then + if formname == node.name.."@"..minetest.pos_to_string(pos)..":display" + and fields.edit then edit_poster(pos, node, player) end - if formname == node.name.."@"..minetest.pos_to_string(pos)..":edit" and - (fields.write or fields.key_enter) then + if formname == node.name.."@"..minetest.pos_to_string(pos)..":edit" + and (fields.write or fields.key_enter) then meta:set_string("display_text", fields.display_text) meta:set_string("text", fields.text) meta:set_string("infotext", "\""..fields.display_text @@ -99,9 +99,7 @@ display_api.register_display_entity("signs:display_text") -- Sign models and registration local models = { wooden_sign = { - depth = 1/16, - width = 14/16, - height = 12/16, + depth = 1/16, width = 14/16, height = 12/16, entity_fields = { size = { x = 12/16, y = 10/16 }, maxlines = 3, @@ -111,12 +109,29 @@ local models = { description = S("Wooden sign"), tiles = { "signs_wooden.png" }, inventory_image = "signs_wooden_inventory.png", + groups= { dig_immediate = 2 }, + }, + }, + wooden_long_sign = { + depth = 1/16, width = 1, height = 7/16, + entity_fields = { + size = { x = 1, y = 6/16 }, + maxlines = 2, + color = "#000", + }, + node_fields = { + description = S("Wooden long sign"), + tiles = { "signs_wooden_long.png", "signs_wooden_long.png", + "signs_wooden_long.png^[transformR90", + "signs_wooden_long.png^[transformR90", + "signs_wooden_long.png", "signs_wooden_long.png", + }, + inventory_image = "signs_wooden_long_inventory.png", + groups= { dig_immediate = 2 }, }, }, wooden_right_sign = { - depth = 1/16, - width = 14/16, - height = 7/16, + depth = 1/16, width = 14/16, height = 7/16, entity_fields = { right = -3/32, size = { x = 12/16, y = 6/16 }, @@ -133,12 +148,11 @@ local models = { mesh = "signs_dir_right.obj", selection_box = { type="fixed", fixed = {-0.5, -7/32, 0.5, 7/16, 7/32, 7/16}}, collision_box = { type="fixed", fixed = {-0,5, -7/32, 0.5, 7/16, 7/32, 7/16}}, + groups= { dig_immediate = 2 }, }, }, wooden_left_sign = { - depth = 1/16, - width = 14/16, - height = 7/16, + depth = 1/16, width = 14/16, height = 7/16, entity_fields = { right = 3/32, size = { x = 12/16, y = 6/16 }, @@ -154,14 +168,12 @@ local models = { mesh = "signs_dir_left.obj", selection_box = { type="fixed", fixed = {-7/16, -7/32, 0.5, 0.5, 7/32, 7/16}}, collision_box = { type="fixed", fixed = {-7/16, -7/32, 0.5, 0.5, 7/32, 7/16}}, - groups = { not_in_creative_inventory = 1 }, + groups = { not_in_creative_inventory = 1, dig_immediate = 2 }, drop = "signs:wooden_right_sign", }, }, paper_poster = { - depth = 1/32, - width = 26/32, - height = 30/32, + depth = 1/32, width = 26/32, height = 30/32, entity_fields = { top = -11/32, size = { x = 26/32, y = 6/32 }, @@ -174,11 +186,40 @@ local models = { "signs_poster_sides.png", "signs_poster_sides.png", "signs_poster_sides.png", "signs_poster.png" }, inventory_image = "signs_poster_inventory.png", + groups= { dig_immediate = 3 }, on_construct = display_api.on_construct, on_rightclick = display_poster, on_receive_fields = on_receive_fields_poster, }, }, + label_small = { + depth = 1/32, width = 4/16, height = 4/16, + entity_fields = { + size = { x = 4/16, y = 4/16 }, + maxlines = 1, + color = "#000", + }, + node_fields = { + description = S("Small label"), + tiles = { "signs_label.png" }, + inventory_image = "signs_label_small_inventory.png", + groups= { dig_immediate = 3 }, + }, + }, + label_medium = { + depth = 1/32, width = 8/16, height = 8/16, + entity_fields = { + size = { x = 8/16, y = 8/16 }, + maxlines = 2, + color = "#000", + }, + node_fields = { + description = S("Label"), + tiles = { "signs_label.png" }, + inventory_image = "signs_label_medium_inventory.png", + groups= { dig_immediate = 3 }, + }, + }, } -- Node registration diff --git a/signs/svg/poster.svg b/signs/svg/poster.svg index 4f6f774..f2388a8 100644 --- a/signs/svg/poster.svg +++ b/signs/svg/poster.svg @@ -15,8 +15,8 @@ height="32px" id="svg2985" version="1.1" - inkscape:version="0.48.4 r9939" - sodipodi:docname="affiche.svg" + inkscape:version="0.92.3 (2405546, 2018-03-11)" + sodipodi:docname="poster.svg" inkscape:export-filename="/home/pyrollo/dev/minetest-mods/signs/textures/signs_poster.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90"> @@ -73,18 +73,18 @@ borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="11.197802" - inkscape:cx="-4.798213" - inkscape:cy="9.6735437" - inkscape:current-layer="layer5" + inkscape:zoom="22.395604" + inkscape:cx="15.573035" + inkscape:cy="16.977299" + inkscape:current-layer="layer2" showgrid="true" inkscape:grid-bbox="true" inkscape:document-units="px" - inkscape:window-width="1239" - inkscape:window-height="776" - inkscape:window-x="41" - inkscape:window-y="24" - inkscape:window-maximized="1" + inkscape:window-width="785" + inkscape:window-height="447" + inkscape:window-x="2459" + inkscape:window-y="340" + inkscape:window-maximized="0" showguides="true" inkscape:guide-bbox="true" inkscape:object-paths="true"> @@ -95,11 +95,13 @@ visible="true" enabled="true" snapvisiblegridlinesonly="true" - spacingx="0.5px" - spacingy="0.5px" + spacingx="0.5" + spacingy="0.5" dotted="false" color="#ff0000" - opacity="0.1254902" /> + opacity="0.1254902" + originx="0" + originy="0" /> @@ -109,7 +111,7 @@ image/svg+xml - + @@ -127,7 +129,7 @@ height="32.081406" width="32.003735" /> + y="-10.876763" + style="font-family:sans-serif" />  + inkscape:label="Fond inv" + style="display:inline"> READ ME ! + style="font-weight:bold;font-size:3.42845988px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'Sans Bold'">READ ME ! + + + + + style="display:none"> diff --git a/signs/textures/signs_label.png b/signs/textures/signs_label.png new file mode 100644 index 0000000..4cf7edc Binary files /dev/null and b/signs/textures/signs_label.png differ diff --git a/signs/textures/signs_label_medium_inventory.png b/signs/textures/signs_label_medium_inventory.png new file mode 100644 index 0000000..9622201 Binary files /dev/null and b/signs/textures/signs_label_medium_inventory.png differ diff --git a/signs/textures/signs_label_small_inventory.png b/signs/textures/signs_label_small_inventory.png new file mode 100644 index 0000000..2dd60af Binary files /dev/null and b/signs/textures/signs_label_small_inventory.png differ diff --git a/signs/textures/signs_wooden_direction_inventory.png b/signs/textures/signs_wooden_direction_inventory.png index 1b8e3d4..c4be3af 100644 Binary files a/signs/textures/signs_wooden_direction_inventory.png and b/signs/textures/signs_wooden_direction_inventory.png differ diff --git a/signs/textures/signs_wooden_long.png b/signs/textures/signs_wooden_long.png new file mode 100644 index 0000000..c23a56a Binary files /dev/null and b/signs/textures/signs_wooden_long.png differ diff --git a/signs/textures/signs_wooden_long_inventory.png b/signs/textures/signs_wooden_long_inventory.png new file mode 100644 index 0000000..78d2545 Binary files /dev/null and b/signs/textures/signs_wooden_long_inventory.png differ -- cgit v1.2.3 From d9b10f6c3e7b133b5539e39c6da0ffebde1f4b59 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Rollo Date: Tue, 13 Nov 2018 17:20:06 +0100 Subject: Update depends.txt --- signs/depends.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'signs') diff --git a/signs/depends.txt b/signs/depends.txt index ad3bb8f..aaf5bff 100644 --- a/signs/depends.txt +++ b/signs/depends.txt @@ -1,5 +1,6 @@ default -intllib? +dye display_api font_api signs_api +intllib? -- cgit v1.2.3 From 4eb72f0c3f3bdbd7cd6f2320f508d4376b6ce3b5 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Rollo Date: Sun, 18 Nov 2018 15:31:53 +0100 Subject: Moved compatibility functions to compatibility.lua --- signs/common.lua | 34 ---------------------------------- signs/compatibility.lua | 29 ++++++++++++++++++++++++++++- 2 files changed, 28 insertions(+), 35 deletions(-) (limited to 'signs') diff --git a/signs/common.lua b/signs/common.lua index 2b40db2..733a44c 100644 --- a/signs/common.lua +++ b/signs/common.lua @@ -21,40 +21,6 @@ local S = signs.intllib local F = function(...) return minetest.formspec_escape(S(...)) end - ---Backwards compatibility functions - -signs.set_display_text = function(...) - minetest.log("warning", "signs.set_display_text() is deprecated, please use signs_api.set_display_text() instead.") - return signs_api.set_display_text(...) -end - -signs.set_formspec = function(...) - minetest.log("warning", "signs.set_formspec() is deprecated, please use signs_api.set_formspec() instead.") - return signs_api.set_formspec(...) -end - -signs.on_receive_fields = function(...) - minetest.log("warning", "signs.on_receive_fields() is deprecated, please use signs_api.on_receive_fields() instead.") - return signs_api.on_receive_fields(...) -end - -signs.on_place_direction = function(...) - minetest.log("warning", "signs.on_place_direction() is deprecated, please use signs_api.on_place_direction() instead.") - return signs_api.on_place_direction(...) -end - -signs.on_rotate = function(...) - minetest.log("warning", "signs.on_rotate() is deprecated, please use signs_api.on_rotate() instead.") - return signs_api.on_rotate(...) -end - -signs.register_sign = function(...) - minetest.log("warning", "signs.register_sign() is deprecated, please use signs_api.register_sign() instead.") - return signs_api.register_sign(...) -end - - -- Generic callback for show_formspec displayed formspecs of "sign" mod minetest.register_on_player_receive_fields(function(player, formname, fields) diff --git a/signs/compatibility.lua b/signs/compatibility.lua index e798a67..dea8750 100644 --- a/signs/compatibility.lua +++ b/signs/compatibility.lua @@ -23,7 +23,7 @@ ------------------------------------ local wallmounted_to_facedir = { - [0]=1, -- Should not happend with signs + [0]=1, -- Should not happend with signs [1]=1, -- Should not happend with signs [2]=1, [3]=3, @@ -84,7 +84,34 @@ minetest.register_lbm({ name = "signs:conpatibility_2", action = compatibility_check_2, }) +--Backwards compatibility API functions +signs.set_display_text = function(...) + minetest.log("warning", "signs.set_display_text() is deprecated, please use signs_api.set_display_text() instead.") + return signs_api.set_display_text(...) +end + +signs.set_formspec = function(...) + minetest.log("warning", "signs.set_formspec() is deprecated, please use signs_api.set_formspec() instead.") + return signs_api.set_formspec(...) +end + +signs.on_receive_fields = function(...) + minetest.log("warning", "signs.on_receive_fields() is deprecated, please use signs_api.on_receive_fields() instead.") + return signs_api.on_receive_fields(...) +end +signs.on_place_direction = function(...) + minetest.log("warning", "signs.on_place_direction() is deprecated, please use signs_api.on_place_direction() instead.") + return signs_api.on_place_direction(...) +end +signs.on_rotate = function(...) + minetest.log("warning", "signs.on_rotate() is deprecated, please use signs_api.on_rotate() instead.") + return signs_api.on_rotate(...) +end +signs.register_sign = function(...) + minetest.log("warning", "signs.register_sign() is deprecated, please use signs_api.register_sign() instead.") + return signs_api.register_sign(...) +end -- cgit v1.2.3 From db66553fbfd5f251b4a26e8b4867cebd021a5647 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Rollo Date: Sun, 18 Nov 2018 15:34:49 +0100 Subject: Update poster.svg --- signs/svg/poster.svg | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'signs') diff --git a/signs/svg/poster.svg b/signs/svg/poster.svg index f2388a8..cc9e8fd 100644 --- a/signs/svg/poster.svg +++ b/signs/svg/poster.svg @@ -75,15 +75,15 @@ inkscape:pageshadow="2" inkscape:zoom="22.395604" inkscape:cx="15.573035" - inkscape:cy="16.977299" + inkscape:cy="16.910322" inkscape:current-layer="layer2" showgrid="true" inkscape:grid-bbox="true" inkscape:document-units="px" - inkscape:window-width="785" - inkscape:window-height="447" - inkscape:window-x="2459" - inkscape:window-y="340" + inkscape:window-width="1441" + inkscape:window-height="1038" + inkscape:window-x="2012" + inkscape:window-y="467" inkscape:window-maximized="0" showguides="true" inkscape:guide-bbox="true" @@ -197,7 +197,7 @@ inkscape:groupmode="layer" id="layer2" inkscape:label="Label frame" - style="display:inline"> + style="display:none"> + ry="0" + inkscape:export-filename="/home/pyrollo/dev/minetest-mods/display_modpack/signs/textures/signs_label.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> Date: Fri, 23 Nov 2018 11:34:55 +0100 Subject: Fonts configurable in signs, posters and steles --- signs/nodes.lua | 93 +++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 57 insertions(+), 36 deletions(-) (limited to 'signs') diff --git a/signs/nodes.lua b/signs/nodes.lua index c74ab6f..8e65e27 100644 --- a/signs/nodes.lua +++ b/signs/nodes.lua @@ -23,51 +23,58 @@ local F = function(...) return minetest.formspec_escape(S(...)) end -- Poster specific formspec local function display_poster(pos, node, player) - local formspec local meta = minetest.get_meta(pos) + local def = minetest.registered_nodes[node.name].display_entities["signs:display_text"] local font = font_api.get_font(meta:get_string("font") or def.font_name) + local fs + local fname = string.format("%s@%s:display", + node.name, minetest.pos_to_string(pos)) + -- Title texture local titletexture = font:make_text_texture( - meta:get_string("display_text"), font:get_height()*8.4, font:get_height(), 1, "center") - - formspec = - "size[7,9]".. - "background[0,0;7,9;signs_poster_formspec.png]".. - "image[0,-0.2;8.4,2;"..titletexture.."]".. - "textarea[0.3,1.5;7,8;;"..minetest.colorize("#111", minetest.formspec_escape(meta:get_string("text")))..";]".. - "bgcolor[#0000]" + meta:get_string("display_text"), font:get_height()*8.4, + font:get_height(), 1, "center") + + fs = string.format([=[ + size[7,9]bgcolor[#0000] + background[0,0;7,9;signs_poster_formspec.png] + image[0,-0.2;8.4,2;%s] + textarea[0.3,1.5;7,8;;%s;]]=], + titletexture, + minetest.colorize("#111", + minetest.formspec_escape(meta:get_string("text")))) if minetest.is_protected(pos, player:get_player_name()) then - formspec = formspec.. - "button_exit[2.5,8;2,1;ok;"..F("Close").."]" + fs = string.format("%sbutton_exit[2.5,8;2,1;ok;%s]", fs, F("Close")) else - formspec = formspec.. - "button[1,8;2,1;edit;"..F("Edit").."]".. - "button_exit[4,8;2,1;ok;"..F("Close").."]" + fs = string.format( + "%sbutton[1,8;2,1;edit;%s]button_exit[4,8;2,1;ok;%s]", + fs, F("Edit"), F("Close")) end - minetest.show_formspec(player:get_player_name(), - node.name.."@"..minetest.pos_to_string(pos)..":display", - formspec) + minetest.show_formspec(player:get_player_name(), fname, fs) end local function edit_poster(pos, node, player) - local formspec local meta = minetest.get_meta(pos) + local fs + local fname = string.format("%s@%s:edit", + node.name, minetest.pos_to_string(pos)) + if not minetest.is_protected(pos, player:get_player_name()) then - formspec = - "size[6.5,7.5]".. - default.gui_bg .. default.gui_bg_img .. default.gui_slots .. - "field[0.5,0.7;6,1;display_text;"..F("Title")..";".. - minetest.formspec_escape(meta:get_string("display_text")).."]".. - "textarea[0.5,1.7;6,6;text;"..F("Text")..";".. - minetest.formspec_escape(meta:get_string("text")).."]".. - "button_exit[2.25,7;2,1;write;"..F("Write").."]" - minetest.show_formspec(player:get_player_name(), - node.name.."@"..minetest.pos_to_string(pos)..":edit", - formspec) + fs = string.format([=[ + size[6.5,7.5]%s%s%s + field[0.5,0.7;6,1;display_text;%s;%s] + textarea[0.5,1.7;6,6;text;%s;%s] + button[1.25,7;2,1;font;%s] + button_exit[3.25,7;2,1;write;%s]]=], + default.gui_bg, default.gui_bg_img, default.gui_slots, F("Title"), + minetest.formspec_escape(meta:get_string("display_text")), + F("Text"), minetest.formspec_escape(meta:get_string("text")), + F("Title font"), F("Write")) + minetest.show_formspec(player:get_player_name(), fname, fs) end end @@ -80,15 +87,29 @@ local function on_receive_fields_poster(pos, formname, fields, player) if formname == node.name.."@"..minetest.pos_to_string(pos)..":display" and fields.edit then edit_poster(pos, node, player) + return true end if formname == node.name.."@"..minetest.pos_to_string(pos)..":edit" - and (fields.write or fields.key_enter) then - meta:set_string("display_text", fields.display_text) - meta:set_string("text", fields.text) - meta:set_string("infotext", "\""..fields.display_text - .."\"\n"..S("(right-click to read more text)")) - display_api.update_entities(pos) - display_poster(pos, node, player) + then + if (fields.write or fields.font or fields.key_enter) then + meta:set_string("display_text", fields.display_text) + meta:set_string("text", fields.text) + meta:set_string("infotext", "\""..fields.display_text + .."\"\n"..S("(right-click to read more text)")) + display_api.update_entities(pos) + end + if (fields.write or fields.key_enter) then + display_poster(pos, node, player) + elseif (fields.font) then + font_api.show_font_list(player, pos, function (playername, pos) + local player = minetest.get_player_by_name(playername) + local node = minetest.get_node(pos) + if player and node then + edit_poster(pos, node, player) + end + end) + end + return true end end end -- cgit v1.2.3