From 7d870496938e993f97ce7224c5bf08cbe778a766 Mon Sep 17 00:00:00 2001 From: Diego Martinez Date: Mon, 14 Mar 2016 19:03:44 -0300 Subject: [PATCH] First commit. Split from [homedecor](https://github.com/VanessaE/homedecor_modpack). See the homedecor repository's commit log for full history. Additionally, removed extra fonts. These will be distributed separately to avoid bloating the repo too much. --- .gitignore | 7 + copyright.txt | 8 + depends.txt | 4 + init.lua | 1090 ++++++++++++++++++++++++++ locale/de.txt | 9 + locale/template.txt | 9 + textures/bg_signs_lib.jpg | Bin 0 -> 82731 bytes textures/hdf_20.png | Bin 0 -> 67 bytes textures/hdf_21.png | Bin 0 -> 83 bytes textures/hdf_22.png | Bin 0 -> 83 bytes textures/hdf_23.png | Bin 0 -> 97 bytes textures/hdf_24.png | Bin 0 -> 112 bytes textures/hdf_25.png | Bin 0 -> 125 bytes textures/hdf_26.png | Bin 0 -> 120 bytes textures/hdf_27.png | Bin 0 -> 78 bytes textures/hdf_28.png | Bin 0 -> 88 bytes textures/hdf_29.png | Bin 0 -> 88 bytes textures/hdf_2a.png | Bin 0 -> 90 bytes textures/hdf_2b.png | Bin 0 -> 84 bytes textures/hdf_2c.png | Bin 0 -> 79 bytes textures/hdf_2d.png | Bin 0 -> 77 bytes textures/hdf_2e.png | Bin 0 -> 77 bytes textures/hdf_2f.png | Bin 0 -> 93 bytes textures/hdf_30.png | Bin 0 -> 97 bytes textures/hdf_31.png | Bin 0 -> 87 bytes textures/hdf_32.png | Bin 0 -> 113 bytes textures/hdf_33.png | Bin 0 -> 109 bytes textures/hdf_34.png | Bin 0 -> 103 bytes textures/hdf_35.png | Bin 0 -> 109 bytes textures/hdf_36.png | Bin 0 -> 104 bytes textures/hdf_37.png | Bin 0 -> 95 bytes textures/hdf_38.png | Bin 0 -> 104 bytes textures/hdf_39.png | Bin 0 -> 110 bytes textures/hdf_3a.png | Bin 0 -> 77 bytes textures/hdf_3b.png | Bin 0 -> 80 bytes textures/hdf_3c.png | Bin 0 -> 96 bytes textures/hdf_3d.png | Bin 0 -> 80 bytes textures/hdf_3e.png | Bin 0 -> 95 bytes textures/hdf_3f.png | Bin 0 -> 102 bytes textures/hdf_40.png | Bin 0 -> 128 bytes textures/hdf_41.png | Bin 0 -> 117 bytes textures/hdf_42.png | Bin 0 -> 97 bytes textures/hdf_43.png | Bin 0 -> 113 bytes textures/hdf_44.png | Bin 0 -> 104 bytes textures/hdf_45.png | Bin 0 -> 92 bytes textures/hdf_46.png | Bin 0 -> 91 bytes textures/hdf_47.png | Bin 0 -> 118 bytes textures/hdf_48.png | Bin 0 -> 89 bytes textures/hdf_49.png | Bin 0 -> 77 bytes textures/hdf_4a.png | Bin 0 -> 91 bytes textures/hdf_4b.png | Bin 0 -> 114 bytes textures/hdf_4c.png | Bin 0 -> 82 bytes textures/hdf_4d.png | Bin 0 -> 108 bytes textures/hdf_4e.png | Bin 0 -> 103 bytes textures/hdf_4f.png | Bin 0 -> 116 bytes textures/hdf_50.png | Bin 0 -> 99 bytes textures/hdf_51.png | Bin 0 -> 122 bytes textures/hdf_52.png | Bin 0 -> 100 bytes textures/hdf_53.png | Bin 0 -> 111 bytes textures/hdf_54.png | Bin 0 -> 85 bytes textures/hdf_55.png | Bin 0 -> 95 bytes textures/hdf_56.png | Bin 0 -> 103 bytes textures/hdf_57.png | Bin 0 -> 107 bytes textures/hdf_58.png | Bin 0 -> 115 bytes textures/hdf_59.png | Bin 0 -> 105 bytes textures/hdf_5a.png | Bin 0 -> 108 bytes textures/hdf_5b.png | Bin 0 -> 80 bytes textures/hdf_5c.png | Bin 0 -> 94 bytes textures/hdf_5d.png | Bin 0 -> 80 bytes textures/hdf_5e.png | Bin 0 -> 96 bytes textures/hdf_5f.png | Bin 0 -> 76 bytes textures/hdf_60.png | Bin 0 -> 78 bytes textures/hdf_61.png | Bin 0 -> 102 bytes textures/hdf_62.png | Bin 0 -> 99 bytes textures/hdf_63.png | Bin 0 -> 98 bytes textures/hdf_64.png | Bin 0 -> 105 bytes textures/hdf_65.png | Bin 0 -> 98 bytes textures/hdf_66.png | Bin 0 -> 89 bytes textures/hdf_67.png | Bin 0 -> 101 bytes textures/hdf_68.png | Bin 0 -> 93 bytes textures/hdf_69.png | Bin 0 -> 82 bytes textures/hdf_6a.png | Bin 0 -> 83 bytes textures/hdf_6b.png | Bin 0 -> 103 bytes textures/hdf_6c.png | Bin 0 -> 77 bytes textures/hdf_6d.png | Bin 0 -> 99 bytes textures/hdf_6e.png | Bin 0 -> 93 bytes textures/hdf_6f.png | Bin 0 -> 97 bytes textures/hdf_70.png | Bin 0 -> 100 bytes textures/hdf_71.png | Bin 0 -> 100 bytes textures/hdf_72.png | Bin 0 -> 87 bytes textures/hdf_73.png | Bin 0 -> 100 bytes textures/hdf_74.png | Bin 0 -> 92 bytes textures/hdf_75.png | Bin 0 -> 91 bytes textures/hdf_76.png | Bin 0 -> 98 bytes textures/hdf_77.png | Bin 0 -> 107 bytes textures/hdf_78.png | Bin 0 -> 99 bytes textures/hdf_79.png | Bin 0 -> 102 bytes textures/hdf_7a.png | Bin 0 -> 95 bytes textures/hdf_7b.png | Bin 0 -> 88 bytes textures/hdf_7c.png | Bin 0 -> 67 bytes textures/hdf_7d.png | Bin 0 -> 87 bytes textures/hdf_7e.png | Bin 0 -> 87 bytes textures/signs_back.png | Bin 0 -> 280 bytes textures/signs_blue_front.png | Bin 0 -> 175 bytes textures/signs_blue_inv.png | Bin 0 -> 154 bytes textures/signs_bottom.png | Bin 0 -> 129 bytes textures/signs_brown_front.png | Bin 0 -> 175 bytes textures/signs_brown_inv.png | Bin 0 -> 155 bytes textures/signs_front.png | Bin 0 -> 365 bytes textures/signs_green_front.png | Bin 0 -> 112 bytes textures/signs_green_inv.png | Bin 0 -> 91 bytes textures/signs_hanging_back.png | Bin 0 -> 322 bytes textures/signs_hanging_bottom.png | Bin 0 -> 125 bytes textures/signs_hanging_front.png | Bin 0 -> 412 bytes textures/signs_hanging_side.png | Bin 0 -> 134 bytes textures/signs_hanging_top.png | Bin 0 -> 125 bytes textures/signs_locked_inv.png | Bin 0 -> 374 bytes textures/signs_metal_back.png | Bin 0 -> 93 bytes textures/signs_metal_sides.png | Bin 0 -> 87 bytes textures/signs_metal_tb.png | Bin 0 -> 89 bytes textures/signs_orange_front.png | Bin 0 -> 170 bytes textures/signs_orange_inv.png | Bin 0 -> 141 bytes textures/signs_post_back.png | Bin 0 -> 311 bytes textures/signs_post_bottom.png | Bin 0 -> 131 bytes textures/signs_post_front.png | Bin 0 -> 401 bytes textures/signs_post_side.png | Bin 0 -> 204 bytes textures/signs_post_top.png | Bin 0 -> 130 bytes textures/signs_red_front.png | Bin 0 -> 107 bytes textures/signs_red_inv.png | Bin 0 -> 91 bytes textures/signs_side.png | Bin 0 -> 157 bytes textures/signs_top.png | Bin 0 -> 130 bytes textures/signs_wall_sign.png | Bin 0 -> 537 bytes textures/signs_wall_sign_locked.png | Bin 0 -> 509 bytes textures/signs_white_black_front.png | Bin 0 -> 110 bytes textures/signs_white_black_inv.png | Bin 0 -> 88 bytes textures/signs_white_red_front.png | Bin 0 -> 107 bytes textures/signs_white_red_inv.png | Bin 0 -> 91 bytes textures/signs_yellow_front.png | Bin 0 -> 111 bytes textures/signs_yellow_inv.png | Bin 0 -> 99 bytes textures/slc_0.png | Bin 0 -> 319 bytes textures/slc_1.png | Bin 0 -> 319 bytes textures/slc_2.png | Bin 0 -> 319 bytes textures/slc_3.png | Bin 0 -> 319 bytes textures/slc_4.png | Bin 0 -> 319 bytes textures/slc_5.png | Bin 0 -> 319 bytes textures/slc_6.png | Bin 0 -> 319 bytes textures/slc_7.png | Bin 0 -> 319 bytes textures/slc_8.png | Bin 0 -> 319 bytes textures/slc_9.png | Bin 0 -> 319 bytes textures/slc_A.png | Bin 0 -> 319 bytes textures/slc_B.png | Bin 0 -> 319 bytes textures/slc_C.png | Bin 0 -> 319 bytes textures/slc_D.png | Bin 0 -> 319 bytes textures/slc_E.png | Bin 0 -> 319 bytes textures/slc_F.png | Bin 0 -> 317 bytes textures/slc_n.png | Bin 0 -> 317 bytes 156 files changed, 1127 insertions(+) create mode 100644 .gitignore create mode 100644 copyright.txt create mode 100644 depends.txt create mode 100644 init.lua create mode 100644 locale/de.txt create mode 100644 locale/template.txt create mode 100644 textures/bg_signs_lib.jpg create mode 100644 textures/hdf_20.png create mode 100644 textures/hdf_21.png create mode 100644 textures/hdf_22.png create mode 100644 textures/hdf_23.png create mode 100644 textures/hdf_24.png create mode 100644 textures/hdf_25.png create mode 100644 textures/hdf_26.png create mode 100644 textures/hdf_27.png create mode 100644 textures/hdf_28.png create mode 100644 textures/hdf_29.png create mode 100644 textures/hdf_2a.png create mode 100644 textures/hdf_2b.png create mode 100644 textures/hdf_2c.png create mode 100644 textures/hdf_2d.png create mode 100644 textures/hdf_2e.png create mode 100644 textures/hdf_2f.png create mode 100644 textures/hdf_30.png create mode 100644 textures/hdf_31.png create mode 100644 textures/hdf_32.png create mode 100644 textures/hdf_33.png create mode 100644 textures/hdf_34.png create mode 100644 textures/hdf_35.png create mode 100644 textures/hdf_36.png create mode 100644 textures/hdf_37.png create mode 100644 textures/hdf_38.png create mode 100644 textures/hdf_39.png create mode 100644 textures/hdf_3a.png create mode 100644 textures/hdf_3b.png create mode 100644 textures/hdf_3c.png create mode 100644 textures/hdf_3d.png create mode 100644 textures/hdf_3e.png create mode 100644 textures/hdf_3f.png create mode 100644 textures/hdf_40.png create mode 100644 textures/hdf_41.png create mode 100644 textures/hdf_42.png create mode 100644 textures/hdf_43.png create mode 100644 textures/hdf_44.png create mode 100644 textures/hdf_45.png create mode 100644 textures/hdf_46.png create mode 100644 textures/hdf_47.png create mode 100644 textures/hdf_48.png create mode 100644 textures/hdf_49.png create mode 100644 textures/hdf_4a.png create mode 100644 textures/hdf_4b.png create mode 100644 textures/hdf_4c.png create mode 100644 textures/hdf_4d.png create mode 100644 textures/hdf_4e.png create mode 100644 textures/hdf_4f.png create mode 100644 textures/hdf_50.png create mode 100644 textures/hdf_51.png create mode 100644 textures/hdf_52.png create mode 100644 textures/hdf_53.png create mode 100644 textures/hdf_54.png create mode 100644 textures/hdf_55.png create mode 100644 textures/hdf_56.png create mode 100644 textures/hdf_57.png create mode 100644 textures/hdf_58.png create mode 100644 textures/hdf_59.png create mode 100644 textures/hdf_5a.png create mode 100644 textures/hdf_5b.png create mode 100644 textures/hdf_5c.png create mode 100644 textures/hdf_5d.png create mode 100644 textures/hdf_5e.png create mode 100644 textures/hdf_5f.png create mode 100644 textures/hdf_60.png create mode 100644 textures/hdf_61.png create mode 100644 textures/hdf_62.png create mode 100644 textures/hdf_63.png create mode 100644 textures/hdf_64.png create mode 100644 textures/hdf_65.png create mode 100644 textures/hdf_66.png create mode 100644 textures/hdf_67.png create mode 100644 textures/hdf_68.png create mode 100644 textures/hdf_69.png create mode 100644 textures/hdf_6a.png create mode 100644 textures/hdf_6b.png create mode 100644 textures/hdf_6c.png create mode 100644 textures/hdf_6d.png create mode 100644 textures/hdf_6e.png create mode 100644 textures/hdf_6f.png create mode 100644 textures/hdf_70.png create mode 100644 textures/hdf_71.png create mode 100644 textures/hdf_72.png create mode 100644 textures/hdf_73.png create mode 100644 textures/hdf_74.png create mode 100644 textures/hdf_75.png create mode 100644 textures/hdf_76.png create mode 100644 textures/hdf_77.png create mode 100644 textures/hdf_78.png create mode 100644 textures/hdf_79.png create mode 100644 textures/hdf_7a.png create mode 100644 textures/hdf_7b.png create mode 100644 textures/hdf_7c.png create mode 100644 textures/hdf_7d.png create mode 100644 textures/hdf_7e.png create mode 100644 textures/signs_back.png create mode 100644 textures/signs_blue_front.png create mode 100644 textures/signs_blue_inv.png create mode 100644 textures/signs_bottom.png create mode 100644 textures/signs_brown_front.png create mode 100644 textures/signs_brown_inv.png create mode 100644 textures/signs_front.png create mode 100644 textures/signs_green_front.png create mode 100644 textures/signs_green_inv.png create mode 100644 textures/signs_hanging_back.png create mode 100644 textures/signs_hanging_bottom.png create mode 100644 textures/signs_hanging_front.png create mode 100644 textures/signs_hanging_side.png create mode 100644 textures/signs_hanging_top.png create mode 100644 textures/signs_locked_inv.png create mode 100644 textures/signs_metal_back.png create mode 100644 textures/signs_metal_sides.png create mode 100644 textures/signs_metal_tb.png create mode 100644 textures/signs_orange_front.png create mode 100644 textures/signs_orange_inv.png create mode 100644 textures/signs_post_back.png create mode 100644 textures/signs_post_bottom.png create mode 100644 textures/signs_post_front.png create mode 100644 textures/signs_post_side.png create mode 100644 textures/signs_post_top.png create mode 100644 textures/signs_red_front.png create mode 100644 textures/signs_red_inv.png create mode 100644 textures/signs_side.png create mode 100644 textures/signs_top.png create mode 100644 textures/signs_wall_sign.png create mode 100644 textures/signs_wall_sign_locked.png create mode 100644 textures/signs_white_black_front.png create mode 100644 textures/signs_white_black_inv.png create mode 100644 textures/signs_white_red_front.png create mode 100644 textures/signs_white_red_inv.png create mode 100644 textures/signs_yellow_front.png create mode 100644 textures/signs_yellow_inv.png create mode 100644 textures/slc_0.png create mode 100644 textures/slc_1.png create mode 100644 textures/slc_2.png create mode 100644 textures/slc_3.png create mode 100644 textures/slc_4.png create mode 100644 textures/slc_5.png create mode 100644 textures/slc_6.png create mode 100644 textures/slc_7.png create mode 100644 textures/slc_8.png create mode 100644 textures/slc_9.png create mode 100644 textures/slc_A.png create mode 100644 textures/slc_B.png create mode 100644 textures/slc_C.png create mode 100644 textures/slc_D.png create mode 100644 textures/slc_E.png create mode 100644 textures/slc_F.png create mode 100644 textures/slc_n.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..01a1fe5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +# temporary files +*~ + +# eclipse project files +.project +.settings +.buildpath diff --git a/copyright.txt b/copyright.txt new file mode 100644 index 0000000..68fa549 --- /dev/null +++ b/copyright.txt @@ -0,0 +1,8 @@ +Most code and all textures by Vanessa Ezekowitz. + +Some code copied and modified from the game's default mods (especially +doors) and ironzorg's flowers mod. + +Licenses: +* For the lua code, BSD. +* For all images and everything else, WTFPL. diff --git a/depends.txt b/depends.txt new file mode 100644 index 0000000..abb8bd5 --- /dev/null +++ b/depends.txt @@ -0,0 +1,4 @@ +default +intllib? +screwdriver? +keyword_interact? diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..ce3e37a --- /dev/null +++ b/init.lua @@ -0,0 +1,1090 @@ +-- This mod provides the visible text on signs library used by Home Decor +-- and perhaps other mods at some point in the future. Forked from thexyz's/ +-- PilzAdam's original text-on-signs mod and rewritten by Vanessa Ezekowitz +-- and Diego Martinez + +-- textpos = { +-- { delta = {entity position for 0° yaw}, exact yaw expression } +-- { delta = {entity position for 180° yaw}, exact yaw expression } +-- { delta = {entity position for 270° yaw}, exact yaw expression } +-- { delta = {entity position for 90° yaw}, exact yaw expression } +-- } + +-- CWz's keyword interact mod uses this setting. +local current_keyword = minetest.setting_get("interact_keyword") or "iaccept" + +signs_lib = {} +screwdriver = screwdriver or {} + +signs_lib.wallmounted_rotate = function(pos, node, user, mode, new_param2) + if mode ~= screwdriver.ROTATE_AXIS then return false end + minetest.swap_node(pos, {name = node.name, param2 = (node.param2 + 1) % 6}) + for _, v in ipairs(minetest.get_objects_inside_radius(pos, 0.5)) do + local e = v:get_luaentity() + if e and e.name == "signs:text" then + v:remove() + end + end + signs_lib.update_sign(pos) + return true +end + +signs_lib.modpath = minetest.get_modpath("signs_lib") + +signs_lib.regular_wall_sign_model = { + nodebox = { + type = "wallmounted", + wall_side = { -0.5, -0.25, -0.4375, -0.4375, 0.375, 0.4375 }, + wall_bottom = { -0.4375, -0.5, -0.25, 0.4375, -0.4375, 0.375 }, + wall_top = { -0.4375, 0.4375, -0.375, 0.4375, 0.5, 0.25 } + }, + 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}, + } +} + +signs_lib.metal_wall_sign_model = { + nodebox = { + type = "fixed", + 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}, + } +} + +signs_lib.yard_sign_model = { + nodebox = { + type = "fixed", + fixed = { + {-0.4375, -0.25, -0.0625, 0.4375, 0.375, 0}, + {-0.0625, -0.5, -0.0625, 0.0625, -0.1875, 0}, + } + }, + 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}, + } +} + +signs_lib.hanging_sign_model = { + nodebox = { + type = "fixed", + fixed = { + {-0.4375, -0.3125, -0.0625, 0.4375, 0.3125, 0}, + {-0.4375, 0.25, -0.03125, 0.4375, 0.5, -0.03125}, + } + }, + 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}, + } +} + +signs_lib.sign_post_model = { + nodebox = { + type = "fixed", + fixed = { + {-0.4375, -0.25, -0.1875, 0.4375, 0.375, -0.125}, + {-0.125, -0.5, -0.125, 0.125, 0.5, 0.125}, + } + }, + 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}, + } +} + +-- Boilerplate to support localized strings if intllib mod is installed. +local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end +signs_lib.gettext = S + +-- the list of standard sign nodes + +signs_lib.sign_node_list = { + "default:sign_wall", + "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" +} + +--table copy + +function signs_lib.table_copy(t) + local nt = { }; + for k, v in pairs(t) do + if type(v) == "table" then + nt[k] = signs_lib.table_copy(v) + else + nt[k] = v + end + end + return nt +end + +-- infinite stacks + +if minetest.get_modpath("unified_inventory") or not minetest.setting_getbool("creative_mode") then + signs_lib.expect_infinite_stacks = false +else + signs_lib.expect_infinite_stacks = true +end + +-- CONSTANTS + +local MP = minetest.get_modpath("signs_lib") + +-- Used by `build_char_db' to locate the file. +local FONT_FMT = "%s/hdf_%02x.png" + +-- Simple texture name for building text texture. +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) + +-- Read the image size from a PNG file. +-- Returns image_w, image_h. +-- Only the LSB is read from each field! +local function read_image_size(filename) + local f = io.open(filename, "rb") + f:seek("set", 0x0) + local hdr = f:read(8) + if hdr ~= PNG_HDR then + f:close() + return + end + f:seek("set", 0x13) + local ws = f:read(1) + f:seek("set", 0x17) + local hs = f:read(1) + f:close() + return ws:byte(), hs:byte() +end + +-- Set by build_char_db() +local LINE_HEIGHT +local SIGN_WIDTH +local COLORBGW, COLORBGH + +-- Size of the canvas, in characters. +-- Please note that CHARS_PER_LINE is multiplied by the average character +-- width to get the total width of the canvas, so for proportional fonts, +-- either more or fewer characters may fit on a line. +local CHARS_PER_LINE = 30 +local NUMBER_OF_LINES = 6 + +-- 6 rows, max 80 chars per, plus a bit of fudge to +-- avoid excess trimming (e.g. due to color codes) + +local MAX_INPUT_CHARS = 600 + +-- This holds the individual character widths. +-- Indexed by the actual character (e.g. charwidth["A"]) +local charwidth + +-- helper functions to trim sign text input/output + +local function trim_input(text) + return text:sub(1, math.min(MAX_INPUT_CHARS, text:len())) +end + +local function build_char_db() + + charwidth = { } + + -- To calculate average char width. + local total_width = 0 + local char_count = 0 + + for c = 32, 126 do + local w, h = read_image_size(FONT_FMT:format(TP, c)) + if w and h then + local ch = string.char(c) + charwidth[ch] = w + total_width = total_width + w + char_count = char_count + 1 + end + end + + COLORBGW, COLORBGH = read_image_size(TP.."/slc_n.png") + assert(COLORBGW and COLORBGH, "error reading bg dimensions") + LINE_HEIGHT = COLORBGH + + -- XXX: Is there a better way to calc this? + SIGN_WIDTH = math.floor((total_width / char_count) * CHARS_PER_LINE) + +end + +local sign_groups = {choppy=2, dig_immediate=2} + +local fences_with_sign = { } + +-- some local helper functions + +local function split_lines_and_words_old(text) + local lines = { } + local line = { } + if not text then return end + for word in text:gmatch("%S+") do + if word == "|" then + table.insert(lines, line) + if #lines >= NUMBER_OF_LINES then break end + line = { } + elseif word == "\\|" then + table.insert(line, "|") + else + table.insert(line, word) + end + end + table.insert(lines, line) + return lines +end + +local function split_lines_and_words(text) + if not text then return end + text = string.gsub(text, "@KEYWORD", current_keyword) + local lines = { } + for _, line in ipairs(text:split("\n")) do + table.insert(lines, line:split(" ")) + end + return lines +end + +local math_max = math.max + +local function fill_line(x, y, w, c) + c = c or "0" + local tex = { } + for xx = 0, math.max(0, w), COLORBGW do + table.insert(tex, (":%d,%d=slc_%s.png"):format(x + xx, y, c)) + end + return table.concat(tex) +end + +local function make_line_texture(line, lineno) + + local width = 0 + local maxw = 0 + + local words = { } + + local cur_color = 0 + + -- We check which chars are available here. + for word_i, word in ipairs(line) do + local chars = { } + local ch_offs = 0 + local word_l = #word + local i = 1 + while i <= word_l do + local c = word:sub(i, i) + if c == "#" then + local cc = tonumber(word:sub(i+1, i+1), 16) + if cc then + i = i + 1 + cur_color = cc + end + else + local w = charwidth[c] + if w then + width = width + w + 1 + if width >= (SIGN_WIDTH - charwidth[" "]) then + width = 0 + else + maxw = math_max(width, maxw) + end + if #chars < MAX_INPUT_CHARS then + table.insert(chars, { + off=ch_offs, + tex=FONT_FMT_SIMPLE:format(c:byte()), + col=("%X"):format(cur_color), + }) + end + ch_offs = ch_offs + w + end + end + i = i + 1 + end + width = width + charwidth[" "] + 1 + maxw = math_max(width, maxw) + table.insert(words, { chars=chars, w=ch_offs }) + end + + -- Okay, we actually build the "line texture" here. + + local texture = { } + + local start_xpos = math.floor((SIGN_WIDTH - maxw) / 2) + + local xpos = start_xpos + local ypos = (LINE_HEIGHT * lineno) + + cur_color = nil + + for word_i, word in ipairs(words) do + local xoffs = (xpos - start_xpos) + if (xoffs > 0) and ((xoffs + word.w) > maxw) then + table.insert(texture, fill_line(xpos, ypos, maxw, "n")) + xpos = start_xpos + ypos = ypos + LINE_HEIGHT + lineno = lineno + 1 + if lineno >= NUMBER_OF_LINES then break end + table.insert(texture, fill_line(xpos, ypos, maxw, cur_color)) + end + for ch_i, ch in ipairs(word.chars) do + if ch.col ~= cur_color then + cur_color = ch.col + table.insert(texture, fill_line(xpos + ch.off, ypos, maxw, cur_color)) + end + table.insert(texture, (":%d,%d=%s"):format(xpos + ch.off, ypos, ch.tex)) + end + table.insert(texture, (":%d,%d=hdf_20.png"):format(xpos + word.w, ypos)) + xpos = xpos + word.w + charwidth[" "] + if xpos >= (SIGN_WIDTH + charwidth[" "]) then break end + end + + table.insert(texture, fill_line(xpos, ypos, maxw, "n")) + table.insert(texture, fill_line(start_xpos, ypos + LINE_HEIGHT, maxw, "n")) + + return table.concat(texture), lineno +end + +local function make_sign_texture(lines) + 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) + table.insert(texture, linetex) + lineno = ln + 1 + end + table.insert(texture, "^[makealpha:0,0,0") + return table.concat(texture, "") +end + +local function set_obj_text(obj, text, new) + local split = new and split_lines_and_words or split_lines_and_words_old + obj:set_properties({ + textures={make_sign_texture(split(text))}, + visual_size = TEXT_SCALE, + }) +end + +signs_lib.construct_sign = function(pos, locked) + local meta = minetest.get_meta(pos) + meta:set_string( + "formspec", + "size[6,4]".. + "textarea[0,-0.3;6.5,3;text;;${text}]".. + "button_exit[2,3.4;2,1;ok;Write]".. + "background[-0.5,-0.5;7,5;bg_signs_lib.jpg]") + meta:set_string("infotext", "") +end + +signs_lib.destruct_sign = function(pos) + local objects = minetest.get_objects_inside_radius(pos, 0.5) + for _, v in ipairs(objects) do + local e = v:get_luaentity() + if e and e.name == "signs:text" then + v:remove() + end + end +end + +local function make_infotext(text) + text = trim_input(text) + local lines = split_lines_and_words(text) or {} + local lines2 = { } + for _, line in ipairs(lines) do + table.insert(lines2, (table.concat(line, " "):gsub("#[0-9a-fA-F]", ""):gsub("##", "#"))) + end + return table.concat(lines2, "\n") +end + +signs_lib.update_sign = function(pos, fields, owner) + + -- First, check if the interact keyword from CWz's mod is being set, + -- or has been changed since the last restart... + + local meta = minetest.get_meta(pos) + local stored_text = meta:get_string("text") or "" + current_keyword = rawget(_G, "mki_interact_keyword") or current_keyword + + if fields then -- ...we're editing the sign. + if fields.text and string.find(dump(fields.text), "@KEYWORD") then + meta:set_string("keyword", current_keyword) + else + meta:set_string("keyword", nil) + end + elseif string.find(dump(stored_text), "@KEYWORD") then -- we need to check if the password is being set/changed + + local stored_keyword = meta:get_string("keyword") + if stored_keyword and stored_keyword ~= "" and stored_keyword ~= current_keyword then + signs_lib.destruct_sign(pos) + meta:set_string("keyword", current_keyword) + local ownstr = "" + if owner then ownstr = "Locked sign, owned by "..owner.."\n" end + meta:set_string("infotext", ownstr..string.gsub(make_infotext(stored_text), "@KEYWORD", current_keyword).." ") + end + end + + local new + + if fields then + + fields.text = trim_input(fields.text) + + local ownstr = "" + if owner then ownstr = "Locked sign, owned by "..owner.."\n" end + + meta:set_string("infotext", ownstr..string.gsub(make_infotext(fields.text), "@KEYWORD", current_keyword).." ") + meta:set_string("text", fields.text) + + meta:set_int("__signslib_new_format", 1) + new = true + else + new = (meta:get_int("__signslib_new_format") ~= 0) + end + local text = meta:get_string("text") + if text == nil then return end + local objects = minetest.get_objects_inside_radius(pos, 0.5) + local found + for _, v in ipairs(objects) do + local e = v:get_luaentity() + if e and e.name == "signs:text" then + if found then + v:remove() + else + set_obj_text(v, text, new) + found = true + end + end + end + if found then + return + end + + -- if there is no entity + local sign_info + local signnode = minetest.get_node(pos) + if 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] + elseif string.find(signnode.name, "sign_wall") then + if signnode.name == "default:sign_wall" + 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 + sign_info = signs_lib.metal_wall_sign_model.textpos[minetest.get_node(pos).param2 + 1] + end + else -- ...it must be a sign on a fence post. + sign_info = signs_lib.sign_post_model.textpos[minetest.get_node(pos).param2 + 1] + end + if sign_info == nil then + return + end + local text = minetest.add_entity({x = pos.x + sign_info.delta.x, + y = pos.y + sign_info.delta.y, + z = pos.z + sign_info.delta.z}, "signs:text") + text:setyaw(sign_info.yaw) +end + +-- What kind of sign do we need to place, anyway? + +function signs_lib.determine_sign_type(itemstack, placer, pointed_thing, locked) + local name + name = minetest.get_node(pointed_thing.under).name + if fences_with_sign[name] then + if minetest.is_protected(pointed_thing.under, placer:get_player_name()) then + minetest.record_protection_violation(pointed_thing.under, + placer:get_player_name()) + return itemstack + end + else + name = minetest.get_node(pointed_thing.above).name + local def = minetest.registered_nodes[name] + if not def.buildable_to then + return itemstack + end + if minetest.is_protected(pointed_thing.above, placer:get_player_name()) then + minetest.record_protection_violation(pointed_thing.above, + placer:get_player_name()) + return itemstack + end + end + + 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 + local above = pointed_thing.above + local under = pointed_thing.under + local dir = {x = under.x - above.x, + y = under.y - above.y, + z = under.z - above.z} + + local wdir = minetest.dir_to_wallmounted(dir) + + local placer_pos = placer:getpos() + if placer_pos then + dir = { + x = above.x - placer_pos.x, + y = above.y - placer_pos.y, + z = above.z - placer_pos.z + } + end + + local fdir = minetest.dir_to_facedir(dir) + + local pt_name = minetest.get_node(under).name + local signname = itemstack:get_name() + + if fences_with_sign[pt_name] and signname == "default:sign_wall" then + minetest.add_node(under, {name = fences_with_sign[pt_name], param2 = fdir}) + elseif wdir == 0 and signname == "default:sign_wall" then + minetest.add_node(above, {name = "signs:sign_hanging", param2 = fdir}) + elseif wdir == 1 and signname == "default:sign_wall" then + minetest.add_node(above, {name = "signs:sign_yard", param2 = fdir}) + elseif signname ~= "default:sign_wall" + and signname ~= "locked_sign:sign_wall_locked" then -- it's a metal wall sign. + minetest.add_node(above, {name = signname, param2 = fdir}) + else -- it must be a default or locked wooden wall sign + minetest.add_node(above, {name = signname, param2 = wdir }) -- note it's wallmounted here! + if locked then + local meta = minetest.get_meta(above) + local owner = placer:get_player_name() + meta:set_string("owner", owner) + end + end + + if not signs_lib.expect_infinite_stacks then + itemstack:take_item() + end + return itemstack + end +end + +function signs_lib.receive_fields(pos, formname, fields, sender, lock) + if minetest.is_protected(pos, sender:get_player_name()) then + minetest.record_protection_violation(pos, + sender:get_player_name()) + return + end + local lockstr = lock and "locked " or "" + if fields and fields.text and fields.ok then + minetest.log("action", S("%s wrote \"%s\" to "..lockstr.."sign at %s"):format( + (sender:get_player_name() or ""), + fields.text, + minetest.pos_to_string(pos) + )) + if lock then + signs_lib.update_sign(pos, fields, sender:get_player_name()) + else + signs_lib.update_sign(pos, fields) + end + end +end + +minetest.register_node(":default:sign_wall", { + description = S("Sign"), + inventory_image = "default_sign_wall.png", + wield_image = "default_sign_wall.png", + 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.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 +}) + +minetest.register_node(":signs:sign_yard", { + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "facedir", + drawtype = "nodebox", + node_box = signs_lib.yard_sign_model.nodebox, + selection_box = { + type = "fixed", + fixed = {-0.4375, -0.5, -0.0625, 0.4375, 0.375, 0} + }, + tiles = {"signs_top.png", "signs_bottom.png", "signs_side.png", "signs_side.png", "signs_back.png", "signs_front.png"}, + groups = {choppy=2, dig_immediate=2}, + drop = "default:sign_wall", + + 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, +}) + +minetest.register_node(":signs:sign_hanging", { + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "facedir", + drawtype = "nodebox", + node_box = signs_lib.hanging_sign_model.nodebox, + selection_box = { + type = "fixed", + fixed = {-0.45, -0.275, -0.049, 0.45, 0.5, 0.049} + }, + tiles = { + "signs_hanging_top.png", + "signs_hanging_bottom.png", + "signs_hanging_side.png", + "signs_hanging_side.png", + "signs_hanging_back.png", + "signs_hanging_front.png" + }, + groups = {choppy=2, dig_immediate=2}, + drop = "default:sign_wall", + + 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, +}) + +minetest.register_node(":signs:sign_post", { + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "facedir", + drawtype = "nodebox", + node_box = signs_lib.sign_post_model.nodebox, + tiles = { + "signs_post_top.png", + "signs_post_bottom.png", + "signs_post_side.png", + "signs_post_side.png", + "signs_post_back.png", + "signs_post_front.png", + }, + groups = {choppy=2, dig_immediate=2}, + drop = { + max_items = 2, + items = { + { items = { "default:sign_wall" }}, + { items = { "default:fence_wood" }}, + }, + }, +}) + +-- Locked wall sign + +minetest.register_privilege("sign_editor", "Can edit all locked signs") + +minetest.register_node(":locked_sign:sign_wall_locked", { + description = S("Sign"), + inventory_image = "signs_locked_inv.png", + wield_image = "signs_locked_inv.png", + 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_locked.png" }, + groups = sign_groups, + on_place = function(itemstack, placer, pointed_thing) + return signs_lib.determine_sign_type(itemstack, placer, pointed_thing, true) + end, + on_construct = function(pos) + signs_lib.construct_sign(pos, true) + end, + on_destruct = function(pos) + signs_lib.destruct_sign(pos) + end, + on_receive_fields = function(pos, formname, fields, sender) + 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") + and not minetest.check_player_privs(pname, {sign_editor=true}) then + return + end + signs_lib.receive_fields(pos, formname, fields, sender, true) + end, + on_punch = function(pos, node, puncher) + signs_lib.update_sign(pos) + end, + can_dig = function(pos, player) + 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") + or minetest.check_player_privs(pname, {sign_editor=true}) + end, + on_rotate = signs_lib.wallmounted_rotate +}) + +-- metal, colored signs + +local sign_colors = { "green", "yellow", "red", "white_red", "white_black", "orange", "blue", "brown" } + +for _, 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" + }, + 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 + +local signs_text_on_activate + +signs_text_on_activate = function(self) + local meta = minetest.get_meta(self.object:getpos()) + 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) + end +end + +minetest.register_entity(":signs:text", { + collisionbox = { 0, 0, 0, 0, 0, 0 }, + visual = "upright_sprite", + textures = {}, + + on_activate = signs_text_on_activate, +}) + +-- And the good stuff here! :-) + +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") + return + end + def = signs_lib.table_copy(def) + def_sign = signs_lib.table_copy(def_sign) + fences_with_sign[fencename] = fencewithsignname + + def_sign.on_place = function(itemstack, placer, pointed_thing, ...) + local node_above = minetest.get_node_or_nil(pointed_thing.above) + local node_under = minetest.get_node_or_nil(pointed_thing.under) + local def_above = node_above and minetest.registered_nodes[node_above.name] + local def_under = node_under and minetest.registered_nodes[node_under.name] + local fdir = minetest.dir_to_facedir(placer:get_look_dir()) + local playername = placer:get_player_name() + + if minetest.is_protected(pointed_thing.under, playername) then + minetest.record_protection_violation(pointed_thing.under, playername) + return itemstack + end + + if minetest.is_protected(pointed_thing.above, playername) then + minetest.record_protection_violation(pointed_thing.above, playername) + return itemstack + end + + if def_under and def_under.on_rightclick then + return def_under.on_rightclick(pointed_thing.under, node_under, placer, itemstack) 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 + itemstack:take_item() + end + placer:set_wielded_item(itemstack) + elseif def_above and def_above.buildable_to then + minetest.add_node(pointed_thing.above, {name = fencename, param2 = fdir}) + if not signs_lib.expect_infinite_stacks then + itemstack:take_item() + end + placer:set_wielded_item(itemstack) + end + return itemstack + end + def_sign.on_construct = function(pos, ...) + signs_lib.construct_sign(pos) + end + def_sign.on_destruct = function(pos, ...) + signs_lib.destruct_sign(pos) + end + def_sign.on_receive_fields = function(pos, formname, fields, sender) + signs_lib.receive_fields(pos, formname, fields, sender) + end + def_sign.on_punch = function(pos, node, puncher, ...) + signs_lib.update_sign(pos) + end + local fencename = fencename + def_sign.after_dig_node = function(pos, node, ...) + node.name = fencename + minetest.add_node(pos, node) + end + def_sign.drop = "default:sign_wall" + minetest.register_node(":"..fencename, def) + minetest.register_node(":"..fencewithsignname, def_sign) + table.insert(signs_lib.sign_node_list, fencewithsignname) + minetest.log("debug", S("Registered %s and %s"):format(fencename, fencewithsignname)) +end + +build_char_db() + +minetest.register_alias("homedecor:fence_wood_with_sign", "signs:sign_post") +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 + +minetest.register_abm({ + nodenames = signs_lib.sign_node_list, + interval = 15, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + signs_lib.update_sign(pos) + end +}) + +-- 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 = { + {"default:sign_wall"}, + {"default:steel_ingot"}, + }, +}) + +-- craft recipes for the metal signs + +minetest.register_craft( { + output = "signs:sign_wall_green 4", + recipe = { + { "dye:dark_green", "dye:white", "dye:dark_green" }, + { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" } + }, +}) + +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 4", + recipe = { + { "dye:yellow", "dye:black", "dye:yellow" }, + { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" } + }, +}) + +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 4", + recipe = { + { "dye:red", "dye:white", "dye:red" }, + { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" } + }, +}) + +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 4", + recipe = { + { "dye:white", "dye:red", "dye:white" }, + { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" } + }, +}) + +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 4", + recipe = { + { "dye:white", "dye:black", "dye:white" }, + { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" } + }, +}) + +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 4", + recipe = { + { "dye:orange", "dye:black", "dye:orange" }, + { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" } + }, +}) + +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 4", + recipe = { + { "dye:blue", "dye:white", "dye:blue" }, + { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" } + }, +}) + +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 4", + recipe = { + { "dye:brown", "dye:white", "dye:brown" }, + { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" } + }, +}) + +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" } + }, +}) + +if minetest.setting_get("log_mods") then + minetest.log("action", S("signs loaded")) +end diff --git a/locale/de.txt b/locale/de.txt new file mode 100644 index 0000000..8d43f77 --- /dev/null +++ b/locale/de.txt @@ -0,0 +1,9 @@ +# 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/template.txt b/locale/template.txt new file mode 100644 index 0000000..c1851a8 --- /dev/null +++ b/locale/template.txt @@ -0,0 +1,9 @@ +#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 = diff --git a/textures/bg_signs_lib.jpg b/textures/bg_signs_lib.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4b72268b5fe5408d30fd2e0b6f72f716121c17f0 GIT binary patch literal 82731 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%0Dp;aZm8`GdPo}h2aLZw9`m(fG7raa_)IpMUI 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�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 literal 0 HcmV?d00001 diff --git a/textures/hdf_22.png b/textures/hdf_22.png new file mode 100644 index 0000000000000000000000000000000000000000..2acde25d4182ab0b90e0013c7e9c5bcf1e80c1f5 GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJtR< gy_zHqEFQ=(%&hj_Dq4E(Do_=Jr>mdKI;Vst0HrAuH2?qr literal 0 HcmV?d00001 diff --git a/textures/hdf_23.png b/textures/hdf_23.png new file mode 100644 index 0000000000000000000000000000000000000000..ace1437613a28f2796eecafafb39165437359e15 GIT binary patch literal 97 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%X?VIghDcmaPWZv!rof>5-*|#b u2VVjAqU>X;9V;cLD=bSBVl`B}*u+q37`nQ^f5l^<9tKZWKbLh*2~7Z10UGT9 literal 0 HcmV?d00001 diff --git a/textures/hdf_24.png b/textures/hdf_24.png new file mode 100644 index 0000000000000000000000000000000000000000..909b015ec7e4866ad691ce76673b6313da6ff584 GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^96-#^!2%?Unca2(DRWO3#}JO_;=MelegYsHUyf-;OXk;vd$@?2>^H)DJTE{ literal 0 HcmV?d00001 diff --git a/textures/hdf_26.png b/textures/hdf_26.png new file mode 100644 index 0000000000000000000000000000000000000000..d29936c7285f9178b60f5393ffb7b8b65c6135f1 GIT binary patch literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^+(69F!2%>_nEc%hr0hLi977~7Pwn^QV^H8={{7#- zpIubbQTU;Q@f#th+Z_G|>SAg~&G(%-_8?@NQ2!K_t#?bB|IU?oRBAQ7zopr0I*jS@&Et; literal 0 HcmV?d00001 diff --git a/textures/hdf_2d.png b/textures/hdf_2d.png new file mode 100644 index 0000000000000000000000000000000000000000..c252f37df74c1dd199d8e53858f29e907e8d87a9 GIT binary patch literal 77 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1q!2%@P{+{IkQX-x%jv*Y^lM{aMw}&JgV$hl# aRLt1s=CrTmR0A(ip25@A&t;ucLK6UKCKEmY literal 0 HcmV?d00001 diff --git a/textures/hdf_2e.png b/textures/hdf_2e.png new file mode 100644 index 0000000000000000000000000000000000000000..d3aab5be8449801ed6c8673db9d1017098e2461e GIT binary patch literal 77 zcmeAS@N?(olHy`uVBq!ia0vp^%s|Y~!2%?^AMf=CQX-x%jv*Y;$q7IB+ol95G%VPl a!N{;mU*pEP)+cg6c?M5cKbLh*2~7ZKi4%SR literal 0 HcmV?d00001 diff --git a/textures/hdf_2f.png b/textures/hdf_2f.png new file mode 100644 index 0000000000000000000000000000000000000000..48c25f2e290d0de090375bf5ccbf6b54f44a3551 GIT binary patch literal 93 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1q!2%@P{+{IkQYxM-M8FVdQ&MBb@0A{xxPyhe` literal 0 HcmV?d00001 diff --git a/textures/hdf_30.png b/textures/hdf_30.png new file mode 100644 index 0000000000000000000000000000000000000000..56ec3e79a6d1541d8f3faf17e3ab253f5a675635 GIT binary patch literal 97 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQW~Bvjv*44lM{aMw-|hoKjh4D wfW>ge|B0r5mM<2VrM$sHband$#Xu(p>sNl8Ud_2U9jJ%F)78&qol`;+0H*96{r~^~ literal 0 HcmV?d00001 diff --git a/textures/hdf_31.png b/textures/hdf_31.png new file mode 100644 index 0000000000000000000000000000000000000000..c526e8678ed8d80581694e7cf496d5e1d6399a43 GIT binary patch literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJge|B0r5jw^qWcV%$pIO$W;_@76D$>W`qx$x1AH(LHBJ1lBp&=c|B`1ogh63`3= MPgg&ebxsLQ0Ki8iDF6Tf literal 0 HcmV?d00001 diff --git a/textures/hdf_33.png b/textures/hdf_33.png new file mode 100644 index 0000000000000000000000000000000000000000..aba5466e9243b40734c038f8c4707988d832c976 GIT binary patch literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQYM}*jv*44lM{aMw-|hoKjh4D zfW>ge|B0r5+ByHa3pxln88R#vP<*`6f~h-rV-<(2kSYtq{*r(VGbg#n1NAd_y85}S Ib4q9e0Lj@N>Hq)$ literal 0 HcmV?d00001 diff --git a/textures/hdf_34.png b/textures/hdf_34.png new file mode 100644 index 0000000000000000000000000000000000000000..9e71d1025486c4954063a0f1c3be22afe4d1a272 GIT binary patch literal 103 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQhJ^)jv*44lM{aMw+b+%DRL`t zI$Hc_ec)r`WWY8{!03S97x|+b|DP0W@)lHPVOX;G8k|i{`3Fx zyRbz~0VmT~nLD1GXxlS0P|wsw@o~q?0>_6dt}WPZ|M3~OZ2y7awOM~3Sp)Smc)I$z JtaD0e0szQZCdvQ+ literal 0 HcmV?d00001 diff --git a/textures/hdf_36.png b/textures/hdf_36.png new file mode 100644 index 0000000000000000000000000000000000000000..bebb32a8bd14a4a670af9ef0367b13d9423276c2 GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQu>}Qjv*44lM{aMw-|hoKjh4D zfW>ge|B0pt6gKf}639$@DDHH*}Qjv*44lM{aMw-|hoKjh4D zfW>ge|B0r5+ByHa2eO)WR~<_ZY(1*8#%z)Eq85fb@?P7@H;82ewK90R`njxgN@xNA Dfg>Oc literal 0 HcmV?d00001 diff --git a/textures/hdf_39.png b/textures/hdf_39.png new file mode 100644 index 0000000000000000000000000000000000000000..95729472b0801b9612f4bc3fcb590813d92cdfc3 GIT binary patch literal 110 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQl_3Rjv*44lM{aMw-|hoKjh4D zfW>ge|B0r5)D>Em30|#OA+YM;f5B%HlCIT literal 0 HcmV?d00001 diff --git a/textures/hdf_3a.png b/textures/hdf_3a.png new file mode 100644 index 0000000000000000000000000000000000000000..23ba0cd086620a1706c1632a557216a230d310a5 GIT binary patch literal 77 zcmeAS@N?(olHy`uVBq!ia0vp^%s|Y~!2%?^AMf=CQX-x%jv*Y^lM{aMx82Yba0n1t a$-*$vO6ATm)zzFpc?M5cKbLh*2~7ZAcoLZa literal 0 HcmV?d00001 diff --git a/textures/hdf_3b.png b/textures/hdf_3b.png new file mode 100644 index 0000000000000000000000000000000000000000..c4b467faa57587966f53736f413bca154a29aaa1 GIT binary patch literal 80 zcmeAS@N?(olHy`uVBq!ia0vp^%s|Y~!2%?^AMf=CQsSO2jv*Y^lM{aMx82Yba0pnk d!e!ZkE{4J=#rx8E$*Mpl44$rjF6*2UngG0|6wLqt literal 0 HcmV?d00001 diff --git a/textures/hdf_3c.png b/textures/hdf_3c.png new file mode 100644 index 0000000000000000000000000000000000000000..566ba4968c3c019787f33ebd9a42ca05614b7dc8 GIT binary patch literal 96 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQtF;Ajv*44lM{aQGpxR`D&mJ22WQ%mvv4FO#mto8$|#B literal 0 HcmV?d00001 diff --git a/textures/hdf_3f.png b/textures/hdf_3f.png new file mode 100644 index 0000000000000000000000000000000000000000..dce472764f3fb5d921d271cc6266931b6ef3fbed GIT binary patch literal 102 zcmeAS@N?(olHy`uVBq!ia0vp^96-#^!2%?Unca2(DP2z&#}JO|$q7HsH!%DUtO!ut zai)F_)BlG8z734C57f6XO!Bl~nb4ya&7H@{u+|`C%`PLG=Rl1Np00i_>zopr01$H> AuK)l5 literal 0 HcmV?d00001 diff --git a/textures/hdf_40.png b/textures/hdf_40.png new file mode 100644 index 0000000000000000000000000000000000000000..65533fdc49958ac47482cf6e551023b935e88e5f GIT binary patch literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^d_c_4!2%@fWX=8qDR)m7#}J9jtrG(I7!)|1_Wob` za=GH7u)J+GC!_>-EN$P+qNN-%fyv3dt;9TeyP!)?=6lYK2dl)Te`NnUrQV{tZ`#`D cmmdVMYnQiI{uH?t2Q-qw)78&qol`;+01<2}S^xk5 literal 0 HcmV?d00001 diff --git a/textures/hdf_41.png b/textures/hdf_41.png new file mode 100644 index 0000000000000000000000000000000000000000..e30c27ca5f3dc21f13dc1407701faa8ba71ceaab GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlq-;E0977~7Pd(?z$DqK$eDL4@ z%dZ`k0}PLSYwA<`THmwy%X?VIghDcmaPHgTe~DWM4fr6L|0 literal 0 HcmV?d00001 diff --git a/textures/hdf_43.png b/textures/hdf_43.png new file mode 100644 index 0000000000000000000000000000000000000000..db57d8dc232e7247f9dd6f5b1907d9731001c892 GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^+(69F!2%>_nEc%hq%1sL977~7Cnx;iZ{uKix|r*b z%7dm8yB-|+|4=~dOoLj_lGpa0haz|mCaU_eKl;GucmDtJG}VuX7_nEc%hr1U*q977~7Cnq?t{eLLHtiZW= z)j@%O{r)o;gMZk29^%>2%4sRkUcRB?pM99eBm;&r;gmUB|D-ShwK90R`njxgN@xNA DVoo0c literal 0 HcmV?d00001 diff --git a/textures/hdf_45.png b/textures/hdf_45.png new file mode 100644 index 0000000000000000000000000000000000000000..07e772b853935ccda13cf44a10c47a1e63baf071 GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQp%n#jv*44lM@`+|4SBd{&jCu q;ZU6265YXd>~YcGdLEA{0t^!>eYRw6yix~L&fw|l=d#Wzp$P!aml^T^ literal 0 HcmV?d00001 diff --git a/textures/hdf_46.png b/textures/hdf_46.png new file mode 100644 index 0000000000000000000000000000000000000000..24de187a47e2ed6ebc9fe591d757ee9492b26a12 GIT binary patch literal 91 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQc9jKjv*4^$q5eZ|1YvWaQYvp o!0E)%;Lp+Rmc_ZSs8fuIf!jP{#kyt_nEc%hq-;H1977~7Cnx;iZ{uKix|r*b z%7dm8yB-|+|4=~dOoLj_lGpZii7jzDVvjZpEoZ*Cms#9x`x|?+_nEc%hq!c_|977~7Cnqp8{`U|#w0xd{ n)d77U@96^if8@1QJS7<3ZqJwzpMD}8sFuOg)z4*}Q$iB}k|G#$ literal 0 HcmV?d00001 diff --git a/textures/hdf_49.png b/textures/hdf_49.png new file mode 100644 index 0000000000000000000000000000000000000000..1f027283c2304946e92c02322736a3310b8883e7 GIT binary patch literal 77 zcmeAS@N?(olHy`uVBq!ia0vp^%s|Y~!2%?^AMf=CQX-x%jv*Y;$q5XN{}U!vU8y&4 aS;(N9Ci3Rx0tYLgJcFmJpUXO@geCxQs1vRL literal 0 HcmV?d00001 diff --git a/textures/hdf_4a.png b/textures/hdf_4a.png new file mode 100644 index 0000000000000000000000000000000000000000..b2f7befc4d9c2159d07bcf4fd6617d72672a575e GIT binary patch literal 91 zcmeAS@N?(olHy`uVBq!ia0vp^96-#^!2%?Unca2(DJ4%A#}JO|$q7IB+Z8^{Ph7yF pAfm{~@}pntoBY)a|BrAoFw`9kUR(6@ZXZxJgQu&X%Q~loCIGNl8Z`g_ literal 0 HcmV?d00001 diff --git a/textures/hdf_4b.png b/textures/hdf_4b.png new file mode 100644 index 0000000000000000000000000000000000000000..e8d52d60d6e5bf4284b0fe8ad93a2a27eb2e557f GIT binary patch literal 114 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlq%1vM977~7Cnqp8{x3Me@O-g{ z!siP!S9BS)J`{R!$Uu-MQG`>+>cfr3n_geuC OVeoYIb6Mw<&;$UnkSK=$ literal 0 HcmV?d00001 diff --git a/textures/hdf_4c.png b/textures/hdf_4c.png new file mode 100644 index 0000000000000000000000000000000000000000..94d7d480f21319fc7d53d9a14d01161adc81e90e GIT binary patch literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQj(r7jv*44lM@&k|7#Si;8bLO f@dz6DDp&pdtoOS3j3^P6MdX9780gCMPsB{4d~mJX!Z( zgOX3gBl}55>Pt9tRO~osDE{B*X)r;f@r}`jBlR*9QaBlozE7H`_isxEP&_nEc%hr1U&p9780+lM@;m{ugjOJjnR* zkOAMuLmZrsS|+k~2(}eYRj7LR6ICoh74^%J|is(I*X({*o(HDhz3J2Ldr!g>G+gRM|lb!z> PXbgj=tDnm{r-UW|QL80m literal 0 HcmV?d00001 diff --git a/textures/hdf_50.png b/textures/hdf_50.png new file mode 100644 index 0000000000000000000000000000000000000000..33b52fd6bca3f2c61954b157dd0652c90aac2c8b GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%X?eOhhDc0JPHm|7=x#)pUXO@geCx#x+*>Z literal 0 HcmV?d00001 diff --git a/textures/hdf_52.png b/textures/hdf_52.png new file mode 100644 index 0000000000000000000000000000000000000000..acb395ed434a3fcfb9628f4fff8185cd487fb80f GIT binary patch literal 100 zcmeAS@N?(olHy`uVBq!ia0vp^+(69F!2%>_nEc%hq_jO<977~7Cnq?t|34_e-N607 y-8rb`B9G#sQ~z0b70;`3Bo}c0KhEVT#Kw?vD1M<6V@f4Z8-u5-pUXO@geCyL4;#w> literal 0 HcmV?d00001 diff --git a/textures/hdf_53.png b/textures/hdf_53.png new file mode 100644 index 0000000000000000000000000000000000000000..028f2841ec9da8fab68a217b7679146b3bb80b79 GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%nR&W6hDcmaPWZv!!tp`=kh@qD z=i*fjn_nEc%hq+~o@977~7Cnp?W`)B+>=pTQp jfZiN)pVmM{&qECVjB8p>uT;AMRL9`y>gTe~DWM4fMS>UO literal 0 HcmV?d00001 diff --git a/textures/hdf_55.png b/textures/hdf_55.png new file mode 100644 index 0000000000000000000000000000000000000000..81643f94cc61bb096dcf953e67ace5476ad794c1 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^+(69F!2%>_nEc%hq|`iJ9780+lM@&k|9c1=lD~9_ tN24hraR-mgpLUMLUVq#>Dw8RGx| literal 0 HcmV?d00001 diff --git a/textures/hdf_56.png b/textures/hdf_56.png new file mode 100644 index 0000000000000000000000000000000000000000..8726f5bc1b1202c4ef1111f6c87c333afb2fb4b2 GIT binary patch literal 103 zcmeAS@N?(olHy`uVBq!ia0vp^+(69F!2%>_nEc%hr1U&p9780+lM@&k|9c1=I`ut B8wCIW literal 0 HcmV?d00001 diff --git a/textures/hdf_57.png b/textures/hdf_57.png new file mode 100644 index 0000000000000000000000000000000000000000..5e8d9d0f45ec86701a6959a0c355324967709853 GIT binary patch literal 107 zcmeAS@N?(olHy`uVBq!ia0vp^{2Pgg&ebxsLQ E0L#=MPyhe` literal 0 HcmV?d00001 diff --git a/textures/hdf_58.png b/textures/hdf_58.png new file mode 100644 index 0000000000000000000000000000000000000000..2abbda39cfc0edad8201f682a1a33253f0f9ec3d GIT binary patch literal 115 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%S$VoRhDcoQ?RVs3P~bTH>%af? zX17)yx3b1bt&9wLXEU!lDpbF|YC2i;(n8j~30vBo6@z%>@0+}k=JUIjIRCvz`vagU N44$rjF6*2UngA-%C6NFC literal 0 HcmV?d00001 diff --git a/textures/hdf_59.png b/textures/hdf_59.png new file mode 100644 index 0000000000000000000000000000000000000000..ff45093067334e7937f0818f8cf2b1a324367e80 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^+(69F!2%>_nEc%hqzpV=9780+lM@&k|9c1=YG+Du z-0-2E=iz^WL>0amM!Uovq8x`ma4nAVQBMr+Ad7!-Jz4*veX ze4~)(70!~|3}0Rdu@u=aS;DJkrOKkYvZ>zoMM_n?n0nOnsGxN=RmbIk+8I1u{an^L HB{Ts5oa`S@ literal 0 HcmV?d00001 diff --git a/textures/hdf_5b.png b/textures/hdf_5b.png new file mode 100644 index 0000000000000000000000000000000000000000..2592f1ff71cc36c7a5a6ab47e6f30630a6ac4727 GIT binary patch literal 80 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1q!2%@P{+{IkQsSO2jv*Y^lM@;m|MR>!^PlHG edt2u_8HU6O literal 0 HcmV?d00001 diff --git a/textures/hdf_5c.png b/textures/hdf_5c.png new file mode 100644 index 0000000000000000000000000000000000000000..406d63425035a594b6d4c6c2e8e29acf6929b110 GIT binary patch literal 94 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1q!2%@P{+{IkQmURVjv*Y;$q5MwKloc$_(-sy sIef0AV1d*II5Ssod#)!14^Jgu&C*&t;ucLK6V~$QRK7 literal 0 HcmV?d00001 diff --git a/textures/hdf_5e.png b/textures/hdf_5e.png new file mode 100644 index 0000000000000000000000000000000000000000..7f610d8724ce14320ab7d27b85ddea53490e2d07 GIT binary patch literal 96 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQtF;Ajv*44lM{aMw<&y(KXy!! ug}Fdcg557!(8;j1k+JFnGH9xvX`THmwy%346LYhDcmaPWaK!+Q+qsJE`eE ZgX`Cxk|(ofumPnRJYD@<);T3K0RVWX6lwqf literal 0 HcmV?d00001 diff --git a/textures/hdf_60.png b/textures/hdf_60.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4e0fb31a98a20d259b248f0eaafc9c581481d5 GIT binary patch literal 78 zcmeAS@N?(olHy`uVBq!ia0vp^EI`c90U|T)mze=6QBN1g5RT~N1ct`{4jhUJJUcjQ aB^cCIEl#LU^EL%4VDNPHb6Mw<&;$SvDi8wz literal 0 HcmV?d00001 diff --git a/textures/hdf_61.png b/textures/hdf_61.png new file mode 100644 index 0000000000000000000000000000000000000000..dc019ba5a35e63b245c441780f2f983d3049bcf5 GIT binary patch literal 102 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQo5cljv*44lM{aQGj@tOF{}{K zYT#B(2|SbJAa-cgM8;5MvCSK9bQnnZO@8UlaOrLMN?vX|NuWjsPgg&ebxsLQ0Kq;S A2LJ#7 literal 0 HcmV?d00001 diff --git a/textures/hdf_62.png b/textures/hdf_62.png new file mode 100644 index 0000000000000000000000000000000000000000..285d0b2f194f5caefae94c97004e9a1358541802 GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQd*uajv*4^$q5XN|1~D4D5hwd xG^n&BESl-MNkD9~0K@d%3C|Q1+8E3f85Zsd*l>Q^-e*8v44$rjF6*2UngCb28=U|E literal 0 HcmV?d00001 diff --git a/textures/hdf_63.png b/textures/hdf_63.png new file mode 100644 index 0000000000000000000000000000000000000000..8781b8a84822cc6b26648cfb2ca1dbb05a3c2e3a GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQktGFjv*44lM{aQGkOX%G42pB watLZj_~(9&!MwXd(PZ<68y#0;Q+^6E1Z_!Jke=zB1JuOe>FVdQ&MBb@0D}V@UjP6A literal 0 HcmV?d00001 diff --git a/textures/hdf_64.png b/textures/hdf_64.png new file mode 100644 index 0000000000000000000000000000000000000000..16c9a286d052649014292788ad3b384259f67d05 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQU;zbjv*4^$q7IDSsWkOa|mj; z@EmYj!EnxfMeC)EG(r8AG%+#hi*K8_7CP}T<~T6~@%V4NSmo~s)XU)M>gTe~DWM4f D3T+%^ literal 0 HcmV?d00001 diff --git a/textures/hdf_65.png b/textures/hdf_65.png new file mode 100644 index 0000000000000000000000000000000000000000..810d9c93a9f10d59264c7ec18f09d0ae69e48401 GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQktGFjv*44lM{aQGkOX%G42pB wYS3=TPIL%&a^N`YW|CZZqvL99%1=Rt&Huty3C(qR57flq>FVdQ&MBb@0B3C+ApigX literal 0 HcmV?d00001 diff --git a/textures/hdf_66.png b/textures/hdf_66.png new file mode 100644 index 0000000000000000000000000000000000000000..411ca57336b7877b6babe97d6a4a7fec4e606238 GIT binary patch literal 89 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1q!2%@P{+{IkQVO0fjv*Y;$q7IBTNFOX_XNx| nu$-YGB<#s(I>Vr2Dkp=nwC?3o0juPIY8gCT{an^LB{Ts5LWdQ~ literal 0 HcmV?d00001 diff --git a/textures/hdf_67.png b/textures/hdf_67.png new file mode 100644 index 0000000000000000000000000000000000000000..d8820dd1ca5a678df710115b06b7c14f92e1969d GIT binary patch literal 101 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQaYY4jv*44lM{aQGkOX%HT*Xa zQajL~bg*HiSR&U-r;N13je@Ip|C^j67Qn@D;I_|N{^4;VP(6dEtDnm{r-UW|63H8s literal 0 HcmV?d00001 diff --git a/textures/hdf_69.png b/textures/hdf_69.png new file mode 100644 index 0000000000000000000000000000000000000000..55f1a229d549fbbf7de631f51133b4db6a2bb6b6 GIT binary patch literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^%s|Y~!2%?^AMf=CQj(r7jv*Y;$tett|9cEx*>|*k gKCyJcGKFA gCMYD$;XpmZY9F~rJ9E2l0#z}1y85}Sb4q9e0O-pWqyPW_ literal 0 HcmV?d00001 diff --git a/textures/hdf_6b.png b/textures/hdf_6b.png new file mode 100644 index 0000000000000000000000000000000000000000..fc34fc50768c5f64332bb84efe1f09deec7139eb GIT binary patch literal 103 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQhJ^)jv*4^$q5XN|1~D0C`w4{ zwH$L2YuGrEC7|U($X|EyLs>RGou^~}8!7}kF)&sJuU&h%{31{%gQu&X%Q~loCII^= B9vJ`t literal 0 HcmV?d00001 diff --git a/textures/hdf_6c.png b/textures/hdf_6c.png new file mode 100644 index 0000000000000000000000000000000000000000..1f027283c2304946e92c02322736a3310b8883e7 GIT binary patch literal 77 zcmeAS@N?(olHy`uVBq!ia0vp^%s|Y~!2%?^AMf=CQX-x%jv*Y;$q5XN{}U!vU8y&4 aS;(N9Ci3Rx0tYLgJcFmJpUXO@geCxQs1vRL literal 0 HcmV?d00001 diff --git a/textures/hdf_6d.png b/textures/hdf_6d.png new file mode 100644 index 0000000000000000000000000000000000000000..6c0ae93f89ecebc725d364eec10ddca243ad9b2d GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mm<0wkwu_5J};TAnVBArhC96MpmyPts&%3gGJe wD(}g|{3rcD0BiDJ_k#b)8`!!-N%_J3mPe`W5!%U27`tYcwdI}yF~&)G^bpn3*RS3j3^P6{!a{1%KYKKOF(S10K@#<8+OU<7hw3ZK43$h27f0|8-u5-pUXO@geCxWLK|%W literal 0 HcmV?d00001 diff --git a/textures/hdf_71.png b/textures/hdf_71.png new file mode 100644 index 0000000000000000000000000000000000000000..c02171f054ed76afb4c885a083df2e77a3b9dd2f GIT binary patch literal 100 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQrey_jv*4^$q7ID89fD>8vYvy ysWCAB7vu@q$`R}#>SWB_-5YVY^-12NR)!k0fDNmEb-V{^WAJqKb6Mw<&;$T{bR32N literal 0 HcmV?d00001 diff --git a/textures/hdf_72.png b/textures/hdf_72.png new file mode 100644 index 0000000000000000000000000000000000000000..757b9c858acff3bcc9cbb570e88730807314f1e0 GIT binary patch literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJh literal 0 HcmV?d00001 diff --git a/textures/hdf_73.png b/textures/hdf_73.png new file mode 100644 index 0000000000000000000000000000000000000000..e38497d9f00932ff5257edcd3fc32821743f1f11 GIT binary patch literal 100 zcmeAS@N?(olHy`uVBq!ia0vp^96-#^!2%?Unca2(DQ!;|#}JO|$q7ID**b+B8vbk8 ytPqHKX1|HSNnp0*|A{6K%$e6QEthop&B_q6*?a4x^$ejvZ492SelF{r5}E*xU>m^z literal 0 HcmV?d00001 diff --git a/textures/hdf_74.png b/textures/hdf_74.png new file mode 100644 index 0000000000000000000000000000000000000000..10f9cfa92985a554adbf469d8eba0c061fa8b5f1 GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1q!2%@P{+{IkQp%n#jv*Y^lM{aMw<{bu&~UJY qF+{CwtBcV>wLk7@hwe6G%1#Z7-W7(y3EFFkYqcq33XgQu&X%Q~loCIG#g8a)62 literal 0 HcmV?d00001 diff --git a/textures/hdf_76.png b/textures/hdf_76.png new file mode 100644 index 0000000000000000000000000000000000000000..dc558d3a4035c309caadb578d3c89dbe7d7bc926 GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQktGFjv*3LlM{aQGj@tFF{bd9 xE&N~LXyLm?;EKbJnLAqkDRVv$R=U~Ga3n5m*5XSAzkr$;JYD@<);T3K0RWN79jX8T literal 0 HcmV?d00001 diff --git a/textures/hdf_77.png b/textures/hdf_77.png new file mode 100644 index 0000000000000000000000000000000000000000..6a142984ac6d3381ba6f3fd35e01b7bbb6cf42f4 GIT binary patch literal 107 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mm<0wkwu_5J};MxHK?ArhC96MpmyPts&%;!rc< zo-g9W(X8gg#TKwc;1EZqiDt;P`jYF4DjgFSMM*F*BpLLS9F@}tYGz>YboFyt=akR{ E0OAuGp#T5? literal 0 HcmV?d00001 diff --git a/textures/hdf_78.png b/textures/hdf_78.png new file mode 100644 index 0000000000000000000000000000000000000000..38b4be03642d99e04947130b7ce618911c66d2b0 GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^96-#^!2%?Unca2(DJ@SI#}JO|$q7ID**XOn7+Hj8 xGi*9j-@?GW=|DZ3NN+^Qf|-szTUCCsGCcART36cbxEH94!PC{xWt~$(697O58v_6U literal 0 HcmV?d00001 diff --git a/textures/hdf_79.png b/textures/hdf_79.png new file mode 100644 index 0000000000000000000000000000000000000000..8859fb41f251f8fea3dbd8d37a3f754882382797 GIT binary patch literal 102 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQo5cljv*44lM{aQGj@tFF{bd9 zE&T7%B;iybb(P1-$wN(PCu{Hv`;|^B?0)bw>9;lJQ)78&qol`;+0J-=a A2mk;8 literal 0 HcmV?d00001 diff --git a/textures/hdf_7a.png b/textures/hdf_7a.png new file mode 100644 index 0000000000000000000000000000000000000000..c42c84a396e00f96437deb033c92a0bb1a7ac617 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^96-#^!2%?Unca2(DK$?Q#}JO|$q7ID**XOrSZ}Zd tOg+S!5F^5<5-kzHI$@_ur1zG1hN8v3oBMaAoCoS)@O1TaS?83{1OUFa7`6Za literal 0 HcmV?d00001 diff --git a/textures/hdf_7b.png b/textures/hdf_7b.png new file mode 100644 index 0000000000000000000000000000000000000000..c0ee072c8c64246ca60c6bb80fd8448928c77d76 GIT binary patch literal 88 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1q!2%@P{+{IkQu3ZIjv*Y^lM{aMw7V*k&g2RCOkL6o9x*K5p>@q6Ju3pJl)=;0&t;ucLK6U!X&B@H literal 0 HcmV?d00001 diff --git a/textures/hdf_7c.png b/textures/hdf_7c.png new file mode 100644 index 0000000000000000000000000000000000000000..6e9949de31b6d3e743ccf3a3e7d7fea5e5e5e613 GIT binary patch literal 67 zcmeAS@N?(olHy`uVBq!ia0vp^OhC-f2qYMu1uKUGDK1YJ#}E$Lzt literal 0 HcmV?d00001 diff --git a/textures/signs_back.png b/textures/signs_back.png new file mode 100644 index 0000000000000000000000000000000000000000..db33dee5bfd98d898495af672c2ed850153aac83 GIT binary patch literal 280 zcmV+z0q6dSP)wXZpVpCHg?iztg-2g5 zfa}P)0Ry~s+z*Bsl+&7mdR)=iQUGAsFGSRlx3{zuS*F}kAU6O?<+j}EE&ul6`XihV e03UpozZxEX>5&5$kK6zN0000$SN literal 0 HcmV?d00001 diff --git a/textures/signs_blue_front.png b/textures/signs_blue_front.png new file mode 100644 index 0000000000000000000000000000000000000000..65ed6ea1030f6076d6f406b6b48a08010f0c1eac GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfeKtN835KJF+kAjRex5FlAs)w*w`|yuus}5-X@Q}{FR={{D;^*355Ak>?d{#d z%EQCc!zUYJ^7nsZ*F_JxtqE6}0=eCECAK#F3sozUb%{M-aZ67MD9psh(07>gjLOtU R`+z1hc)I$ztaD0e0sto#H9i0U literal 0 HcmV?d00001 diff --git a/textures/signs_blue_inv.png b/textures/signs_blue_inv.png new file mode 100644 index 0000000000000000000000000000000000000000..3f5a0ceed2c0b990cd1c1a26f147652fbcd60052 GIT binary patch literal 154 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#J{up4gqYz|W?7(+rKgKyh{fsT1c{6TCk`Aq@ZmoYq-3V0q@*+!%UF3_`t#p` rl^Fztm&Qq$CPYX$6ndpd{9<5O^_W|nuXDkEpdk#Nu6{1-oD!M<*xoAe literal 0 HcmV?d00001 diff --git a/textures/signs_bottom.png b/textures/signs_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..38961f0ccaff8a34350af62a1d48b1c9e2781622 GIT binary patch literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|9-c0aAsXkCS9D%I`!!sP=NiMJ zM+UwM;vK7!OS+w|Ja|-K7SNR_BEamycWsfu*mdKI;Vst0G*91)&Kwi literal 0 HcmV?d00001 diff --git a/textures/signs_brown_front.png b/textures/signs_brown_front.png new file mode 100644 index 0000000000000000000000000000000000000000..2ed26406f96f0431205527efe4812612a7875863 GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfeKtN8NtWC0<h|KTj9O5Rc=@TQ+P+SfHAaw7^i}m)Hh}6_1bi2j9)`_V#XJ z<>BG!RC5Y3sr@&zeDOq^tb;397mM{o8Dug3UG4M4s$*9};g(nvkT4I!H(t(nx_ytU QfF?6|y85}Sb4q9e02LTDlK=n! literal 0 HcmV?d00001 diff --git a/textures/signs_brown_inv.png b/textures/signs_brown_inv.png new file mode 100644 index 0000000000000000000000000000000000000000..5ba92838910a4d19a9848caaa2648ec190c14143 GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#J{up4q{y)k!397eD^C~45R22v2@)9xP8>LJ;KP3)NXbk~Nl9re6!LBHxMcJH tj5QkwsCn%*$U3mWpyAP!69!)x8J0A2i+_G#y#Z(ngQu&X%Q~loCIHLAFV_G7 literal 0 HcmV?d00001 diff --git a/textures/signs_front.png b/textures/signs_front.png new file mode 100644 index 0000000000000000000000000000000000000000..2e614355ebcc7133c6c8e3abc32878bfc263b89a GIT binary patch literal 365 zcmV-z0h0cSP)YH zpa(cOH*W9DFgV&YAz*cf@4i`)aB&EGU6Vaj!`>NT>*{Uhl$gygwSb^Gg~kiYOxHEq zL&PEM=^2Jl4Qspn=MXxHf$El4SpfxS6q>cf=|MGY={$gc4ePqRFheVVs3@q>=G*=0&19=Z#ciq3L*|+_of*`HLPiOhxl(%r4`WMKm@dEVVT*i0t1LR zgpKet&_mO+P2i|2S-&w>XJ)S1oB}I|2%L>G?i1`dfrx~}GN2j&YQM&b;AG3g00000 LNkvXXu0mjfuTrFm literal 0 HcmV?d00001 diff --git a/textures/signs_green_front.png b/textures/signs_green_front.png new file mode 100644 index 0000000000000000000000000000000000000000..45c6e0f02b7d7a1c4ca4d6bb2460e90cd372cb49 GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={W%spKkLp+WrZ&+ZMAhETH$2rVWdxSZrZrSn3ekv)6U%f1qjxPgg&ebxsLQ0JIYsApigX literal 0 HcmV?d00001 diff --git a/textures/signs_hanging_back.png b/textures/signs_hanging_back.png new file mode 100644 index 0000000000000000000000000000000000000000..7cf39a24f5dd0ad4958875f8e97ae158f89d32c7 GIT binary patch literal 322 zcmV-I0lof-P)YQyOTlMfZ4zmqPa)(cxsYh^rJsGeGj!Jx68qAZ4jk6AXZFkm zE$b(uD1wG{BU*FfIEFm0#jiPSk6Uw!Nr37jM43H;z9nA_9ONU{+)KSSc)v$64zNva ztP%$eKDfgsbq%C$43byd~68u5c_|2+1w zNoS5mNaI)lVka&#si{H>2OI-Fl$WzBGNOP)6%Om8f3#tFzkMzIe8#~A= U`mT z>p>}p5SeA1PnZHrd-4K1q+(>wv3VJav}RsAF3lKvKrlc>-C?a-n7m%!89CmhSqu#4 W?c^Q5`#l3$z~JfX=d#Wzp$P!MJtPMJ literal 0 HcmV?d00001 diff --git a/textures/signs_hanging_front.png b/textures/signs_hanging_front.png new file mode 100644 index 0000000000000000000000000000000000000000..bdc745e72ff3e4191f729a3e24dc1223351c9269 GIT binary patch literal 412 zcmV;N0b~A&P)bj+J#6(5K~$ikEhT-K(kdD~WvgyzQAGKXwmpSJ|Lioo zG_xb5y?5a-oH=vP+zEM>b{P|n``DRq}$Twf+8u~_b0KF>(FZvQb ztE=F3%G(*)HR|6)(K(%gnewB)FEW@3FB+N;olKDFl$WoSV50mzUD$`o&?Y&zjw}q9Au_bUWrM31`9)X z<@4b4sqA{W3`)y*IFeB%;_ZQqT1s+Y8(hacsB03_DKBkJxdyF^5DV)5P;!E_VNY|X z`B9BeGM(~)5Z{PFdB;0|!sZ0d)G-))WDT+}z2~{`Kk6GUPGnt#b>}|-0000Fd|XcUSy5DXU+y@LG+3=xNWD{#=>XreAu_KgIIqz|o9LWrZxa=orlApm-%4f!e0nO%*uwVV z4BJPe(G};72vHP)EUr+!T(gzTM{M2Ahpc7Jsm{5gDAK_9eUyt4%H$H|lgV!1CAP%$ zLg<{g+wDI?{3mOD9`*U?x-Ja}A?&GwAi&4HiPY~iP=nW-<9*wGeC@Np`#r%8!;l8c z<&qtCT^D)OXM?1m-Q@es>EuWZk@If1D-FiuG0W8HbeKTFxoz9*$#}i4AIN|71EY0Q Ufu>2c4*&oF07*qoM6N<$f+8}paR2}S literal 0 HcmV?d00001 diff --git a/textures/signs_metal_back.png b/textures/signs_metal_back.png new file mode 100644 index 0000000000000000000000000000000000000000..48420b2f0a2f7452bfa93f7706e0f3273b538edc GIT binary patch literal 93 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|DxNNmAsXkCHz)`iOjx|IC!^uQ q1qT+1s}9w?OI&5%UKYwVWnlQRRg!~ep7|-DdInEdKbLh*2~7asyBR$I literal 0 HcmV?d00001 diff --git a/textures/signs_metal_sides.png b/textures/signs_metal_sides.png new file mode 100644 index 0000000000000000000000000000000000000000..b7b4526c03a0f9db4688397d06b4a1714f4facd8 GIT binary patch literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`a-J@ZAr}708rs^w^Ai&t#n@h^ jN|+{GX$WL)>tGAr}70I@;R5&pR+CY}v3u m!ZhJZLm)F-E8~>3bOshS>96${&)xy5W$<+Mb6Mw<&;$T=GZ*pz literal 0 HcmV?d00001 diff --git a/textures/signs_orange_front.png b/textures/signs_orange_front.png new file mode 100644 index 0000000000000000000000000000000000000000..633b19a09554b158ad781d5e764e7b131ddb04cb GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfeKtN8FX=k-7#Pfr)e5Rc=@TQ+P+SfHAaw7^i}m)Hh}6~gL%0e3Sz-fTMX zv)p@S=B}de87loz23ZGJur3zsi85daRV$Kpi9KL(OHXQR!WAYqhSjgwodb(6`v47P N@O1TaS?83{1OObXGP?i( literal 0 HcmV?d00001 diff --git a/textures/signs_orange_inv.png b/textures/signs_orange_inv.png new file mode 100644 index 0000000000000000000000000000000000000000..5a813ae36106983718cb14ca753ad11c48f628fe GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#J{up4IIGd&I3A#oj;D)bh{fsT1c{6T983RCUOk`n*sf@=S$C4-`m`wH5tI?jU$l!HU@*N$8#I-3=X8;ZkY&o9lz9sSi^pmT?^UjdYjq{>G zo%TEcovs8=mSLhLGb8ql&{e~+#skn_(Vrd$mpV+Y&tGgX4kn!IeG@0KdK^a#Qp_0S{a*vhhxlw6FjG002ov JPDHLkV1kd$iHiUL literal 0 HcmV?d00001 diff --git a/textures/signs_post_bottom.png b/textures/signs_post_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..bea83e382f1d92fb147162b03db941231e52819c GIT binary patch literal 131 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|UY;(FAsXkC6C@TcQ1jZW=qKJW zOXzF0ac|=a^}{<1>pP0$#BHSI@(4oPt=+&4JTrLnO)$r;;hX${Jx}(5h d4Fzrn27P_y&nF!Bw*gIM@O1TaS?83{1OU6cCISEe literal 0 HcmV?d00001 diff --git a/textures/signs_post_front.png b/textures/signs_post_front.png new file mode 100644 index 0000000000000000000000000000000000000000..02a0e593e2e0fa67762fd14ba13356291cf49988 GIT binary patch literal 401 zcmV;C0dD?@P)YH zzyKYY=9{{MCKkIyyK6EK1At0_8i3joymhdvI5;=W zZ0T^{)$0u;H@CZO?(o>q;skWY=5}|8ID|d7&3aJh?vE2-&J|{M+ELf=MC!WOYa`;G$kg1RE7R3b%H3Q{W zh&*a%$(KE3#$emKCeg9gwo{6uEy$m(tL>gnFq4$jvGg&6Wf^?Yzzl)6^Ct_e0n#~c?_PeelF{r5}E)N CwMan# literal 0 HcmV?d00001 diff --git a/textures/signs_post_top.png b/textures/signs_post_top.png new file mode 100644 index 0000000000000000000000000000000000000000..6b251f637b11e68d6e9a3515e7a16f5a028b316e GIT binary patch literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|o}Mm_AsXkC6C_wu8vA^T6=p@e zVRCWFY|vm`e=^_$KEtYZDpW-M5a9dk~Sd*uXh&j=bYP`0<@38)78&qol`;+ E05yOxXaE2J literal 0 HcmV?d00001 diff --git a/textures/signs_top.png b/textures/signs_top.png new file mode 100644 index 0000000000000000000000000000000000000000..aa86aa8af8979743042179cab5780cb569e7129a GIT binary patch literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|o}Mm_AsXkCUz{~r*BO-GahY|| zGM8Ef@s28^9_hzhA3iED3+PG|5n%S7>4^h_COcbLc9)n%zVmlb|fMSt^2CWl=Q7Qy98e>pI z@zWAb_Rsco54>5jPfPAJSFiTz``&FS?TaHhXW0+;L(6kQcHm6Sf*#f`P`-I6SqQU>gUXN__A^;qSKD`&~D#1|C^m`ZItXURB>uEda-6 z*4tG5jm#(5MlMG&V zB|CcLR%v0Z8w#CAog}$co3hYX{OT%692&x{*P7p8m3dP-WXcOY%3SAhgjSbKhbtD4 z=#fSLht|M<|4Zeh`!vd&2zG7NqDAN*>pktz=#h7WX5%}23(~2@ft^r42^evrJGo#Z b{%`&bQ1m)+E28W!00000NkvXXu0mjfNZ0)! literal 0 HcmV?d00001 diff --git a/textures/signs_wall_sign_locked.png b/textures/signs_wall_sign_locked.png new file mode 100644 index 0000000000000000000000000000000000000000..7061167486217ca65dee22c19f6ed75b7812d3cc GIT binary patch literal 509 zcmVU4;mtBqVqdVs{!X%J~u#bG{``Q6ce4Shg2ij@En`b`zPFEJIxve!|Xn z)(E=maCrFbzvn#X{GZLmvMfoGSu0AV5^F`L(}71vcNku|lF8(pJAP^go?Ag!Cyj$i zGcd00i}dcK5kMW8OMA?MNF<`FYOmK*6h*ZHdAr@}x{eA)CX<}h_nRJ|i)s4L#Eu!qSR#=i2*NBd3f!MA?p@t_qgU0E_VlvS1!7ht341=M{b_%{P$m)-W+L-z^HbhmiJV~JFNPC z(u+EBm-3k30gBq~cJ)`lZA7EddcE%G4uj!uk>O8T88uY@00000NkvXXu0mjfrB3N@ literal 0 HcmV?d00001 diff --git a/textures/signs_white_black_front.png b/textures/signs_white_black_front.png new file mode 100644 index 0000000000000000000000000000000000000000..f4163f1929c95de812f22c4b61063ff42f4ff2d6 GIT binary patch literal 110 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WOg&v3Lp+WrZ&+ZMAhETzopr E04$LpfdBvi literal 0 HcmV?d00001 diff --git a/textures/signs_white_black_inv.png b/textures/signs_white_black_inv.png new file mode 100644 index 0000000000000000000000000000000000000000..42bb0142fee288957fc4c1cdca606a45bc63deb7 GIT binary patch literal 88 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%_o-U3d7N?UFBy=9w&y+}HSebC8 kA&_~4ltZSM%pnGbNssRs&9>tx0xD(jboFyt=akR{09~jT4gdfE literal 0 HcmV?d00001 diff --git a/textures/signs_white_red_front.png b/textures/signs_white_red_front.png new file mode 100644 index 0000000000000000000000000000000000000000..48216c9b41e541ecbf62974195e3cd851f3c0447 GIT binary patch literal 107 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@&H$efR|^Y^Cz6u?|Nj?TvTHg} zP}bAMF+?IfIYEJGLtB$01M_VygBb=Dk_F3yI2jloM2EdL;kAAYRLJ1z>gTe~DWM4f D?oAt> literal 0 HcmV?d00001 diff --git a/textures/signs_white_red_inv.png b/textures/signs_white_red_inv.png new file mode 100644 index 0000000000000000000000000000000000000000..52ac3c87eb5c9c04fd8063c01ac3bce722526c7b GIT binary patch literal 91 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`N}eu`Ar_~T6C^|)bS`;PUu4k5 oxTGnN*^T!=7K5v1VFok9(xZH){9Q-Z0aY`2y85}Sb4q9e0JUrwJOBUy literal 0 HcmV?d00001 diff --git a/textures/signs_yellow_front.png b/textures/signs_yellow_front.png new file mode 100644 index 0000000000000000000000000000000000000000..4ce90825636a4133f94eaffd07db4c2366246365 GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={W%sgEjLp+WrZ&+ZMAhET}N{w{rg{g x=)-?`PKm<|6CV6ue&lf=bK7#plt&L47&0fP)|v_Y5&`OB@O1TaS?83{1ON=J9_|1D literal 0 HcmV?d00001 diff --git a/textures/slc_0.png b/textures/slc_0.png new file mode 100644 index 0000000000000000000000000000000000000000..17c66310dbfe4623e97a7e3919401873edc908ae GIT binary patch literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^4M5D#!3HFCZX7=bq*&4&eH|GXHuiJ>Nn{1`6_P!I zd>I(3)PQPR7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV+ueoXKL{?^yL>WG zguTSm*OmP~I~%heS77qZzd#{pPZ!6Kh{JC$88R{`@EkC3IQeHbi=>RN$d?!MX6`;= zwV(ONX@)|!4r7NojE{H((i<$8k4P$RdP`( zkYX@0Ff`RQFxNFO4KXsZGBB|+G}8r=1_t%~c?u{Ra`RI%(<*Um;0wAo2dII;)78&q Iol`;+01#JMYXATM literal 0 HcmV?d00001 diff --git a/textures/slc_1.png b/textures/slc_1.png new file mode 100644 index 0000000000000000000000000000000000000000..3cbbbe6cec54cb86854f08e8c60f3759268910a3 GIT binary patch literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^4M5D#!3HFCZX7=bq*&4&eH|GXHuiJ>Nn{1`6_P!I zd>I(3)PQPR7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV+ueoXKL{?^yL>WG zguTSm*OmP~I~%heS77qZzd#{pPZ!6Kh{JC$88R{`@Eq9CSg$&RMN-CBsDZ)L)z4*} HQ$iB}N*r3Z literal 0 HcmV?d00001 diff --git a/textures/slc_2.png b/textures/slc_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f86ae90a57872a235e92ae3a5c4a5cdaad86ebe5 GIT binary patch literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^4M5D#!3HFCZX7=bq*&4&eH|GXHuiJ>Nn{1`6_P!I zd>I(3)PQPR7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV+ueoXKL{?^yL>WG zguTSm*OmP~I~%heS77qZzd#{pPZ!6Kh{JC$88R{`@Eq9CSg$&RMN-CB?)F zK#IZ0z|d6Jz+BhBG{nfr%D}|R1jshAGBB7pBl`o2hTQy=%(P0}8Xg?I>;u%m;OXk; Jvd$@?2>=OgT|WQ- literal 0 HcmV?d00001 diff --git a/textures/slc_3.png b/textures/slc_3.png new file mode 100644 index 0000000000000000000000000000000000000000..19389117e22cb3581c9212c89ff174fd854d7b17 GIT binary patch literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^4M5D#!3HFCZX7=bq*&4&eH|GXHuiJ>Nn{1`6_P!I zd>I(3)PQPR7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV+ueoXKL{?^yL>WG zguTSm*OmP~I~%heS77qZzd#{pPZ!6Kh{JC$88R{`@EkBWuz%7_7D*XjkuNXejLRpM z*0Fz>&iIH&AicqY`G};#Ifg>E4r7NoNJ8%zcdcM5Tzi-EBG5S164!{5l*E!$tK_0o zAjM#0U}&mqV6JOm8e(K*Wnf}uY@`b$4Gd1E`ud@0$jwj5OsmALVTZ-nPe2U}p00i_ I>zopr03VK9BLDyZ literal 0 HcmV?d00001 diff --git a/textures/slc_4.png b/textures/slc_4.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcb302662048c766d1fc1c085f9c32ed19e8705 GIT binary patch literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^4M5D#!3HFCZX7=bq*&4&eH|GXHuiJ>Nn{1`6_P!I zd>I(3)PQPR7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV+ueoXKL{?^yL>WG zguTSm*OmP~I~%heS77qZzd#{pPZ!6Kh{JC$88R{`@Eq9CSg$&RMN-CBY?5lMw}NJ8Hkj_ENTpJh2w1!$aViEBhjN@7W>RdP`( zkYX@0Ff`RQFxNFO4KXsZGBB|+HqZr<1_p7zV$xAGNn{1`6_P!I zd>I(3)PQPR7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV+ueoXKL{?^yL>WG zguTSm*OmP~I~%heS77qZzd#{pPZ!6Kh{JC$88R{`@EkBWuz%7_7D*XjkuNXinU+s1 ztz-W%o$(QmKzf4(^ASmfa}0%S9mWoGkc8eb?haxqT>NClcc5{qC9V-ADTyViR>?)F zK#IZ0z|d6Jz+BhBG{nfr%D}|R$WRwZ8W@Nn{1`6_P!I zd>I(3)PQPR7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV+ueoXKL{?^yL>WG zguTSm*OmP~I~%heS77qZzd#{pPZ!6Kh{JC$IWjT`FdT3w2?_E{s(7P!P;Pd5zx9cz z{meg3GZeCQ7(2{ie8eM=-eAFeL{i}#lF)aCgQ83_?d-DLK;u+PTq8?+%fr*u|nJ$ntFtF9ij78Cqo1c=IR*74KPx-}%Kn)C@u6{1- HoD!M<2*Owh literal 0 HcmV?d00001 diff --git a/textures/slc_7.png b/textures/slc_7.png new file mode 100644 index 0000000000000000000000000000000000000000..a38eb4256641ce67f4044680a0e1dfce16a88737 GIT binary patch literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^4M5D#!3HFCZX7=bq*&4&eH|GXHuiJ>Nn{1`6_P!I zd>I(3)PQPR7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV+ueoXKL{?^yL>WG zguTSm*OmP~I~%heS77qZzd#{pPZ!6Kh{JC$88R{`@EkBWuz%7_7D*XjkuNXi&D?#$ zYCrRj(+q`d9mWoG7$5Nnq&HYFACXizha~i!VWR@GwBE+8OhDsQOI#yLQW8s2t&)pU zffR$0fuX6cfw``MX^4@Lm4S(siHRNn{1`6_P!I zd>I(3)PQPR7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV+ueoXKL{?^yL>WG zguTSm*OmP~I~%heS77qZzd#{pPZ!6Kh{JC$88R{`@EkBW@c556qojRdP`( zkYX@0Ff`RQFxNFO4KXsZGBB|+G}Z-@1_rw3j_oKKa`RI%(<*Umh{^hC4b;Hk>FVdQ I&MBb@0R9tMIRF3v literal 0 HcmV?d00001 diff --git a/textures/slc_9.png b/textures/slc_9.png new file mode 100644 index 0000000000000000000000000000000000000000..d2a0974c9132cf29d2523b0d8fd728aee5a5e5da GIT binary patch literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^4M5D#!3HFCZX7=bq*&4&eH|GXHuiJ>Nn{1`6_P!I zd>I(3)PQPR7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV+ueoXKL{?^yL>WG zguTSm*OmP~I~%heS77qZzd#{pPZ!6Kh{JC$88R{`@EkBW@c556qojRdP`( zkYX@0Ff`RQFxNFO4KXsZGBB|+wA2NX1_qt(awkzVmdK II;Vst0949amH+?% literal 0 HcmV?d00001 diff --git a/textures/slc_A.png b/textures/slc_A.png new file mode 100644 index 0000000000000000000000000000000000000000..bed719c32e419f6854946c196ac8ccf03430a574 GIT binary patch literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^4M5D#!3HFCZX7=bq*&4&eH|GXHuiJ>Nn{1`6_P!I zd>I(3)PQPR7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV+ueoXKL{?^yL>WG zguTSm*OmP~I~%heS77qZzd#{pPZ!6Kh{JC$88R{`@EkBW@c556qoj&iIH&AicqY`G};#Ifg>E4r7NoNJ8%zw^=eBi>+xq2{cZ%#5JNMC9x#cD!C{X zNHG{07@F!DnClvth8P)H8JJj^8t4K^1A`e;Lm!}M$jwj5OsmAL;pK_9F+dFrp00i_ I>zopr0C7rO1poj5 literal 0 HcmV?d00001 diff --git a/textures/slc_B.png b/textures/slc_B.png new file mode 100644 index 0000000000000000000000000000000000000000..f1f9d263f5cecf2a478714f7e77c8beac72d406f GIT binary patch literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^4M5D#!3HFCZX7=bq*&4&eH|GXHuiJ>Nn{1`6_P!I zd>I(3)PQPR7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV+ueoXKL{?^yL>WG zguTSm*OmP~I~%heS77qZzd#{pPZ!6Kh{JC$88R{`@EkBWp!{zskED#R$d?!Uj5nXK z+RyysG(#aNn{1`6_P!I zd>I(3)PQPR7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV+ueoXKL{?^yL>WG zguTSm*OmP~I~%heS77qZzd#{pPZ!6Kh{JC$88R{`@EkBW@c556qoj&iIH&AicqY`G};#Ifg>E4r7NoNJ8%zw>@S$rgD1IBcO4rC9V-ADTyViR>?)F zK#IZ0z|d6Jz+BhBG{nfr%D}|R2*@_EGB61Lo>Y#aAvZrIGp!Q02DMeUP6IVCc)I$z JtaD0e0s!HWTyFpX literal 0 HcmV?d00001 diff --git a/textures/slc_D.png b/textures/slc_D.png new file mode 100644 index 0000000000000000000000000000000000000000..a9f06c4bf3dc715401193b7db6fff9f37e78f148 GIT binary patch literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^4M5D#!3HFCZX7=bq*&4&eH|GXHuiJ>Nn{1`6_P!I zd>I(3)PQPR7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV+ueoXKL{?^yL>WG zguTSm*OmP~I~%heS77qZzd#{pPZ!6Kh{JC$88R{`@EkBWp!{zskED#R$d?!MtT&&q z+RyysG(#amdK II;Vst07OYz5C8xG literal 0 HcmV?d00001 diff --git a/textures/slc_E.png b/textures/slc_E.png new file mode 100644 index 0000000000000000000000000000000000000000..d73776b19a94945e7a7ee3429ec1935f3b018cd1 GIT binary patch literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^4M5D#!3HFCZX7=bq*&4&eH|GXHuiJ>Nn{1`6_P!I zd>I(3)PQPR7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV+ueoXKL{?^yL>WG zguTSm*OmP~I~%heS77qZzd#{pPZ!6Kh{JC$88R{`@EkBWp!{zskED#R$d?!Mc5Xgl zwV(ONX@)|!4r7NojE{H((i<$8k4P$Nn{1`6_P!I zd>I(3)PQPR7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV+ueoXKL{?^yL>WG zguTSm*OmP~I~%heS77qZzd#{JPZ!6Kh{JC$88R{`@EkBWu>ZMYvb!*=ZB=?2Uu3>@ zLo8c|vBMn3M?3=Q4HnEtBo)pv6e0=j;9q!^MT#xZzaD6qYKdz^NlIc#s#S7PDv)9@ zGB7mNH89sTFby#>vNABSGPcwOk_HB+lO(sGXvob^$xN%ntznn_LJpt?22WQ%mvv4F FO#rm`R%rkL literal 0 HcmV?d00001 diff --git a/textures/slc_n.png b/textures/slc_n.png new file mode 100644 index 0000000000000000000000000000000000000000..8f59c9bfecf70cc3297af37208b80890297b088b GIT binary patch literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^4M5D#!3HFCZX7=bq*&4&eH|GXHuiJ>Nn{1`6_P!I zd>I(3)PQPR7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV+ueoXKL{?^yL>WG zguTSm*OmP~I~%heS77qZzd#{JPZ!6Kh{JC$88R{`@Eq9CSbtt2*hK^d6vLswJ)wB`Jv|saDBFsX&Us z$iUE4*T7uYz%<0j*viDn%E&<1z{JYH;1grpP81Ef`6-!cmAExD$Jl}V&*16m=d#Wz Gp$PyYyjIu% literal 0 HcmV?d00001