From d85713cf630184aae4eb49d91bf8085cc438fb20 Mon Sep 17 00:00:00 2001 From: Carter Kolwey Date: Sat, 3 Sep 2016 15:09:55 -0500 Subject: Use LBM instead of ABM to restore sign text --- init.lua | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/init.lua b/init.lua index 650e856..ef2ff17 100644 --- a/init.lua +++ b/init.lua @@ -936,11 +936,12 @@ signs_lib.register_fence_with_sign("default:fence_wood", "signs:sign_post") -- restore signs' text after /clearobjects and the like -minetest.register_abm({ +minetest.register_lbm({ nodenames = signs_lib.sign_node_list, - interval = 15, - chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) + name = "signs_lib:restore_sign_text", + label = "Restore sign text", + run_at_every_load = true, + action = function(pos, node) signs_lib.update_sign(pos) end }) -- cgit v1.2.3 From 7735a3a382856c1d422d641e86c3d2f32ea8ecb7 Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Fri, 9 Sep 2016 02:55:21 -0400 Subject: Clarify comment/reason for LBM --- init.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/init.lua b/init.lua index ef2ff17..652fe50 100644 --- a/init.lua +++ b/init.lua @@ -934,7 +934,8 @@ minetest.register_alias("sign_wall_locked", "locked_sign:sign_wall_locked") signs_lib.register_fence_with_sign("default:fence_wood", "signs:sign_post") --- restore signs' text after /clearobjects and the like +-- restore signs' text after /clearobjects and the like, the next time +-- a block is reloaded by the server. minetest.register_lbm({ nodenames = signs_lib.sign_node_list, -- cgit v1.2.3 From fef163662a802a2cf2f65716ef6ce0d378ecf860 Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Fri, 9 Sep 2016 03:28:32 -0400 Subject: adjusted positions of all signs' entities to move them to approx. 1 pixels in front of the surface (trying to workaround an apparent irrlicht/Minetest precision glitch on entity reload) --- init.lua | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/init.lua b/init.lua index 652fe50..4aa674a 100644 --- a/init.lua +++ b/init.lua @@ -41,10 +41,10 @@ signs_lib.regular_wall_sign_model = { textpos = { nil, nil, - {delta = {x = 0.43, y = 0.07, z = 0 }, yaw = math.pi / -2}, - {delta = {x = -0.43, y = 0.07, z = 0 }, yaw = math.pi / 2}, - {delta = {x = 0, y = 0.07, z = 0.43 }, yaw = 0}, - {delta = {x = 0, y = 0.07, z = -0.43 }, yaw = math.pi}, + {delta = { x = 0.41, y = 0.07, z = 0 }, yaw = math.pi / -2}, + {delta = { x = -0.41, y = 0.07, z = 0 }, yaw = math.pi / 2}, + {delta = { x = 0, y = 0.07, z = 0.41 }, yaw = 0}, + {delta = { x = 0, y = 0.07, z = -0.41 }, yaw = math.pi}, } } @@ -54,10 +54,10 @@ signs_lib.metal_wall_sign_model = { fixed = {-0.4375, -0.25, 0.4375, 0.4375, 0.375, 0.5} }, textpos = { - {delta = {x = 0, y = 0.07, z = 0.43 }, yaw = 0}, - {delta = {x = 0.43, y = 0.07, z = 0 }, yaw = math.pi / -2}, - {delta = {x = 0, y = 0.07, z = -0.43 }, yaw = math.pi}, - {delta = {x = -0.43, y = 0.07, z = 0 }, yaw = math.pi / 2}, + {delta = { x = 0, y = 0.07, z = 0.41 }, yaw = 0}, + {delta = { x = 0.41, y = 0.07, z = 0 }, yaw = math.pi / -2}, + {delta = { x = 0, y = 0.07, z = -0.41 }, yaw = math.pi}, + {delta = { x = -0.41, y = 0.07, z = 0 }, yaw = math.pi / 2}, } } @@ -70,10 +70,10 @@ signs_lib.yard_sign_model = { } }, textpos = { - {delta = {x = 0, y = 0.07, z = -0.068}, yaw = 0}, - {delta = {x = -0.068, y = 0.07, z = 0 }, yaw = math.pi / -2}, - {delta = {x = 0, y = 0.07, z = 0.068}, yaw = math.pi}, - {delta = {x = 0.068, y = 0.07, z = 0 }, yaw = math.pi / 2}, + {delta = { x = 0, y = 0.07, z = -0.08 }, yaw = 0}, + {delta = { x = -0.08, y = 0.07, z = 0 }, yaw = math.pi / -2}, + {delta = { x = 0, y = 0.07, z = 0.08 }, yaw = math.pi}, + {delta = { x = 0.08, y = 0.07, z = 0 }, yaw = math.pi / 2}, } } @@ -86,10 +86,10 @@ signs_lib.hanging_sign_model = { } }, textpos = { - {delta = {x = 0, y = -0.02, z = -0.063}, yaw = 0}, - {delta = {x = -0.063, y = -0.02, z = 0 }, yaw = math.pi / -2}, - {delta = {x = 0, y = -0.02, z = 0.063}, yaw = math.pi}, - {delta = {x = 0.063, y = -0.02, z = 0 }, yaw = math.pi / 2}, + {delta = { x = 0, y = -0.02, z = -0.08 }, yaw = 0}, + {delta = { x = -0.08, y = -0.02, z = 0 }, yaw = math.pi / -2}, + {delta = { x = 0, y = -0.02, z = 0.08 }, yaw = math.pi}, + {delta = { x = 0.08, y = -0.02, z = 0 }, yaw = math.pi / 2}, } } @@ -102,10 +102,10 @@ signs_lib.sign_post_model = { } }, textpos = { - {delta = {x = 0, y = 0.07, z = -0.188}, yaw = 0}, - {delta = {x = -0.188, y = 0.07, z = 0 }, yaw = math.pi / -2}, - {delta = {x = 0, y = 0.07, z = 0.188 }, yaw = math.pi}, - {delta = {x = 0.188, y = 0.07, z = 0 }, yaw = math.pi / 2}, + {delta = { x = 0, y = 0.07, z = -0.2 }, yaw = 0}, + {delta = { x = -0.2, y = 0.07, z = 0 }, yaw = math.pi / -2}, + {delta = { x = 0, y = 0.07, z = 0.2 }, yaw = math.pi}, + {delta = { x = 0.2, y = 0.07, z = 0 }, yaw = math.pi / 2}, } } -- cgit v1.2.3 From 931a3e2b15ea4cd699c5b593898ecc66275469c6 Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Fri, 9 Sep 2016 03:45:25 -0400 Subject: Use minetest_game steel sign to craft the various colored metal signs instead of using steel ingots. Reduced yield to one per craft. (the "sheet metal" recipes still exist for users of "steel" mod, yield there is unchanged) --- init.lua | 44 +++++++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/init.lua b/init.lua index 4aa674a..fd1ca0d 100644 --- a/init.lua +++ b/init.lua @@ -141,6 +141,8 @@ else default_sign_image = "default_sign_wall.png" end +default_sign_metal = "default:sign_wall_steel" + --table copy function signs_lib.table_copy(t) @@ -958,7 +960,7 @@ minetest.register_craft({ } }) ---Alternate recipe. +--Alternate recipes. minetest.register_craft({ output = "locked_sign:sign_wall_locked", @@ -968,13 +970,21 @@ minetest.register_craft({ }, }) +minetest.register_craft({ + output = "locked_sign:sign_wall_locked", + recipe = { + {default_sign_metal}, + {"default:steel_ingot"}, + }, +}) + -- craft recipes for the metal signs minetest.register_craft( { - output = "signs:sign_wall_green 4", + output = "signs:sign_wall_green", recipe = { { "dye:dark_green", "dye:white", "dye:dark_green" }, - { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" } + { "", default_sign_metal, "" } }, }) @@ -987,10 +997,10 @@ minetest.register_craft( { }) minetest.register_craft( { - output = "signs:sign_wall_yellow 4", + output = "signs:sign_wall_yellow", recipe = { { "dye:yellow", "dye:black", "dye:yellow" }, - { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" } + { "", default_sign_metal, "" } }, }) @@ -1003,10 +1013,10 @@ minetest.register_craft( { }) minetest.register_craft( { - output = "signs:sign_wall_red 4", + output = "signs:sign_wall_red", recipe = { { "dye:red", "dye:white", "dye:red" }, - { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" } + { "", default_sign_metal, "" } }, }) @@ -1019,10 +1029,10 @@ minetest.register_craft( { }) minetest.register_craft( { - output = "signs:sign_wall_white_red 4", + output = "signs:sign_wall_white_red", recipe = { { "dye:white", "dye:red", "dye:white" }, - { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" } + { "", default_sign_metal, "" } }, }) @@ -1035,10 +1045,10 @@ minetest.register_craft( { }) minetest.register_craft( { - output = "signs:sign_wall_white_black 4", + output = "signs:sign_wall_white_black", recipe = { { "dye:white", "dye:black", "dye:white" }, - { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" } + { "", default_sign_metal, "" } }, }) @@ -1051,10 +1061,10 @@ minetest.register_craft( { }) minetest.register_craft( { - output = "signs:sign_wall_orange 4", + output = "signs:sign_wall_orange", recipe = { { "dye:orange", "dye:black", "dye:orange" }, - { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" } + { "", default_sign_metal, "" } }, }) @@ -1067,10 +1077,10 @@ minetest.register_craft( { }) minetest.register_craft( { - output = "signs:sign_wall_blue 4", + output = "signs:sign_wall_blue", recipe = { { "dye:blue", "dye:white", "dye:blue" }, - { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" } + { "", default_sign_metal, "" } }, }) @@ -1083,10 +1093,10 @@ minetest.register_craft( { }) minetest.register_craft( { - output = "signs:sign_wall_brown 4", + output = "signs:sign_wall_brown", recipe = { { "dye:brown", "dye:white", "dye:brown" }, - { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" } + { "", default_sign_metal, "" } }, }) -- cgit v1.2.3 From 9d6d9b11e19522e949eb5ed13e810d56657c9f03 Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Fri, 9 Sep 2016 04:08:20 -0400 Subject: add support for visible text on default steel signs (if defined by subgame) --- init.lua | 50 +++++++++++++++++++++++++++++++++++-- textures/signs_wall_sign_metal.png | Bin 0 -> 553 bytes 2 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 textures/signs_wall_sign_metal.png diff --git a/init.lua b/init.lua index fd1ca0d..e0bafe2 100644 --- a/init.lua +++ b/init.lua @@ -142,6 +142,7 @@ else end default_sign_metal = "default:sign_wall_steel" +default_sign_metal_image = "default_sign_steel.png" --table copy @@ -515,6 +516,7 @@ signs_lib.update_sign = function(pos, fields, owner) sign_info = signs_lib.hanging_sign_model.textpos[minetest.get_node(pos).param2 + 1] elseif string.find(signnode.name, "sign_wall") then if signnode.name == default_sign + or signnode.name == default_sign_metal or signnode.name == "locked_sign:sign_wall_locked" then sign_info = signs_lib.regular_wall_sign_model.textpos[minetest.get_node(pos).param2 + 1] else @@ -535,6 +537,7 @@ end -- What kind of sign do we need to place, anyway? function signs_lib.determine_sign_type(itemstack, placer, pointed_thing, locked) + print("called signs_lib.determine_sign_type") local name name = minetest.get_node(pointed_thing.under).name if fences_with_sign[name] then @@ -556,11 +559,13 @@ function signs_lib.determine_sign_type(itemstack, placer, pointed_thing, locked) end end + print("protection and position okay") local node=minetest.get_node(pointed_thing.under) if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack) else + print("target didn't have rightclick") local above = pointed_thing.above local under = pointed_thing.under local dir = {x = under.x - above.x, @@ -579,7 +584,7 @@ function signs_lib.determine_sign_type(itemstack, placer, pointed_thing, locked) end local fdir = minetest.dir_to_facedir(dir) - + print("facedir = "..fdir) local pt_name = minetest.get_node(under).name local signname = itemstack:get_name() @@ -589,11 +594,17 @@ function signs_lib.determine_sign_type(itemstack, placer, pointed_thing, locked) minetest.add_node(above, {name = "signs:sign_hanging", param2 = fdir}) elseif wdir == 1 and signname == default_sign then minetest.add_node(above, {name = "signs:sign_yard", param2 = fdir}) + elseif signname == default_sign_metal then + minetest.add_node(above, {name = signname, param2 = wdir }) + print("line 597") elseif signname ~= default_sign - and signname ~= "locked_sign:sign_wall_locked" then -- it's a metal wall sign. + and signname ~= default_sign_metal + and signname ~= "locked_sign:sign_wall_locked" then -- it's a signs_lib colored metal wall sign. minetest.add_node(above, {name = signname, param2 = fdir}) + print("line 602") else -- it must be a default or locked wooden wall sign minetest.add_node(above, {name = signname, param2 = wdir }) -- note it's wallmounted here! + print("line 605") if locked then local meta = minetest.get_meta(above) local owner = placer:get_player_name() @@ -795,6 +806,41 @@ minetest.register_node(":locked_sign:sign_wall_locked", { on_rotate = signs_lib.wallmounted_rotate }) +-- default metal sign, if defined + +if minetest.registered_nodes["default:sign_wall_steel"] then + minetest.register_node(":"..default_sign_metal, { + description = S("Sign"), + inventory_image = default_sign_metal_image, + wield_image = default_sign_metal_image, + node_placement_prediction = "", + sunlight_propagates = true, + paramtype = "light", + paramtype2 = "wallmounted", + drawtype = "nodebox", + node_box = signs_lib.regular_wall_sign_model.nodebox, + tiles = {"signs_wall_sign_metal.png"}, + groups = sign_groups, + + on_place = function(itemstack, placer, pointed_thing) + return signs_lib.determine_sign_type(itemstack, placer, pointed_thing) + end, + on_construct = function(pos) + signs_lib.construct_sign(pos) + end, + on_destruct = function(pos) + signs_lib.destruct_sign(pos) + end, + on_receive_fields = function(pos, formname, fields, sender) + signs_lib.receive_fields(pos, formname, fields, sender) + end, + on_punch = function(pos, node, puncher) + signs_lib.update_sign(pos) + end, + on_rotate = signs_lib.wallmounted_rotate + }) +end + -- metal, colored signs local sign_colors = { "green", "yellow", "red", "white_red", "white_black", "orange", "blue", "brown" } diff --git a/textures/signs_wall_sign_metal.png b/textures/signs_wall_sign_metal.png new file mode 100644 index 0000000..7eff1a6 Binary files /dev/null and b/textures/signs_wall_sign_metal.png differ -- cgit v1.2.3 From 5bbaa4f294dd31d1f14da9e2e3ee9ade7f346d41 Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Fri, 9 Sep 2016 04:14:14 -0400 Subject: remove debug stuff --- init.lua | 7 ------- 1 file changed, 7 deletions(-) diff --git a/init.lua b/init.lua index e0bafe2..1108296 100644 --- a/init.lua +++ b/init.lua @@ -537,7 +537,6 @@ end -- What kind of sign do we need to place, anyway? function signs_lib.determine_sign_type(itemstack, placer, pointed_thing, locked) - print("called signs_lib.determine_sign_type") local name name = minetest.get_node(pointed_thing.under).name if fences_with_sign[name] then @@ -559,13 +558,11 @@ function signs_lib.determine_sign_type(itemstack, placer, pointed_thing, locked) end end - print("protection and position okay") local node=minetest.get_node(pointed_thing.under) if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack) else - print("target didn't have rightclick") local above = pointed_thing.above local under = pointed_thing.under local dir = {x = under.x - above.x, @@ -584,7 +581,6 @@ function signs_lib.determine_sign_type(itemstack, placer, pointed_thing, locked) end local fdir = minetest.dir_to_facedir(dir) - print("facedir = "..fdir) local pt_name = minetest.get_node(under).name local signname = itemstack:get_name() @@ -596,15 +592,12 @@ function signs_lib.determine_sign_type(itemstack, placer, pointed_thing, locked) minetest.add_node(above, {name = "signs:sign_yard", param2 = fdir}) elseif signname == default_sign_metal then minetest.add_node(above, {name = signname, param2 = wdir }) - print("line 597") elseif signname ~= default_sign and signname ~= default_sign_metal and signname ~= "locked_sign:sign_wall_locked" then -- it's a signs_lib colored metal wall sign. minetest.add_node(above, {name = signname, param2 = fdir}) - print("line 602") else -- it must be a default or locked wooden wall sign minetest.add_node(above, {name = signname, param2 = wdir }) -- note it's wallmounted here! - print("line 605") if locked then local meta = minetest.get_meta(above) local owner = placer:get_player_name() -- cgit v1.2.3 From b85eabb58ddf79e466a0fd3fbe17e4c33941098e Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Fri, 9 Sep 2016 04:32:51 -0400 Subject: added option to specify text position when making a custom sign node --- init.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/init.lua b/init.lua index 1108296..0ba5314 100644 --- a/init.lua +++ b/init.lua @@ -510,7 +510,11 @@ signs_lib.update_sign = function(pos, fields, owner) -- if there is no entity local sign_info local signnode = minetest.get_node(pos) - if signnode.name == "signs:sign_yard" then + local signname = signnode.name + local textpos = minetest.registered_nodes[signname].textpos + if textpos then + sign_info = textpos[minetest.get_node(pos).param2 + 1] + elseif signnode.name == "signs:sign_yard" then sign_info = signs_lib.yard_sign_model.textpos[minetest.get_node(pos).param2 + 1] elseif signnode.name == "signs:sign_hanging" then sign_info = signs_lib.hanging_sign_model.textpos[minetest.get_node(pos).param2 + 1] -- cgit v1.2.3 From a6be7f222d23e52303066a096377ef64c210435e Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Fri, 9 Sep 2016 05:37:36 -0400 Subject: Allow setting default text color in sign node def Caveat: signs used to reset the text color to black at the start of each line. Now, they reset to the node's default text color, after which users' "#x" color codes are applied. This means some signs will change to a new color where the user didn't explicitly set it. This will only be visible on green, red w/white border, white w/red border, blue, and brown metal signs, as these have either white or red as the new default color. All other signs will render in black, as usual. --- init.lua | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/init.lua b/init.lua index 0ba5314..1783780 100644 --- a/init.lua +++ b/init.lua @@ -304,14 +304,16 @@ local function fill_line(x, y, w, c) return table.concat(tex) end -local function make_line_texture(line, lineno) +local function make_line_texture(line, lineno, pos) local width = 0 local maxw = 0 local words = { } + local n = minetest.registered_nodes[minetest.get_node(pos).name] + local defaultcolor = n.defaultcolor or 0 - local cur_color = 0 + local cur_color = tonumber(defaultcolor, 16) -- We check which chars are available here. for word_i, word in ipairs(line) do @@ -392,12 +394,12 @@ local function make_line_texture(line, lineno) return table.concat(texture), lineno end -local function make_sign_texture(lines) +local function make_sign_texture(lines, pos) local texture = { ("[combine:%dx%d"):format(SIGN_WIDTH, LINE_HEIGHT * NUMBER_OF_LINES) } local lineno = 0 for i = 1, #lines do if lineno >= NUMBER_OF_LINES then break end - local linetex, ln = make_line_texture(lines[i], lineno) + local linetex, ln = make_line_texture(lines[i], lineno, pos) table.insert(texture, linetex) lineno = ln + 1 end @@ -405,10 +407,10 @@ local function make_sign_texture(lines) return table.concat(texture, "") end -local function set_obj_text(obj, text, new) +local function set_obj_text(obj, text, new, pos) local split = new and split_lines_and_words or split_lines_and_words_old obj:set_properties({ - textures={make_sign_texture(split(text))}, + textures={make_sign_texture(split(text), pos)}, visual_size = TEXT_SCALE, }) end @@ -498,7 +500,7 @@ signs_lib.update_sign = function(pos, fields, owner) if found then v:remove() else - set_obj_text(v, text, new) + set_obj_text(v, text, new, pos) found = true end end @@ -841,8 +843,9 @@ end -- metal, colored signs local sign_colors = { "green", "yellow", "red", "white_red", "white_black", "orange", "blue", "brown" } +local sign_default_text_colors = { "f", "0", "f", "4", "0", "0", "f", "f" } -for _, color in ipairs(sign_colors) do +for i, color in ipairs(sign_colors) do minetest.register_node(":signs:sign_wall_"..color, { description = S("Sign ("..color..", metal)"), inventory_image = "signs_"..color.."_inv.png", @@ -861,6 +864,7 @@ for _, color in ipairs(sign_colors) do "signs_metal_back.png", "signs_"..color.."_front.png" }, + defaultcolor = sign_default_text_colors[i], groups = sign_groups, on_place = function(itemstack, placer, pointed_thing) return signs_lib.determine_sign_type(itemstack, placer, pointed_thing) @@ -883,12 +887,13 @@ end local signs_text_on_activate signs_text_on_activate = function(self) - local meta = minetest.get_meta(self.object:getpos()) + local pos = self.object:getpos() + local meta = minetest.get_meta(pos) local text = meta:get_string("text") local new = (meta:get_int("__signslib_new_format") ~= 0) if text then text = trim_input(text) - set_obj_text(self.object, text, new) + set_obj_text(self.object, text, new, pos) end end -- cgit v1.2.3 From 707f28c309bc114ee301bf6a9095b4d5f23ddc06 Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Fri, 9 Sep 2016 06:45:50 -0400 Subject: removed metal sign -> locked wooden sign recipe (makes no sense in practice) --- init.lua | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/init.lua b/init.lua index 1783780..6afe495 100644 --- a/init.lua +++ b/init.lua @@ -1008,7 +1008,7 @@ minetest.register_craft({ } }) ---Alternate recipes. +--Alternate recipe minetest.register_craft({ output = "locked_sign:sign_wall_locked", @@ -1018,14 +1018,6 @@ minetest.register_craft({ }, }) -minetest.register_craft({ - output = "locked_sign:sign_wall_locked", - recipe = { - {default_sign_metal}, - {"default:steel_ingot"}, - }, -}) - -- craft recipes for the metal signs minetest.register_craft( { -- cgit v1.2.3 From a6caa51a857e69f039492465308cb0a522fb40cf Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Thu, 15 Sep 2016 06:57:38 -0400 Subject: allow custom nodes to define the text entity's size in your node def, add: text_size = {x=foo, y=bar}, Size defaults to x=0.8 and y=0.5, respectively. --- init.lua | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/init.lua b/init.lua index 6afe495..f8ab30b 100644 --- a/init.lua +++ b/init.lua @@ -31,6 +31,8 @@ end signs_lib.modpath = minetest.get_modpath("signs_lib") +local DEFAULT_TEXT_SCALE = {x=0.8, y=0.5} + signs_lib.regular_wall_sign_model = { nodebox = { type = "wallmounted", @@ -179,8 +181,6 @@ local FONT_FMT_SIMPLE = "hdf_%02x.png" -- Path to the textures. local TP = MP.."/textures" -local TEXT_SCALE = {x=0.8, y=0.5} - -- Lots of overkill here. KISS advocates, go away, shoo! ;) -- kaeza local PNG_HDR = string.char(0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A) @@ -409,9 +409,11 @@ end local function set_obj_text(obj, text, new, pos) local split = new and split_lines_and_words or split_lines_and_words_old + local n = minetest.registered_nodes[minetest.get_node(pos).name] + local text_scale = n.text_scale or DEFAULT_TEXT_SCALE obj:set_properties({ textures={make_sign_texture(split(text), pos)}, - visual_size = TEXT_SCALE, + visual_size = text_scale, }) end -- cgit v1.2.3 From 9dab7d87367f53fd8a26904cdb17761b5d48ff84 Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Thu, 15 Sep 2016 07:57:34 -0400 Subject: add default steel sign to restore-entities LBM --- init.lua | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/init.lua b/init.lua index f8ab30b..33f1f16 100644 --- a/init.lua +++ b/init.lua @@ -118,18 +118,19 @@ signs_lib.gettext = S -- the list of standard sign nodes signs_lib.sign_node_list = { - "default:sign_wall_wood", - "signs:sign_yard", - "signs:sign_hanging", - "signs:sign_wall_green", - "signs:sign_wall_yellow", - "signs:sign_wall_red", - "signs:sign_wall_white_red", - "signs:sign_wall_white_black", - "signs:sign_wall_orange", - "signs:sign_wall_blue", - "signs:sign_wall_brown", - "locked_sign:sign_wall_locked" + "default:sign_wall_wood", + "default:sign_wall_steel", + "signs:sign_yard", + "signs:sign_hanging", + "signs:sign_wall_green", + "signs:sign_wall_yellow", + "signs:sign_wall_red", + "signs:sign_wall_white_red", + "signs:sign_wall_white_black", + "signs:sign_wall_orange", + "signs:sign_wall_blue", + "signs:sign_wall_brown", + "locked_sign:sign_wall_locked" } local default_sign, default_sign_image -- cgit v1.2.3 From 4481ea8726522ff0d31f4a5eb5f768bb800e6ddb Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Thu, 15 Sep 2016 08:33:23 -0400 Subject: infinite stacks only depend on creative mode now (don't care of unified inventory is installed) --- init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.lua b/init.lua index 33f1f16..4b04a9e 100644 --- a/init.lua +++ b/init.lua @@ -163,7 +163,7 @@ end -- infinite stacks -if minetest.get_modpath("unified_inventory") or not minetest.setting_getbool("creative_mode") then +if not minetest.setting_getbool("creative_mode") then signs_lib.expect_infinite_stacks = false else signs_lib.expect_infinite_stacks = true -- cgit v1.2.3 From db0973439ccb08ace8848fde91c9e29f1edb5c38 Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Thu, 15 Sep 2016 08:40:16 -0400 Subject: minor API change: defaultcolor -> default_color --- init.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/init.lua b/init.lua index 4b04a9e..b8f56a6 100644 --- a/init.lua +++ b/init.lua @@ -312,9 +312,9 @@ local function make_line_texture(line, lineno, pos) local words = { } local n = minetest.registered_nodes[minetest.get_node(pos).name] - local defaultcolor = n.defaultcolor or 0 + local default_color = n.default_color or 0 - local cur_color = tonumber(defaultcolor, 16) + local cur_color = tonumber(default_color, 16) -- We check which chars are available here. for word_i, word in ipairs(line) do @@ -867,7 +867,7 @@ for i, color in ipairs(sign_colors) do "signs_metal_back.png", "signs_"..color.."_front.png" }, - defaultcolor = sign_default_text_colors[i], + default_color = sign_default_text_colors[i], groups = sign_groups, on_place = function(itemstack, placer, pointed_thing) return signs_lib.determine_sign_type(itemstack, placer, pointed_thing) -- cgit v1.2.3 From 9daf035d44449a9be70fc740a23000071ad8fbf2 Mon Sep 17 00:00:00 2001 From: xisd Date: Tue, 4 Oct 2016 10:43:07 +0200 Subject: colored metal signs optional and display size That a small change but for someone who try to prevent having one craft guide page per item (and multiples variants) it make all the difference :) This mod is great but it would be even greater if it was easier to configure like an option use_big_font_size that would change CHARS_PERLINE from 30 to 12 and NUMBER_OF_LINES from 6 to 3 (I tried to do that but I failed) --- init.lua | 311 ++++++++++++++++++++++++++++++++------------------------------- 1 file changed, 158 insertions(+), 153 deletions(-) diff --git a/init.lua b/init.lua index b8f56a6..6953e0e 100644 --- a/init.lua +++ b/init.lua @@ -9,6 +9,8 @@ -- { delta = {entity position for 270° yaw}, exact yaw expression } -- { delta = {entity position for 90° yaw}, exact yaw expression } -- } +-- Made colored metal signs optionals +local enable_colored_metal_signs = true -- CWz's keyword interact mod uses this setting. local current_keyword = minetest.setting_get("interact_keyword") or "iaccept" @@ -844,47 +846,48 @@ if minetest.registered_nodes["default:sign_wall_steel"] then end -- metal, colored signs - -local sign_colors = { "green", "yellow", "red", "white_red", "white_black", "orange", "blue", "brown" } -local sign_default_text_colors = { "f", "0", "f", "4", "0", "0", "f", "f" } - -for i, color in ipairs(sign_colors) do - minetest.register_node(":signs:sign_wall_"..color, { - description = S("Sign ("..color..", metal)"), - inventory_image = "signs_"..color.."_inv.png", - wield_image = "signs_"..color.."_inv.png", - node_placement_prediction = "", - paramtype = "light", - sunlight_propagates = true, - paramtype2 = "facedir", - drawtype = "nodebox", - node_box = signs_lib.metal_wall_sign_model.nodebox, - tiles = { - "signs_metal_tb.png", - "signs_metal_tb.png", - "signs_metal_sides.png", - "signs_metal_sides.png", - "signs_metal_back.png", - "signs_"..color.."_front.png" - }, - default_color = sign_default_text_colors[i], - groups = sign_groups, - on_place = function(itemstack, placer, pointed_thing) - return signs_lib.determine_sign_type(itemstack, placer, pointed_thing) - end, - on_construct = function(pos) - signs_lib.construct_sign(pos) - end, - on_destruct = function(pos) - signs_lib.destruct_sign(pos) - end, - on_receive_fields = function(pos, formname, fields, sender) - signs_lib.receive_fields(pos, formname, fields, sender) - end, - on_punch = function(pos, node, puncher) - signs_lib.update_sign(pos) - end, - }) +if enable_colored_metal_signs then + local sign_colors = { "green", "yellow", "red", "white_red", "white_black", "orange", "blue", "brown" } + local sign_default_text_colors = { "f", "0", "f", "4", "0", "0", "f", "f" } + + for i, color in ipairs(sign_colors) do + minetest.register_node(":signs:sign_wall_"..color, { + description = S("Sign ("..color..", metal)"), + inventory_image = "signs_"..color.."_inv.png", + wield_image = "signs_"..color.."_inv.png", + node_placement_prediction = "", + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "facedir", + drawtype = "nodebox", + node_box = signs_lib.metal_wall_sign_model.nodebox, + tiles = { + "signs_metal_tb.png", + "signs_metal_tb.png", + "signs_metal_sides.png", + "signs_metal_sides.png", + "signs_metal_back.png", + "signs_"..color.."_front.png" + }, + default_color = sign_default_text_colors[i], + groups = sign_groups, + on_place = function(itemstack, placer, pointed_thing) + return signs_lib.determine_sign_type(itemstack, placer, pointed_thing) + end, + on_construct = function(pos) + signs_lib.construct_sign(pos) + end, + on_destruct = function(pos) + signs_lib.destruct_sign(pos) + end, + on_receive_fields = function(pos, formname, fields, sender) + signs_lib.receive_fields(pos, formname, fields, sender) + end, + on_punch = function(pos, node, puncher) + signs_lib.update_sign(pos) + end, + }) + end end local signs_text_on_activate @@ -1022,134 +1025,136 @@ minetest.register_craft({ }) -- craft recipes for the metal signs +if enable_colored_metal_signs then -minetest.register_craft( { - output = "signs:sign_wall_green", - recipe = { - { "dye:dark_green", "dye:white", "dye:dark_green" }, - { "", default_sign_metal, "" } - }, -}) + minetest.register_craft( { + output = "signs:sign_wall_green", + recipe = { + { "dye:dark_green", "dye:white", "dye:dark_green" }, + { "", default_sign_metal, "" } + }, + }) -minetest.register_craft( { - output = "signs:sign_wall_green 2", - recipe = { - { "dye:dark_green", "dye:white", "dye:dark_green" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, -}) + minetest.register_craft( { + output = "signs:sign_wall_green 2", + recipe = { + { "dye:dark_green", "dye:white", "dye:dark_green" }, + { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } + }, + }) -minetest.register_craft( { - output = "signs:sign_wall_yellow", - recipe = { - { "dye:yellow", "dye:black", "dye:yellow" }, - { "", default_sign_metal, "" } - }, -}) + minetest.register_craft( { + output = "signs:sign_wall_yellow", + recipe = { + { "dye:yellow", "dye:black", "dye:yellow" }, + { "", default_sign_metal, "" } + }, + }) -minetest.register_craft( { - output = "signs:sign_wall_yellow 2", - recipe = { - { "dye:yellow", "dye:black", "dye:yellow" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, -}) + minetest.register_craft( { + output = "signs:sign_wall_yellow 2", + recipe = { + { "dye:yellow", "dye:black", "dye:yellow" }, + { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } + }, + }) -minetest.register_craft( { - output = "signs:sign_wall_red", - recipe = { - { "dye:red", "dye:white", "dye:red" }, - { "", default_sign_metal, "" } - }, -}) + minetest.register_craft( { + output = "signs:sign_wall_red", + recipe = { + { "dye:red", "dye:white", "dye:red" }, + { "", default_sign_metal, "" } + }, + }) -minetest.register_craft( { - output = "signs:sign_wall_red 2", - recipe = { - { "dye:red", "dye:white", "dye:red" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, -}) + minetest.register_craft( { + output = "signs:sign_wall_red 2", + recipe = { + { "dye:red", "dye:white", "dye:red" }, + { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } + }, + }) -minetest.register_craft( { - output = "signs:sign_wall_white_red", - recipe = { - { "dye:white", "dye:red", "dye:white" }, - { "", default_sign_metal, "" } - }, -}) + minetest.register_craft( { + output = "signs:sign_wall_white_red", + recipe = { + { "dye:white", "dye:red", "dye:white" }, + { "", default_sign_metal, "" } + }, + }) -minetest.register_craft( { - output = "signs:sign_wall_white_red 2", - recipe = { - { "dye:white", "dye:red", "dye:white" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, -}) + minetest.register_craft( { + output = "signs:sign_wall_white_red 2", + recipe = { + { "dye:white", "dye:red", "dye:white" }, + { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } + }, + }) -minetest.register_craft( { - output = "signs:sign_wall_white_black", - recipe = { - { "dye:white", "dye:black", "dye:white" }, - { "", default_sign_metal, "" } - }, -}) + minetest.register_craft( { + output = "signs:sign_wall_white_black", + recipe = { + { "dye:white", "dye:black", "dye:white" }, + { "", default_sign_metal, "" } + }, + }) -minetest.register_craft( { - output = "signs:sign_wall_white_black 2", - recipe = { - { "dye:white", "dye:black", "dye:white" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, -}) + minetest.register_craft( { + output = "signs:sign_wall_white_black 2", + recipe = { + { "dye:white", "dye:black", "dye:white" }, + { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } + }, + }) -minetest.register_craft( { - output = "signs:sign_wall_orange", - recipe = { - { "dye:orange", "dye:black", "dye:orange" }, - { "", default_sign_metal, "" } - }, -}) + minetest.register_craft( { + output = "signs:sign_wall_orange", + recipe = { + { "dye:orange", "dye:black", "dye:orange" }, + { "", default_sign_metal, "" } + }, + }) -minetest.register_craft( { - output = "signs:sign_wall_orange 2", - recipe = { - { "dye:orange", "dye:black", "dye:orange" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, -}) + minetest.register_craft( { + output = "signs:sign_wall_orange 2", + recipe = { + { "dye:orange", "dye:black", "dye:orange" }, + { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } + }, + }) -minetest.register_craft( { - output = "signs:sign_wall_blue", - recipe = { - { "dye:blue", "dye:white", "dye:blue" }, - { "", default_sign_metal, "" } - }, -}) + minetest.register_craft( { + output = "signs:sign_wall_blue", + recipe = { + { "dye:blue", "dye:white", "dye:blue" }, + { "", default_sign_metal, "" } + }, + }) -minetest.register_craft( { - output = "signs:sign_wall_blue 2", - recipe = { - { "dye:blue", "dye:white", "dye:blue" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, -}) + minetest.register_craft( { + output = "signs:sign_wall_blue 2", + recipe = { + { "dye:blue", "dye:white", "dye:blue" }, + { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } + }, + }) -minetest.register_craft( { - output = "signs:sign_wall_brown", - recipe = { - { "dye:brown", "dye:white", "dye:brown" }, - { "", default_sign_metal, "" } - }, -}) + minetest.register_craft( { + output = "signs:sign_wall_brown", + recipe = { + { "dye:brown", "dye:white", "dye:brown" }, + { "", default_sign_metal, "" } + }, + }) -minetest.register_craft( { - output = "signs:sign_wall_brown 2", - recipe = { - { "dye:brown", "dye:white", "dye:brown" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, -}) + minetest.register_craft( { + output = "signs:sign_wall_brown 2", + recipe = { + { "dye:brown", "dye:white", "dye:brown" }, + { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } + }, + }) +end if minetest.setting_get("log_mods") then minetest.log("action", S("signs loaded")) -- cgit v1.2.3 From 7657d0d1f219cf2c1b0f5dbaec4f735158cbac30 Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Sat, 28 Jan 2017 06:59:19 -0500 Subject: pass pointed_thing to on_rightclick --- init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/init.lua b/init.lua index 6953e0e..b89cff7 100644 --- a/init.lua +++ b/init.lua @@ -572,7 +572,7 @@ function signs_lib.determine_sign_type(itemstack, placer, pointed_thing, locked) local node=minetest.get_node(pointed_thing.under) if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then - return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack) + return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack, pointed_thing) else local above = pointed_thing.above local under = pointed_thing.under @@ -943,7 +943,7 @@ function signs_lib.register_fence_with_sign(fencename, fencewithsignname) end if def_under and def_under.on_rightclick then - return def_under.on_rightclick(pointed_thing.under, node_under, placer, itemstack) or itemstack + return def_under.on_rightclick(pointed_thing.under, node_under, placer, itemstack, pointed_thing) or itemstack elseif def_under and def_under.buildable_to then minetest.add_node(pointed_thing.under, {name = fencename, param2 = fdir}) if not signs_lib.expect_infinite_stacks then -- cgit v1.2.3 From 523978edcf2c9e1b1196d86d3f7e8c156a65904b Mon Sep 17 00:00:00 2001 From: Dorian Wouters Date: Sun, 5 Mar 2017 13:56:13 -0500 Subject: Fix unplaceable signs on blocks w/ on_rightclick when sneaking --- init.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/init.lua b/init.lua index b89cff7..536066f 100644 --- a/init.lua +++ b/init.lua @@ -571,7 +571,9 @@ function signs_lib.determine_sign_type(itemstack, placer, pointed_thing, locked) local node=minetest.get_node(pointed_thing.under) - if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then + if minetest.registered_nodes[node.name] and + minetest.registered_nodes[node.name].on_rightclick and + not placer:get_player_control().sneak then return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack, pointed_thing) else local above = pointed_thing.above -- cgit v1.2.3 From 770978c632ddd62d51781b89c46d487f1eeb15c6 Mon Sep 17 00:00:00 2001 From: AntumDeluge Date: Thu, 11 May 2017 12:10:12 -0700 Subject: Add cornernote's 'craft_guide' as optional dependency: http://cornernote.github.io/minetest-craft_guide/ --- depends.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/depends.txt b/depends.txt index abb8bd5..7f4e061 100644 --- a/depends.txt +++ b/depends.txt @@ -2,3 +2,4 @@ default intllib? screwdriver? keyword_interact? +craft_guide? -- cgit v1.2.3 From a33f58df61abe5c998320cab78e26b260d0fde33 Mon Sep 17 00:00:00 2001 From: AntumDeluge Date: Fri, 12 May 2017 21:57:11 -0700 Subject: Replace deprecated methods: - 'setting_get' with 'settings:get' - 'setting_getbool' with 'settings:get_bool' --- init.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/init.lua b/init.lua index 536066f..775db95 100644 --- a/init.lua +++ b/init.lua @@ -13,7 +13,7 @@ local enable_colored_metal_signs = true -- CWz's keyword interact mod uses this setting. -local current_keyword = minetest.setting_get("interact_keyword") or "iaccept" +local current_keyword = minetest.settings:get("interact_keyword") or "iaccept" signs_lib = {} screwdriver = screwdriver or {} @@ -165,7 +165,7 @@ end -- infinite stacks -if not minetest.setting_getbool("creative_mode") then +if not minetest.settings:get_bool("creative_mode") then signs_lib.expect_infinite_stacks = false else signs_lib.expect_infinite_stacks = true @@ -793,7 +793,7 @@ minetest.register_node(":locked_sign:sign_wall_locked", { local meta = minetest.get_meta(pos) local owner = meta:get_string("owner") local pname = sender:get_player_name() or "" - if pname ~= owner and pname ~= minetest.setting_get("name") + if pname ~= owner and pname ~= minetest.settings:get("name") and not minetest.check_player_privs(pname, {sign_editor=true}) then return end @@ -806,7 +806,7 @@ minetest.register_node(":locked_sign:sign_wall_locked", { local meta = minetest.get_meta(pos) local owner = meta:get_string("owner") local pname = player:get_player_name() - return pname == owner or pname == minetest.setting_get("name") + return pname == owner or pname == minetest.settings:get("name") or minetest.check_player_privs(pname, {sign_editor=true}) end, on_rotate = signs_lib.wallmounted_rotate @@ -1158,6 +1158,6 @@ if enable_colored_metal_signs then }) end -if minetest.setting_get("log_mods") then +if minetest.settings:get("log_mods") then minetest.log("action", S("signs loaded")) end -- cgit v1.2.3 From 3e001599a65160cc50dd4a49211f2376521576dd Mon Sep 17 00:00:00 2001 From: Carlos Barraza Date: Thu, 27 Apr 2017 16:32:34 -0300 Subject: Add spanish translation. --- locale/es.txt | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 locale/es.txt diff --git a/locale/es.txt b/locale/es.txt new file mode 100644 index 0000000..6741584 --- /dev/null +++ b/locale/es.txt @@ -0,0 +1,9 @@ +#Traducido por Carlos Barraza + +Reading cached character database. = Leyendo la base de datos de caracteres en caché. +Font seems to have changed. Rebuilding cache. = La fuente parece haber cambiado. Reconstruyendo caché. +Could not find font line height in cached DB. Trying brute force. = No se puede encontrar la fuente en la base de datos almacenada en el caché. Tratando fuerza bruta. +Sign = Letrero +%s wrote "%s" to sign at %s = %s escribio "%s" en el cartel en %s +Registered %s and %s = Registrado %s y %s +signs loaded = letreros cargados -- cgit v1.2.3 From cba3e847d991ac24f0cd4b985cabba3088f89975 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Wed, 19 Jul 2017 19:46:54 +0100 Subject: add nil check add nil check to fix this error: https://github.com/minetest-mods/signs_lib/issues/18 --- init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.lua b/init.lua index 775db95..270af71 100644 --- a/init.lua +++ b/init.lua @@ -413,7 +413,7 @@ end local function set_obj_text(obj, text, new, pos) local split = new and split_lines_and_words or split_lines_and_words_old local n = minetest.registered_nodes[minetest.get_node(pos).name] - local text_scale = n.text_scale or DEFAULT_TEXT_SCALE + local text_scale = (n and n.text_scale) or DEFAULT_TEXT_SCALE obj:set_properties({ textures={make_sign_texture(split(text), pos)}, visual_size = text_scale, -- cgit v1.2.3 From 96161c18dcaa5706f1235ee69f34da6466e3eee6 Mon Sep 17 00:00:00 2001 From: fat115 Date: Mon, 31 Jul 2017 18:55:35 +0200 Subject: updated intllib method (po/pot files) added french translation (complete) german and spanish translations are incomplete --- init.lua | 49 ++++++++++++++++----------- intllib.lua | 45 +++++++++++++++++++++++++ locale/de.po | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++ locale/de.txt | 9 ----- locale/es.po | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++ locale/es.txt | 9 ----- locale/fr.po | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++ locale/template.pot | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++ locale/template.txt | 9 ----- 9 files changed, 443 insertions(+), 46 deletions(-) create mode 100644 intllib.lua create mode 100644 locale/de.po delete mode 100644 locale/de.txt create mode 100644 locale/es.po delete mode 100644 locale/es.txt create mode 100644 locale/fr.po create mode 100644 locale/template.pot delete mode 100644 locale/template.txt diff --git a/init.lua b/init.lua index 270af71..5f3acfc 100644 --- a/init.lua +++ b/init.lua @@ -113,8 +113,9 @@ signs_lib.sign_post_model = { } } --- Boilerplate to support localized strings if intllib mod is installed. -local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end +-- Load support for intllib. +local MP = minetest.get_modpath(minetest.get_current_modname()) +local S, NS = dofile(MP.."/intllib.lua") signs_lib.gettext = S -- the list of standard sign nodes @@ -473,7 +474,7 @@ signs_lib.update_sign = function(pos, fields, owner) signs_lib.destruct_sign(pos) meta:set_string("keyword", current_keyword) local ownstr = "" - if owner then ownstr = "Locked sign, owned by "..owner.."\n" end + if owner then ownstr = S("Locked sign, owned by @1\n", owner) end meta:set_string("infotext", ownstr..string.gsub(make_infotext(stored_text), "@KEYWORD", current_keyword).." ") end end @@ -485,7 +486,7 @@ signs_lib.update_sign = function(pos, fields, owner) fields.text = trim_input(fields.text) local ownstr = "" - if owner then ownstr = "Locked sign, owned by "..owner.."\n" end + if owner then ownstr = S("Locked sign, owned by @1\n", owner) end meta:set_string("infotext", ownstr..string.gsub(make_infotext(fields.text), "@KEYWORD", current_keyword).." ") meta:set_string("text", fields.text) @@ -631,11 +632,12 @@ function signs_lib.receive_fields(pos, formname, fields, sender, lock) sender:get_player_name()) return end - local lockstr = lock and "locked " or "" + local lockstr = lock and S("locked ") or "" if fields and fields.text and fields.ok then - minetest.log("action", S("%s wrote \"%s\" to "..lockstr.."sign at %s"):format( + minetest.log("action", S("@1 wrote \"@2\" to @3sign at @4", (sender:get_player_name() or ""), fields.text, + lockstr, minetest.pos_to_string(pos) )) if lock then @@ -766,10 +768,10 @@ minetest.register_node(":signs:sign_post", { -- Locked wall sign -minetest.register_privilege("sign_editor", "Can edit all locked signs") +minetest.register_privilege("sign_editor", S("Can edit all locked signs")) minetest.register_node(":locked_sign:sign_wall_locked", { - description = S("Sign"), + description = S("Locked Sign"), inventory_image = "signs_locked_inv.png", wield_image = "signs_locked_inv.png", node_placement_prediction = "", @@ -849,14 +851,23 @@ end -- metal, colored signs if enable_colored_metal_signs then - local sign_colors = { "green", "yellow", "red", "white_red", "white_black", "orange", "blue", "brown" } - local sign_default_text_colors = { "f", "0", "f", "4", "0", "0", "f", "f" } + -- array : color, translated color, default text color + local sign_colors = { + {"green", S("green"), "f"}, + {"yellow", S("yellow"), "0"}, + {"red", S("red"), "f"}, + {"white_red", S("white_red"), "4"}, + {"white_black", S("white_black"), "0"}, + {"orange", S("orange"), "0"}, + {"blue", S("blue"), "f"}, + {"brown", S("brown"), "f"}, + } for i, color in ipairs(sign_colors) do - minetest.register_node(":signs:sign_wall_"..color, { - description = S("Sign ("..color..", metal)"), - inventory_image = "signs_"..color.."_inv.png", - wield_image = "signs_"..color.."_inv.png", + minetest.register_node(":signs:sign_wall_"..color[1], { + description = S("Sign (@1, metal)", color[2]), + inventory_image = "signs_"..color[1].."_inv.png", + wield_image = "signs_"..color[1].."_inv.png", node_placement_prediction = "", paramtype = "light", sunlight_propagates = true, @@ -869,9 +880,9 @@ if enable_colored_metal_signs then "signs_metal_sides.png", "signs_metal_sides.png", "signs_metal_back.png", - "signs_"..color.."_front.png" + "signs_"..color[1].."_front.png" }, - default_color = sign_default_text_colors[i], + default_color = color[3], groups = sign_groups, on_place = function(itemstack, placer, pointed_thing) return signs_lib.determine_sign_type(itemstack, placer, pointed_thing) @@ -919,7 +930,7 @@ function signs_lib.register_fence_with_sign(fencename, fencewithsignname) local def = minetest.registered_nodes[fencename] local def_sign = minetest.registered_nodes[fencewithsignname] if not (def and def_sign) then - minetest.log("warning", "[signs_lib] Attempt to register unknown node as fence") + minetest.log("warning", "[signs_lib] "..S("Attempt to register unknown node as fence")) return end def = signs_lib.table_copy(def) @@ -982,7 +993,7 @@ function signs_lib.register_fence_with_sign(fencename, fencewithsignname) minetest.register_node(":"..fencename, def) minetest.register_node(":"..fencewithsignname, def_sign) table.insert(signs_lib.sign_node_list, fencewithsignname) - minetest.log("verbose", S("Registered %s and %s"):format(fencename, fencewithsignname)) + minetest.log("verbose", S("Registered @1 and @2", fencename, fencewithsignname)) end build_char_db() @@ -1159,5 +1170,5 @@ if enable_colored_metal_signs then end if minetest.settings:get("log_mods") then - minetest.log("action", S("signs loaded")) + minetest.log("action", S("[MOD] signs loaded")) end diff --git a/intllib.lua b/intllib.lua new file mode 100644 index 0000000..6669d72 --- /dev/null +++ b/intllib.lua @@ -0,0 +1,45 @@ + +-- Fallback functions for when `intllib` is not installed. +-- Code released under Unlicense . + +-- Get the latest version of this file at: +-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua + +local function format(str, ...) + local args = { ... } + local function repl(escape, open, num, close) + if escape == "" then + local replacement = tostring(args[tonumber(num)]) + if open == "" then + replacement = replacement..close + end + return replacement + else + return "@"..open..num..close + end + end + return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl)) +end + +local gettext, ngettext +if minetest.get_modpath("intllib") then + if intllib.make_gettext_pair then + -- New method using gettext. + gettext, ngettext = intllib.make_gettext_pair() + else + -- Old method using text files. + gettext = intllib.Getter() + end +end + +-- Fill in missing functions. + +gettext = gettext or function(msgid, ...) + return format(msgid, ...) +end + +ngettext = ngettext or function(msgid, msgid_plural, n, ...) + return format(n==1 and msgid or msgid_plural, ...) +end + +return gettext, ngettext diff --git a/locale/de.po b/locale/de.po new file mode 100644 index 0000000..24f13a4 --- /dev/null +++ b/locale/de.po @@ -0,0 +1,92 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-31 18:31+0200\n" +"PO-Revision-Date: 2017-07-31 18:35+0200\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.12\n" +"Last-Translator: Xanthin\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: de\n" + +#: init.lua +msgid "Locked sign, owned by @1\n" +msgstr "" + +#: init.lua +msgid "locked " +msgstr "eingesperrt " + +#: init.lua +#, fuzzy +msgid "@1 wrote \"@2\" to @3sign at @4" +msgstr "@1 schrieb \"@2\" auf das @3Schild bei @4" + +#: init.lua +msgid "Sign" +msgstr "Schild" + +#: init.lua +msgid "Can edit all locked signs" +msgstr "" + +#: init.lua +msgid "Locked Sign" +msgstr "" + +#: init.lua +msgid "green" +msgstr "" + +#: init.lua +msgid "yellow" +msgstr "" + +#: init.lua +msgid "red" +msgstr "" + +#: init.lua +msgid "white_red" +msgstr "" + +#: init.lua +msgid "white_black" +msgstr "" + +#: init.lua +msgid "orange" +msgstr "" + +#: init.lua +msgid "blue" +msgstr "" + +#: init.lua +msgid "brown" +msgstr "" + +#: init.lua +msgid "Sign (@1, metal)" +msgstr "Schild (@1, Metall)" + +#: init.lua +msgid "Attempt to register unknown node as fence" +msgstr "" + +#: init.lua +msgid "Registered @1 and @2" +msgstr "Registrierte @1 und @2" + +#: init.lua +msgid "[MOD] signs loaded" +msgstr "[MOD] signs geladen" diff --git a/locale/de.txt b/locale/de.txt deleted file mode 100644 index 8d43f77..0000000 --- a/locale/de.txt +++ /dev/null @@ -1,9 +0,0 @@ -# Translation by Xanthin - -Reading cached character database. = Lese zwischengespeicherte Buchstabendatenbank. -Font seems to have changed. Rebuilding cache. = Schriftart scheint sich geaendert zu haben. Wiederaufbau des Zwischenspeichers. -Could not find font line height in cached DB. Trying brute force. = Konnte die Schriftzeilenhoehe nicht in der zwischengespeicherten DB finden. Versuche Brute-Force. -Sign = Schild -%s wrote "%s" to sign at %s = %s schrieb "%s" auf das Schild bei %s -Registered %s and %s = Registrierte %s und %s -signs loaded = signs geladen diff --git a/locale/es.po b/locale/es.po new file mode 100644 index 0000000..8579937 --- /dev/null +++ b/locale/es.po @@ -0,0 +1,95 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-31 18:22+0200\n" +"PO-Revision-Date: 2017-07-31 18:30+0200\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.12\n" +"Last-Translator: Carlos Barraza\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\n" + +#: init.lua +msgid "Locked sign, owned by @1\n" +msgstr "" + +#: init.lua +msgid "locked " +msgstr "bloqueada " + +#: init.lua +msgid "@1 wrote \"@2\" to @3sign at @4" +msgstr "@1 escribio \"@2\" en el cartel @3en @4" + +#: init.lua +msgid "Sign" +msgstr "Letrero" + +#: init.lua +msgid "Can edit all locked signs" +msgstr "" + +#: init.lua +#, fuzzy +msgid "Locked Sign" +msgstr "Letrero bloqueada" + +#: init.lua +msgid "green" +msgstr "verde" + +#: init.lua +msgid "yellow" +msgstr "amarillo" + +#: init.lua +msgid "red" +msgstr "rojo" + +#: init.lua +#, fuzzy +msgid "white_red" +msgstr "rojo y blanco" + +#: init.lua +#, fuzzy +msgid "white_black" +msgstr "negro y blanco" + +#: init.lua +msgid "orange" +msgstr "naranja" + +#: init.lua +msgid "blue" +msgstr "azul" + +#: init.lua +msgid "brown" +msgstr "marrón" + +#: init.lua +#, fuzzy +msgid "Sign (@1, metal)" +msgstr "Letrero (@1, metal)" + +#: init.lua +msgid "Attempt to register unknown node as fence" +msgstr "" + +#: init.lua +msgid "Registered @1 and @2" +msgstr "Registrado @1 y @2" + +#: init.lua +msgid "[MOD] signs loaded" +msgstr "[MOD] signs cargados" diff --git a/locale/es.txt b/locale/es.txt deleted file mode 100644 index 6741584..0000000 --- a/locale/es.txt +++ /dev/null @@ -1,9 +0,0 @@ -#Traducido por Carlos Barraza - -Reading cached character database. = Leyendo la base de datos de caracteres en caché. -Font seems to have changed. Rebuilding cache. = La fuente parece haber cambiado. Reconstruyendo caché. -Could not find font line height in cached DB. Trying brute force. = No se puede encontrar la fuente en la base de datos almacenada en el caché. Tratando fuerza bruta. -Sign = Letrero -%s wrote "%s" to sign at %s = %s escribio "%s" en el cartel en %s -Registered %s and %s = Registrado %s y %s -signs loaded = letreros cargados diff --git a/locale/fr.po b/locale/fr.po new file mode 100644 index 0000000..a503574 --- /dev/null +++ b/locale/fr.po @@ -0,0 +1,91 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-31 18:13+0200\n" +"PO-Revision-Date: 2017-07-31 18:22+0200\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.12\n" +"Last-Translator: fat115 \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Language: fr\n" + +#: init.lua +msgid "Locked sign, owned by @1\n" +msgstr "Panneau verrouillé, appartient à @1\n" + +#: init.lua +msgid "locked " +msgstr "verrouillé " + +#: init.lua +msgid "@1 wrote \"@2\" to @3sign at @4" +msgstr "@1 a écrit \"@2\" sur le panneau @3en @4" + +#: init.lua +msgid "Sign" +msgstr "Panneau" + +#: init.lua +msgid "Can edit all locked signs" +msgstr "Peut modifier les panneaux verrouillés" + +#: init.lua +msgid "Locked Sign" +msgstr "Panneau (verrouillé)" + +#: init.lua +msgid "green" +msgstr "vert" + +#: init.lua +msgid "yellow" +msgstr "jaune" + +#: init.lua +msgid "red" +msgstr "rouge" + +#: init.lua +msgid "white_red" +msgstr "rouge et blanc" + +#: init.lua +msgid "white_black" +msgstr "noir et blanc" + +#: init.lua +msgid "orange" +msgstr "orange" + +#: init.lua +msgid "blue" +msgstr "bleu" + +#: init.lua +msgid "brown" +msgstr "marron" + +#: init.lua +msgid "Sign (@1, metal)" +msgstr "Panneau (@1, métal)" + +#: init.lua +msgid "Attempt to register unknown node as fence" +msgstr "Tentative d'enregistrer un nœud inconnu comme barrière" + +#: init.lua +msgid "Registered @1 and @2" +msgstr "Enregistrement de @1 et @" + +#: init.lua +msgid "[MOD] signs loaded" +msgstr "[MOD] signs chargé" diff --git a/locale/template.pot b/locale/template.pot new file mode 100644 index 0000000..8a80e3c --- /dev/null +++ b/locale/template.pot @@ -0,0 +1,90 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-31 18:00+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: init.lua +msgid "Locked sign, owned by @1\n" +msgstr "" + +#: init.lua +msgid "locked " +msgstr "" + +#: init.lua +msgid "@1 wrote \"@2\" to @3sign at @4" +msgstr "" + +#: init.lua +msgid "Sign" +msgstr "" + +#: init.lua +msgid "Can edit all locked signs" +msgstr "" + +#: init.lua +msgid "Locked Sign" +msgstr "" + +#: init.lua +msgid "green" +msgstr "" + +#: init.lua +msgid "yellow" +msgstr "" + +#: init.lua +msgid "red" +msgstr "" + +#: init.lua +msgid "white_red" +msgstr "" + +#: init.lua +msgid "white_black" +msgstr "" + +#: init.lua +msgid "orange" +msgstr "" + +#: init.lua +msgid "blue" +msgstr "" + +#: init.lua +msgid "brown" +msgstr "" + +#: init.lua +msgid "Sign (@1, metal)" +msgstr "" + +#: init.lua +msgid "Attempt to register unknown node as fence" +msgstr "" + +#: init.lua +msgid "Registered @1 and @2" +msgstr "" + +#: init.lua +msgid "[MOD] signs loaded" +msgstr "" diff --git a/locale/template.txt b/locale/template.txt deleted file mode 100644 index c1851a8..0000000 --- a/locale/template.txt +++ /dev/null @@ -1,9 +0,0 @@ -#Template - -Reading cached character database. = -Font seems to have changed. Rebuilding cache. = -Could not find font line height in cached DB. Trying brute force. = -Sign = -%s wrote "%s" to sign at %s = -Registered %s and %s = -signs loaded = -- cgit v1.2.3 From a755607f7d9a84daff679f706f10a5b90743aa5a Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Mon, 25 Sep 2017 23:29:44 -0400 Subject: remove unneeded recipe for locked sign --- init.lua | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/init.lua b/init.lua index 5f3acfc..804a720 100644 --- a/init.lua +++ b/init.lua @@ -1018,17 +1018,6 @@ minetest.register_lbm({ -- locked sign -minetest.register_craft({ - output = "locked_sign:sign_wall_locked", - recipe = { - {"group:wood", "group:wood", "group:wood"}, - {"group:wood", "group:wood", "default:steel_ingot"}, - {"", "group:stick", ""}, - } -}) - ---Alternate recipe - minetest.register_craft({ output = "locked_sign:sign_wall_locked", recipe = { -- cgit v1.2.3 From a06627f23b052207d3fc23d786c525f2cd26096c Mon Sep 17 00:00:00 2001 From: orwell96 Date: Thu, 19 Oct 2017 13:37:46 +0200 Subject: Add sign macro functionality Allow to replace certain keywords on signs by defining a single string globally --- init.lua | 3 +++ macro.lua | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 macro.lua diff --git a/init.lua b/init.lua index 804a720..5c18308 100644 --- a/init.lua +++ b/init.lua @@ -15,6 +15,8 @@ local enable_colored_metal_signs = true -- CWz's keyword interact mod uses this setting. local current_keyword = minetest.settings:get("interact_keyword") or "iaccept" +local replace_macros = dofile(minetest.get_modpath(minetest.get_current_modname())..DIR_DELIM.."macro.lua") + signs_lib = {} screwdriver = screwdriver or {} @@ -290,6 +292,7 @@ end local function split_lines_and_words(text) if not text then return end text = string.gsub(text, "@KEYWORD", current_keyword) + text = replace_macros(text) local lines = { } for _, line in ipairs(text:split("\n")) do table.insert(lines, line:split(" ")) diff --git a/macro.lua b/macro.lua new file mode 100644 index 0000000..1a6bfa3 --- /dev/null +++ b/macro.lua @@ -0,0 +1,48 @@ +-- signs_lib text macros +-- by orwell96 + +local mstore=minetest.get_mod_storage() + +local macros = minetest.deserialize(mstore:get_string("macros")) or {} + +local function save_macros() + mstore:set_string("macros", minetest.serialize(macros)) +end + +minetest.register_privilege("signs_macro", { description = "May edit sign macros", give_to_singleplayer = true, default = false }) + +minetest.register_chatcommand("signs_macro", { + params = "list | set | clear ", + description = "List or edit sign macros", + privs = {signs_macros}, + func = function(name, param) + if param=="list" then + local c=0 + for k,v in pairs(macros) do + minetest.chat_send_player(name, "@"..k.." -> "..v) + c=c+1 + end + return true, "Listed "..c.." sign macros." + end + local macro, strg = string.match(param, "^set%s@?([^@%s]+)%s?(.*)$") + if macro and strg then + macros[macro]=strg + save_macros() + return true, "Set macro '@"..macro.."'." + end + macro = string.match(param, "^clear%s@?(%S+)$") + if macro then + macros[macro]=nil + save_macros() + return true, "Cleared macro '@"..macro.."'." + end + return false, "Incorrect usage! Syntax: list | set | clear " + end + }) +-- replace_macros(text) +return function(text) + for k, v in pairs(macros) do + text=string.gsub(text, "@"..k, v) + end + return text +end -- cgit v1.2.3