Compare commits

...

21 Commits
fix1 ... tmp

Author SHA1 Message Date
c655902676 I have no idea what I'm doing. 2017-02-22 20:48:24 -03:00
7657d0d1f2 pass pointed_thing to on_rightclick 2017-01-28 06:59:19 -05:00
66265132dd Merge pull request #7 from xisd/patch-1
make colored metal signs optional (default to enabled)
2016-10-04 05:14:42 -04:00
9daf035d44 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)
2016-10-04 10:43:07 +02:00
db0973439c minor API change: defaultcolor -> default_color 2016-09-15 08:40:16 -04:00
4481ea8726 infinite stacks only depend on creative mode now
(don't care of unified inventory is installed)
2016-09-15 08:33:23 -04:00
9dab7d8736 add default steel sign to restore-entities LBM 2016-09-15 07:57:34 -04:00
a6caa51a85 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.
2016-09-15 07:20:34 -04:00
707f28c309 removed metal sign -> locked wooden sign recipe
(makes no sense in practice)
2016-09-09 06:45:50 -04:00
a6be7f222d 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.
2016-09-09 05:37:36 -04:00
b85eabb58d added option to specify text position when making a custom sign node 2016-09-09 04:32:51 -04:00
5bbaa4f294 remove debug stuff 2016-09-09 04:14:34 -04:00
9d6d9b11e1 add support for visible text on default steel signs
(if defined by subgame)
2016-09-09 04:08:20 -04:00
931a3e2b15 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)
2016-09-09 03:45:25 -04:00
fef163662a 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)
2016-09-09 03:28:32 -04:00
7735a3a382 Clarify comment/reason for LBM 2016-09-09 02:55:21 -04:00
700baef196 Merge pull request #6 from cheapie/master
Use LBM instead of ABM to restore sign text
2016-09-03 17:59:15 -04:00
d85713cf63 Use LBM instead of ABM to restore sign text 2016-09-03 15:09:55 -05:00
cbe3c8a811 "debug" is not a valid log level. 2016-04-23 19:57:16 -07:00
f40f588367 Add screenshot.png 2016-03-27 22:24:35 -07:00
62989f1e1d Adding standard mod files 2016-03-27 21:35:38 -07:00
5 changed files with 250 additions and 197 deletions

1
description.txt Normal file
View File

@ -0,0 +1 @@
Adds signs with readable text.

259
init.lua
View File

