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/nodes.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'signs/nodes.lua') 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 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/nodes.lua | 1 + 1 file changed, 1 insertion(+) (limited to 'signs/nodes.lua') 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/nodes.lua | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'signs/nodes.lua') 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/nodes.lua') 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/nodes.lua') 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/nodes.lua') 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 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) (limited to 'signs/nodes.lua') 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 - -- 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/nodes.lua | 75 ++++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 58 insertions(+), 17 deletions(-) (limited to 'signs/nodes.lua') 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 -- cgit v1.2.3 From 367e5026ddef3e6a0220f37a2f4aba64ec88f16b Mon Sep 17 00:00:00 2001 From: Pierre-Yves Rollo 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/nodes.lua') 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