From 970b27d5f4ab2ea0e3fdf666c316b4a4b6bd5382 Mon Sep 17 00:00:00 2001 From: Vanessa Dannenberg Date: Wed, 11 Sep 2019 11:57:40 -0400 Subject: [PATCH] Initial commit --- crafting.lua | 138 +++++++++ depends.txt | 3 + init.lua | 273 ++++++++++++++++++ intllib.lua | 45 +++ locale/de.po | 97 +++++++ locale/es.po | 95 ++++++ locale/fr.po | 91 ++++++ locale/ms.po | 91 ++++++ locale/ru.po | 94 ++++++ locale/template.pot | 94 ++++++ models/basic_signs_hanging_sign.obj | 62 ++++ models/basic_signs_hanging_sign_entity.obj | 15 + models/basic_signs_yard_sign.obj | 85 ++++++ models/basic_signs_yard_sign_entity.obj | 15 + textures/basic_signs_ceiling_hangers.png | Bin 0 -> 155 bytes textures/basic_signs_entity_UV.png | Bin 0 -> 123 bytes textures/basic_signs_sign_wall_locked.png | Bin 0 -> 2760 bytes textures/basic_signs_sign_wall_locked_inv.png | Bin 0 -> 1097 bytes textures/basic_signs_steel_blue.png | Bin 0 -> 927 bytes textures/basic_signs_steel_blue_inv.png | Bin 0 -> 114 bytes textures/basic_signs_steel_brown.png | Bin 0 -> 932 bytes textures/basic_signs_steel_brown_inv.png | Bin 0 -> 115 bytes textures/basic_signs_steel_green.png | Bin 0 -> 922 bytes textures/basic_signs_steel_green_inv.png | Bin 0 -> 110 bytes textures/basic_signs_steel_orange.png | Bin 0 -> 915 bytes textures/basic_signs_steel_orange_inv.png | Bin 0 -> 106 bytes textures/basic_signs_steel_red.png | Bin 0 -> 925 bytes textures/basic_signs_steel_red_inv.png | Bin 0 -> 115 bytes textures/basic_signs_steel_white_black.png | Bin 0 -> 898 bytes .../basic_signs_steel_white_black_inv.png | Bin 0 -> 101 bytes textures/basic_signs_steel_white_red.png | Bin 0 -> 935 bytes textures/basic_signs_steel_white_red_inv.png | Bin 0 -> 116 bytes textures/basic_signs_steel_yellow.png | Bin 0 -> 913 bytes textures/basic_signs_steel_yellow_inv.png | Bin 0 -> 102 bytes 34 files changed, 1198 insertions(+) create mode 100644 crafting.lua create mode 100644 depends.txt create mode 100644 init.lua create mode 100644 intllib.lua create mode 100644 locale/de.po create mode 100644 locale/es.po create mode 100644 locale/fr.po create mode 100644 locale/ms.po create mode 100644 locale/ru.po create mode 100644 locale/template.pot create mode 100644 models/basic_signs_hanging_sign.obj create mode 100644 models/basic_signs_hanging_sign_entity.obj create mode 100644 models/basic_signs_yard_sign.obj create mode 100644 models/basic_signs_yard_sign_entity.obj create mode 100644 textures/basic_signs_ceiling_hangers.png create mode 100644 textures/basic_signs_entity_UV.png create mode 100644 textures/basic_signs_sign_wall_locked.png create mode 100644 textures/basic_signs_sign_wall_locked_inv.png create mode 100644 textures/basic_signs_steel_blue.png create mode 100644 textures/basic_signs_steel_blue_inv.png create mode 100644 textures/basic_signs_steel_brown.png create mode 100644 textures/basic_signs_steel_brown_inv.png create mode 100644 textures/basic_signs_steel_green.png create mode 100644 textures/basic_signs_steel_green_inv.png create mode 100644 textures/basic_signs_steel_orange.png create mode 100644 textures/basic_signs_steel_orange_inv.png create mode 100644 textures/basic_signs_steel_red.png create mode 100644 textures/basic_signs_steel_red_inv.png create mode 100644 textures/basic_signs_steel_white_black.png create mode 100644 textures/basic_signs_steel_white_black_inv.png create mode 100644 textures/basic_signs_steel_white_red.png create mode 100644 textures/basic_signs_steel_white_red_inv.png create mode 100644 textures/basic_signs_steel_yellow.png create mode 100644 textures/basic_signs_steel_yellow_inv.png diff --git a/crafting.lua b/crafting.lua new file mode 100644 index 0000000..a55d630 --- /dev/null +++ b/crafting.lua @@ -0,0 +1,138 @@ +minetest.register_craft({ + output = "basic_signs:sign_wall_locked", + type = "shapeless", + recipe = { + "default:sign_wall_wood", + "basic_materials:padlock", + }, +}) + +-- craft recipes for the metal signs + +minetest.register_craft( { + output = "basic_signs:sign_wall_green", + recipe = { + { "dye:dark_green", "dye:white", "dye:dark_green" }, + { "", "default:sign_wall_steel", "" } + }, +}) + +minetest.register_craft( { + output = "basic_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 = "basic_signs:sign_wall_yellow", + recipe = { + { "dye:yellow", "dye:black", "dye:yellow" }, + { "", "default:sign_wall_steel", "" } + }, +}) + +minetest.register_craft( { + output = "basic_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 = "basic_signs:sign_wall_red", + recipe = { + { "dye:red", "dye:white", "dye:red" }, + { "", "default:sign_wall_steel", "" } + }, +}) + +minetest.register_craft( { + output = "basic_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 = "basic_signs:sign_wall_white_red", + recipe = { + { "dye:white", "dye:red", "dye:white" }, + { "", "default:sign_wall_steel", "" } + }, +}) + +minetest.register_craft( { + output = "basic_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 = "basic_signs:sign_wall_white_black", + recipe = { + { "dye:white", "dye:black", "dye:white" }, + { "", "default:sign_wall_steel", "" } + }, +}) + +minetest.register_craft( { + output = "basic_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 = "basic_signs:sign_wall_orange", + recipe = { + { "dye:orange", "dye:black", "dye:orange" }, + { "", "default:sign_wall_steel", "" } + }, +}) + +minetest.register_craft( { + output = "basic_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 = "basic_signs:sign_wall_blue", + recipe = { + { "dye:blue", "dye:white", "dye:blue" }, + { "", "default:sign_wall_steel", "" } + }, +}) + +minetest.register_craft( { + output = "basic_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 = "basic_signs:sign_wall_brown", + recipe = { + { "dye:brown", "dye:white", "dye:brown" }, + { "", "default:sign_wall_steel", "" } + }, +}) + +minetest.register_craft( { + output = "basic_signs:sign_wall_brown 2", + recipe = { + { "dye:brown", "dye:white", "dye:brown" }, + { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } + }, +}) diff --git a/depends.txt b/depends.txt new file mode 100644 index 0000000..0ea619b --- /dev/null +++ b/depends.txt @@ -0,0 +1,3 @@ +default +signs_lib +basic_materials diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..eea01b7 --- /dev/null +++ b/init.lua @@ -0,0 +1,273 @@ +-- Basic wall/yard/metal signs +-- these were originally part of signs_lib + +basic_signs = {} +basic_signs.path = minetest.get_modpath(minetest.get_current_modname()) + +dofile(basic_signs.path .. "/crafting.lua") + +local S, NS = dofile(basic_signs.path .. "/intllib.lua") +basic_signs.gettext = S + +local cbox + +-- 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"}, +} + +function basic_signs.determine_sign_type(pos, placer, itemstack, pointed_thing) + local playername = placer:get_player_name() + local pt_name = minetest.get_node(pointed_thing.under).name + local node = minetest.get_node(pos) -- since we're in after-place, this will be the wall sign itself + + if minetest.is_protected(pointed_thing.under, playername) then + minetest.record_protection_violation(pointed_thing.under, playername) + return itemstack + end + + if minetest.registered_nodes[pt_name] and + minetest.registered_nodes[pt_name].on_rightclick and + not placer:get_player_control().sneak then + return minetest.registered_nodes[pt_name].on_rightclick(pos, node, placer, itemstack, pointed_thing) + elseif signs_lib.check_for_pole(pos, pointed_thing) then + minetest.swap_node(pos, {name = "default:sign_wall_wood_onpole", param2 = node.param2}) + else + local lookdir = placer:get_look_dir() + print(dump(lookdir)) + local newparam2 = minetest.dir_to_facedir(lookdir) + + if node.param2 == 0 then + minetest.swap_node(pos, {name = "basic_signs:hanging_sign", param2 = newparam2}) + elseif node.param2 == 1 then + minetest.swap_node(pos, {name = "basic_signs:yard_sign", param2 = newparam2}) + end + signs_lib.update_sign(pos) + end + if not creative.is_enabled_for(playername) then + itemstack:take_item() + end + return itemstack +end + +for _, onpole in ipairs({"", "_onpole"}) do + + local nci = nil + local on_rotate = signs_lib.wallmounted_rotate + local pole_mount_tex = nil + + if onpole == "_onpole" then + nci = 1 + on_rotate = nil + pole_mount_tex = "signs_lib_pole_mount.png" -- the metal straps on back, if needed + end + + local wood_groups = table.copy(signs_lib.standard_wood_groups) + wood_groups.not_in_creative_inventory = nci + local steel_groups = table.copy(signs_lib.standard_steel_groups) + steel_groups.not_in_creative_inventory = nci + + cbox = signs_lib.make_selection_boxes(35, 25, onpole) + + minetest.override_item("default:sign_wall_wood"..onpole, { + after_place_node = basic_signs.determine_sign_type + }) + + minetest.register_node("basic_signs:sign_wall_locked"..onpole, { + description = S("Locked Sign"), + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "wallmounted", + drawtype = "mesh", + node_box = cbox, + selection_box = cbox, + mesh = "signs_lib_standard_wall_sign"..onpole..".obj", + tiles = { + "basic_signs_sign_wall_locked.png", + "signs_lib_sign_wall_steel_edges.png", + pole_mount_tex + }, + inventory_image = "basic_signs_sign_wall_locked_inv.png", + wield_image = "basic_signs_sign_wall_locked_inv.png", + groups = wood_groups, + default_color = "0", + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + after_place_node = function(pos, placer, itemstack, pointed_thing) + signs_lib.after_place_node(pos, placer, itemstack, pointed_thing, true) + end, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, + can_dig = signs_lib.can_modify, + on_rotate = on_rotate, + number_of_lines = signs_lib.standard_lines, + horiz_scaling = signs_lib.standard_hscale, + vert_scaling = signs_lib.standard_vscale, + line_spacing = signs_lib.standard_lspace, + font_size = signs_lib.standard_fsize, + x_offset = signs_lib.standard_xoffs, + y_offset = signs_lib.standard_yoffs, + chars_per_line = signs_lib.standard_cpl, + entity_info = { + mesh = "signs_lib_standard_wall_sign_entity"..onpole..".obj", + yaw = signs_lib.wallmounted_yaw + }, + drop = "basic_signs:sign_wall_locked" + }) + table.insert(signs_lib.lbm_restore_nodes, "basic_signs:sign_wall_locked"..onpole) + table.insert(signs_lib.lbm_restore_nodes, "locked_sign:sign_wall_locked"..onpole) + + minetest.register_alias("locked_sign:sign_wall_locked", "basic_signs:sign_wall_locked") + + cbox = signs_lib.make_selection_boxes(35, 25, onpole, 0, 0, 0, true) + + for i, color in ipairs(sign_colors) do + minetest.register_node("basic_signs:sign_wall_steel_"..color[1]..onpole, { + description = S("Sign (@1, steel)", color[2]), + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "facedir", + drawtype = "mesh", + node_box = cbox, + selection_box = cbox, + mesh = "signs_lib_standard_wall_sign_facedir"..onpole..".obj", + tiles = { + "basic_signs_steel_"..color[1]..".png", + "signs_lib_sign_wall_steel_edges.png", + pole_mount_tex + }, + inventory_image = "basic_signs_steel_"..color[1].."_inv.png", + wield_image = "basic_signs_steel_"..color[1].."_inv.png", + groups = steel_groups, + default_color = color[3], + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + after_place_node = signs_lib.after_place_node, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, + on_rotate = on_rotate, + number_of_lines = signs_lib.standard_lines, + horiz_scaling = signs_lib.standard_hscale, + vert_scaling = signs_lib.standard_vscale, + line_spacing = signs_lib.standard_lspace, + font_size = signs_lib.standard_fsize, + x_offset = signs_lib.standard_xoffs, + y_offset = signs_lib.standard_yoffs, + chars_per_line = signs_lib.standard_cpl, + entity_info = { + mesh = "signs_lib_standard_wall_sign_entity"..onpole..".obj", + yaw = signs_lib.standard_yaw + }, + drop = "signs:sign_wall_steel_"..color[1] + }) + table.insert(signs_lib.lbm_restore_nodes, "basic_signs:sign_wall_steel_"..color[1]..onpole) + table.insert(signs_lib.lbm_restore_nodes, "signs:sign_wall_"..color[1]..onpole) + + minetest.register_alias("signs:sign_wall_"..color[1], "basic_signs:sign_wall_steel_"..color[1]) + + end +end + +cbox = signs_lib.make_selection_boxes(35, 34.5, false, 0, -1.25, -19.69, true) + +local nci_wood_groups = table.copy(signs_lib.standard_wood_groups) +nci_wood_groups.not_in_creative_inventory = 1 + +minetest.register_node("basic_signs:yard_sign", { + description = "Wooden yard sign", + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "facedir", + drawtype = "mesh", + node_box = cbox, + selection_box = cbox, + mesh = "basic_signs_yard_sign.obj", + tiles = { + "signs_lib_sign_wall_wooden.png", + "signs_lib_sign_wall_wooden_edges.png", + "default_wood.png" + }, + inventory_image = "default_sign_wood.png", + wield_image = "default_sign_wood.png", + groups = nci_wood_groups, + default_color = "0", + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + after_place_node = signs_lib.after_place_node, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, + on_rotate = on_rotate, + number_of_lines = signs_lib.standard_lines, + horiz_scaling = signs_lib.standard_hscale, + vert_scaling = signs_lib.standard_vscale, + line_spacing = signs_lib.standard_lspace, + font_size = signs_lib.standard_fsize, + x_offset = signs_lib.standard_xoffs, + y_offset = signs_lib.standard_yoffs, + chars_per_line = signs_lib.standard_cpl, + entity_info = { + mesh = "basic_signs_yard_sign_entity.obj", + yaw = signs_lib.standard_yaw + }, + drop = "default:sign_wall_wood" +}) +table.insert(signs_lib.lbm_restore_nodes, "basic_signs:yard_sign") +table.insert(signs_lib.lbm_restore_nodes, "signs:sign_yard") +minetest.register_alias("signs:sign_yard", "basic_signs:yard_sign") + +cbox = signs_lib.make_selection_boxes(35, 32, false, 0, 3, -18.5, true) + +minetest.register_node("basic_signs:hanging_sign", { + description = "Wooden sign, hanging", + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "facedir", + drawtype = "mesh", + node_box = cbox, + selection_box = cbox, + mesh = "basic_signs_hanging_sign.obj", + tiles = { + "signs_lib_sign_wall_wooden.png", + "signs_lib_sign_wall_wooden_edges.png", + "basic_signs_ceiling_hangers.png" + }, + inventory_image = "default_sign_wood.png", + wield_image = "default_sign_wood.png", + groups = nci_wood_groups, + default_color = "0", + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + after_place_node = signs_lib.after_place_node, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, + on_rotate = on_rotate, + number_of_lines = signs_lib.standard_lines, + horiz_scaling = signs_lib.standard_hscale, + vert_scaling = signs_lib.standard_vscale, + line_spacing = signs_lib.standard_lspace, + font_size = signs_lib.standard_fsize, + x_offset = signs_lib.standard_xoffs, + y_offset = signs_lib.standard_yoffs, + chars_per_line = signs_lib.standard_cpl, + entity_info = { + mesh = "basic_signs_hanging_sign_entity.obj", + yaw = signs_lib.standard_yaw + }, + drop = "default:sign_wall_wood" +}) +table.insert(signs_lib.lbm_restore_nodes, "basic_signs:hanging_sign") +table.insert(signs_lib.lbm_restore_nodes, "signs:sign_hanging") +minetest.register_alias("signs:sign_hanging", "basic_signs:hanging_sign") + +-- insert the old wood sign-on-fencepost into signs_lib's conversion LBM + +table.insert(signs_lib.old_fenceposts_with_signs, "signs:sign_post") +signs_lib.old_fenceposts["signs:sign_post"] = "default:fence_wood" +signs_lib.old_fenceposts_replacement_signs["signs:sign_post"] = "default:sign_wall_wood_onpole" 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..a2f4150 --- /dev/null +++ b/locale/de.po @@ -0,0 +1,97 @@ +# German Translation for the signs_lib mod. +# Copyright (C) 2018 Vanessa Ezekowitz +# This file is distributed under the same license as the signs_lib package. +# Xanthin, 2017. +# CodeXP , 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-31 18:31+0200\n" +"PO-Revision-Date: 2018-03-24 22:00+0100\n" +"Last-Translator: CodeXP \n" +"Language-Team: \n" +"Language: de\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" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: init.lua +msgid "Write" +msgstr "schreiben" + +#: init.lua +msgid "Locked sign, owned by @1\n" +msgstr "gesperrter Schild, gehört @1\n" + +#: init.lua +msgid "locked " +msgstr "gesperrt " + +#: 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 "Kann alle gesperrte Schilder bearbeiten" + +#: init.lua +msgid "Locked Sign" +msgstr "gesperrter Schild" + +#: init.lua +msgid "green" +msgstr "grün" + +#: init.lua +msgid "yellow" +msgstr "gelb" + +#: init.lua +msgid "red" +msgstr "rot" + +#: init.lua +msgid "white_red" +msgstr "weißrot" + +#: init.lua +msgid "white_black" +msgstr "schwarzweiß" + +#: init.lua +msgid "orange" +msgstr "orange" + +#: init.lua +msgid "blue" +msgstr "blau" + +#: init.lua +msgid "brown" +msgstr "braun" + +#: init.lua +msgid "Sign (@1, metal)" +msgstr "Schild (@1, Metall)" + +#: init.lua +msgid "Attempt to register unknown node as fence" +msgstr "Versuch ein unbekanntes Element als Zaun zu registrieren" + +#: init.lua +msgid "Registered @1 and @2" +msgstr "Registrierte @1 und @2" + +#: init.lua +msgid "[MOD] signs loaded" +msgstr "[MOD] Schilder-Mod 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/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/ms.po b/locale/ms.po new file mode 100644 index 0000000..da11512 --- /dev/null +++ b/locale/ms.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:00+0200\n" +"PO-Revision-Date: 2017-11-17 02:38+0800\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 2.0.4\n" +"Last-Translator: \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"Language: ms\n" + +#: init.lua +msgid "Locked sign, owned by @1\n" +msgstr "Papan tanda berkunci, milik @1\n" + +#: init.lua +msgid "locked " +msgstr "berkunci " + +#: init.lua +msgid "@1 wrote \"@2\" to @3sign at @4" +msgstr "@1 menulis \"@2\" atas papan tanda @3dekat @4" + +#: init.lua +msgid "Sign" +msgstr "Papan Tanda" + +#: init.lua +msgid "Can edit all locked signs" +msgstr "Boleh sunting semua papan tanda berkunci" + +#: init.lua +msgid "Locked Sign" +msgstr "Papan Tanda Berkunci" + +#: init.lua +msgid "green" +msgstr "hijau" + +#: init.lua +msgid "yellow" +msgstr "kuning" + +#: init.lua +msgid "red" +msgstr "merah" + +#: init.lua +msgid "white_red" +msgstr "putih_merah" + +#: init.lua +msgid "white_black" +msgstr "putih_hitam" + +#: init.lua +msgid "orange" +msgstr "jingga" + +#: init.lua +msgid "blue" +msgstr "biru" + +#: init.lua +msgid "brown" +msgstr "perang" + +#: init.lua +msgid "Sign (@1, metal)" +msgstr "Papan Tanda (@1, logam)" + +#: init.lua +msgid "Attempt to register unknown node as fence" +msgstr "Cuba untuk mendaftar nod tidak diketahui sebagai pagar" + +#: init.lua +msgid "Registered @1 and @2" +msgstr "Telah daftar @1 dan @2" + +#: init.lua +msgid "[MOD] signs loaded" +msgstr "[MODS] signs telah dimuatkan" diff --git a/locale/ru.po b/locale/ru.po new file mode 100644 index 0000000..9cd01aa --- /dev/null +++ b/locale/ru.po @@ -0,0 +1,94 @@ +# Russian Translation for the signs_lib mod. +# Copyright (C) 2018 Vanessa Ezekowitz +# This file is distributed under the same license as the signs_lib package. +# CodeXP , 2018. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: signs_lib\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-24 22:23+0100\n" +"PO-Revision-Date: \n" +"Last-Translator: CodeXP \n" +"Language-Team: \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: init.lua +msgid "Write" +msgstr "записать" + +#: init.lua +msgid "Locked sign, owned by @1\n" +msgstr "защищенная табличка, пренадлежит @1\n" + +#: init.lua +msgid "locked " +msgstr "защищенный " + +#: init.lua +msgid "@1 wrote \"@2\" to @3sign at @4" +msgstr "@1 записал \"@2\" в @3sign на @4" + +#: 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 "Табличка (@1, металл)" + +#: init.lua +msgid "Attempt to register unknown node as fence" +msgstr "Попытка зарегистрировать неизвестный узел как забор" + +#: init.lua +msgid "Registered @1 and @2" +msgstr "Зарегистрировано @1 для @2" + +#: init.lua +msgid "[MOD] signs loaded" +msgstr "[MOD] мод табличек загружен" diff --git a/locale/template.pot b/locale/template.pot new file mode 100644 index 0000000..e277437 --- /dev/null +++ b/locale/template.pot @@ -0,0 +1,94 @@ +# LANGUAGE Translation for the signs_lib mod. +# Copyright (C) 2018 Vanessa Ezekowitz +# This file is distributed under the same license as the signs_lib package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: signs_lib\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-24 22:23+0100\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=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: init.lua +msgid "Write" +msgstr "" + +#: 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/models/basic_signs_hanging_sign.obj b/models/basic_signs_hanging_sign.obj new file mode 100644 index 0000000..263eb9c --- /dev/null +++ b/models/basic_signs_hanging_sign.obj @@ -0,0 +1,62 @@ +# Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden hanging sign.blend' +# www.blender.org +o Cube +v 0.437500 -0.312500 0.031250 +v 0.437500 -0.312500 -0.031250 +v 0.437500 0.312500 0.031250 +v 0.437500 0.312500 -0.031250 +v -0.437500 -0.312500 0.031250 +v -0.437500 -0.312500 -0.031250 +v -0.437500 0.312500 0.031250 +v -0.437500 0.312500 -0.031250 +v 0.437500 -0.312500 0.031250 +v 0.437500 -0.312500 -0.031250 +v 0.437500 0.312500 0.031250 +v 0.437500 0.312500 -0.031250 +v -0.437500 -0.312500 0.031250 +v -0.437500 -0.312500 -0.031250 +v -0.437500 0.312500 0.031250 +v -0.437500 0.312500 -0.031250 +v 0.500000 0.312500 0.000000 +v 0.500000 0.500000 0.000000 +v -0.500000 0.312500 0.000000 +v -0.500000 0.500000 0.000000 +vt 0.468750 0.812500 +vt 0.031250 0.812500 +vt 0.031250 0.187500 +vt 0.468750 0.187500 +vt 0.531250 0.812500 +vt 0.968750 0.812500 +vt 0.968750 0.187500 +vt 0.531250 0.187500 +vt 0.234375 0.000000 +vt 0.234375 1.000000 +vt 0.015625 1.000000 +vt 0.015625 -0.000000 +vt 0.609375 -0.000000 +vt 0.609375 1.000000 +vt 0.390625 1.000000 +vt 0.390625 -0.000000 +vt 0.765625 0.000000 +vt 0.765625 1.000000 +vt 1.000000 0.812500 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt -0.000000 0.812500 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +g Cube_Cube_front-back +s off +f 8/1/1 4/2/1 2/3/1 6/4/1 +f 3/5/2 7/6/2 5/7/2 1/8/2 +g Cube_Cube_edges +f 13/9/3 14/10/3 10/11/3 9/12/3 +f 11/13/4 12/14/4 16/15/4 15/16/4 +f 11/13/5 9/17/5 10/18/5 12/14/5 +f 13/9/6 15/16/6 16/15/6 14/10/6 +g Cube_Cube_hangers +f 19/19/1 20/20/1 18/21/1 17/22/1 diff --git a/models/basic_signs_hanging_sign_entity.obj b/models/basic_signs_hanging_sign_entity.obj new file mode 100644 index 0000000..c122f35 --- /dev/null +++ b/models/basic_signs_hanging_sign_entity.obj @@ -0,0 +1,15 @@ +# Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden hanging sign--entity.blend' +# www.blender.org +o Cube +v 0.406250 -0.281250 -0.039063 +v 0.406250 0.281250 -0.039062 +v -0.406250 -0.281250 -0.039063 +v -0.406250 0.281250 -0.039062 +vt 0.906250 0.781250 +vt 0.093750 0.781250 +vt 0.093750 0.218750 +vt 0.906250 0.218750 +vn 0.0000 0.0000 -1.0000 +g Cube_Cube_None +s off +f 4/1/1 2/2/1 1/3/1 3/4/1 diff --git a/models/basic_signs_yard_sign.obj b/models/basic_signs_yard_sign.obj new file mode 100644 index 0000000..b6ed365 --- /dev/null +++ b/models/basic_signs_yard_sign.obj @@ -0,0 +1,85 @@ +# Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden yard sign.blend' +# www.blender.org +o Cube +v 0.437500 -0.250000 -0.000000 +v 0.437500 -0.250000 -0.062500 +v 0.437500 0.375000 0.000000 +v 0.437500 0.375000 -0.062500 +v -0.437500 -0.250000 -0.000000 +v -0.437500 -0.250000 -0.062500 +v -0.437500 0.375000 0.000000 +v -0.437500 0.375000 -0.062500 +v 0.437500 -0.250000 -0.000000 +v 0.437500 -0.250000 -0.062500 +v 0.437500 0.375000 0.000000 +v 0.437500 0.375000 -0.062500 +v -0.437500 -0.250000 -0.000000 +v -0.437500 -0.250000 -0.062500 +v -0.437500 0.375000 0.000000 +v -0.437500 0.375000 -0.062500 +v 0.062500 -0.500000 0.000000 +v 0.062500 0.250000 0.000000 +v 0.062500 -0.500000 0.062500 +v 0.062500 0.250000 0.062500 +v -0.062500 -0.500000 0.000000 +v -0.062500 0.250000 0.000000 +v -0.062500 -0.500000 0.062500 +v -0.062500 0.250000 0.062500 +vt 0.468750 0.812500 +vt 0.031250 0.812500 +vt 0.031250 0.187500 +vt 0.468750 0.187500 +vt 0.531250 0.812500 +vt 0.968750 0.812500 +vt 0.968750 0.187500 +vt 0.531250 0.187500 +vt 0.234375 0.000000 +vt 0.234375 1.000000 +vt 0.015625 1.000000 +vt 0.015625 -0.000000 +vt 0.609375 -0.000000 +vt 0.609375 1.000000 +vt 0.390625 1.000000 +vt 0.390625 -0.000000 +vt 0.765625 0.000000 +vt 0.765625 1.000000 +vt 0.000000 0.750000 +vt 2.000000 0.750000 +vt 2.000000 0.875000 +vt 0.000000 0.875000 +vt 0.000000 0.125000 +vt 2.000000 0.125000 +vt 2.000000 0.375000 +vt 0.000000 0.375000 +vt 2.000000 0.500000 +vt 0.000000 0.500000 +vt 0.812500 0.875000 +vt 0.562500 0.875000 +vt 0.562500 1.000000 +vt 0.812500 1.000000 +vt 0.125000 0.875000 +vt 0.375000 0.875000 +vt 0.375000 1.000000 +vt 0.125000 1.000000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +g Cube_Cube_front-back +s off +f 8/1/1 4/2/1 2/3/1 6/4/1 +f 3/5/2 7/6/2 5/7/2 1/8/2 +g Cube_Cube_edges +f 13/9/3 14/10/3 10/11/3 9/12/3 +f 11/13/4 12/14/4 16/15/4 15/16/4 +f 11/13/5 9/17/5 10/18/5 12/14/5 +f 13/9/6 15/16/6 16/15/6 14/10/6 +g Cube_Cube_default_wood +f 17/19/5 18/20/5 20/21/5 19/22/5 +f 19/23/2 20/24/2 24/25/2 23/26/2 +f 23/26/6 24/25/6 22/27/6 21/28/6 +f 21/28/1 22/27/1 18/20/1 17/19/1 +f 19/29/3 23/30/3 21/31/3 17/32/3 +f 24/33/4 20/34/4 18/35/4 22/36/4 diff --git a/models/basic_signs_yard_sign_entity.obj b/models/basic_signs_yard_sign_entity.obj new file mode 100644 index 0000000..2a891dd --- /dev/null +++ b/models/basic_signs_yard_sign_entity.obj @@ -0,0 +1,15 @@ +# Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden yard sign.blend' +# www.blender.org +o Cube +v 0.406250 -0.218750 -0.070313 +v 0.406250 0.343750 -0.070312 +v -0.406250 -0.218750 -0.070313 +v -0.406250 0.343750 -0.070312 +vt 0.906250 0.781250 +vt 0.093750 0.781250 +vt 0.093750 0.218750 +vt 0.906250 0.218750 +vn 0.0000 0.0000 -1.0000 +g Cube_Cube_None +s off +f 4/1/1 2/2/1 1/3/1 3/4/1 diff --git a/textures/basic_signs_ceiling_hangers.png b/textures/basic_signs_ceiling_hangers.png new file mode 100644 index 0000000000000000000000000000000000000000..04d74a9359e059cf15e6bb7b47ac581dd5688e51 GIT binary patch literal 155 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 O0000 z&2C&p5QV?0>b`fzacm2a!U6@cKuECQiFkr+5l;omOGL_&Er=Zwi%7^0;Ga9UyQ)~+ znTg}E!vo;j%9QbAC-goC0 z5qn<|K~*_FKj+1Z7Xnar&htF;>eVYQE-nrZ-yM2)Z@0ev|Lx1}g3C;5tvq}7Y`?z; z;O@MA`kG<|c! z_um$*4yYQX7@~%%FpMK+hSdQnM+gle$p}Q3%iW!Dr_@Tg)8?5($-3f)AAdf`WVu^w z6=fU;tO%k?tpzn>7)R6!h)~Q>b8LNzc%!!o_W%VoMX0!Uk|0Uid_!!eTbbm30Q-L6 z2|8a>bOxXzcn=~w9*LVXj)~4!xQ-x(8T8hPgkc;INiqW&Dr6AunAyI84*=|HmYI~C zC`YGg++ZeXF-kScP{{;Sqtt?`VA9E2!GR1s1t}u}RFcp@B$+pDU&4Dcu{A@m?oKh ziDFn7k_qlXZ;hL&lM$FH5cJIzI;;tIrpap1JFP=3yliHRfqXZJ}6e9Wy~hQQNBG(J>(-#)j2uM9j9A1W{I`G&F*U zAUudjBK%-@9k5^=N51^}8-AK5vTgY8(?7{bWT;pvOPUkXHy}y3HQk-T6!#?4Q43NA zQY+aeB7=-1^8WXL-d?QNYtGKjI5|CK>I?d%rVG86G6@laq*E=B;g}vmxRV)>j?b4M zN}%-SwAS$65Y>lisH!}F{+!FpO8_qa`G?>C`h(9uIU&_ZF+6k`wJ55JWGChcM~Th0 zY%WWkB?tym10|U^^D@{}_Ya$cCUjrWzIpS8?#}D-6|c|#>rvIWzr(HQ%Jxi0q>@>H zBR>1$WFPDSfb;WnE-o%;t?~5fQ;v_1AAEKlDCY-WPIv9@FnY8{d$fN6v?6~&Y(DHD P00000NkvXXu0mjfcUAp) literal 0 HcmV?d00001 diff --git a/textures/basic_signs_steel_blue.png b/textures/basic_signs_steel_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..594ceb8b225ca873d238483ebeb2d3a21f26734b GIT binary patch literal 927 zcmV;Q17Q4#P)_85QQ`Hx5`H1N^=P|K1m;;@4}iDn>i2*pyaB`|6Y7E31ST;wd7pbiCs>;hk`}ZF$GWM6t<^KL&Yu#ECk=}dnJ%o^Rp65BnSZnRQi%6|iDW$d6 zTBnqpbNjw4rM&mGR$~l*uIu{v_^6c9KZO4Cv6su`C(eI(cu-2&kA(g6`#aJ9`)lk& z2ui8*`5Zzp#wew%wIPJ-_1ao<&N=6D&N*jd7LgD_t+lnLl$xeVDMjL~wK2vR+Iv6vCL+cd=Ugd8DOF18y&GdVgncPxUDx9R01C_= zA?^EajL}-p^So^vMc^5pZ>>=Qt#z$cL|SXc7&af-IUoRN119HOt##k`FPT1_PB~|u z?7g?v0Bwv(DG^3W3EdwZK#Y+(q?A%humuea&b++5@C@L3@80`;-)pV4)=|23UA5N3 ztp0PM12h1GYpvdUYJw;MO)0Fkz4vLFthFK{BF;HD2AzyC#uzM^{XrEN>wG@P7y*H` zNtrbd)xxiXWTNRO<^E6G&aFCv?gOxTyA2^gk zKzGhT;%(ckwRBu&9_oOT=A2Oo3Lg4K)(B&uKPZ5~*VbCj8NctnGf3m~m=c}?qsThw zaWHa0K}KskLIdspg}al&-aD58^Z@#tGwd?Ppb9n!iE9JsNx?w@j1CH>kyH`E(fJUq zGi(BmQ28w_f)p^1Fp}6~D!>LF!;=sKxx`Xv!*~>djZjlcxay!5ZQ(c#48I3Dtay8S zLmnamp=og7rk7#6wbo@>s0O(4->(6DzC(TQV(J7d#9)XRJ%JnW7)6;+$3Cb-$R%Q?oUK%H1nh+u3Q0SE+@r!|B)njgPzRm^vfrc=6y85}S Ib4q9e09=J6AOHXW literal 0 HcmV?d00001 diff --git a/textures/basic_signs_steel_brown.png b/textures/basic_signs_steel_brown.png new file mode 100644 index 0000000000000000000000000000000000000000..c8ffc377fc52aceb43d970f61923af64d741f45f GIT binary patch literal 932 zcmV;V16%xwP)Wyr5QV$?my`?`$XRj~Z?wzFasaQr@)hPNMqrx|$^M_kH`6h)wh07KFXWa*HC|P{ z_o`Y--PUd0)?dAZKfU+QKU!q$FPF>x{k_(@wI(9H_uhL5A?G~LbBwXp+Its~TB}k@ zYpu0TDLLo%eOF3(?`y5b7~Zby`uO;$l+s^>{^PNi%jGN1e|UIMO4;%L$M2$O zevN$yK`C`UpF;@77^Rf8HiU4!UR!Iv~)O zK!MpKqnPp2 zu3GD1R{y!s0UCh8wN~#vH9?esrWDrN-upC7)>;t}5$7BngHFa6V+M-Fu(d{6L?op&Xn7okT5Ax%Ik#_t-3QU>aqGHz z?^8;xwNeWF(OO$;uh%QD!x)aMz_x861geiBQ%ZQK)|v_|%c7J**(oK6=bVc%qF}8x z=@=R~t`CsN*4q2~JGcR{@B8U=BHu&;yU4LICdSA|qn$yg<3voCO)2G^hl_99R!R|( zQVLBM#&6q(DoQD(6uvl)YOTc>F)PkFjzXlc)(R!YTwtxGt%^v_d736>I7m;{!AcvU z4;)G%pgZRv@wRQ&S~@N>4|TvvbIvFP1rL2AYlJb-9~8jgYilj%jNkX(8KiM~ObO3{ zQDhzTI2gI0AfvS%p@H`Q!re(>@14s4dH{XS8Fm?CPz4)=#I*tRq~M?cMh6AcNUDh7 z==>9{Gi(BmQ28z`f)p^1Fp}6~D!>LF!;=sKxx`Xv!*~>djZjlcxay!5ZQ(c#48I3D ztay8SLmnamp=og7rk7#6wbo@>s0O(4-#-KRc!&Dj#ncH_h`|ssdIC4#F^V#uj*G;& zCtzhcXGW&qBK~;${)$We)6>&eod5j%eEU)6wr=b1U;hHM9!Q6H{&znB0000^*5QSa-?M{$59h=-_PB4dI&5A3r09xs8|Igx^F^Dy^G*Y}sOwzGlRlWDBj8eCC zTetOJFX65C{{2UbjQ!?b-B2sHrN@=aN)+r_D z+`jKhDerx))fmH{>$*NZJ}Ra35262j?B#O#iSr*G9+Xn{BVoVfJJJ9CNJcJj3&?H7cOBuCb<8Xh!W70!dlyVpQg!LD2@lm;Q-Nh!lu{@=r3CSub1_B~thFW`Lj%Y40TS6- zdw+iiHz4+XKb=nGn@C_6IX1?`82M_nGw5`ji0QH^rJVC{@on2mDI!uzq3Oc-ZQD>q zDW#Oc564lhwHPC2#W}}Oh!oaZp~RRAthKaN5y?4E)5Hu1>B%}+X(RN3Ln#Dw=Nu&7 zw#`~g$7SZB4mfGf8HJ$Wp>Jf3Fb4XA0vLR4t>v8Y``$Z)G)|8x;W;phtb-m0BNr58 zw6-HO(EcslofP)oxeTBO(C3_CmoWxaut7*%8$eGA4hmp&P%w?8iU^L*hiIK)6L5se zZ)p*vfO&+G#2!-tHt-mpgb>IjmO>lGqX=w-no`152eoJm$7x{rJF3UnSz>WWY4dC+~>U$ScCs-i{L&WF_+Cb-IBz57XaT2Bp5fToCUMUj47#QX_bBlkt-E|&l0E4HipUXO@ GgeCy|P$ZlH literal 0 HcmV?d00001 diff --git a/textures/basic_signs_steel_orange.png b/textures/basic_signs_steel_orange.png new file mode 100644 index 0000000000000000000000000000000000000000..08dc5a12dea03190fd514b2641b029107b8f1b1c GIT binary patch literal 915 zcmV;E18n?>P)QGM5QSO%?UoGq1UZ&BK1Gg_dwA`YkCUwzwma%>{?Fo@Fu|;62n--D1j=gBud3dA zRg_Zqbzk@OTQ8aOZ=Ro@A0HpJ)~z)W>Am;fLkKzNbzNhOwbtIdh}2q@Qd(=RbxO%O zcb=zG%6ngHHOBCE-}jf77p0V*gZ@_>`}Fjrl(OUfKY#u46HkBm^Y5__At_qIp>^v?@B2V2_e*4TWdnPp6?^^3&R+C)F zS_^|~t=@ZTf+zt^DXg`<_hnhEwIU)S&N(;+os2QY7%Z6mqza66yZ8b%5+16xrUKixDWy<$N(tgQ=VFW~SZhr>h6d*K0TS6- z`}+CoNn!7u%K&-+ea;zn8Dmfd8-&EQ0raF`QUIfaf@vgGL~wNeh}Ic40Y|8O zmli<^m`4~%?3@a)fyeM9gg`E_6xuKzMPMV;loGBws6|_tr-9-3K!+8dpP$G>L?AQ` z4&3xIY`50BZ5!19H~#x$0RO*3{oKXW308=~5HWfJH{dafGM|o%#JDG5WjSX?rgV@fVeOZc0D>7BUk|NdJbZ|uD_H691$G9<53J%(52kwnH8Xg+`njxgN@xNA DyPzNn literal 0 HcmV?d00001 diff --git a/textures/basic_signs_steel_red.png b/textures/basic_signs_steel_red.png new file mode 100644 index 0000000000000000000000000000000000000000..03e3f9fa23ea4bf8b5cbef216a65670516ab3e7d GIT binary patch literal 925 zcmV;O17iG%P)8n;5QJ~zU5I|SRCyP4F?#|5aNvYeq zt=syqm++_e{`p6XjQ!?b-B2sHrN@=aN)+r_D z+`jKhDerx))fmIubzL7HAC*%2i_m{O_Hwy=#rY2p4@xOJ-v9Xa?GsP`{`2S9hY*xf z=kqy)V2n{pS!+WG*Xy;l=A3iR<(zZQ#4I8qgj#EBO(``^lTwPrTWe#CF~--|R}Qxa z(9~MX>)qX*)_Opk=XqHct+n@l@J&RFG0wSCic+eS(t9_?a0vTS%DS${1ppM7Jwn>| z-58^_p67YnHj2PAJl|TQ0$S@@tBADLj4^EfX6JwapbeOubG6oe-~Y+<>2%6D^JMS6 zwFYQoOiGC`QcCFl=m27j)FGvmQi3gLU~uN;<%MSe*L(Ng@B3bBt+kHQt?R0_9%l91 zg$~dF46e0$@2Lr*1T>|v*7n|~X|mReh=@4n;23l=#u#I;VD<-9V65}`9Ag9o){ghD z>k7HO_sg<)?{OqPrGTw9$|52ur9sQ%DAZbm0M5B>+iI;TCFnkgPLEsH)q9^(YOR%0 z;E&eYT6?`-c^$@ZTm`mm3n5T_6q!=OL$%gaU|ANW6v|F1K|JSNj1dKEtx3nwz;S(m zM7Gx6-`~Lvh<)ErrxW=m64*tKjWIDsJ{s)|Ivposx@<}*=R90|+qP1Qh?G)jx-fp* zHdIkcDW&kmaa3z9#)w&Q&T$kXg|${FG3EkmEp1gqa?aB0_4vZq}pvS?; z1qB(c?FbFDKMQv!g}rw!1Ly(tIcL~qj6oG_5E9o0(366L0vH_>Oe3ixf}`_Kw9c>z zI6~#Svq=p$+3v1U5oVDdDPvTC|1ZG%)-g=&<7L?G1T| z2!y7=fty~2?bceCWuY42#()0};NuO#OMj!fX67xd^#=?qFyIbraHkzu_txA^hGAAvwq7(8A5 KT-G@yGywoEAt@&S literal 0 HcmV?d00001 diff --git a/textures/basic_signs_steel_white_black.png b/textures/basic_signs_steel_white_black.png new file mode 100644 index 0000000000000000000000000000000000000000..fb09bfc8bb328d50c6609dec85b4d0fe3b4af2ef GIT binary patch literal 898 zcmV-|1AY97P)-C7fo-h1yogphMy*EPmiYwf*@NUc>VrM1>tr<9y?=Xolny!W+M zV+?QieSdj*QA+7K=zrqar>7^SlpXJT@84Nj`BU2vf>P>wy@n8sF-j?GZ3y9ZyS3Jw zbI!S(bIutIA`(KVwYJujQp>U^rAWNBHpUoZ{P_6ba66#_)>>X49v-yT1LC@_+qP+~ zz4s$v5i!O%=SnF`sZvVs-5A3m>`N*8zRwE)C@_13be^X%Mr*yU>v0?ufoFKWwMGTB z*0oj+96aU8YQloE6wM5o8?`|iC@DYe#0Dey;YZLPiCZoCd-m{)=0I6??i zA4R5=@KCKa71*{-DTT6AN)XRE7h^=hT5HlVG%&9ZkjU2B*Vh-g0dbz^<#Hk4L;}0W zu`wpb$Va1{L8o~lrpu<3a?ZoWkK-t%h)5}grVHbb<3JUqlu`;`97na*VvLv-=ggxJ zDXg_Zi7^*gYiX+@l5<{`g&7XglXbAtM(6`mDFk%q93(!D!&*znW#*v{IBCuqg`nV} zZ)A-y2Kq?>48FG3a?bdD@0~#!r^l4=92iB`L63ux3kot?+YAk~-wSsqg}rw!1Ly(t zIcL~qj6oG_5E9o0(365m0gMg`rjb+;!O{66T4&e<9HH`ES_COz9$_T0b1J|F9>bFm z0=dLeXv26EfsIg8O1SEv7Hwgk28Q1Q9aemPej*PMfzUKKaMR1M-CFCmZBzr?`0u{~ z{C$V|-o?}jR*1n6F?s?w;4z9apN@;fxF=v`IcG+uc_My&ef^1J-`?KtKg!(Kef|II Y7Y^w?F$L;~AOHXW07*qoM6N<$f>Y|Rj{pDw literal 0 HcmV?d00001 diff --git a/textures/basic_signs_steel_white_black_inv.png b/textures/basic_signs_steel_white_black_inv.png new file mode 100644 index 0000000000000000000000000000000000000000..e370dad9d5f58bb6577624f4c4b53da6d5a1373c GIT binary patch literal 101 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`I-V|$Ar_~T6C^SYa4h{ldG&nO yW552-H!+rwR4g+NeAODr+}6q{vfQO@AwNU20jv0@~OoO9c@DW$ykwN_&cZ$B%bB{rl(7 zV;@3LN}W!p5P~sADP^qSl5*z@C?tl)~JBiy4ETptu_jFFEHKke;lA zl{P{j*p)&+cg{iLbzQBsbX;a0>VT8xoKXl09{NVs2xFk%DS*M()>_UPzwf;>NaOUF z5}pI2$U5k8FmgdbMr+$c1MSbk-AQ5Zoy!1v0DaCGb{S((1sjCKwE^^`V5a~^2L;ne zs)*p|{1dG+Yyyr@`7SMj6flo4lGuGJzy=<}lMn*A#8PO(cocz+P*X~{>Yx^FVLuHF zzXv+3czJn29wGvvX>j1CmtniL)_I<(2DtIxe*<`XhkD<|)CpFI!4NTe0yp3>iZY*$ zi^RAmU}ZUHMy9_aetY}=h)ey$!^20M|M>WL{ZZz+uIv9_zW|C9M@L3QdIA6d002ov JPDHLkV1hS(!Ycp( literal 0 HcmV?d00001 diff --git a/textures/basic_signs_steel_white_red_inv.png b/textures/basic_signs_steel_white_red_inv.png new file mode 100644 index 0000000000000000000000000000000000000000..4ed8d93d4510ae90c7787ee295df8b07455f1979 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`)}AhoAr_~T6C^SYoH%gczz3J0 zPxh9xQs>#Hr!*EWnQyD?`8ilqlMMvay!IMo9oS&dz-pV=b+M* zDRp1>bzgt+t zc`Bv6_qA4I3~%>+e|dRPO6fW1f5)*;PftoIJKnc{{{Drh>%YE@eF#A*b-i9g2*wzt zl(ja5aJ$`FYtA|6T+TV?+3f9Dy%_1?Yr=XuszYptVn`@UA!{uR zuC;pasR^P4G^McC_THCevDS)+h&boq7<4km7-O(t_LC|w*7bUgF#-Z>$NTqvhuq%# zZQH!}I1-;yz}6aN5s{SApyfOYwbmejbM82fT5C!Px(}k$&+~G*kZ&S^UF6sp6Jz9~(axaLJQ34nQ%X7K;o`?}lu|^bltR;m@yBtXic(4` zg)jaX7g~!kVpg0pk3yud)(R!YTwtxGt%^v_d07@_I7m;{!AcvU4@{*H(4BLT_&5%0 zEghGchdSV-IcF4tf``75HNqI^Cj~J0+FHvwKAxH~EAy>l5r51`LE!!BbCs$heVxHf>E6if2cR&L7b_!zSPemG9Cb zNCEQ*BZ-|;0XFa$o`ev{C6+=P#-j*qgql*qRR^_b3-dHE{2u7A;`8$pd58#vron-m zUWV<~TDNVZ8sNr%e-7aPcc@>xm^#4