@ -9,6 +9,8 @@
-- { delta = {entity position for 270° yaw}, exact yaw expression } -- { delta = {entity position for 270° yaw}, exact yaw expression }
-- { delta = {entity position for 90° 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. -- CWz's keyword interact mod uses this setting.
local current_keyword = minetest.setting_get("interact_keyword") or "iaccept" local current_keyword = minetest.setting_get("interact_keyword") or "iaccept"
@ -31,6 +33,8 @@ end
signs_lib.modpath = minetest.get_modpath("signs_lib") signs_lib.modpath = minetest.get_modpath("signs_lib")
local DEFAULT_TEXT_SCALE = {x=0.8, y=0.5}
signs_lib.regular_wall_sign_model = { signs_lib.regular_wall_sign_model = {
nodebox = { nodebox = {
type = "wallmounted", type = "wallmounted",
@ -41,10 +45,10 @@ signs_lib.regular_wall_sign_model = {
textpos = { textpos = {
nil, nil,
nil, nil,
{delta = {x = 0.43, 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.43, 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.43 }, yaw = 0}, {delta = { x = 0, y = 0.07, z = 0.41 }, yaw = 0},
{delta = {x = 0, y = 0.07, z = -0.43 }, yaw = math.pi}, {delta = { x = 0, y = 0.07, z = -0.41 }, yaw = math.pi},
} }
} }
@ -54,10 +58,10 @@ signs_lib.metal_wall_sign_model = {
fixed = {-0.4375, -0.25, 0.4375, 0.4375, 0.375, 0.5} fixed = {-0.4375, -0.25, 0.4375, 0.4375, 0.375, 0.5}
}, },
textpos = { textpos = {
{delta = {x = 0, y = 0.07, z = 0.43 }, yaw = 0}, {delta = { x = 0, y = 0.07, z = 0.41 }, yaw = 0},
{delta = {x = 0.43, 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.43 }, yaw = math.pi}, {delta = { x = 0, y = 0.07, z = -0.41 }, yaw = math.pi},
{delta = {x = -0.43, y = 0.07, z = 0 }, yaw = math.pi / 2}, {delta = { x = -0.41, y = 0.07, z = 0 }, yaw = math.pi / 2},
} }
} }
@ -70,10 +74,10 @@ signs_lib.yard_sign_model = {
} }
}, },
textpos = { textpos = {
{delta = {x = 0, y = 0.07, z = -0.068}, yaw = 0}, {delta = { x = 0, y = 0.07, z = -0.08 }, yaw = 0},
{delta = {x = -0.068, y = 0.07, z = 0 }, yaw = math.pi / -2}, {delta = { x = -0.08, y = 0.07, z = 0 }, yaw = math.pi / -2},
{delta = {x = 0, y = 0.07, z = 0.068}, yaw = math.pi}, {delta = { x = 0, y = 0.07, z = 0.08 }, yaw = math.pi},
{delta = {x = 0.068, y = 0.07, z = 0 }, yaw = math.pi / 2}, {delta = { x = 0.08, y = 0.07, z = 0 }, yaw = math.pi / 2},
} }
} }
@ -86,10 +90,10 @@ signs_lib.hanging_sign_model = {
} }
}, },
textpos = { textpos = {
{delta = {x = 0, y = -0.02, z = -0.063}, yaw = 0}, {delta = { x = 0, y = -0.02, z = -0.08 }, yaw = 0},
{delta = {x = -0.063, y = -0.02, z = 0 }, yaw = math.pi / -2}, {delta = { x = -0.08, y = -0.02, z = 0 }, yaw = math.pi / -2},
{delta = {x = 0, y = -0.02, z = 0.063}, yaw = math.pi}, {delta = { x = 0, y = -0.02, z = 0.08 }, yaw = math.pi},
{delta = {x = 0.063, y = -0.02, z = 0 }, yaw = math.pi / 2}, {delta = { x = 0.08, y = -0.02, z = 0 }, yaw = math.pi / 2},
} }
} }
@ -102,10 +106,10 @@ signs_lib.sign_post_model = {
} }
}, },
textpos = { textpos = {
{delta = {x = 0, y = 0.07, z = -0.188}, yaw = 0}, {delta = { x = 0, y = 0.07, z = -0.2 }, yaw = 0},
{delta = {x = -0.188, y = 0.07, z = 0 }, yaw = math.pi / -2}, {delta = { x = -0.2, y = 0.07, z = 0 }, yaw = math.pi / -2},
{delta = {x = 0, y = 0.07, z = 0.188 }, yaw = math.pi}, {delta = { x = 0, y = 0.07, z = 0.2 }, yaw = math.pi},
{delta = {x = 0.188, y = 0.07, z = 0 }, yaw = math.pi / 2}, {delta = { x = 0.2, y = 0.07, z = 0 }, yaw = math.pi / 2},
} }
} }
@ -117,6 +121,7 @@ signs_lib.gettext = S
signs_lib.sign_node_list = { signs_lib.sign_node_list = {
"default:sign_wall_wood", "default:sign_wall_wood",
"default:sign_wall_steel",
"signs:sign_yard", "signs:sign_yard",
"signs:sign_hanging", "signs:sign_hanging",
"signs:sign_wall_green", "signs:sign_wall_green",
@ -141,6 +146,9 @@ else
default_sign_image = "default_sign_wall.png" default_sign_image = "default_sign_wall.png"
end end
default_sign_metal = "default:sign_wall_steel"
default_sign_metal_image = "default_sign_steel.png"
--table copy --table copy
function signs_lib.table_copy(t) function signs_lib.table_copy(t)
@ -157,7 +165,7 @@ end
-- infinite stacks -- 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 signs_lib.expect_infinite_stacks = false
else else
signs_lib.expect_infinite_stacks = true signs_lib.expect_infinite_stacks = true
@ -176,8 +184,6 @@ local FONT_FMT_SIMPLE = "hdf_%02x.png"
-- Path to the textures. -- Path to the textures.
local TP = MP.."/textures" local TP = MP.."/textures"
local TEXT_SCALE = {x=0.8, y=0.5}
-- Lots of overkill here. KISS advocates, go away, shoo! ;) -- kaeza -- Lots of overkill here. KISS advocates, go away, shoo! ;) -- kaeza
local PNG_HDR = string.char(0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A) local PNG_HDR = string.char(0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A)
@ -301,14 +307,16 @@ local function fill_line(x, y, w, c)
return table.concat(tex) return table.concat(tex)
end end
local function make_line_texture(line, lineno) local function make_line_texture(line, lineno, pos)
local width = 0 local width = 0
local maxw = 0 local maxw = 0
local words = { } local words = { }
local n = minetest.registered_nodes[minetest.get_node(pos).name]
local default_color = n.default_color or 0
local cur_color = 0 local cur_color = tonumber(default_color, 16)
-- We check which chars are available here. -- We check which chars are available here.
for word_i, word in ipairs(line) do for word_i, word in ipairs(line) do
@ -389,12 +397,12 @@ local function make_line_texture(line, lineno)
return table.concat(texture), lineno return table.concat(texture), lineno
end 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 texture = { ("[combine:%dx%d"):format(SIGN_WIDTH, LINE_HEIGHT * NUMBER_OF_LINES) }
local lineno = 0 local lineno = 0
for i = 1, #lines do for i = 1, #lines do
if lineno >= NUMBER_OF_LINES then break end 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) table.insert(texture, linetex)
lineno = ln + 1 lineno = ln + 1
end end
@ -402,11 +410,13 @@ local function make_sign_texture(lines)
return table.concat(texture, "") return table.concat(texture, "")
end 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 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({ obj:set_properties({
textures={make_sign_texture(split(text))}, textures={make_sign_texture(split(text), pos)},
visual_size = TEXT_SCALE, visual_size = text_scale,
}) })
end end
@ -488,31 +498,27 @@ signs_lib.update_sign = function(pos, fields, owner)
local text = meta:get_string("text") local text = meta:get_string("text")
if text == nil then return end if text == nil then return end
local objects = minetest.get_objects_inside_radius(pos, 0.5) local objects = minetest.get_objects_inside_radius(pos, 0.5)
local found
for _, v in ipairs(objects) do for _, v in ipairs(objects) do
local e = v:get_luaentity() local e = v:get_luaentity()
if e and e.name == "signs:text" then if e and e.name == "signs:text" then
if found then
v:remove() v:remove()
else
set_obj_text(v, text, new)
found = true
end end
end end
end
if found then
return
end
-- if there is no entity -- if there is no entity
local sign_info local sign_info
local signnode = minetest.get_node(pos) 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] sign_info = signs_lib.yard_sign_model.textpos[minetest.get_node(pos).param2 + 1]
elseif signnode.name == "signs:sign_hanging" then elseif signnode.name == "signs:sign_hanging" then
sign_info = signs_lib.hanging_sign_model.textpos[minetest.get_node(pos).param2 + 1] sign_info = signs_lib.hanging_sign_model.textpos[minetest.get_node(pos).param2 + 1]
elseif string.find(signnode.name, "sign_wall") then elseif string.find(signnode.name, "sign_wall") then
if signnode.name == default_sign if signnode.name == default_sign
or signnode.name == default_sign_metal
or signnode.name == "locked_sign:sign_wall_locked" then or signnode.name == "locked_sign:sign_wall_locked" then
sign_info = signs_lib.regular_wall_sign_model.textpos[minetest.get_node(pos).param2 + 1] sign_info = signs_lib.regular_wall_sign_model.textpos[minetest.get_node(pos).param2 + 1]
else else
@ -557,7 +563,7 @@ function signs_lib.determine_sign_type(itemstack, placer, pointed_thing, locked)
local node=minetest.get_node(pointed_thing.under) 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 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 else
local above = pointed_thing.above local above = pointed_thing.above
local under = pointed_thing.under local under = pointed_thing.under
@ -577,7 +583,6 @@ function signs_lib.determine_sign_type(itemstack, placer, pointed_thing, locked)
end end
local fdir = minetest.dir_to_facedir(dir) local fdir = minetest.dir_to_facedir(dir)
local pt_name = minetest.get_node(under).name local pt_name = minetest.get_node(under).name
local signname = itemstack:get_name() local signname = itemstack:get_name()
@ -587,8 +592,11 @@ function signs_lib.determine_sign_type(itemstack, placer, pointed_thing, locked)
minetest.add_node(above, {name = "signs:sign_hanging", param2 = fdir}) minetest.add_node(above, {name = "signs:sign_hanging", param2 = fdir})
elseif wdir == 1 and signname == default_sign then elseif wdir == 1 and signname == default_sign then
minetest.add_node(above, {name = "signs:sign_yard", param2 = fdir}) minetest.add_node(above, {name = "signs:sign_yard", param2 = fdir})
elseif signname == default_sign_metal then
minetest.add_node(above, {name = signname, param2 = wdir })
elseif signname ~= default_sign 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}) minetest.add_node(above, {name = signname, param2 = fdir})
else -- it must be a default or locked wooden wall sign else -- it must be a default or locked wooden wall sign
minetest.add_node(above, {name = signname, param2 = wdir }) -- note it's wallmounted here! minetest.add_node(above, {name = signname, param2 = wdir }) -- note it's wallmounted here!
@ -793,11 +801,47 @@ minetest.register_node(":locked_sign:sign_wall_locked", {
on_rotate = signs_lib.wallmounted_rotate 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 -- 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" }
local sign_colors = { "green", "yellow", "red", "white_red", "white_black", "orange", "blue", "brown" } for i, color in ipairs(sign_colors) do
for _, color in ipairs(sign_colors) do
minetest.register_node(":signs:sign_wall_"..color, { minetest.register_node(":signs:sign_wall_"..color, {
description = S("Sign ("..color..", metal)"), description = S("Sign ("..color..", metal)"),
inventory_image = "signs_"..color.."_inv.png", inventory_image = "signs_"..color.."_inv.png",
@ -816,6 +860,7 @@ for _, color in ipairs(sign_colors) do
"signs_metal_back.png", "signs_metal_back.png",
"signs_"..color.."_front.png" "signs_"..color.."_front.png"
}, },
default_color = sign_default_text_colors[i],
groups = sign_groups, groups = sign_groups,
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
return signs_lib.determine_sign_type(itemstack, placer, pointed_thing) return signs_lib.determine_sign_type(itemstack, placer, pointed_thing)
@ -833,17 +878,19 @@ for _, color in ipairs(sign_colors) do
signs_lib.update_sign(pos) signs_lib.update_sign(pos)
end, end,
}) })
end
end end
local signs_text_on_activate local signs_text_on_activate
signs_text_on_activate = function(self) 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 text = meta:get_string("text")
local new = (meta:get_int("__signslib_new_format") ~= 0) local new = (meta:get_int("__signslib_new_format") ~= 0)
if text then if text then
text = trim_input(text) text = trim_input(text)
set_obj_text(self.object, text, new) set_obj_text(self.object, text, new, pos)
end end
end end
@ -887,7 +934,7 @@ function signs_lib.register_fence_with_sign(fencename, fencewithsignname)
end end
if def_under and def_under.on_rightclick then 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 elseif def_under and def_under.buildable_to then
minetest.add_node(pointed_thing.under, {name = fencename, param2 = fdir}) minetest.add_node(pointed_thing.under, {name = fencename, param2 = fdir})
if not signs_lib.expect_infinite_stacks then if not signs_lib.expect_infinite_stacks then
@ -924,7 +971,7 @@ function signs_lib.register_fence_with_sign(fencename, fencewithsignname)
minetest.register_node(":"..fencename, def) minetest.register_node(":"..fencename, def)
minetest.register_node(":"..fencewithsignname, def_sign) minetest.register_node(":"..fencewithsignname, def_sign)
table.insert(signs_lib.sign_node_list, fencewithsignname) table.insert(signs_lib.sign_node_list, fencewithsignname)
minetest.log("debug", S("Registered %s and %s"):format(fencename, fencewithsignname)) minetest.log("verbose", S("Registered %s and %s"):format(fencename, fencewithsignname))
end end
build_char_db() build_char_db()
@ -934,13 +981,15 @@ minetest.register_alias("sign_wall_locked", "locked_sign:sign_wall_locked")
signs_lib.register_fence_with_sign("default:fence_wood", "signs:sign_post") 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_abm({ minetest.register_lbm({
nodenames = signs_lib.sign_node_list, nodenames = signs_lib.sign_node_list,
interval = 15, name = "signs_lib:restore_sign_text",
chance = 1, label = "Restore sign text",
action = function(pos, node, active_object_count, active_object_count_wider) run_at_every_load = true,
action = function(pos, node)
signs_lib.update_sign(pos) signs_lib.update_sign(pos)
end end
}) })
@ -956,7 +1005,7 @@ minetest.register_craft({
} }
}) })
--Alternate recipe. --Alternate recipe
minetest.register_craft({ minetest.register_craft({
output = "locked_sign:sign_wall_locked", output = "locked_sign:sign_wall_locked",
@ -967,134 +1016,136 @@ minetest.register_craft({
}) })
-- craft recipes for the metal signs -- craft recipes for the metal signs
if enable_colored_metal_signs then
minetest.register_craft( { minetest.register_craft( {
output = "signs:sign_wall_green 4", output = "signs:sign_wall_green",
recipe = { recipe = {
{ "dye:dark_green", "dye:white", "dye:dark_green" }, { "dye:dark_green", "dye:white", "dye:dark_green" },
{ "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" } { "", default_sign_metal, "" }
}, },
}) })
minetest.register_craft( { minetest.register_craft( {
output = "signs:sign_wall_green 2", output = "signs:sign_wall_green 2",
recipe = { recipe = {
{ "dye:dark_green", "dye:white", "dye:dark_green" }, { "dye:dark_green", "dye:white", "dye:dark_green" },
{ "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" }
}, },
}) })
minetest.register_craft( { minetest.register_craft( {
output = "signs:sign_wall_yellow 4", output = "signs:sign_wall_yellow",
recipe = { recipe = {
{ "dye:yellow", "dye:black", "dye:yellow" }, { "dye:yellow", "dye:black", "dye:yellow" },
{ "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" } { "", default_sign_metal, "" }
}, },
}) })
minetest.register_craft( { minetest.register_craft( {
output = "signs:sign_wall_yellow 2", output = "signs:sign_wall_yellow 2",
recipe = { recipe = {
{ "dye:yellow", "dye:black", "dye:yellow" }, { "dye:yellow", "dye:black", "dye:yellow" },
{ "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" }
}, },
}) })
minetest.register_craft( { minetest.register_craft( {
output = "signs:sign_wall_red 4", output = "signs:sign_wall_red",
recipe = { recipe = {
{ "dye:red", "dye:white", "dye:red" }, { "dye:red", "dye:white", "dye:red" },
{ "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" } { "", default_sign_metal, "" }
}, },
}) })
minetest.register_craft( { minetest.register_craft( {
output = "signs:sign_wall_red 2", output = "signs:sign_wall_red 2",
recipe = { recipe = {
{ "dye:red", "dye:white", "dye:red" }, { "dye:red", "dye:white", "dye:red" },
{ "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" }
}, },
}) })
minetest.register_craft( { minetest.register_craft( {
output = "signs:sign_wall_white_red 4", output = "signs:sign_wall_white_red",
recipe = { recipe = {
{ "dye:white", "dye:red", "dye:white" }, { "dye:white", "dye:red", "dye:white" },
{ "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" } { "", default_sign_metal, "" }
}, },
}) })
minetest.register_craft( { minetest.register_craft( {
output = "signs:sign_wall_white_red 2", output = "signs:sign_wall_white_red 2",
recipe = { recipe = {
{ "dye:white", "dye:red", "dye:white" }, { "dye:white", "dye:red", "dye:white" },
{ "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" }
}, },
}) })
minetest.register_craft( { minetest.register_craft( {
output = "signs:sign_wall_white_black 4", output = "signs:sign_wall_white_black",
recipe = { recipe = {
{ "dye:white", "dye:black", "dye:white" }, { "dye:white", "dye:black", "dye:white" },
{ "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" } { "", default_sign_metal, "" }
}, },
}) })
minetest.register_craft( { minetest.register_craft( {
output = "signs:sign_wall_white_black 2", output = "signs:sign_wall_white_black 2",
recipe = { recipe = {
{ "dye:white", "dye:black", "dye:white" }, { "dye:white", "dye:black", "dye:white" },
{ "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" }
}, },
}) })
minetest.register_craft( { minetest.register_craft( {
output = "signs:sign_wall_orange 4", output = "signs:sign_wall_orange",
recipe = { recipe = {
{ "dye:orange", "dye:black", "dye:orange" }, { "dye:orange", "dye:black", "dye:orange" },
{ "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" } { "", default_sign_metal, "" }
}, },
}) })
minetest.register_craft( { minetest.register_craft( {
output = "signs:sign_wall_orange 2", output = "signs:sign_wall_orange 2",
recipe = { recipe = {
{ "dye:orange", "dye:black", "dye:orange" }, { "dye:orange", "dye:black", "dye:orange" },
{ "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" }
}, },
}) })
minetest.register_craft( { minetest.register_craft( {
output = "signs:sign_wall_blue 4", output = "signs:sign_wall_blue",
recipe = { recipe = {
{ "dye:blue", "dye:white", "dye:blue" }, { "dye:blue", "dye:white", "dye:blue" },
{ "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" } { "", default_sign_metal, "" }
}, },
}) })
minetest.register_craft( { minetest.register_craft( {
output = "signs:sign_wall_blue 2", output = "signs:sign_wall_blue 2",
recipe = { recipe = {
{ "dye:blue", "dye:white", "dye:blue" }, { "dye:blue", "dye:white", "dye:blue" },
{ "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" }
}, },
}) })
minetest.register_craft( { minetest.register_craft( {
output = "signs:sign_wall_brown 4", output = "signs:sign_wall_brown",
recipe = { recipe = {
{ "dye:brown", "dye:white", "dye:brown" }, { "dye:brown", "dye:white", "dye:brown" },
{ "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" } { "", default_sign_metal, "" }
}, },
}) })
minetest.register_craft( { minetest.register_craft( {
output = "signs:sign_wall_brown 2", output = "signs:sign_wall_brown 2",
recipe = { recipe = {
{ "dye:brown", "dye:white", "dye:brown" }, { "dye:brown", "dye:white", "dye:brown" },
{ "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" }
}, },
}) })
end
if minetest.setting_get("log_mods") then if minetest.setting_get("log_mods") then
minetest.log("action", S("signs loaded")) minetest.log("action", S("signs loaded"))

1
mod.conf Normal file
View File

@ -0,0 +1 @@
name = signs_lib

BIN
screenshot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 553 B