From 4ff54c9a4db6ff05da4b7eb74814a9eeb8ce3d59 Mon Sep 17 00:00:00 2001 From: Vanessa Dannenberg Date: Wed, 11 Sep 2019 12:03:04 -0400 Subject: [PATCH] Re-built onto the new API formerly part of my street_signs mod Any sign can now use a 15 or 31 px font, at any reasonable visual scale, line width, number of lines, etc. Split most signs off into a separate mod, basic_signs, which depends on this one. Only the default minetest_game wood and steel signs remain in signs_lib, completely redefined. The wall/yard/ceiling function for wooden signs has been rewitten and moved to basic_signs, too. signs_lib can now put almost any wall sign onto almost any kind of posts/fence, as with most signs in my street_signs mod. Mods can add their fences/posts to its "allowed" list, if needed (signs_lib tries to detect most kinds of suitable fences, poles, posts, etc). All signs affected by these changes are similar to what they've always been, for continuity. The main difference is that they all use a 15px font now, with a slightly larger scale, and the positions of some have changed slightly. Dropped the old "@KEYWORD" feature (but it could be re-added if it turns out to be needed), and most of the old cruft like "|" for line breaks. Created new wood and steel sign textures, derived from HDX. See standard_signs.lua for examples of how the new API is used. The "standard" text sizing/position/etc. variables are all at the top of api.lua. --- api.lua | 663 +++++++++ depends.txt | 3 - encoding.lua | 2 +- init.lua | 1276 +---------------- models/signs_lib_standard_wall_sign.obj | 52 + .../signs_lib_standard_wall_sign_entity.obj | 15 + ...s_lib_standard_wall_sign_entity_onpole.obj | 15 + .../signs_lib_standard_wall_sign_facedir.obj | 52 + ..._lib_standard_wall_sign_facedir_onpole.obj | 254 ++++ .../signs_lib_standard_wall_sign_onpole.obj | 254 ++++ screenshot.png | Bin 58372 -> 0 bytes standard_signs.lua | 103 ++ textures/signs_back.png | Bin 280 -> 0 bytes textures/signs_blue_front.png | Bin 175 -> 0 bytes textures/signs_blue_inv.png | Bin 154 -> 0 bytes textures/signs_bottom.png | Bin 129 -> 0 bytes textures/signs_brown_front.png | Bin 175 -> 0 bytes textures/signs_brown_inv.png | Bin 155 -> 0 bytes textures/signs_front.png | Bin 365 -> 0 bytes textures/signs_green_front.png | Bin 112 -> 0 bytes textures/signs_green_inv.png | Bin 91 -> 0 bytes textures/signs_hanging_back.png | Bin 322 -> 0 bytes textures/signs_hanging_bottom.png | Bin 125 -> 0 bytes textures/signs_hanging_front.png | Bin 412 -> 0 bytes textures/signs_hanging_side.png | Bin 134 -> 0 bytes textures/signs_hanging_top.png | Bin 125 -> 0 bytes textures/signs_lib_color_15px_0.png | Bin 0 -> 111 bytes textures/signs_lib_color_15px_1.png | Bin 0 -> 111 bytes textures/signs_lib_color_15px_2.png | Bin 0 -> 111 bytes textures/signs_lib_color_15px_3.png | Bin 0 -> 110 bytes textures/signs_lib_color_15px_4.png | Bin 0 -> 111 bytes textures/signs_lib_color_15px_5.png | Bin 0 -> 110 bytes textures/signs_lib_color_15px_6.png | Bin 0 -> 112 bytes textures/signs_lib_color_15px_7.png | Bin 0 -> 111 bytes textures/signs_lib_color_15px_8.png | Bin 0 -> 111 bytes textures/signs_lib_color_15px_9.png | Bin 0 -> 110 bytes textures/signs_lib_color_15px_A.png | Bin 0 -> 110 bytes textures/signs_lib_color_15px_B.png | Bin 0 -> 111 bytes textures/signs_lib_color_15px_C.png | Bin 0 -> 110 bytes textures/signs_lib_color_15px_D.png | Bin 0 -> 111 bytes textures/signs_lib_color_15px_E.png | Bin 0 -> 111 bytes textures/signs_lib_color_15px_F.png | Bin 0 -> 109 bytes textures/signs_lib_color_15px_n.png | Bin 0 -> 109 bytes textures/signs_lib_color_31px_0.png | Bin 0 -> 357 bytes textures/signs_lib_color_31px_1.png | Bin 0 -> 357 bytes textures/signs_lib_color_31px_2.png | Bin 0 -> 357 bytes textures/signs_lib_color_31px_3.png | Bin 0 -> 357 bytes textures/signs_lib_color_31px_4.png | Bin 0 -> 357 bytes textures/signs_lib_color_31px_5.png | Bin 0 -> 357 bytes textures/signs_lib_color_31px_6.png | Bin 0 -> 357 bytes textures/signs_lib_color_31px_7.png | Bin 0 -> 357 bytes textures/signs_lib_color_31px_8.png | Bin 0 -> 357 bytes textures/signs_lib_color_31px_9.png | Bin 0 -> 357 bytes textures/signs_lib_color_31px_A.png | Bin 0 -> 357 bytes textures/signs_lib_color_31px_B.png | Bin 0 -> 357 bytes textures/signs_lib_color_31px_C.png | Bin 0 -> 357 bytes textures/signs_lib_color_31px_D.png | Bin 0 -> 357 bytes textures/signs_lib_color_31px_E.png | Bin 0 -> 357 bytes textures/signs_lib_color_31px_F.png | Bin 0 -> 355 bytes textures/signs_lib_color_31px_n.png | Bin 0 -> 355 bytes ...{hdf_00.png => signs_lib_font_15px_00.png} | Bin ...{hdf_20.png => signs_lib_font_15px_20.png} | Bin ...{hdf_21.png => signs_lib_font_15px_21.png} | Bin ...{hdf_22.png => signs_lib_font_15px_22.png} | Bin ...{hdf_23.png => signs_lib_font_15px_23.png} | Bin ...{hdf_24.png => signs_lib_font_15px_24.png} | Bin ...{hdf_25.png => signs_lib_font_15px_25.png} | Bin ...{hdf_26.png => signs_lib_font_15px_26.png} | Bin ...{hdf_27.png => signs_lib_font_15px_27.png} | Bin ...{hdf_28.png => signs_lib_font_15px_28.png} | Bin ...{hdf_29.png => signs_lib_font_15px_29.png} | Bin ...{hdf_2a.png => signs_lib_font_15px_2a.png} | Bin ...{hdf_2b.png => signs_lib_font_15px_2b.png} | Bin ...{hdf_2c.png => signs_lib_font_15px_2c.png} | Bin ...{hdf_2d.png => signs_lib_font_15px_2d.png} | Bin ...{hdf_2e.png => signs_lib_font_15px_2e.png} | Bin ...{hdf_2f.png => signs_lib_font_15px_2f.png} | Bin ...{hdf_30.png => signs_lib_font_15px_30.png} | Bin ...{hdf_31.png => signs_lib_font_15px_31.png} | Bin ...{hdf_32.png => signs_lib_font_15px_32.png} | Bin ...{hdf_33.png => signs_lib_font_15px_33.png} | Bin ...{hdf_34.png => signs_lib_font_15px_34.png} | Bin ...{hdf_35.png => signs_lib_font_15px_35.png} | Bin ...{hdf_36.png => signs_lib_font_15px_36.png} | Bin ...{hdf_37.png => signs_lib_font_15px_37.png} | Bin ...{hdf_38.png => signs_lib_font_15px_38.png} | Bin ...{hdf_39.png => signs_lib_font_15px_39.png} | Bin ...{hdf_3a.png => signs_lib_font_15px_3a.png} | Bin ...{hdf_3b.png => signs_lib_font_15px_3b.png} | Bin ...{hdf_3c.png => signs_lib_font_15px_3c.png} | Bin ...{hdf_3d.png => signs_lib_font_15px_3d.png} | Bin ...{hdf_3e.png => signs_lib_font_15px_3e.png} | Bin ...{hdf_3f.png => signs_lib_font_15px_3f.png} | Bin ...{hdf_40.png => signs_lib_font_15px_40.png} | Bin ...{hdf_41.png => signs_lib_font_15px_41.png} | Bin ...{hdf_42.png => signs_lib_font_15px_42.png} | Bin ...{hdf_43.png => signs_lib_font_15px_43.png} | Bin ...{hdf_44.png => signs_lib_font_15px_44.png} | Bin ...{hdf_45.png => signs_lib_font_15px_45.png} | Bin ...{hdf_46.png => signs_lib_font_15px_46.png} | Bin ...{hdf_47.png => signs_lib_font_15px_47.png} | Bin ...{hdf_48.png => signs_lib_font_15px_48.png} | Bin ...{hdf_49.png => signs_lib_font_15px_49.png} | Bin ...{hdf_4a.png => signs_lib_font_15px_4a.png} | Bin ...{hdf_4b.png => signs_lib_font_15px_4b.png} | Bin ...{hdf_4c.png => signs_lib_font_15px_4c.png} | Bin ...{hdf_4d.png => signs_lib_font_15px_4d.png} | Bin ...{hdf_4e.png => signs_lib_font_15px_4e.png} | Bin ...{hdf_4f.png => signs_lib_font_15px_4f.png} | Bin ...{hdf_50.png => signs_lib_font_15px_50.png} | Bin ...{hdf_51.png => signs_lib_font_15px_51.png} | Bin ...{hdf_52.png => signs_lib_font_15px_52.png} | Bin ...{hdf_53.png => signs_lib_font_15px_53.png} | Bin ...{hdf_54.png => signs_lib_font_15px_54.png} | Bin ...{hdf_55.png => signs_lib_font_15px_55.png} | Bin ...{hdf_56.png => signs_lib_font_15px_56.png} | Bin ...{hdf_57.png => signs_lib_font_15px_57.png} | Bin ...{hdf_58.png => signs_lib_font_15px_58.png} | Bin ...{hdf_59.png => signs_lib_font_15px_59.png} | Bin ...{hdf_5a.png => signs_lib_font_15px_5a.png} | Bin ...{hdf_5b.png => signs_lib_font_15px_5b.png} | Bin ...{hdf_5c.png => signs_lib_font_15px_5c.png} | Bin ...{hdf_5d.png => signs_lib_font_15px_5d.png} | Bin ...{hdf_5e.png => signs_lib_font_15px_5e.png} | Bin ...{hdf_5f.png => signs_lib_font_15px_5f.png} | Bin ...{hdf_60.png => signs_lib_font_15px_60.png} | Bin ...{hdf_61.png => signs_lib_font_15px_61.png} | Bin ...{hdf_62.png => signs_lib_font_15px_62.png} | Bin ...{hdf_63.png => signs_lib_font_15px_63.png} | Bin ...{hdf_64.png => signs_lib_font_15px_64.png} | Bin ...{hdf_65.png => signs_lib_font_15px_65.png} | Bin ...{hdf_66.png => signs_lib_font_15px_66.png} | Bin ...{hdf_67.png => signs_lib_font_15px_67.png} | Bin ...{hdf_68.png => signs_lib_font_15px_68.png} | Bin ...{hdf_69.png => signs_lib_font_15px_69.png} | Bin ...{hdf_6a.png => signs_lib_font_15px_6a.png} | Bin ...{hdf_6b.png => signs_lib_font_15px_6b.png} | Bin ...{hdf_6c.png => signs_lib_font_15px_6c.png} | Bin ...{hdf_6d.png => signs_lib_font_15px_6d.png} | Bin ...{hdf_6e.png => signs_lib_font_15px_6e.png} | Bin ...{hdf_6f.png => signs_lib_font_15px_6f.png} | Bin ...{hdf_70.png => signs_lib_font_15px_70.png} | Bin ...{hdf_71.png => signs_lib_font_15px_71.png} | Bin ...{hdf_72.png => signs_lib_font_15px_72.png} | Bin ...{hdf_73.png => signs_lib_font_15px_73.png} | Bin ...{hdf_74.png => signs_lib_font_15px_74.png} | Bin ...{hdf_75.png => signs_lib_font_15px_75.png} | Bin ...{hdf_76.png => signs_lib_font_15px_76.png} | Bin ...{hdf_77.png => signs_lib_font_15px_77.png} | Bin ...{hdf_78.png => signs_lib_font_15px_78.png} | Bin ...{hdf_79.png => signs_lib_font_15px_79.png} | Bin ...{hdf_7a.png => signs_lib_font_15px_7a.png} | Bin ...{hdf_7b.png => signs_lib_font_15px_7b.png} | Bin ...{hdf_7c.png => signs_lib_font_15px_7c.png} | Bin ...{hdf_7d.png => signs_lib_font_15px_7d.png} | Bin ...{hdf_7e.png => signs_lib_font_15px_7e.png} | Bin ...{hdf_81.png => signs_lib_font_15px_81.png} | Bin ...{hdf_82.png => signs_lib_font_15px_82.png} | Bin ...{hdf_83.png => signs_lib_font_15px_83.png} | Bin ...{hdf_84.png => signs_lib_font_15px_84.png} | Bin ...{hdf_85.png => signs_lib_font_15px_85.png} | Bin ...{hdf_86.png => signs_lib_font_15px_86.png} | Bin ...{hdf_87.png => signs_lib_font_15px_87.png} | Bin ...{hdf_88.png => signs_lib_font_15px_88.png} | Bin ...{hdf_8a.png => signs_lib_font_15px_8a.png} | Bin ...{hdf_8b.png => signs_lib_font_15px_8b.png} | Bin ...{hdf_8c.png => signs_lib_font_15px_8c.png} | Bin ...{hdf_8d.png => signs_lib_font_15px_8d.png} | Bin ...{hdf_8e.png => signs_lib_font_15px_8e.png} | Bin ...{hdf_8f.png => signs_lib_font_15px_8f.png} | Bin ...{hdf_90.png => signs_lib_font_15px_90.png} | Bin ...{hdf_91.png => signs_lib_font_15px_91.png} | Bin ...{hdf_a8.png => signs_lib_font_15px_a8.png} | Bin ...{hdf_b8.png => signs_lib_font_15px_b8.png} | Bin ...{hdf_b9.png => signs_lib_font_15px_b9.png} | Bin ...{hdf_c0.png => signs_lib_font_15px_c0.png} | Bin ...{hdf_c1.png => signs_lib_font_15px_c1.png} | Bin ...{hdf_c2.png => signs_lib_font_15px_c2.png} | Bin ...{hdf_c3.png => signs_lib_font_15px_c3.png} | Bin ...{hdf_c4.png => signs_lib_font_15px_c4.png} | Bin ...{hdf_c5.png => signs_lib_font_15px_c5.png} | Bin ...{hdf_c6.png => signs_lib_font_15px_c6.png} | Bin ...{hdf_c7.png => signs_lib_font_15px_c7.png} | Bin ...{hdf_c8.png => signs_lib_font_15px_c8.png} | Bin ...{hdf_c9.png => signs_lib_font_15px_c9.png} | Bin ...{hdf_ca.png => signs_lib_font_15px_ca.png} | Bin ...{hdf_cb.png => signs_lib_font_15px_cb.png} | Bin ...{hdf_cc.png => signs_lib_font_15px_cc.png} | Bin ...{hdf_cd.png => signs_lib_font_15px_cd.png} | Bin ...{hdf_ce.png => signs_lib_font_15px_ce.png} | Bin ...{hdf_cf.png => signs_lib_font_15px_cf.png} | Bin ...{hdf_d0.png => signs_lib_font_15px_d0.png} | Bin ...{hdf_d1.png => signs_lib_font_15px_d1.png} | Bin ...{hdf_d2.png => signs_lib_font_15px_d2.png} | Bin ...{hdf_d3.png => signs_lib_font_15px_d3.png} | Bin ...{hdf_d4.png => signs_lib_font_15px_d4.png} | Bin ...{hdf_d5.png => signs_lib_font_15px_d5.png} | Bin ...{hdf_d6.png => signs_lib_font_15px_d6.png} | Bin ...{hdf_d7.png => signs_lib_font_15px_d7.png} | Bin ...{hdf_d8.png => signs_lib_font_15px_d8.png} | Bin ...{hdf_d9.png => signs_lib_font_15px_d9.png} | Bin ...{hdf_da.png => signs_lib_font_15px_da.png} | Bin ...{hdf_db.png => signs_lib_font_15px_db.png} | Bin ...{hdf_dc.png => signs_lib_font_15px_dc.png} | Bin ...{hdf_dd.png => signs_lib_font_15px_dd.png} | Bin ...{hdf_de.png => signs_lib_font_15px_de.png} | Bin ...{hdf_df.png => signs_lib_font_15px_df.png} | Bin ...{hdf_e0.png => signs_lib_font_15px_e0.png} | Bin ...{hdf_e1.png => signs_lib_font_15px_e1.png} | Bin ...{hdf_e2.png => signs_lib_font_15px_e2.png} | Bin ...{hdf_e3.png => signs_lib_font_15px_e3.png} | Bin ...{hdf_e4.png => signs_lib_font_15px_e4.png} | Bin ...{hdf_e5.png => signs_lib_font_15px_e5.png} | Bin ...{hdf_e6.png => signs_lib_font_15px_e6.png} | Bin ...{hdf_e7.png => signs_lib_font_15px_e7.png} | Bin ...{hdf_e8.png => signs_lib_font_15px_e8.png} | Bin ...{hdf_e9.png => signs_lib_font_15px_e9.png} | Bin ...{hdf_ea.png => signs_lib_font_15px_ea.png} | Bin ...{hdf_eb.png => signs_lib_font_15px_eb.png} | Bin ...{hdf_ec.png => signs_lib_font_15px_ec.png} | Bin ...{hdf_ed.png => signs_lib_font_15px_ed.png} | Bin ...{hdf_ee.png => signs_lib_font_15px_ee.png} | Bin ...{hdf_ef.png => signs_lib_font_15px_ef.png} | Bin ...{hdf_f0.png => signs_lib_font_15px_f0.png} | Bin ...{hdf_f1.png => signs_lib_font_15px_f1.png} | Bin ...{hdf_f2.png => signs_lib_font_15px_f2.png} | Bin ...{hdf_f3.png => signs_lib_font_15px_f3.png} | Bin ...{hdf_f4.png => signs_lib_font_15px_f4.png} | Bin ...{hdf_f5.png => signs_lib_font_15px_f5.png} | Bin ...{hdf_f6.png => signs_lib_font_15px_f6.png} | Bin ...{hdf_f7.png => signs_lib_font_15px_f7.png} | Bin ...{hdf_f8.png => signs_lib_font_15px_f8.png} | Bin ...{hdf_f9.png => signs_lib_font_15px_f9.png} | Bin ...{hdf_fa.png => signs_lib_font_15px_fa.png} | Bin ...{hdf_fb.png => signs_lib_font_15px_fb.png} | Bin ...{hdf_fc.png => signs_lib_font_15px_fc.png} | Bin ...{hdf_fd.png => signs_lib_font_15px_fd.png} | Bin ...{hdf_fe.png => signs_lib_font_15px_fe.png} | Bin ...{hdf_ff.png => signs_lib_font_15px_ff.png} | Bin textures/signs_lib_font_31px_20.png | Bin 0 -> 68 bytes textures/signs_lib_font_31px_21.png | Bin 0 -> 89 bytes textures/signs_lib_font_31px_22.png | Bin 0 -> 91 bytes textures/signs_lib_font_31px_23.png | Bin 0 -> 133 bytes textures/signs_lib_font_31px_24.png | Bin 0 -> 160 bytes textures/signs_lib_font_31px_25.png | Bin 0 -> 181 bytes textures/signs_lib_font_31px_26.png | Bin 0 -> 162 bytes textures/signs_lib_font_31px_27.png | Bin 0 -> 82 bytes textures/signs_lib_font_31px_28.png | Bin 0 -> 117 bytes textures/signs_lib_font_31px_29.png | Bin 0 -> 114 bytes textures/signs_lib_font_31px_2a.png | Bin 0 -> 119 bytes textures/signs_lib_font_31px_2b.png | Bin 0 -> 89 bytes textures/signs_lib_font_31px_2c.png | Bin 0 -> 90 bytes textures/signs_lib_font_31px_2d.png | Bin 0 -> 80 bytes textures/signs_lib_font_31px_2e.png | Bin 0 -> 78 bytes textures/signs_lib_font_31px_2f.png | Bin 0 -> 109 bytes textures/signs_lib_font_31px_30.png | Bin 0 -> 125 bytes textures/signs_lib_font_31px_31.png | Bin 0 -> 99 bytes textures/signs_lib_font_31px_32.png | Bin 0 -> 148 bytes textures/signs_lib_font_31px_33.png | Bin 0 -> 149 bytes textures/signs_lib_font_31px_34.png | Bin 0 -> 130 bytes textures/signs_lib_font_31px_35.png | Bin 0 -> 133 bytes textures/signs_lib_font_31px_36.png | Bin 0 -> 146 bytes textures/signs_lib_font_31px_37.png | Bin 0 -> 123 bytes textures/signs_lib_font_31px_38.png | Bin 0 -> 146 bytes textures/signs_lib_font_31px_39.png | Bin 0 -> 144 bytes textures/signs_lib_font_31px_3a.png | Bin 0 -> 78 bytes textures/signs_lib_font_31px_3b.png | Bin 0 -> 93 bytes textures/signs_lib_font_31px_3c.png | Bin 0 -> 130 bytes textures/signs_lib_font_31px_3d.png | Bin 0 -> 87 bytes textures/signs_lib_font_31px_3e.png | Bin 0 -> 121 bytes textures/signs_lib_font_31px_3f.png | Bin 0 -> 143 bytes textures/signs_lib_font_31px_40.png | Bin 0 -> 201 bytes textures/signs_lib_font_31px_41.png | Bin 0 -> 141 bytes textures/signs_lib_font_31px_42.png | Bin 0 -> 121 bytes textures/signs_lib_font_31px_43.png | Bin 0 -> 146 bytes textures/signs_lib_font_31px_44.png | Bin 0 -> 133 bytes textures/signs_lib_font_31px_45.png | Bin 0 -> 101 bytes textures/signs_lib_font_31px_46.png | Bin 0 -> 95 bytes textures/signs_lib_font_31px_47.png | Bin 0 -> 160 bytes textures/signs_lib_font_31px_48.png | Bin 0 -> 93 bytes textures/signs_lib_font_31px_49.png | Bin 0 -> 79 bytes textures/signs_lib_font_31px_4a.png | Bin 0 -> 111 bytes textures/signs_lib_font_31px_4b.png | Bin 0 -> 146 bytes textures/signs_lib_font_31px_4c.png | Bin 0 -> 88 bytes textures/signs_lib_font_31px_4d.png | Bin 0 -> 130 bytes textures/signs_lib_font_31px_4e.png | Bin 0 -> 129 bytes textures/signs_lib_font_31px_4f.png | Bin 0 -> 148 bytes textures/signs_lib_font_31px_50.png | Bin 0 -> 122 bytes textures/signs_lib_font_31px_51.png | Bin 0 -> 169 bytes textures/signs_lib_font_31px_52.png | Bin 0 -> 119 bytes textures/signs_lib_font_31px_53.png | Bin 0 -> 163 bytes textures/signs_lib_font_31px_54.png | Bin 0 -> 93 bytes textures/signs_lib_font_31px_55.png | Bin 0 -> 119 bytes textures/signs_lib_font_31px_56.png | Bin 0 -> 139 bytes textures/signs_lib_font_31px_57.png | Bin 0 -> 151 bytes textures/signs_lib_font_31px_58.png | Bin 0 -> 161 bytes textures/signs_lib_font_31px_59.png | Bin 0 -> 135 bytes textures/signs_lib_font_31px_5a.png | Bin 0 -> 132 bytes textures/signs_lib_font_31px_5b.png | Bin 0 -> 83 bytes textures/signs_lib_font_31px_5c.png | Bin 0 -> 114 bytes textures/signs_lib_font_31px_5d.png | Bin 0 -> 83 bytes textures/signs_lib_font_31px_5e.png | Bin 0 -> 116 bytes textures/signs_lib_font_31px_5f.png | Bin 0 -> 85 bytes textures/signs_lib_font_31px_60.png | Bin 0 -> 88 bytes textures/signs_lib_font_31px_61.png | Bin 0 -> 133 bytes textures/signs_lib_font_31px_62.png | Bin 0 -> 127 bytes textures/signs_lib_font_31px_63.png | Bin 0 -> 126 bytes textures/signs_lib_font_31px_64.png | Bin 0 -> 130 bytes textures/signs_lib_font_31px_65.png | Bin 0 -> 132 bytes textures/signs_lib_font_31px_66.png | Bin 0 -> 102 bytes textures/signs_lib_font_31px_67.png | Bin 0 -> 166 bytes textures/signs_lib_font_31px_68.png | Bin 0 -> 106 bytes textures/signs_lib_font_31px_69.png | Bin 0 -> 86 bytes textures/signs_lib_font_31px_6a.png | Bin 0 -> 90 bytes textures/signs_lib_font_31px_6b.png | Bin 0 -> 130 bytes textures/signs_lib_font_31px_6c.png | Bin 0 -> 78 bytes textures/signs_lib_font_31px_6d.png | Bin 0 -> 125 bytes textures/signs_lib_font_31px_6e.png | Bin 0 -> 107 bytes textures/signs_lib_font_31px_6f.png | Bin 0 -> 124 bytes textures/signs_lib_font_31px_70.png | Bin 0 -> 126 bytes textures/signs_lib_font_31px_71.png | Bin 0 -> 131 bytes textures/signs_lib_font_31px_72.png | Bin 0 -> 101 bytes textures/signs_lib_font_31px_73.png | Bin 0 -> 136 bytes textures/signs_lib_font_31px_74.png | Bin 0 -> 100 bytes textures/signs_lib_font_31px_75.png | Bin 0 -> 108 bytes textures/signs_lib_font_31px_76.png | Bin 0 -> 128 bytes textures/signs_lib_font_31px_77.png | Bin 0 -> 145 bytes textures/signs_lib_font_31px_78.png | Bin 0 -> 141 bytes textures/signs_lib_font_31px_79.png | Bin 0 -> 131 bytes textures/signs_lib_font_31px_7a.png | Bin 0 -> 120 bytes textures/signs_lib_font_31px_7b.png | Bin 0 -> 108 bytes textures/signs_lib_font_31px_7c.png | Bin 0 -> 68 bytes textures/signs_lib_font_31px_7d.png | Bin 0 -> 106 bytes textures/signs_lib_font_31px_7e.png | Bin 0 -> 108 bytes textures/signs_lib_font_31px_81.png | Bin 0 -> 166 bytes textures/signs_lib_font_31px_82.png | Bin 0 -> 185 bytes textures/signs_lib_font_31px_83.png | Bin 0 -> 167 bytes textures/signs_lib_font_31px_84.png | Bin 0 -> 200 bytes textures/signs_lib_font_31px_85.png | Bin 0 -> 169 bytes textures/signs_lib_font_31px_86.png | Bin 0 -> 185 bytes textures/signs_lib_font_31px_87.png | Bin 0 -> 165 bytes textures/signs_lib_font_31px_88.png | Bin 0 -> 190 bytes textures/signs_lib_font_31px_8a.png | Bin 0 -> 207 bytes textures/signs_lib_font_31px_8b.png | Bin 0 -> 224 bytes textures/signs_lib_font_31px_8c.png | Bin 0 -> 189 bytes textures/signs_lib_font_31px_8d.png | Bin 0 -> 223 bytes textures/signs_lib_font_31px_8e.png | Bin 0 -> 219 bytes textures/signs_lib_font_31px_8f.png | Bin 0 -> 221 bytes textures/signs_lib_font_31px_90.png | Bin 0 -> 183 bytes textures/signs_lib_font_31px_91.png | Bin 0 -> 235 bytes textures/signs_lib_pole_mount.png | Bin 0 -> 1296 bytes ...bg_signs_lib.jpg => signs_lib_sign_bg.jpg} | Bin textures/signs_lib_sign_wall_steel.png | Bin 0 -> 1510 bytes textures/signs_lib_sign_wall_steel_edges.png | Bin 0 -> 468 bytes textures/signs_lib_sign_wall_steel_inv.png | Bin 0 -> 1107 bytes textures/signs_lib_sign_wall_wooden.png | Bin 0 -> 2437 bytes textures/signs_lib_sign_wall_wooden_edges.png | Bin 0 -> 540 bytes textures/signs_lib_sign_wall_wooden_inv.png | Bin 0 -> 1423 bytes textures/signs_locked_inv.png | Bin 374 -> 0 bytes textures/signs_metal_back.png | Bin 93 -> 0 bytes textures/signs_metal_sides.png | Bin 87 -> 0 bytes textures/signs_metal_tb.png | Bin 89 -> 0 bytes textures/signs_orange_front.png | Bin 132 -> 0 bytes textures/signs_orange_inv.png | Bin 106 -> 0 bytes textures/signs_post_back.png | Bin 311 -> 0 bytes textures/signs_post_bottom.png | Bin 131 -> 0 bytes textures/signs_post_front.png | Bin 401 -> 0 bytes textures/signs_post_side.png | Bin 204 -> 0 bytes textures/signs_post_top.png | Bin 130 -> 0 bytes textures/signs_red_front.png | Bin 107 -> 0 bytes textures/signs_red_inv.png | Bin 91 -> 0 bytes textures/signs_side.png | Bin 157 -> 0 bytes textures/signs_top.png | Bin 130 -> 0 bytes textures/signs_wall_sign.png | Bin 537 -> 0 bytes textures/signs_wall_sign_locked.png | Bin 509 -> 0 bytes textures/signs_wall_sign_metal.png | Bin 553 -> 0 bytes textures/signs_white_black_front.png | Bin 110 -> 0 bytes textures/signs_white_black_inv.png | Bin 88 -> 0 bytes textures/signs_white_red_front.png | Bin 107 -> 0 bytes textures/signs_white_red_inv.png | Bin 91 -> 0 bytes textures/signs_yellow_front.png | Bin 132 -> 0 bytes textures/signs_yellow_inv.png | Bin 102 -> 0 bytes textures/slc_0.png | Bin 319 -> 0 bytes textures/slc_1.png | Bin 319 -> 0 bytes textures/slc_2.png | Bin 319 -> 0 bytes textures/slc_3.png | Bin 319 -> 0 bytes textures/slc_4.png | Bin 319 -> 0 bytes textures/slc_5.png | Bin 319 -> 0 bytes textures/slc_6.png | Bin 319 -> 0 bytes textures/slc_7.png | Bin 319 -> 0 bytes textures/slc_8.png | Bin 319 -> 0 bytes textures/slc_9.png | Bin 319 -> 0 bytes textures/slc_A.png | Bin 319 -> 0 bytes textures/slc_B.png | Bin 319 -> 0 bytes textures/slc_C.png | Bin 319 -> 0 bytes textures/slc_D.png | Bin 319 -> 0 bytes textures/slc_E.png | Bin 319 -> 0 bytes textures/slc_F.png | Bin 317 -> 0 bytes textures/slc_n.png | Bin 317 -> 0 bytes 399 files changed, 1414 insertions(+), 1275 deletions(-) create mode 100644 api.lua create mode 100644 models/signs_lib_standard_wall_sign.obj create mode 100644 models/signs_lib_standard_wall_sign_entity.obj create mode 100644 models/signs_lib_standard_wall_sign_entity_onpole.obj create mode 100644 models/signs_lib_standard_wall_sign_facedir.obj create mode 100644 models/signs_lib_standard_wall_sign_facedir_onpole.obj create mode 100644 models/signs_lib_standard_wall_sign_onpole.obj delete mode 100644 screenshot.png create mode 100644 standard_signs.lua delete mode 100644 textures/signs_back.png delete mode 100644 textures/signs_blue_front.png delete mode 100644 textures/signs_blue_inv.png delete mode 100644 textures/signs_bottom.png delete mode 100644 textures/signs_brown_front.png delete mode 100644 textures/signs_brown_inv.png delete mode 100644 textures/signs_front.png delete mode 100644 textures/signs_green_front.png delete mode 100644 textures/signs_green_inv.png delete mode 100644 textures/signs_hanging_back.png delete mode 100644 textures/signs_hanging_bottom.png delete mode 100644 textures/signs_hanging_front.png delete mode 100644 textures/signs_hanging_side.png delete mode 100644 textures/signs_hanging_top.png create mode 100644 textures/signs_lib_color_15px_0.png create mode 100644 textures/signs_lib_color_15px_1.png create mode 100644 textures/signs_lib_color_15px_2.png create mode 100644 textures/signs_lib_color_15px_3.png create mode 100644 textures/signs_lib_color_15px_4.png create mode 100644 textures/signs_lib_color_15px_5.png create mode 100644 textures/signs_lib_color_15px_6.png create mode 100644 textures/signs_lib_color_15px_7.png create mode 100644 textures/signs_lib_color_15px_8.png create mode 100644 textures/signs_lib_color_15px_9.png create mode 100644 textures/signs_lib_color_15px_A.png create mode 100644 textures/signs_lib_color_15px_B.png create mode 100644 textures/signs_lib_color_15px_C.png create mode 100644 textures/signs_lib_color_15px_D.png create mode 100644 textures/signs_lib_color_15px_E.png create mode 100644 textures/signs_lib_color_15px_F.png create mode 100644 textures/signs_lib_color_15px_n.png create mode 100644 textures/signs_lib_color_31px_0.png create mode 100644 textures/signs_lib_color_31px_1.png create mode 100644 textures/signs_lib_color_31px_2.png create mode 100644 textures/signs_lib_color_31px_3.png create mode 100644 textures/signs_lib_color_31px_4.png create mode 100644 textures/signs_lib_color_31px_5.png create mode 100644 textures/signs_lib_color_31px_6.png create mode 100644 textures/signs_lib_color_31px_7.png create mode 100644 textures/signs_lib_color_31px_8.png create mode 100644 textures/signs_lib_color_31px_9.png create mode 100644 textures/signs_lib_color_31px_A.png create mode 100644 textures/signs_lib_color_31px_B.png create mode 100644 textures/signs_lib_color_31px_C.png create mode 100644 textures/signs_lib_color_31px_D.png create mode 100644 textures/signs_lib_color_31px_E.png create mode 100644 textures/signs_lib_color_31px_F.png create mode 100644 textures/signs_lib_color_31px_n.png rename textures/{hdf_00.png => signs_lib_font_15px_00.png} (100%) rename textures/{hdf_20.png => signs_lib_font_15px_20.png} (100%) rename textures/{hdf_21.png => signs_lib_font_15px_21.png} (100%) rename textures/{hdf_22.png => signs_lib_font_15px_22.png} (100%) rename textures/{hdf_23.png => signs_lib_font_15px_23.png} (100%) rename textures/{hdf_24.png => signs_lib_font_15px_24.png} (100%) rename textures/{hdf_25.png => signs_lib_font_15px_25.png} (100%) rename textures/{hdf_26.png => signs_lib_font_15px_26.png} (100%) rename textures/{hdf_27.png => signs_lib_font_15px_27.png} (100%) rename textures/{hdf_28.png => signs_lib_font_15px_28.png} (100%) rename textures/{hdf_29.png => signs_lib_font_15px_29.png} (100%) rename textures/{hdf_2a.png => signs_lib_font_15px_2a.png} (100%) rename textures/{hdf_2b.png => signs_lib_font_15px_2b.png} (100%) rename textures/{hdf_2c.png => signs_lib_font_15px_2c.png} (100%) rename textures/{hdf_2d.png => signs_lib_font_15px_2d.png} (100%) rename textures/{hdf_2e.png => signs_lib_font_15px_2e.png} (100%) rename textures/{hdf_2f.png => signs_lib_font_15px_2f.png} (100%) rename textures/{hdf_30.png => signs_lib_font_15px_30.png} (100%) rename textures/{hdf_31.png => signs_lib_font_15px_31.png} (100%) rename textures/{hdf_32.png => signs_lib_font_15px_32.png} (100%) rename textures/{hdf_33.png => signs_lib_font_15px_33.png} (100%) rename textures/{hdf_34.png => signs_lib_font_15px_34.png} (100%) rename textures/{hdf_35.png => signs_lib_font_15px_35.png} (100%) rename textures/{hdf_36.png => signs_lib_font_15px_36.png} (100%) rename textures/{hdf_37.png => signs_lib_font_15px_37.png} (100%) rename textures/{hdf_38.png => signs_lib_font_15px_38.png} (100%) rename textures/{hdf_39.png => signs_lib_font_15px_39.png} (100%) rename textures/{hdf_3a.png => signs_lib_font_15px_3a.png} (100%) rename textures/{hdf_3b.png => signs_lib_font_15px_3b.png} (100%) rename textures/{hdf_3c.png => signs_lib_font_15px_3c.png} (100%) rename textures/{hdf_3d.png => signs_lib_font_15px_3d.png} (100%) rename textures/{hdf_3e.png => signs_lib_font_15px_3e.png} (100%) rename textures/{hdf_3f.png => signs_lib_font_15px_3f.png} (100%) rename textures/{hdf_40.png => signs_lib_font_15px_40.png} (100%) rename textures/{hdf_41.png => signs_lib_font_15px_41.png} (100%) rename textures/{hdf_42.png => signs_lib_font_15px_42.png} (100%) rename textures/{hdf_43.png => signs_lib_font_15px_43.png} (100%) rename textures/{hdf_44.png => signs_lib_font_15px_44.png} (100%) rename textures/{hdf_45.png => signs_lib_font_15px_45.png} (100%) rename textures/{hdf_46.png => signs_lib_font_15px_46.png} (100%) rename textures/{hdf_47.png => signs_lib_font_15px_47.png} (100%) rename textures/{hdf_48.png => signs_lib_font_15px_48.png} (100%) rename textures/{hdf_49.png => signs_lib_font_15px_49.png} (100%) rename textures/{hdf_4a.png => signs_lib_font_15px_4a.png} (100%) rename textures/{hdf_4b.png => signs_lib_font_15px_4b.png} (100%) rename textures/{hdf_4c.png => signs_lib_font_15px_4c.png} (100%) rename textures/{hdf_4d.png => signs_lib_font_15px_4d.png} (100%) rename textures/{hdf_4e.png => signs_lib_font_15px_4e.png} (100%) rename textures/{hdf_4f.png => signs_lib_font_15px_4f.png} (100%) rename textures/{hdf_50.png => signs_lib_font_15px_50.png} (100%) rename textures/{hdf_51.png => signs_lib_font_15px_51.png} (100%) rename textures/{hdf_52.png => signs_lib_font_15px_52.png} (100%) rename textures/{hdf_53.png => signs_lib_font_15px_53.png} (100%) rename textures/{hdf_54.png => signs_lib_font_15px_54.png} (100%) rename textures/{hdf_55.png => signs_lib_font_15px_55.png} (100%) rename textures/{hdf_56.png => signs_lib_font_15px_56.png} (100%) rename textures/{hdf_57.png => signs_lib_font_15px_57.png} (100%) rename textures/{hdf_58.png => signs_lib_font_15px_58.png} (100%) rename textures/{hdf_59.png => signs_lib_font_15px_59.png} (100%) rename textures/{hdf_5a.png => signs_lib_font_15px_5a.png} (100%) rename textures/{hdf_5b.png => signs_lib_font_15px_5b.png} (100%) rename textures/{hdf_5c.png => signs_lib_font_15px_5c.png} (100%) rename textures/{hdf_5d.png => signs_lib_font_15px_5d.png} (100%) rename textures/{hdf_5e.png => signs_lib_font_15px_5e.png} (100%) rename textures/{hdf_5f.png => signs_lib_font_15px_5f.png} (100%) rename textures/{hdf_60.png => signs_lib_font_15px_60.png} (100%) rename textures/{hdf_61.png => signs_lib_font_15px_61.png} (100%) rename textures/{hdf_62.png => signs_lib_font_15px_62.png} (100%) rename textures/{hdf_63.png => signs_lib_font_15px_63.png} (100%) rename textures/{hdf_64.png => signs_lib_font_15px_64.png} (100%) rename textures/{hdf_65.png => signs_lib_font_15px_65.png} (100%) rename textures/{hdf_66.png => signs_lib_font_15px_66.png} (100%) rename textures/{hdf_67.png => signs_lib_font_15px_67.png} (100%) rename textures/{hdf_68.png => signs_lib_font_15px_68.png} (100%) rename textures/{hdf_69.png => signs_lib_font_15px_69.png} (100%) rename textures/{hdf_6a.png => signs_lib_font_15px_6a.png} (100%) rename textures/{hdf_6b.png => signs_lib_font_15px_6b.png} (100%) rename textures/{hdf_6c.png => signs_lib_font_15px_6c.png} (100%) rename textures/{hdf_6d.png => signs_lib_font_15px_6d.png} (100%) rename textures/{hdf_6e.png => signs_lib_font_15px_6e.png} (100%) rename textures/{hdf_6f.png => signs_lib_font_15px_6f.png} (100%) rename textures/{hdf_70.png => signs_lib_font_15px_70.png} (100%) rename textures/{hdf_71.png => signs_lib_font_15px_71.png} (100%) rename textures/{hdf_72.png => signs_lib_font_15px_72.png} (100%) rename textures/{hdf_73.png => signs_lib_font_15px_73.png} (100%) rename textures/{hdf_74.png => signs_lib_font_15px_74.png} (100%) rename textures/{hdf_75.png => signs_lib_font_15px_75.png} (100%) rename textures/{hdf_76.png => signs_lib_font_15px_76.png} (100%) rename textures/{hdf_77.png => signs_lib_font_15px_77.png} (100%) rename textures/{hdf_78.png => signs_lib_font_15px_78.png} (100%) rename textures/{hdf_79.png => signs_lib_font_15px_79.png} (100%) rename textures/{hdf_7a.png => signs_lib_font_15px_7a.png} (100%) rename textures/{hdf_7b.png => signs_lib_font_15px_7b.png} (100%) rename textures/{hdf_7c.png => signs_lib_font_15px_7c.png} (100%) rename textures/{hdf_7d.png => signs_lib_font_15px_7d.png} (100%) rename textures/{hdf_7e.png => signs_lib_font_15px_7e.png} (100%) rename textures/{hdf_81.png => signs_lib_font_15px_81.png} (100%) rename textures/{hdf_82.png => signs_lib_font_15px_82.png} (100%) rename textures/{hdf_83.png => signs_lib_font_15px_83.png} (100%) rename textures/{hdf_84.png => signs_lib_font_15px_84.png} (100%) rename textures/{hdf_85.png => signs_lib_font_15px_85.png} (100%) rename textures/{hdf_86.png => signs_lib_font_15px_86.png} (100%) rename textures/{hdf_87.png => signs_lib_font_15px_87.png} (100%) rename textures/{hdf_88.png => signs_lib_font_15px_88.png} (100%) rename textures/{hdf_8a.png => signs_lib_font_15px_8a.png} (100%) rename textures/{hdf_8b.png => signs_lib_font_15px_8b.png} (100%) rename textures/{hdf_8c.png => signs_lib_font_15px_8c.png} (100%) rename textures/{hdf_8d.png => signs_lib_font_15px_8d.png} (100%) rename textures/{hdf_8e.png => signs_lib_font_15px_8e.png} (100%) rename textures/{hdf_8f.png => signs_lib_font_15px_8f.png} (100%) rename textures/{hdf_90.png => signs_lib_font_15px_90.png} (100%) rename textures/{hdf_91.png => signs_lib_font_15px_91.png} (100%) rename textures/{hdf_a8.png => signs_lib_font_15px_a8.png} (100%) rename textures/{hdf_b8.png => signs_lib_font_15px_b8.png} (100%) rename textures/{hdf_b9.png => signs_lib_font_15px_b9.png} (100%) rename textures/{hdf_c0.png => signs_lib_font_15px_c0.png} (100%) rename textures/{hdf_c1.png => signs_lib_font_15px_c1.png} (100%) rename textures/{hdf_c2.png => signs_lib_font_15px_c2.png} (100%) rename textures/{hdf_c3.png => signs_lib_font_15px_c3.png} (100%) rename textures/{hdf_c4.png => signs_lib_font_15px_c4.png} (100%) rename textures/{hdf_c5.png => signs_lib_font_15px_c5.png} (100%) rename textures/{hdf_c6.png => signs_lib_font_15px_c6.png} (100%) rename textures/{hdf_c7.png => signs_lib_font_15px_c7.png} (100%) rename textures/{hdf_c8.png => signs_lib_font_15px_c8.png} (100%) rename textures/{hdf_c9.png => signs_lib_font_15px_c9.png} (100%) rename textures/{hdf_ca.png => signs_lib_font_15px_ca.png} (100%) rename textures/{hdf_cb.png => signs_lib_font_15px_cb.png} (100%) rename textures/{hdf_cc.png => signs_lib_font_15px_cc.png} (100%) rename textures/{hdf_cd.png => signs_lib_font_15px_cd.png} (100%) rename textures/{hdf_ce.png => signs_lib_font_15px_ce.png} (100%) rename textures/{hdf_cf.png => signs_lib_font_15px_cf.png} (100%) rename textures/{hdf_d0.png => signs_lib_font_15px_d0.png} (100%) rename textures/{hdf_d1.png => signs_lib_font_15px_d1.png} (100%) rename textures/{hdf_d2.png => signs_lib_font_15px_d2.png} (100%) rename textures/{hdf_d3.png => signs_lib_font_15px_d3.png} (100%) rename textures/{hdf_d4.png => signs_lib_font_15px_d4.png} (100%) rename textures/{hdf_d5.png => signs_lib_font_15px_d5.png} (100%) rename textures/{hdf_d6.png => signs_lib_font_15px_d6.png} (100%) rename textures/{hdf_d7.png => signs_lib_font_15px_d7.png} (100%) rename textures/{hdf_d8.png => signs_lib_font_15px_d8.png} (100%) rename textures/{hdf_d9.png => signs_lib_font_15px_d9.png} (100%) rename textures/{hdf_da.png => signs_lib_font_15px_da.png} (100%) rename textures/{hdf_db.png => signs_lib_font_15px_db.png} (100%) rename textures/{hdf_dc.png => signs_lib_font_15px_dc.png} (100%) rename textures/{hdf_dd.png => signs_lib_font_15px_dd.png} (100%) rename textures/{hdf_de.png => signs_lib_font_15px_de.png} (100%) rename textures/{hdf_df.png => signs_lib_font_15px_df.png} (100%) rename textures/{hdf_e0.png => signs_lib_font_15px_e0.png} (100%) rename textures/{hdf_e1.png => signs_lib_font_15px_e1.png} (100%) rename textures/{hdf_e2.png => signs_lib_font_15px_e2.png} (100%) rename textures/{hdf_e3.png => signs_lib_font_15px_e3.png} (100%) rename textures/{hdf_e4.png => signs_lib_font_15px_e4.png} (100%) rename textures/{hdf_e5.png => signs_lib_font_15px_e5.png} (100%) rename textures/{hdf_e6.png => signs_lib_font_15px_e6.png} (100%) rename textures/{hdf_e7.png => signs_lib_font_15px_e7.png} (100%) rename textures/{hdf_e8.png => signs_lib_font_15px_e8.png} (100%) rename textures/{hdf_e9.png => signs_lib_font_15px_e9.png} (100%) rename textures/{hdf_ea.png => signs_lib_font_15px_ea.png} (100%) rename textures/{hdf_eb.png => signs_lib_font_15px_eb.png} (100%) rename textures/{hdf_ec.png => signs_lib_font_15px_ec.png} (100%) rename textures/{hdf_ed.png => signs_lib_font_15px_ed.png} (100%) rename textures/{hdf_ee.png => signs_lib_font_15px_ee.png} (100%) rename textures/{hdf_ef.png => signs_lib_font_15px_ef.png} (100%) rename textures/{hdf_f0.png => signs_lib_font_15px_f0.png} (100%) rename textures/{hdf_f1.png => signs_lib_font_15px_f1.png} (100%) rename textures/{hdf_f2.png => signs_lib_font_15px_f2.png} (100%) rename textures/{hdf_f3.png => signs_lib_font_15px_f3.png} (100%) rename textures/{hdf_f4.png => signs_lib_font_15px_f4.png} (100%) rename textures/{hdf_f5.png => signs_lib_font_15px_f5.png} (100%) rename textures/{hdf_f6.png => signs_lib_font_15px_f6.png} (100%) rename textures/{hdf_f7.png => signs_lib_font_15px_f7.png} (100%) rename textures/{hdf_f8.png => signs_lib_font_15px_f8.png} (100%) rename textures/{hdf_f9.png => signs_lib_font_15px_f9.png} (100%) rename textures/{hdf_fa.png => signs_lib_font_15px_fa.png} (100%) rename textures/{hdf_fb.png => signs_lib_font_15px_fb.png} (100%) rename textures/{hdf_fc.png => signs_lib_font_15px_fc.png} (100%) rename textures/{hdf_fd.png => signs_lib_font_15px_fd.png} (100%) rename textures/{hdf_fe.png => signs_lib_font_15px_fe.png} (100%) rename textures/{hdf_ff.png => signs_lib_font_15px_ff.png} (100%) create mode 100644 textures/signs_lib_font_31px_20.png create mode 100644 textures/signs_lib_font_31px_21.png create mode 100644 textures/signs_lib_font_31px_22.png create mode 100644 textures/signs_lib_font_31px_23.png create mode 100644 textures/signs_lib_font_31px_24.png create mode 100644 textures/signs_lib_font_31px_25.png create mode 100644 textures/signs_lib_font_31px_26.png create mode 100644 textures/signs_lib_font_31px_27.png create mode 100644 textures/signs_lib_font_31px_28.png create mode 100644 textures/signs_lib_font_31px_29.png create mode 100644 textures/signs_lib_font_31px_2a.png create mode 100644 textures/signs_lib_font_31px_2b.png create mode 100644 textures/signs_lib_font_31px_2c.png create mode 100644 textures/signs_lib_font_31px_2d.png create mode 100644 textures/signs_lib_font_31px_2e.png create mode 100644 textures/signs_lib_font_31px_2f.png create mode 100644 textures/signs_lib_font_31px_30.png create mode 100644 textures/signs_lib_font_31px_31.png create mode 100644 textures/signs_lib_font_31px_32.png create mode 100644 textures/signs_lib_font_31px_33.png create mode 100644 textures/signs_lib_font_31px_34.png create mode 100644 textures/signs_lib_font_31px_35.png create mode 100644 textures/signs_lib_font_31px_36.png create mode 100644 textures/signs_lib_font_31px_37.png create mode 100644 textures/signs_lib_font_31px_38.png create mode 100644 textures/signs_lib_font_31px_39.png create mode 100644 textures/signs_lib_font_31px_3a.png create mode 100644 textures/signs_lib_font_31px_3b.png create mode 100644 textures/signs_lib_font_31px_3c.png create mode 100644 textures/signs_lib_font_31px_3d.png create mode 100644 textures/signs_lib_font_31px_3e.png create mode 100644 textures/signs_lib_font_31px_3f.png create mode 100644 textures/signs_lib_font_31px_40.png create mode 100644 textures/signs_lib_font_31px_41.png create mode 100644 textures/signs_lib_font_31px_42.png create mode 100644 textures/signs_lib_font_31px_43.png create mode 100644 textures/signs_lib_font_31px_44.png create mode 100644 textures/signs_lib_font_31px_45.png create mode 100644 textures/signs_lib_font_31px_46.png create mode 100644 textures/signs_lib_font_31px_47.png create mode 100644 textures/signs_lib_font_31px_48.png create mode 100644 textures/signs_lib_font_31px_49.png create mode 100644 textures/signs_lib_font_31px_4a.png create mode 100644 textures/signs_lib_font_31px_4b.png create mode 100644 textures/signs_lib_font_31px_4c.png create mode 100644 textures/signs_lib_font_31px_4d.png create mode 100644 textures/signs_lib_font_31px_4e.png create mode 100644 textures/signs_lib_font_31px_4f.png create mode 100644 textures/signs_lib_font_31px_50.png create mode 100644 textures/signs_lib_font_31px_51.png create mode 100644 textures/signs_lib_font_31px_52.png create mode 100644 textures/signs_lib_font_31px_53.png create mode 100644 textures/signs_lib_font_31px_54.png create mode 100644 textures/signs_lib_font_31px_55.png create mode 100644 textures/signs_lib_font_31px_56.png create mode 100644 textures/signs_lib_font_31px_57.png create mode 100644 textures/signs_lib_font_31px_58.png create mode 100644 textures/signs_lib_font_31px_59.png create mode 100644 textures/signs_lib_font_31px_5a.png create mode 100644 textures/signs_lib_font_31px_5b.png create mode 100644 textures/signs_lib_font_31px_5c.png create mode 100644 textures/signs_lib_font_31px_5d.png create mode 100644 textures/signs_lib_font_31px_5e.png create mode 100644 textures/signs_lib_font_31px_5f.png create mode 100644 textures/signs_lib_font_31px_60.png create mode 100644 textures/signs_lib_font_31px_61.png create mode 100644 textures/signs_lib_font_31px_62.png create mode 100644 textures/signs_lib_font_31px_63.png create mode 100644 textures/signs_lib_font_31px_64.png create mode 100644 textures/signs_lib_font_31px_65.png create mode 100644 textures/signs_lib_font_31px_66.png create mode 100644 textures/signs_lib_font_31px_67.png create mode 100644 textures/signs_lib_font_31px_68.png create mode 100644 textures/signs_lib_font_31px_69.png create mode 100644 textures/signs_lib_font_31px_6a.png create mode 100644 textures/signs_lib_font_31px_6b.png create mode 100644 textures/signs_lib_font_31px_6c.png create mode 100644 textures/signs_lib_font_31px_6d.png create mode 100644 textures/signs_lib_font_31px_6e.png create mode 100644 textures/signs_lib_font_31px_6f.png create mode 100644 textures/signs_lib_font_31px_70.png create mode 100644 textures/signs_lib_font_31px_71.png create mode 100644 textures/signs_lib_font_31px_72.png create mode 100644 textures/signs_lib_font_31px_73.png create mode 100644 textures/signs_lib_font_31px_74.png create mode 100644 textures/signs_lib_font_31px_75.png create mode 100644 textures/signs_lib_font_31px_76.png create mode 100644 textures/signs_lib_font_31px_77.png create mode 100644 textures/signs_lib_font_31px_78.png create mode 100644 textures/signs_lib_font_31px_79.png create mode 100644 textures/signs_lib_font_31px_7a.png create mode 100644 textures/signs_lib_font_31px_7b.png create mode 100644 textures/signs_lib_font_31px_7c.png create mode 100644 textures/signs_lib_font_31px_7d.png create mode 100644 textures/signs_lib_font_31px_7e.png create mode 100644 textures/signs_lib_font_31px_81.png create mode 100644 textures/signs_lib_font_31px_82.png create mode 100644 textures/signs_lib_font_31px_83.png create mode 100644 textures/signs_lib_font_31px_84.png create mode 100644 textures/signs_lib_font_31px_85.png create mode 100644 textures/signs_lib_font_31px_86.png create mode 100644 textures/signs_lib_font_31px_87.png create mode 100644 textures/signs_lib_font_31px_88.png create mode 100644 textures/signs_lib_font_31px_8a.png create mode 100644 textures/signs_lib_font_31px_8b.png create mode 100644 textures/signs_lib_font_31px_8c.png create mode 100644 textures/signs_lib_font_31px_8d.png create mode 100644 textures/signs_lib_font_31px_8e.png create mode 100644 textures/signs_lib_font_31px_8f.png create mode 100644 textures/signs_lib_font_31px_90.png create mode 100644 textures/signs_lib_font_31px_91.png create mode 100644 textures/signs_lib_pole_mount.png rename textures/{bg_signs_lib.jpg => signs_lib_sign_bg.jpg} (100%) create mode 100644 textures/signs_lib_sign_wall_steel.png create mode 100644 textures/signs_lib_sign_wall_steel_edges.png create mode 100644 textures/signs_lib_sign_wall_steel_inv.png create mode 100644 textures/signs_lib_sign_wall_wooden.png create mode 100644 textures/signs_lib_sign_wall_wooden_edges.png create mode 100644 textures/signs_lib_sign_wall_wooden_inv.png delete mode 100644 textures/signs_locked_inv.png delete mode 100644 textures/signs_metal_back.png delete mode 100644 textures/signs_metal_sides.png delete mode 100644 textures/signs_metal_tb.png delete mode 100644 textures/signs_orange_front.png delete mode 100644 textures/signs_orange_inv.png delete mode 100644 textures/signs_post_back.png delete mode 100644 textures/signs_post_bottom.png delete mode 100644 textures/signs_post_front.png delete mode 100644 textures/signs_post_side.png delete mode 100644 textures/signs_post_top.png delete mode 100644 textures/signs_red_front.png delete mode 100644 textures/signs_red_inv.png delete mode 100644 textures/signs_side.png delete mode 100644 textures/signs_top.png delete mode 100644 textures/signs_wall_sign.png delete mode 100644 textures/signs_wall_sign_locked.png delete mode 100644 textures/signs_wall_sign_metal.png delete mode 100644 textures/signs_white_black_front.png delete mode 100644 textures/signs_white_black_inv.png delete mode 100644 textures/signs_white_red_front.png delete mode 100644 textures/signs_white_red_inv.png delete mode 100644 textures/signs_yellow_front.png delete mode 100644 textures/signs_yellow_inv.png delete mode 100644 textures/slc_0.png delete mode 100644 textures/slc_1.png delete mode 100644 textures/slc_2.png delete mode 100644 textures/slc_3.png delete mode 100644 textures/slc_4.png delete mode 100644 textures/slc_5.png delete mode 100644 textures/slc_6.png delete mode 100644 textures/slc_7.png delete mode 100644 textures/slc_8.png delete mode 100644 textures/slc_9.png delete mode 100644 textures/slc_A.png delete mode 100644 textures/slc_B.png delete mode 100644 textures/slc_C.png delete mode 100644 textures/slc_D.png delete mode 100644 textures/slc_E.png delete mode 100644 textures/slc_F.png delete mode 100644 textures/slc_n.png diff --git a/api.lua b/api.lua new file mode 100644 index 0000000..80e545b --- /dev/null +++ b/api.lua @@ -0,0 +1,663 @@ +-- signs_lib api, backported from street_signs + +local S = signs_lib.gettext + +signs_lib.lbm_restore_nodes = {} +signs_lib.old_fenceposts = {} +signs_lib.old_fenceposts_replacement_signs = {} +signs_lib.old_fenceposts_with_signs = {} +signs_lib.allowed_poles = {} + +-- Settings used for a standard wood or steel wall sign +signs_lib.standard_lines = 6 +signs_lib.standard_hscale = 1.7 +signs_lib.standard_vscale = 1.75 +signs_lib.standard_lspace = 1 +signs_lib.standard_fsize = 15 +signs_lib.standard_xoffs = 5 +signs_lib.standard_yoffs = 38 +signs_lib.standard_cpl = 25 + +signs_lib.standard_wood_groups = {choppy = 2, flammable = 2, oddly_breakable_by_hand = 3} +signs_lib.standard_steel_groups = {cracky = 2, oddly_breakable_by_hand = 3} + +signs_lib.standard_yaw = { + 0, + math.pi / -2, + math.pi, + math.pi / 2, +} + +signs_lib.wallmounted_yaw = { + nil, + nil, + math.pi / -2, + math.pi / 2, + 0, + math.pi, +} + +local wall_dir_change = { + [0] = 2, + 2, + 5, + 4, + 2, + 3, +} + +signs_lib.fdir_to_back = { + { 0, -1 }, + { -1, 0 }, + { 0, 1 }, + { 1, 0 }, +} + +signs_lib.wall_fdir_to_back = { + nil, + nil, + { 0, 1 }, + { 0, -1 }, + { -1, 0 }, + { 1, 0 }, +} + +-- Initialize character texture cache +local ctexcache = {} + +signs_lib.wallmounted_rotate = function(pos, node, user, mode) + if mode ~= screwdriver.ROTATE_FACE then return false end + minetest.swap_node(pos, { name = node.name, param2 = wall_dir_change[node.param2 % 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_lib:text" then + v:remove() + end + end + signs_lib.update_sign(pos) + return true +end + +signs_lib.facedir_rotate = function(pos, node, user, mode) + if mode ~= screwdriver.ROTATE_FACE or not signs_lib.can_modify(pos, user) then return end + newparam2 = ((node.param2 % 6 ) == 0) and 1 or 0 + minetest.swap_node(pos, { name = node.name, param2 = newparam2 }) + for _, v in ipairs(minetest.get_objects_inside_radius(pos, 0.5)) do + local e = v:get_luaentity() + if e and e.name == "signs_lib:text" then + v:remove() + end + end + signs_lib.update_sign(pos) + return true +end + +local DEFAULT_TEXT_SCALE = {x=10, y=10} + +-- infinite stacks + +if not minetest.settings:get_bool("creative_mode") then + signs_lib.expect_infinite_stacks = false +else + signs_lib.expect_infinite_stacks = true +end + +-- CONSTANTS + +-- Path to the textures. +local TP = signs_lib.path .. "/textures" +-- Font file formatter +local CHAR_FILE = "%s_%02x.png" +-- Fonts path +local CHAR_PATH = TP .. "/" .. CHAR_FILE + +-- Lots of overkill here. KISS advocates, go away, shoo! ;) -- kaeza + +local PNG_HDR = string.char(0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A) + +-- check if a file does exist +-- to avoid reopening file after checking again +-- pass TRUE as second argument +local function file_exists(name, return_handle, mode) + mode = mode or "r"; + local f = io.open(name, mode) + if f ~= nil then + if (return_handle) then + return f + end + io.close(f) + return true + else + return false + end +end + +-- Read the image size from a PNG file. +-- Returns image_w, image_h. +-- Only the LSB is read from each field! +function signs_lib.read_image_size(filename) + local f = file_exists(filename, true, "rb") + -- file might not exist (don't crash the game) + if (not f) then + return 0, 0 + end + f:seek("set", 0x0) + local hdr = f:read(string.len(PNG_HDR)) + 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 + +-- 4 rows, max 80 chars per, plus a bit of fudge to +-- avoid excess trimming (e.g. due to color codes) + +local MAX_INPUT_CHARS = 400 + +-- 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(font_size) + + local cw = {} + + -- To calculate average char width. + local total_width = 0 + local char_count = 0 + + for c = 32, 255 do + local w, h = signs_lib.read_image_size(CHAR_PATH:format("signs_lib_font_"..font_size.."px", c)) + if w and h then + local ch = string.char(c) + cw[ch] = w + total_width = total_width + w + char_count = char_count + 1 + end + end + + local cbw, cbh = signs_lib.read_image_size(TP.."/signs_lib_color_"..font_size.."px_n.png") + assert(cbw and cbh, "error reading bg dimensions") + return cw, cbw, cbh, (total_width / char_count) +end + +signs_lib.charwidth15, +signs_lib.colorbgw15, +signs_lib.lineheight15, +signs_lib.avgwidth15 = build_char_db(15) + +signs_lib.charwidth31, +signs_lib.colorbgw31, +signs_lib.lineheight31, +signs_lib.avgwidth31 = build_char_db(31) + +local sign_groups = {choppy=2, dig_immediate=2} +local fences_with_sign = { } + +-- some local helper functions + +local function split_lines_and_words(text) + if not text then return end + 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, font_size, colorbgw) + c = c or "0" + local tex = { } + for xx = 0, math.max(0, w), colorbgw do + table.insert(tex, (":%d,%d=signs_lib_color_"..font_size.."px_%s.png"):format(x + xx, y, c)) + end + return table.concat(tex) +end + +-- make char texture file name +-- if texture file does not exist use fallback texture instead +local function char_tex(font_name, ch) + if ctexcache[font_name..ch] then + return ctexcache[font_name..ch], true + else + local c = ch:byte() + local exists, tex = file_exists(CHAR_PATH:format(font_name, c)) + if exists and c ~= 14 then + tex = CHAR_FILE:format(font_name, c) + else + tex = CHAR_FILE:format(font_name, 0x0) + end + ctexcache[font_name..ch] = tex + return tex, exists + end +end + +local function make_line_texture(line, lineno, pos, line_width, line_height, cwidth_tab, font_size, colorbgw) + local width = 0 + local maxw = 0 + local font_name = "signs_lib_font_"..font_size.."px" + + local words = { } + local node = minetest.get_node(pos) + local def = minetest.registered_items[node.name] + local default_color = def.default_color or 0 + + local cur_color = tonumber(default_color, 16) + + -- We check which chars are available here. + for word_i, word in ipairs(line) do + local chars = { } + local ch_offs = 0 + word = string.gsub(word, "%^[12345678abcdefgh]", { + ["^1"] = string.char(0x81), + ["^2"] = string.char(0x82), + ["^3"] = string.char(0x83), + ["^4"] = string.char(0x84), + ["^5"] = string.char(0x85), + ["^6"] = string.char(0x86), + ["^7"] = string.char(0x87), + ["^8"] = string.char(0x88), + ["^a"] = string.char(0x8a), + ["^b"] = string.char(0x8b), + ["^c"] = string.char(0x8c), + ["^d"] = string.char(0x8d), + ["^e"] = string.char(0x8e), + ["^f"] = string.char(0x8f), + ["^g"] = string.char(0x90), + ["^h"] = string.char(0x91) + }) + 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 = cwidth_tab[c] + if w then + width = width + w + 1 + if width >= (line_width - cwidth_tab[" "]) then + width = 0 + else + maxw = math_max(width, maxw) + end + if #chars < MAX_INPUT_CHARS then + table.insert(chars, { + off = ch_offs, + tex = char_tex(font_name, c), + col = ("%X"):format(cur_color), + }) + end + ch_offs = ch_offs + w + end + end + i = i + 1 + end + width = width + cwidth_tab[" "] + 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((line_width - maxw) / 2) + def.x_offset + + local xpos = start_xpos + local ypos = (line_height + def.line_spacing)* lineno + def.y_offset + + 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", font_size, colorbgw)) + xpos = start_xpos + ypos = ypos + line_height + def.line_spacing + lineno = lineno + 1 + if lineno >= def.number_of_lines then break end + table.insert(texture, fill_line(xpos, ypos, maxw, cur_color, font_size, colorbgw)) + 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, font_size, colorbgw)) + end + table.insert(texture, (":%d,%d=%s"):format(xpos + ch.off, ypos, ch.tex)) + end + table.insert( + texture, + (":%d,%d="):format(xpos + word.w, ypos) .. char_tex(font_name, " ") + ) + xpos = xpos + word.w + cwidth_tab[" "] + if xpos >= (line_width + cwidth_tab[" "]) then break end + end + + table.insert(texture, fill_line(xpos, ypos, maxw, "n", font_size, colorbgw)) + table.insert(texture, fill_line(start_xpos, ypos + line_height, maxw, "n", font_size, colorbgw)) + + return table.concat(texture), lineno +end + +local function make_sign_texture(lines, pos) + local node = minetest.get_node(pos) + local def = minetest.registered_items[node.name] + + local font_size + local line_width + local line_height + local char_width + local colorbgw + + if def.font_size and def.font_size == 31 then + font_size = 31 + line_width = math.floor(signs_lib.avgwidth31 * def.chars_per_line) * def.horiz_scaling + line_height = signs_lib.lineheight31 + char_width = signs_lib.charwidth31 + colorbgw = signs_lib.colorbgw31 + else + font_size = 15 + line_width = math.floor(signs_lib.avgwidth15 * def.chars_per_line) * def.horiz_scaling + line_height = signs_lib.lineheight15 + char_width = signs_lib.charwidth15 + colorbgw = signs_lib.colorbgw15 + end + + local texture = { ("[combine:%dx%d"):format(line_width, (line_height + def.line_spacing) * def.number_of_lines * def.vert_scaling) } + + local lineno = 0 + for i = 1, #lines do + if lineno >= def.number_of_lines then break end + local linetex, ln = make_line_texture(lines[i], lineno, pos, line_width, line_height, char_width, font_size, colorbgw) + 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, x, pos) + local split = split_lines_and_words + local text_ansi = Utf8ToAnsi(text) + local n = minetest.registered_nodes[minetest.get_node(pos).name] + local text_scale = (n and n.text_scale) or DEFAULT_TEXT_SCALE + local texture = make_sign_texture(split(text_ansi), pos) + obj:set_properties({ + textures={texture}, + visual_size = text_scale, + }) +end + +signs_lib.construct_sign = function(pos) + 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;"..S("Write").."]".. + "background[-0.5,-0.5;7,5;signs_lib_sign_bg.jpg]") + meta:set_string("infotext", "") +end + +function signs_lib.destruct_sign(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_lib: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 + +function signs_lib.update_sign(pos, fields) + local meta = minetest.get_meta(pos) + + local text = fields and fields.text or meta:get_string("text") + text = trim_input(text) + + local owner = meta:get_string("owner") + ownstr = "" + if owner ~= "" then ownstr = S("Locked sign, owned by @1\n", owner) end + + meta:set_string("text", text) + meta:set_string("infotext", ownstr..make_infotext(text).." ") + + 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_lib:text" then + if found then + v:remove() + else + set_obj_text(v, text, nil, pos) + found = true + end + end + end + if found then + return + end + + -- if there is no entity + local signnode = minetest.get_node(pos) + local signname = signnode.name + local def = minetest.registered_items[signname] + if not def.entity_info or not def.entity_info.yaw[signnode.param2 + 1] then return end + local obj = minetest.add_entity(pos, "signs_lib:text") + + obj:setyaw(def.entity_info.yaw[signnode.param2 + 1]) + obj:set_properties({ + mesh = def.entity_info.mesh, + }) +end + +function signs_lib.receive_fields(pos, formname, fields, sender) + if fields and fields.text and fields.ok and signs_lib.can_modify(pos, sender) then + minetest.log("action", S("@1 wrote \"@2\" to sign at @3", + (sender:get_player_name() or ""), + fields.text:gsub('\\', '\\\\'):gsub("\n", "\\n"), + minetest.pos_to_string(pos) + )) + signs_lib.update_sign(pos, fields) + end +end + +function signs_lib.can_modify(pos, player) + local meta = minetest.get_meta(pos) + local owner = meta:get_string("owner") + local playername = player:get_player_name() + + if minetest.is_protected(pos, playername) then + minetest.record_protection_violation(pos, playername) + return false + end + + if owner == "" + or playername == owner + or (minetest.check_player_privs(playername, {sign_editor=true})) + or (playername == minetest.settings:get("name")) then + return true + end + minetest.record_protection_violation(pos, playername) + return false +end + +local signs_text_on_activate = function(self) + local pos = self.object:getpos() + local meta = minetest.get_meta(pos) + local signnode = minetest.get_node(pos) + local signname = signnode.name + local def = minetest.registered_items[signname] + local text = meta:get_string("text") + if text and def and def.entity_info then + text = trim_input(text) + set_obj_text(self.object, text, nil, pos) + self.object:set_properties({ + mesh = def.entity_info.mesh, + }) + end +end + +minetest.register_entity("signs_lib:text", { + collisionbox = { 0, 0, 0, 0, 0, 0 }, + visual = "mesh", + mesh = "signs_lib_basic_entity.obj", + textures = {}, + on_activate = signs_text_on_activate, +}) + +-- make selection boxes +-- sizex/sizey specified in inches because that's what MUTCD uses. + +function signs_lib.make_selection_boxes(sizex, sizey, onpole, xoffs, yoffs, zoffs, fdir) + + local tx = (sizex * 0.0254 ) / 2 + local ty = (sizey * 0.0254 ) / 2 + local xo = xoffs and xoffs * 0.0254 or 0 + local yo = yoffs and yoffs * 0.0254 or 0 + local zo = zoffs and zoffs * 0.0254 or 0 + + if onpole == "_onpole" then + if not fdir then + return { + type = "wallmounted", + wall_side = { -0.5 - 0.3125 + zo, -ty + yo, -tx + xo, -0.4375 - 0.3125 + zo, ty + yo , tx + xo }, + wall_top = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + wall_bottom = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + } + else + return { + type = "fixed", + fixed = { -tx + xo, -ty + yo, 0.5 + 0.3125 + zo, tx + xo, ty + yo, 0.4375 + 0.3125 + zo } + } + end + else + if not fdir then + return { + type = "wallmounted", + wall_side = { -0.5, -ty, -tx, -0.4375, ty, tx }, + wall_top = { -tx - xo, 0.5 + zo, -ty + yo, tx - xo, 0.4375 + zo, ty + yo}, + wall_bottom = { -tx - xo, -0.5 + zo, -ty + yo, tx - xo, -0.4375 + zo, ty + yo } + } + else + return { + type = "fixed", + fixed = { -tx + xo, -ty + yo, 0.5 + zo, tx + xo, ty + yo, 0.4375 + zo} + } + end + end +end + +function signs_lib.check_for_pole(pos, pointed_thing) + local ppos = minetest.get_pointed_thing_position(pointed_thing) + local pnode = minetest.get_node(ppos) + local pdef = minetest.registered_items[pnode.name] + + if signs_lib.allowed_poles[pnode.name] + or (pdef and pdef.drawtype == "fencelike") + or string.find(pnode.name, "default:fence_") + or string.find(pnode.name, "_post") + or string.find(pnode.name, "fencepost") + or (pnode.name == "streets:bigpole" and pnode.param2 < 4) + or (pnode.name == "streets:bigpole" and pnode.param2 > 19 and pnode.param2 < 24) then + return true + end +end + +function signs_lib.after_place_node(pos, placer, itemstack, pointed_thing, locked) + local ppos = minetest.get_pointed_thing_position(pointed_thing) + local pnode = minetest.get_node(ppos) + local pdef = minetest.registered_items[pnode.name] + local playername = placer:get_player_name() + + if signs_lib.check_for_pole(pos, pointed_thing) then + local node = minetest.get_node(pos) + minetest.swap_node(pos, {name = itemstack:get_name().."_onpole", param2 = node.param2}) + end + if locked then + local meta = minetest.get_meta(pos) + meta:set_string("owner", playername) + meta:set_string("infotext", S("Locked sign, owned by @1\n", playername)) + end +end + +function signs_lib.register_fence_with_sign() + minetest.log("warning", "[signs_lib] ".."Attempt to call no longer used function signs_lib.register_fence_with_sign()") +end + +-- restore signs' text after /clearobjects and the like, the next time +-- a block is reloaded by the server. + +minetest.register_lbm({ + nodenames = signs_lib.lbm_restore_nodes, + name = "signs_lib:restore_sign_text", + label = "Restore sign text", + run_at_every_load = true, + action = function(pos, node) + signs_lib.update_sign(pos,nil,nil,node) + end +}) + +-- Convert old signs on fenceposts into signs on.. um.. fence posts :P + +minetest.register_lbm({ + nodenames = signs_lib.old_fenceposts_with_signs, + name = "signs_lib:fix_fencepost_signs", + label = "Change single-node signs on fences into normal", + run_at_every_load = true, + action = function(pos, node) + + local fdir = node.param2 % 8 + local signpos = { + x = pos.x + signs_lib.fdir_to_back[fdir+1][1], + y = pos.y, + z = pos.z + signs_lib.fdir_to_back[fdir+1][2] + } + + if minetest.get_node(signpos).name == "air" then + local new_wmdir = minetest.dir_to_wallmounted(minetest.facedir_to_dir(fdir)) + local oldfence = signs_lib.old_fenceposts[node.name] + local newsign = signs_lib.old_fenceposts_replacement_signs[node.name] + + for _, v in ipairs(minetest.get_objects_inside_radius(pos, 0.5)) do + local e = v:get_luaentity() + if e and e.name == "signs_lib:text" then + v:remove() + end + end + + local oldmeta = minetest.get_meta(pos):to_table() + minetest.set_node(pos, {name = oldfence}) + minetest.set_node(signpos, { name = newsign, param2 = new_wmdir }) + local newmeta = minetest.get_meta(signpos) + newmeta:from_table(oldmeta) + signs_lib.update_sign(signpos) + end + end +}) diff --git a/depends.txt b/depends.txt index 6937007..c0dd3b0 100644 --- a/depends.txt +++ b/depends.txt @@ -1,6 +1,3 @@ default -basic_materials intllib? screwdriver? -keyword_interact? -craft_guide? diff --git a/encoding.lua b/encoding.lua index 16e35fe..b398c46 100644 --- a/encoding.lua +++ b/encoding.lua @@ -1,4 +1,4 @@ --- encoding borrowed from signs_lib mod of https://github.com/lord-server/lord +-- encoding borrowed from signs_lib fork at https://github.com/lord-server/lord local ansi_decode = { [128] = "\208\130", diff --git a/init.lua b/init.lua index b399d07..152cf1f 100644 --- a/init.lua +++ b/init.lua @@ -3,1279 +3,13 @@ -- 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 } --- } --- Made colored metal signs optionals -local enable_colored_metal_signs = true - --- CWz's keyword interact mod uses this setting. -local current_keyword = minetest.settings:get("interact_keyword") or "iaccept" - signs_lib = {} -signs_lib.path = minetest.get_modpath(minetest.get_current_modname()) -screwdriver = screwdriver or {} --- Load support for intllib. +signs_lib.path = minetest.get_modpath(minetest.get_current_modname()) + local S, NS = dofile(signs_lib.path .. "/intllib.lua") signs_lib.gettext = S --- text encoding -dofile(signs_lib.path .. "/encoding.lua"); - --- Initialize character texture cache -local ctexcache = {} - - -local wall_dir_change = { - [0] = 4, - 0, - 5, - 1, - 2, - 3, - 0 -} - -signs_lib.wallmounted_rotate = function(pos, node, user, mode) - if minetest.is_protected(pos, user:get_player_name()) then - minetest.record_protection_violation(pos, - sender:get_player_name()) - return false - end - if mode ~= screwdriver.ROTATE_FACE then return false end - minetest.swap_node(pos, { name = node.name, param2 = wall_dir_change[node.param2 % 6] }) - signs_lib.update_sign(pos,nil,nil,node) - return true -end - -signs_lib.facedir_rotate = function(pos, node, user, mode) - if minetest.is_protected(pos, user:get_player_name()) then - minetest.record_protection_violation(pos, - sender:get_player_name()) - return false - end - if mode ~= screwdriver.ROTATE_FACE then return false end - local newparam2 = (node.param2 %8) + 1 - if newparam2 == 5 then - newparam2 = 6 - elseif newparam2 > 6 then - newparam2 = 0 - end - minetest.swap_node(pos, { name = node.name, param2 = newparam2 }) - signs_lib.update_sign(pos,nil,nil,node) - return true -end - -signs_lib.facedir_rotate_simple = function(pos, node, user, mode) - if minetest.is_protected(pos, user:get_player_name()) then - minetest.record_protection_violation(pos, - sender:get_player_name()) - return false - end - if mode ~= screwdriver.ROTATE_FACE then return false end - local newparam2 = (node.param2 %8) + 1 - if newparam2 > 3 then newparam2 = 0 end - minetest.swap_node(pos, { name = node.name, param2 = newparam2 }) - signs_lib.update_sign(pos,nil,nil,node) - return true -end - - -signs_lib.modpath = minetest.get_modpath("signs_lib") - -local DEFAULT_TEXT_SCALE = {x=0.8, y=0.5} - -signs_lib.regular_wall_sign_model = { - nodebox = { - type = "wallmounted", - 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.41, y = 0.07, z = 0 }, yaw = math.pi / -2}, - {delta = { x = -0.41, y = 0.07, z = 0 }, yaw = math.pi / 2}, - {delta = { x = 0, y = 0.07, z = 0.41 }, yaw = 0}, - {delta = { x = 0, y = 0.07, z = -0.41 }, yaw = math.pi}, - } -} - -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.41 }, yaw = 0}, - {delta = { x = 0.41, y = 0.07, z = 0 }, yaw = math.pi / -2}, - {delta = { x = 0, y = 0.07, z = -0.41 }, yaw = math.pi}, - {delta = { x = -0.41, y = 0.07, z = 0 }, yaw = math.pi / 2}, - } -} - -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.08 }, yaw = 0}, - {delta = { x = -0.08, y = 0.07, z = 0 }, yaw = math.pi / -2}, - {delta = { x = 0, y = 0.07, z = 0.08 }, yaw = math.pi}, - {delta = { x = 0.08, y = 0.07, z = 0 }, yaw = math.pi / 2}, - } -} - -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.08 }, yaw = 0}, - {delta = { x = -0.08, y = -0.02, z = 0 }, yaw = math.pi / -2}, - {delta = { x = 0, y = -0.02, z = 0.08 }, yaw = math.pi}, - {delta = { x = 0.08, y = -0.02, z = 0 }, yaw = math.pi / 2}, - } -} - -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.2 }, yaw = 0}, - {delta = { x = -0.2, y = 0.07, z = 0 }, yaw = math.pi / -2}, - {delta = { x = 0, y = 0.07, z = 0.2 }, yaw = math.pi}, - {delta = { x = 0.2, y = 0.07, z = 0 }, yaw = math.pi / 2}, - } -} - --- the list of standard sign nodes - -local default_sign = "default:sign_wall_wood" -local default_sign_image = "default_sign_wood.png" - -local default_sign_metal = "default:sign_wall_steel" -local default_sign_metal_image = "default_sign_steel.png" - -signs_lib.sign_node_list = { - default_sign, - default_sign_metal, - "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 not minetest.settings:get_bool("creative_mode") then - signs_lib.expect_infinite_stacks = false -else - signs_lib.expect_infinite_stacks = true -end - --- CONSTANTS - --- Path to the textures. -local TP = signs_lib.path .. "/textures" --- Font file formatter -local CHAR_FILE = "%s_%02x.png" --- Fonts path -local CHAR_PATH = TP .. "/" .. CHAR_FILE - --- Font name. -local font_name = "hdf" - --- Lots of overkill here. KISS advocates, go away, shoo! ;) -- kaeza - -local PNG_HDR = string.char(0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A) - --- check if a file does exist --- to avoid reopening file after checking again --- pass TRUE as second argument -function file_exists(name, return_handle, mode) - mode = mode or "r"; - local f = io.open(name, mode) - if f ~= nil then - if (return_handle) then - return f - end - io.close(f) - return true - else - return false - end -end - --- 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 = file_exists(filename, true, "rb") - -- file might not exist (don't crash the game) - if (not f) then - return 0, 0 - end - f:seek("set", 0x0) - local hdr = f:read(string.len(PNG_HDR)) - 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, 255 do - local w, h = read_image_size(CHAR_PATH:format(font_name, 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 - --- make char texture file name --- if texture file does not exist use fallback texture instead -local function char_tex(font_name, ch) - if ctexcache[font_name..ch] then - return ctexcache[font_name..ch], true - else - local c = ch:byte() - local exists, tex = file_exists(CHAR_PATH:format(font_name, c)) - if exists and c ~= 14 then - tex = CHAR_FILE:format(font_name, c) - else - tex = CHAR_FILE:format(font_name, 0x0) - end - ctexcache[font_name..ch] = tex - return tex, exists - end -end - -local function make_line_texture(line, lineno, pos) - - local width = 0 - local maxw = 0 - - local words = { } - local n = minetest.registered_nodes[minetest.get_node(pos).name] - local default_color = n.default_color or 0 - - local cur_color = tonumber(default_color, 16) - - -- We check which chars are available here. - for word_i, word in ipairs(line) do - local chars = { } - local ch_offs = 0 - word = string.gsub(word, "%^[12345678abcdefgh]", { - ["^1"] = string.char(0x81), - ["^2"] = string.char(0x82), - ["^3"] = string.char(0x83), - ["^4"] = string.char(0x84), - ["^5"] = string.char(0x85), - ["^6"] = string.char(0x86), - ["^7"] = string.char(0x87), - ["^8"] = string.char(0x88), - ["^a"] = string.char(0x8a), - ["^b"] = string.char(0x8b), - ["^c"] = string.char(0x8c), - ["^d"] = string.char(0x8d), - ["^e"] = string.char(0x8e), - ["^f"] = string.char(0x8f), - ["^g"] = string.char(0x90), - ["^h"] = string.char(0x91) - }) - 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 = char_tex(font_name, c), - 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="):format(xpos + word.w, ypos) .. char_tex(font_name, " ") - ) - 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, pos) - local texture = { ("[combine:%dx%d"):format(SIGN_WIDTH, LINE_HEIGHT * NUMBER_OF_LINES) } - local lineno = 0 - for i = 1, #lines do - if lineno >= NUMBER_OF_LINES then break end - local linetex, ln = make_line_texture(lines[i], lineno, pos) - 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, pos) - local split = new and split_lines_and_words or split_lines_and_words_old - local text_ansi = Utf8ToAnsi(text) - local n = minetest.registered_nodes[minetest.get_node(pos).name] - local text_scale = (n and n.text_scale) or DEFAULT_TEXT_SCALE - obj:set_properties({ - textures={make_sign_texture(split(text_ansi), pos)}, - 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;"..S("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, node) - - -- 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 = S("Locked sign, owned by @1\n", owner) end - meta:set_string("infotext", ownstr..string.gsub(make_infotext(stored_text), "@KEYWORD", current_keyword).." ") - end - end - - local new - - if fields then - - fields.text = trim_input(fields.text) - - local ownstr = "" - if owner then ownstr = S("Locked sign, owned by @1\n", owner) end - - meta:set_string("infotext", ownstr..string.gsub(make_infotext(fields.text), "@KEYWORD", current_keyword).." ") - meta:set_string("text", fields.text) - - meta:set_int("__signslib_new_format", 1) - new = true - else - new = (meta:get_int("__signslib_new_format") ~= 0) - end - signs_lib.destruct_sign(pos) - local text = meta:get_string("text") - if text == nil or text == "" then return end - local sign_info - local signnode = node or minetest.get_node(pos) - local signname = signnode.name - local textpos = minetest.registered_nodes[signname].textpos - if textpos then - sign_info = textpos[minetest.get_node(pos).param2 + 1] - elseif signnode.name == "signs:sign_yard" then - sign_info = signs_lib.yard_sign_model.textpos[minetest.get_node(pos).param2 + 1] - elseif signnode.name == "signs:sign_hanging" then - sign_info = signs_lib.hanging_sign_model.textpos[minetest.get_node(pos).param2 + 1] - elseif string.find(signnode.name, "sign_wall") then - if signnode.name == default_sign - or signnode.name == default_sign_metal - or signnode.name == "locked_sign:sign_wall_locked" then - sign_info = signs_lib.regular_wall_sign_model.textpos[minetest.get_node(pos).param2 + 1] - else - 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 and - not placer:get_player_control().sneak then - return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack, pointed_thing) - else - local above = pointed_thing.above - 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 finalpos = above - - 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 then - minetest.add_node(under, {name = fences_with_sign[pt_name], param2 = fdir}) - finalpos = under - elseif wdir == 0 and signname == default_sign then - minetest.add_node(above, {name = "signs:sign_hanging", param2 = fdir}) - elseif wdir == 1 and signname == default_sign then - minetest.add_node(above, {name = "signs:sign_yard", param2 = fdir}) - elseif signname == default_sign - or signname == default_sign_metal - or signname == "locked_sign:sign_wall_locked" then - minetest.add_node(above, {name = signname, param2 = wdir }) - else - minetest.add_node(above, {name = signname, param2 = fdir}) -- it must be a colored metal sign - end - - if locked then - local meta = minetest.get_meta(finalpos) - local owner = placer:get_player_name() - meta:set_string("owner", owner) - 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 S("locked ") or "" - if fields and fields.text and fields.ok then - minetest.log("action", S("@1 wrote \"@2\" to @3sign at @4", - (sender:get_player_name() or ""), - fields.text:gsub('\\', '\\\\'):gsub("\n", "\\n"), - lockstr, - 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, { - description = S("Sign"), - inventory_image = default_sign_image, - wield_image = default_sign_image, - node_placement_prediction = "", - sunlight_propagates = true, - paramtype = "light", - paramtype2 = "wallmounted", - drawtype = "nodebox", - node_box = signs_lib.regular_wall_sign_model.nodebox, - tiles = {"signs_wall_sign.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,nil,nil,node) - 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, - - 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,nil,nil,node) - end, - on_rotate = signs_lib.facedir_rotate_simple - -}) - -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, - - 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,nil,nil,node) - end, - on_rotate = signs_lib.facedir_rotate_simple -}) - -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 }}, - { items = { "default:fence_wood" }}, - }, - }, - on_rotate = signs_lib.facedir_rotate_simple -}) - --- Locked wall sign - -minetest.register_privilege("sign_editor", S("Can edit all locked signs")) - -minetest.register_node(":locked_sign:sign_wall_locked", { - description = S("Locked 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.settings: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,nil,nil,node) - 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.settings:get("name") - or minetest.check_player_privs(pname, {sign_editor=true}) - end, - on_rotate = function(pos, node, user, mode) - local meta = minetest.get_meta(pos) - local owner = meta:get_string("owner") - if owner == user:get_player_name() then - signs_lib.wallmounted_rotate(pos, node, user, mode) - else - return false - end - end -}) - --- default metal sign - -minetest.register_node(":"..default_sign_metal, { - description = S("Sign"), - inventory_image = default_sign_metal_image, - wield_image = default_sign_metal_image, - node_placement_prediction = "", - sunlight_propagates = true, - paramtype = "light", - paramtype2 = "wallmounted", - drawtype = "nodebox", - node_box = signs_lib.regular_wall_sign_model.nodebox, - tiles = {"signs_wall_sign_metal.png"}, - groups = sign_groups, - on_place = function(itemstack, placer, pointed_thing) - return signs_lib.determine_sign_type(itemstack, placer, pointed_thing, 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.settings: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,nil,nil,node) - 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.settings:get("name") - or minetest.check_player_privs(pname, {sign_editor=true}) - end, - on_rotate = function(pos, node, user, mode) - local meta = minetest.get_meta(pos) - local owner = meta:get_string("owner") - if owner == user:get_player_name() then - signs_lib.wallmounted_rotate(pos, node, user, mode) - else - return false - end - end -}) - --- metal, colored signs -if enable_colored_metal_signs then - -- array : color, translated color, default text color - local sign_colors = { - {"green", S("green"), "f"}, - {"yellow", S("yellow"), "0"}, - {"red", S("red"), "f"}, - {"white_red", S("white_red"), "4"}, - {"white_black", S("white_black"), "0"}, - {"orange", S("orange"), "0"}, - {"blue", S("blue"), "f"}, - {"brown", S("brown"), "f"}, - } - - for i, color in ipairs(sign_colors) do - minetest.register_node(":signs:sign_wall_"..color[1], { - description = S("Sign (@1, metal)", color[2]), - inventory_image = "signs_"..color[1].."_inv.png", - wield_image = "signs_"..color[1].."_inv.png", - node_placement_prediction = "", - paramtype = "light", - sunlight_propagates = true, - 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[1].."_front.png" - }, - default_color = color[3], - 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,nil,nil,node) - end, - on_rotate = signs_lib.facedir_rotate - }) - end -end - -local signs_text_on_activate - -signs_text_on_activate = function(self) - local pos = self.object:getpos() - local meta = minetest.get_meta(pos) - local text = meta:get_string("text") - local new = (meta:get_int("__signslib_new_format") ~= 0) - if text and minetest.registered_nodes[minetest.get_node(pos).name] then - text = trim_input(text) - set_obj_text(self.object, text, new, pos) - 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] "..S("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, pointed_thing) or itemstack - elseif def_under and def_under.buildable_to then - minetest.add_node(pointed_thing.under, {name = fencename, param2 = fdir}) - if not signs_lib.expect_infinite_stacks then - 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,nil,nil,node) - end - local fencename = fencename - def_sign.after_dig_node = function(pos, node, ...) - node.name = fencename - minetest.add_node(pos, node) - end - def_sign.on_rotate = signs_lib.facedir_rotate_simple - - def_sign.drop = default_sign - minetest.register_node(":"..fencewithsignname, def_sign) - table.insert(signs_lib.sign_node_list, fencewithsignname) - minetest.log("verbose", S("Registered @1 and @2", 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, the next time --- a block is reloaded by the server. - -minetest.register_lbm({ - nodenames = signs_lib.sign_node_list, - name = "signs_lib:restore_sign_text", - label = "Restore sign text", - run_at_every_load = true, - action = function(pos, node) - signs_lib.update_sign(pos,nil,nil,node) - end -}) - --- locked sign - -minetest.register_craft({ - output = "locked_sign:sign_wall_locked", - recipe = { - {default_sign}, - {"basic_materials:padlock"}, - }, -}) - --- craft recipes for the metal signs -if enable_colored_metal_signs then - - minetest.register_craft( { - output = "signs:sign_wall_green", - recipe = { - { "dye:dark_green", "dye:white", "dye:dark_green" }, - { "", default_sign_metal, "" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_green 2", - recipe = { - { "dye:dark_green", "dye:white", "dye:dark_green" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_yellow", - recipe = { - { "dye:yellow", "dye:black", "dye:yellow" }, - { "", default_sign_metal, "" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_yellow 2", - recipe = { - { "dye:yellow", "dye:black", "dye:yellow" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_red", - recipe = { - { "dye:red", "dye:white", "dye:red" }, - { "", default_sign_metal, "" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_red 2", - recipe = { - { "dye:red", "dye:white", "dye:red" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_white_red", - recipe = { - { "dye:white", "dye:red", "dye:white" }, - { "", default_sign_metal, "" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_white_red 2", - recipe = { - { "dye:white", "dye:red", "dye:white" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_white_black", - recipe = { - { "dye:white", "dye:black", "dye:white" }, - { "", default_sign_metal, "" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_white_black 2", - recipe = { - { "dye:white", "dye:black", "dye:white" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_orange", - recipe = { - { "dye:orange", "dye:black", "dye:orange" }, - { "", default_sign_metal, "" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_orange 2", - recipe = { - { "dye:orange", "dye:black", "dye:orange" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_blue", - recipe = { - { "dye:blue", "dye:white", "dye:blue" }, - { "", default_sign_metal, "" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_blue 2", - recipe = { - { "dye:blue", "dye:white", "dye:blue" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_brown", - recipe = { - { "dye:brown", "dye:white", "dye:brown" }, - { "", default_sign_metal, "" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_brown 2", - recipe = { - { "dye:brown", "dye:white", "dye:brown" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, - }) -end - -if minetest.settings:get("log_mods") then - minetest.log("action", S("[MOD] signs loaded")) -end +dofile(signs_lib.path.."/api.lua") +dofile(signs_lib.path.."/encoding.lua") +dofile(signs_lib.path.."/standard_signs.lua") diff --git a/models/signs_lib_standard_wall_sign.obj b/models/signs_lib_standard_wall_sign.obj new file mode 100644 index 0000000..639444f --- /dev/null +++ b/models/signs_lib_standard_wall_sign.obj @@ -0,0 +1,52 @@ +# Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden wall sign.blend' +# www.blender.org +o Cube +v 0.437500 -0.500000 -0.312500 +v 0.437500 -0.437500 -0.312500 +v 0.437500 -0.500000 0.312500 +v 0.437500 -0.437500 0.312500 +v -0.437500 -0.500000 -0.312500 +v -0.437500 -0.437500 -0.312500 +v -0.437500 -0.500000 0.312500 +v -0.437500 -0.437500 0.312500 +v 0.437500 -0.500000 -0.312500 +v 0.437500 -0.437500 -0.312500 +v 0.437500 -0.500000 0.312500 +v 0.437500 -0.437500 0.312500 +v -0.437500 -0.500000 -0.312500 +v -0.437500 -0.437500 -0.312500 +v -0.437500 -0.500000 0.312500 +v -0.437500 -0.437500 0.312500 +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 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.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 diff --git a/models/signs_lib_standard_wall_sign_entity.obj b/models/signs_lib_standard_wall_sign_entity.obj new file mode 100644 index 0000000..ca7eddb --- /dev/null +++ b/models/signs_lib_standard_wall_sign_entity.obj @@ -0,0 +1,15 @@ +# Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden wall sign--entity.blend' +# www.blender.org +o Cube +v 0.406250 -0.281250 0.429687 +v 0.406250 0.281250 0.429688 +v -0.406250 -0.281250 0.429687 +v -0.406250 0.281250 0.429688 +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/signs_lib_standard_wall_sign_entity_onpole.obj b/models/signs_lib_standard_wall_sign_entity_onpole.obj new file mode 100644 index 0000000..2be0885 --- /dev/null +++ b/models/signs_lib_standard_wall_sign_entity_onpole.obj @@ -0,0 +1,15 @@ +# Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden wall sign.blend' +# www.blender.org +o Cube +v 0.406250 -0.281250 0.742188 +v 0.406250 0.281250 0.742188 +v -0.406250 -0.281250 0.742188 +v -0.406250 0.281250 0.742188 +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/signs_lib_standard_wall_sign_facedir.obj b/models/signs_lib_standard_wall_sign_facedir.obj new file mode 100644 index 0000000..90dbeee --- /dev/null +++ b/models/signs_lib_standard_wall_sign_facedir.obj @@ -0,0 +1,52 @@ +# Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden wall sign--facedir.blend' +# www.blender.org +o Cube +v 0.437500 -0.312500 0.500000 +v 0.437500 -0.312500 0.437500 +v 0.437500 0.312500 0.500000 +v 0.437500 0.312500 0.437500 +v -0.437500 -0.312500 0.500000 +v -0.437500 -0.312500 0.437500 +v -0.437500 0.312500 0.500000 +v -0.437500 0.312500 0.437500 +v 0.437500 -0.312500 0.500000 +v 0.437500 -0.312500 0.437500 +v 0.437500 0.312500 0.500000 +v 0.437500 0.312500 0.437500 +v -0.437500 -0.312500 0.500000 +v -0.437500 -0.312500 0.437500 +v -0.437500 0.312500 0.500000 +v -0.437500 0.312500 0.437500 +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 +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 diff --git a/models/signs_lib_standard_wall_sign_facedir_onpole.obj b/models/signs_lib_standard_wall_sign_facedir_onpole.obj new file mode 100644 index 0000000..264ceb7 --- /dev/null +++ b/models/signs_lib_standard_wall_sign_facedir_onpole.obj @@ -0,0 +1,254 @@ +# Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden wall sign--facedir.blend' +# www.blender.org +o Cube +v 0.437500 -0.312500 0.812500 +v 0.437500 -0.312500 0.750000 +v 0.437500 0.312500 0.812500 +v 0.437500 0.312500 0.750000 +v -0.437500 -0.312500 0.812500 +v -0.437500 -0.312500 0.750000 +v -0.437500 0.312500 0.812500 +v -0.437500 0.312500 0.750000 +v 0.437500 -0.312500 0.812500 +v 0.437500 -0.312500 0.750000 +v 0.437500 0.312500 0.812500 +v 0.437500 0.312500 0.750000 +v -0.437500 -0.312500 0.812500 +v -0.437500 -0.312500 0.750000 +v -0.437500 0.312500 0.812500 +v -0.437500 0.312500 0.750000 +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 +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 +o Cube.001 +v -0.125000 -0.187500 0.812500 +v -0.125000 -0.187500 0.875000 +v -0.125000 0.187500 0.812500 +v -0.125000 0.187500 0.875000 +v 0.125000 0.187500 0.812500 +v 0.125000 -0.187500 0.812500 +v 0.125000 -0.187500 0.875000 +v 0.125000 0.187500 0.875000 +v -0.125000 -0.187500 1.125000 +v -0.125000 -0.187500 0.812500 +v -0.125000 -0.125000 1.125000 +v -0.125000 -0.125000 0.812500 +v -0.164063 -0.187500 1.125000 +v -0.164063 -0.187500 0.812500 +v -0.164063 -0.125000 1.125000 +v -0.164063 -0.125000 0.812500 +v -0.125000 0.125000 1.125000 +v -0.125000 0.125000 0.812500 +v -0.125000 0.187500 1.125000 +v -0.125000 0.187500 0.812500 +v -0.164063 0.125000 1.125000 +v -0.164063 0.125000 0.812500 +v -0.164063 0.187500 1.125000 +v -0.164063 0.187500 0.812500 +v 0.164062 -0.187500 1.125000 +v 0.164062 -0.187500 0.812500 +v 0.164062 -0.125000 1.125000 +v 0.164062 -0.125000 0.812500 +v 0.125000 -0.187500 1.125000 +v 0.125000 -0.187500 0.812500 +v 0.125000 -0.125000 1.125000 +v 0.125000 -0.125000 0.812500 +v 0.164062 0.125000 1.125000 +v 0.164062 0.125000 0.812500 +v 0.164062 0.187500 1.125000 +v 0.164062 0.187500 0.812500 +v 0.125000 0.125000 1.125000 +v 0.125000 0.125000 0.812500 +v 0.125000 0.187500 1.125000 +v 0.125000 0.187500 0.812500 +v -0.164063 -0.187500 1.164063 +v 0.164062 -0.187500 1.164063 +v -0.164063 -0.125000 1.164063 +v 0.164062 -0.125000 1.164063 +v -0.164063 -0.187500 1.125000 +v 0.164062 -0.187500 1.125000 +v -0.164063 -0.125000 1.125000 +v 0.164062 -0.125000 1.125000 +v -0.164063 0.125000 1.164063 +v 0.164062 0.125000 1.164063 +v -0.164063 0.187500 1.164063 +v 0.164062 0.187500 1.164063 +v -0.164063 0.125000 1.125000 +v 0.164062 0.125000 1.125000 +v -0.164063 0.187500 1.125000 +v 0.164062 0.187500 1.125000 +vt 0.843750 0.507812 +vt 0.703125 0.507812 +vt 0.703125 0.093750 +vt 0.843750 0.093750 +vt 0.015625 0.507812 +vt 0.015625 0.093750 +vt 0.156250 0.093750 +vt 0.156250 0.507812 +vt 0.156250 0.031250 +vt 0.703125 0.031250 +vt 0.703125 0.578125 +vt 0.156250 0.578125 +vt 0.312500 0.640625 +vt 0.312500 0.992188 +vt 0.453125 0.992188 +vt 0.453125 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.312500 0.992188 +vt 0.312500 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.093750 0.992188 +vt 0.093750 0.640625 +vt 0.015625 0.992188 +vt 0.015625 0.640625 +vt 0.312500 0.640625 +vt 0.312500 0.992188 +vt 0.453125 0.992188 +vt 0.453125 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.312500 0.992188 +vt 0.312500 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.093750 0.992188 +vt 0.093750 0.640625 +vt 0.015625 0.992188 +vt 0.015625 0.640625 +vt 0.312500 0.640625 +vt 0.312500 0.992188 +vt 0.453125 0.992188 +vt 0.453125 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.312500 0.992188 +vt 0.312500 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.093750 0.992188 +vt 0.093750 0.640625 +vt 0.015625 0.992188 +vt 0.015625 0.640625 +vt 0.312500 0.640625 +vt 0.312500 0.992188 +vt 0.453125 0.992188 +vt 0.453125 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.312500 0.992188 +vt 0.312500 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.093750 0.992188 +vt 0.093750 0.640625 +vt 0.015625 0.992188 +vt 0.015625 0.640625 +vt 0.781250 0.664062 +vt 0.781250 0.992188 +vt 0.921875 0.992188 +vt 0.921875 0.664062 +vt 0.484375 0.664062 +vt 0.484375 0.992188 +vt 0.562500 0.992188 +vt 0.562500 0.664062 +vt 0.703125 0.992188 +vt 0.703125 0.664062 +vt 0.234375 0.593750 +vt 0.234375 0.640625 +vt 0.093750 0.640625 +vt 0.093750 0.593750 +vt 0.453125 0.640625 +vt 0.453125 0.593750 +vt 0.312500 0.593750 +vt 0.312500 0.640625 +vt 0.781250 0.664062 +vt 0.781250 0.992188 +vt 0.921875 0.992188 +vt 0.921875 0.664062 +vt 0.484375 0.664062 +vt 0.484375 0.992188 +vt 0.562500 0.992188 +vt 0.562500 0.664062 +vt 0.703125 0.992188 +vt 0.703125 0.664062 +vt 0.234375 0.593750 +vt 0.234375 0.640625 +vt 0.093750 0.640625 +vt 0.093750 0.593750 +vt 0.453125 0.640625 +vt 0.453125 0.593750 +vt 0.312500 0.593750 +vt 0.312500 0.640625 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 -0.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +g Cube.001_Cube.001_pole_mount +s off +f 17/19/7 18/20/7 20/21/7 19/22/7 +f 22/23/8 21/24/8 24/25/8 23/26/8 +f 20/21/9 24/25/9 21/27/9 19/28/9 +f 17/29/10 22/30/10 23/26/10 18/20/10 +f 18/20/11 23/26/11 24/25/11 20/21/11 +f 25/31/8 26/32/8 28/33/8 27/34/8 +f 27/35/9 28/36/9 32/37/9 31/38/9 +f 31/39/7 32/40/7 30/41/7 29/42/7 +f 29/42/10 30/41/10 26/43/10 25/44/10 +f 33/45/8 34/46/8 36/47/8 35/48/8 +f 35/49/9 36/50/9 40/51/9 39/52/9 +f 39/53/7 40/54/7 38/55/7 37/56/7 +f 37/56/10 38/55/10 34/57/10 33/58/10 +f 41/59/8 42/60/8 44/61/8 43/62/8 +f 43/63/9 44/64/9 48/65/9 47/66/9 +f 47/67/7 48/68/7 46/69/7 45/70/7 +f 45/70/10 46/69/10 42/71/10 41/72/10 +f 49/73/8 50/74/8 52/75/8 51/76/8 +f 51/77/9 52/78/9 56/79/9 55/80/9 +f 55/81/7 56/82/7 54/83/7 53/84/7 +f 53/84/10 54/83/10 50/85/10 49/86/10 +f 57/87/11 58/88/11 60/89/11 59/90/11 +f 59/91/9 60/92/9 64/93/9 63/94/9 +f 63/94/12 64/93/12 62/95/12 61/96/12 +f 61/96/10 62/95/10 58/88/10 57/87/10 +f 59/97/7 63/98/7 61/99/7 57/100/7 +f 64/101/8 60/102/8 58/103/8 62/104/8 +f 65/105/11 66/106/11 68/107/11 67/108/11 +f 67/109/9 68/110/9 72/111/9 71/112/9 +f 71/112/12 72/111/12 70/113/12 69/114/12 +f 69/114/10 70/113/10 66/106/10 65/105/10 +f 67/115/7 71/116/7 69/117/7 65/118/7 +f 72/119/8 68/120/8 66/121/8 70/122/8 diff --git a/models/signs_lib_standard_wall_sign_onpole.obj b/models/signs_lib_standard_wall_sign_onpole.obj new file mode 100644 index 0000000..31b73ef --- /dev/null +++ b/models/signs_lib_standard_wall_sign_onpole.obj @@ -0,0 +1,254 @@ +# Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden wall sign.blend' +# www.blender.org +o Cube +v 0.437500 -0.812500 -0.312500 +v 0.437500 -0.750000 -0.312500 +v 0.437500 -0.812500 0.312500 +v 0.437500 -0.750000 0.312500 +v -0.437500 -0.812500 -0.312500 +v -0.437500 -0.750000 -0.312500 +v -0.437500 -0.812500 0.312500 +v -0.437500 -0.750000 0.312500 +v 0.437500 -0.812500 -0.312500 +v 0.437500 -0.750000 -0.312500 +v 0.437500 -0.812500 0.312500 +v 0.437500 -0.750000 0.312500 +v -0.437500 -0.812500 -0.312500 +v -0.437500 -0.750000 -0.312500 +v -0.437500 -0.812500 0.312500 +v -0.437500 -0.750000 0.312500 +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 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.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 +o Cube.001 +v -0.125000 -0.812500 -0.187500 +v -0.125000 -0.875000 -0.187500 +v -0.125000 -0.812500 0.187500 +v -0.125000 -0.875000 0.187500 +v 0.125000 -0.812500 0.187500 +v 0.125000 -0.812500 -0.187500 +v 0.125000 -0.875000 -0.187500 +v 0.125000 -0.875000 0.187500 +v -0.125000 -1.125000 -0.187500 +v -0.125000 -0.812500 -0.187500 +v -0.125000 -1.125000 -0.125000 +v -0.125000 -0.812500 -0.125000 +v -0.164063 -1.125000 -0.187500 +v -0.164063 -0.812500 -0.187500 +v -0.164063 -1.125000 -0.125000 +v -0.164063 -0.812500 -0.125000 +v -0.125000 -1.125000 0.125000 +v -0.125000 -0.812500 0.125000 +v -0.125000 -1.125000 0.187500 +v -0.125000 -0.812500 0.187500 +v -0.164063 -1.125000 0.125000 +v -0.164063 -0.812500 0.125000 +v -0.164063 -1.125000 0.187500 +v -0.164063 -0.812500 0.187500 +v 0.164062 -1.125000 -0.187500 +v 0.164062 -0.812500 -0.187500 +v 0.164062 -1.125000 -0.125000 +v 0.164062 -0.812500 -0.125000 +v 0.125000 -1.125000 -0.187500 +v 0.125000 -0.812500 -0.187500 +v 0.125000 -1.125000 -0.125000 +v 0.125000 -0.812500 -0.125000 +v 0.164062 -1.125000 0.125000 +v 0.164062 -0.812500 0.125000 +v 0.164062 -1.125000 0.187500 +v 0.164062 -0.812500 0.187500 +v 0.125000 -1.125000 0.125000 +v 0.125000 -0.812500 0.125000 +v 0.125000 -1.125000 0.187500 +v 0.125000 -0.812500 0.187500 +v -0.164063 -1.164063 -0.187500 +v 0.164062 -1.164063 -0.187500 +v -0.164063 -1.164063 -0.125000 +v 0.164062 -1.164063 -0.125000 +v -0.164063 -1.125000 -0.187500 +v 0.164062 -1.125000 -0.187500 +v -0.164063 -1.125000 -0.125000 +v 0.164062 -1.125000 -0.125000 +v -0.164063 -1.164063 0.125000 +v 0.164062 -1.164063 0.125000 +v -0.164063 -1.164063 0.187500 +v 0.164062 -1.164063 0.187500 +v -0.164063 -1.125000 0.125000 +v 0.164062 -1.125000 0.125000 +v -0.164063 -1.125000 0.187500 +v 0.164062 -1.125000 0.187500 +vt 0.843750 0.507812 +vt 0.703125 0.507812 +vt 0.703125 0.093750 +vt 0.843750 0.093750 +vt 0.015625 0.507812 +vt 0.015625 0.093750 +vt 0.156250 0.093750 +vt 0.156250 0.507812 +vt 0.156250 0.031250 +vt 0.703125 0.031250 +vt 0.703125 0.578125 +vt 0.156250 0.578125 +vt 0.312500 0.640625 +vt 0.312500 0.992188 +vt 0.453125 0.992188 +vt 0.453125 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.312500 0.992188 +vt 0.312500 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.093750 0.992188 +vt 0.093750 0.640625 +vt 0.015625 0.992188 +vt 0.015625 0.640625 +vt 0.312500 0.640625 +vt 0.312500 0.992188 +vt 0.453125 0.992188 +vt 0.453125 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.312500 0.992188 +vt 0.312500 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.093750 0.992188 +vt 0.093750 0.640625 +vt 0.015625 0.992188 +vt 0.015625 0.640625 +vt 0.312500 0.640625 +vt 0.312500 0.992188 +vt 0.453125 0.992188 +vt 0.453125 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.312500 0.992188 +vt 0.312500 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.093750 0.992188 +vt 0.093750 0.640625 +vt 0.015625 0.992188 +vt 0.015625 0.640625 +vt 0.312500 0.640625 +vt 0.312500 0.992188 +vt 0.453125 0.992188 +vt 0.453125 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.312500 0.992188 +vt 0.312500 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.093750 0.992188 +vt 0.093750 0.640625 +vt 0.015625 0.992188 +vt 0.015625 0.640625 +vt 0.781250 0.664062 +vt 0.781250 0.992188 +vt 0.921875 0.992188 +vt 0.921875 0.664062 +vt 0.484375 0.664062 +vt 0.484375 0.992188 +vt 0.562500 0.992188 +vt 0.562500 0.664062 +vt 0.703125 0.992188 +vt 0.703125 0.664062 +vt 0.234375 0.593750 +vt 0.234375 0.640625 +vt 0.093750 0.640625 +vt 0.093750 0.593750 +vt 0.453125 0.640625 +vt 0.453125 0.593750 +vt 0.312500 0.593750 +vt 0.312500 0.640625 +vt 0.781250 0.664062 +vt 0.781250 0.992188 +vt 0.921875 0.992188 +vt 0.921875 0.664062 +vt 0.484375 0.664062 +vt 0.484375 0.992188 +vt 0.562500 0.992188 +vt 0.562500 0.664062 +vt 0.703125 0.992188 +vt 0.703125 0.664062 +vt 0.234375 0.593750 +vt 0.234375 0.640625 +vt 0.093750 0.640625 +vt 0.093750 0.593750 +vt 0.453125 0.640625 +vt 0.453125 0.593750 +vt 0.312500 0.593750 +vt 0.312500 0.640625 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +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 +g Cube.001_Cube.001_pole_mount +s off +f 17/19/7 18/20/7 20/21/7 19/22/7 +f 22/23/8 21/24/8 24/25/8 23/26/8 +f 20/21/9 24/25/9 21/27/9 19/28/9 +f 17/29/10 22/30/10 23/26/10 18/20/10 +f 18/20/11 23/26/11 24/25/11 20/21/11 +f 25/31/8 26/32/8 28/33/8 27/34/8 +f 27/35/9 28/36/9 32/37/9 31/38/9 +f 31/39/7 32/40/7 30/41/7 29/42/7 +f 29/42/10 30/41/10 26/43/10 25/44/10 +f 33/45/8 34/46/8 36/47/8 35/48/8 +f 35/49/9 36/50/9 40/51/9 39/52/9 +f 39/53/7 40/54/7 38/55/7 37/56/7 +f 37/56/10 38/55/10 34/57/10 33/58/10 +f 41/59/8 42/60/8 44/61/8 43/62/8 +f 43/63/9 44/64/9 48/65/9 47/66/9 +f 47/67/7 48/68/7 46/69/7 45/70/7 +f 45/70/10 46/69/10 42/71/10 41/72/10 +f 49/73/8 50/74/8 52/75/8 51/76/8 +f 51/77/9 52/78/9 56/79/9 55/80/9 +f 55/81/7 56/82/7 54/83/7 53/84/7 +f 53/84/10 54/83/10 50/85/10 49/86/10 +f 57/87/11 58/88/11 60/89/11 59/90/11 +f 59/91/9 60/92/9 64/93/9 63/94/9 +f 63/94/12 64/93/12 62/95/12 61/96/12 +f 61/96/10 62/95/10 58/88/10 57/87/10 +f 59/97/7 63/98/7 61/99/7 57/100/7 +f 64/101/8 60/102/8 58/103/8 62/104/8 +f 65/105/11 66/106/11 68/107/11 67/108/11 +f 67/109/9 68/110/9 72/111/9 71/112/9 +f 71/112/12 72/111/12 70/113/12 69/114/12 +f 69/114/10 70/113/10 66/106/10 65/105/10 +f 67/115/7 71/116/7 69/117/7 65/118/7 +f 72/119/8 68/120/8 66/121/8 70/122/8 diff --git a/screenshot.png b/screenshot.png deleted file mode 100644 index 17229a3516ba236b2bc9942b985fba3e9ec1fea1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58372 zcmV)PK()V#P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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 e03UpozZxEX>5&5$kK6zN0000$SN diff --git a/textures/signs_blue_front.png b/textures/signs_blue_front.png deleted file mode 100644 index 65ed6ea1030f6076d6f406b6b48a08010f0c1eac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/textures/signs_blue_inv.png b/textures/signs_blue_inv.png deleted file mode 100644 index 3f5a0ceed2c0b990cd1c1a26f147652fbcd60052..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/textures/signs_bottom.png b/textures/signs_bottom.png deleted file mode 100644 index 38961f0ccaff8a34350af62a1d48b1c9e2781622..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/textures/signs_brown_front.png b/textures/signs_brown_front.png deleted file mode 100644 index 2ed26406f96f0431205527efe4812612a7875863..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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! diff --git a/textures/signs_brown_inv.png b/textures/signs_brown_inv.png deleted file mode 100644 index 5ba92838910a4d19a9848caaa2648ec190c14143..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/textures/signs_front.png b/textures/signs_front.png deleted file mode 100644 index 2e614355ebcc7133c6c8e3abc32878bfc263b89a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/textures/signs_green_front.png b/textures/signs_green_front.png deleted file mode 100644 index 45c6e0f02b7d7a1c4ca4d6bb2460e90cd372cb49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={W%spKkLp+WrZ&+ZMAhETH$2rVWdxSZrZrSn3ekv)6U%f1qjxPgg&ebxsLQ0JIYsApigX diff --git a/textures/signs_hanging_back.png b/textures/signs_hanging_back.png deleted file mode 100644 index 7cf39a24f5dd0ad4958875f8e97ae158f89d32c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/textures/signs_hanging_front.png b/textures/signs_hanging_front.png deleted file mode 100644 index bdc745e72ff3e4191f729a3e24dc1223351c9269..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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>}|-0000GfjNNz#?dhq^cT1ET>0jAOU;$Sua>??h52GXR07tDnm{r-UW| DHX9#` literal 0 HcmV?d00001 diff --git a/textures/signs_lib_color_15px_2.png b/textures/signs_lib_color_15px_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a5f4e84dc010108ee2a3738b3f0d97d8d30321b9 GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^4M5D#!3HFCZX7=bq|7{B977@wzrDmL$Y8*6WJCJD zsR=?gJuXh`r=DxsJdcI#0D}Yra{>cT1ET>0jAOU;Xba=uzQM0#8>zmvv4FO#qLJ B96bO4 literal 0 HcmV?d00001 diff --git a/textures/signs_lib_color_15px_4.png b/textures/signs_lib_color_15px_4.png new file mode 100644 index 0000000000000000000000000000000000000000..1abb4daa237aa58a4ec18967ddae52681f9accd5 GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^4M5D#!3HFCZX7=bq|7{B977@wzrDmL$Y8*6WJCJD zsR=?gJuXh`ubyn#JdcI#0D}Yra{>cT1ET>0jAOU;m>%Qt|valUskYHd=VBl$BG+=;n`l5CRF%_yd37lX60#8>zmvv4FO#qER B8_NIy literal 0 HcmV?d00001 diff --git a/textures/signs_lib_color_15px_6.png b/textures/signs_lib_color_15px_6.png new file mode 100644 index 0000000000000000000000000000000000000000..dc829f910924752fa8ee6ecf639e3096e8575a9e GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^4M5D#!3HFCZX7=bq|7~C977@wzrDoB%V5B9z~I1R z-+L-Q8o~~3`lD}Uv0BA|f$ac;1Osyd15X1ZjI-ei!$DCdnWvq4ehfh1>FVdQ&MBb@ E06>NwcmMzZ literal 0 HcmV?d00001 diff --git a/textures/signs_lib_color_15px_7.png b/textures/signs_lib_color_15px_7.png new file mode 100644 index 0000000000000000000000000000000000000000..9b79dfd78f5061d030def0447f846dc3ebed88bc GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^4M5D#!3HFCZX7=bq|7{B977@wzrDmL$Y8*6WP{;< zuX`##8eE*#PhBFPUdzeTz-Yk0c7Q>GfjNNz#?dj|sK6|p|valUskYHd=VBl$BG+=;n`l7a3G95G6ZaIws2s~Z=T-G@yGywpT C1ROyC literal 0 HcmV?d00001 diff --git a/textures/signs_lib_color_15px_B.png b/textures/signs_lib_color_15px_B.png new file mode 100644 index 0000000000000000000000000000000000000000..48ae3e0af86efea92761545f6e661fbd53c7ed62 GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^4M5D#!3HFCZX7=bq|7{B977@wzrDmL$Y8*6WP@S< zkLjO&G`Kjezv?NMUdzeTz-Yk0c7Q>GfjNNz#?did9m`xWY1PlE3_#%N>gTe~DWM4f DG^HOb literal 0 HcmV?d00001 diff --git a/textures/signs_lib_color_15px_C.png b/textures/signs_lib_color_15px_C.png new file mode 100644 index 0000000000000000000000000000000000000000..d4f901a4d3299bd995f6987307a0e94c3b938a23 GIT binary patch literal 110 zcmeAS@N?(olHy`uVBq!ia0vp^4M5D#!3HFCZX7=bq)a_s977@wzrDmL$iTqDU|4d+ zp3C-z(w|zt?=1OKS=bIRNH8!bFz_@m8Zf{(eNo#UGab7#i6Mjm2s~Z=T-G@yGywpC CCmd1$ literal 0 HcmV?d00001 diff --git a/textures/signs_lib_color_15px_D.png b/textures/signs_lib_color_15px_D.png new file mode 100644 index 0000000000000000000000000000000000000000..1f2efde1ab5d8cc77dced4f222a79d06ed86bbe9 GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^4M5D#!3HFCZX7=bq|7{B977@wzrDmL$Y8*6WP@S< zkLjO&G`KjepXw)GfjNNz#?did!_Hj5&RaE=0SG)@{an^LB{Ts5 D3Njq^ literal 0 HcmV?d00001 diff --git a/textures/signs_lib_color_15px_E.png b/textures/signs_lib_color_15px_E.png new file mode 100644 index 0000000000000000000000000000000000000000..3309f9b62a63003b7437d6781ab0d91ef5860751 GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^4M5D#!3HFCZX7=bq|7{B977@wzrDmL$Y8*6WP@S< zkLjO&G`KjepIRc9UdzeTz-Yk0c7Q>GfjNNz#?didvyr*L>Pe9=0}yz+`njxgN@xNA DDWM*J literal 0 HcmV?d00001 diff --git a/textures/signs_lib_color_15px_F.png b/textures/signs_lib_color_15px_F.png new file mode 100644 index 0000000000000000000000000000000000000000..da91ce4df2b19a20946a6bbdf14ecc45e19e1c57 GIT binary patch literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^4M5D#!3HFCZX7=bq)a?r977@wzrDoB%fP^K*xn^;?A~pNx=MDxS@O1TaS?83{1OS+0 B9P$7F literal 0 HcmV?d00001 diff --git a/textures/signs_lib_color_15px_n.png b/textures/signs_lib_color_15px_n.png new file mode 100644 index 0000000000000000000000000000000000000000..b73f7819594154b0ca1f3ab1815c3062d283ee37 GIT binary patch literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^4M5D#!3HFCZX7=bq)a?r977@wzrDoB%fP^Kctdmj z`3KBVoTs%;wrr1LVoqS-X<#&9U^~Dd!2sj9>z?1nD7%P7x`F`+JYD@<);T3K0RWO4 B8<7A2 literal 0 HcmV?d00001 diff --git a/textures/signs_lib_color_31px_0.png b/textures/signs_lib_color_31px_0.png new file mode 100644 index 0000000000000000000000000000000000000000..bbda5a98f5fa5fa0bb2ec193352ab46a6d2a8ce3 GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^4L~f45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6VX;4}uH!E}sk( zVK4FYb!ETL&c>`KdMEn|2T&-})5S3)OMPX3wAA}Ql5^5w<6nY&L| z?PvaRnxT-b!`NXC<0Bq{^acy&Ba#Z|NEZ6e@R5^o?pigjbfBfGC9V-ADTyViR>?)F zK#IZ0z|d6Jz+BhBG{nfr%D}|R&`cLd8W_~`=P96Q$jwj5OsmALfiLLV9H0gUPgg&e IbxsLQ0IM2gD*ylh literal 0 HcmV?d00001 diff --git a/textures/signs_lib_color_31px_1.png b/textures/signs_lib_color_31px_1.png new file mode 100644 index 0000000000000000000000000000000000000000..043111391d8072700cb37def57a9aa1df84c0f63 GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^4L~f45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6VX;4}uH!E}sk( zVK4FYb!ETL&c>`KdMEn|2T&-})5S3)C9V-ADTyViR>?)F zK#IZ0z|d6Jz+BhBG{nfr%D}|R0LTTB22H*t$|xFg^HVa@DsgN0EO2H%Py>UftDnm{ Hr-UW|QSxS+ literal 0 HcmV?d00001 diff --git a/textures/signs_lib_color_31px_2.png b/textures/signs_lib_color_31px_2.png new file mode 100644 index 0000000000000000000000000000000000000000..1e5d351f26682ec32bb5d6c8e1c8a8744449037e GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^4L~f45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6VX;4}uH!E}sk( zVK4FYb!ETL&c>`KdMEn|2T&-})5S3)RdP`( zkYX@0Ff`RQFxNFO4KXsZGBB|+0kTc33=AgD$o_z$AvZrIGp!Q0h6hJ4`v5gCc)I$z JtaD0e0sus6XHNhC literal 0 HcmV?d00001 diff --git a/textures/signs_lib_color_31px_3.png b/textures/signs_lib_color_31px_3.png new file mode 100644 index 0000000000000000000000000000000000000000..49eb91c09fc122d7f28698e885998a0e31c5ef81 GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^4L~f45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6VX;4}uH!E}sk( zVK4FYb!ETL&c>`KdMEn|2T&-})5S3)O8?4LA~MN-CBmdK II;Vst06tP>L;wH) literal 0 HcmV?d00001 diff --git a/textures/signs_lib_color_31px_4.png b/textures/signs_lib_color_31px_4.png new file mode 100644 index 0000000000000000000000000000000000000000..15780438a87f15b45f4a3fa654e4d9a88435744d GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^4L~f45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6VX;4}uH!E}sk( zVK4FYb!ETL&c>`KdMEn|2T&-})5S3)5o+~pxud>Ul23o3G;u=wsl30>zm0Xkx zq!^403{7oT7)78&q Iol`;+0HAVZ%K!iX literal 0 HcmV?d00001 diff --git a/textures/signs_lib_color_31px_5.png b/textures/signs_lib_color_31px_5.png new file mode 100644 index 0000000000000000000000000000000000000000..ea9bf8c391f2d3cf642001c86b082dd47cf9591d GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^4L~f45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6VX;4}uH!E}sk( zVK4FYb!ETL&c>`KdMEn|2T&-})5S3)O8?4LA~MN-CB)1a`XMDsXkltXyd_+>=977>nhq1#Pl7-$eY8Wz2T$khlbUA}+iEBhjN@7W>RdP`( zkYX@0Ff`RQFxNFO4KXsZGBB|+GSmf<1_mbT;Xv;qX~@k_$xN%nt--bG{YRh%22WQ% Jmvv4FO#rukV^;tG literal 0 HcmV?d00001 diff --git a/textures/signs_lib_color_31px_6.png b/textures/signs_lib_color_31px_6.png new file mode 100644 index 0000000000000000000000000000000000000000..6a32f66e30845904f4d7535ebbde4a862db1831e GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^4L~f45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6VX;4}uH!E}sk( zVK4FYb!ETL&c>`KdMEn|2T&-})5S3)zm0Xkx zq!^403{745bDP46hOx7_4S6Fo+k-*%fF5lweEpc6VX;4}uH!E}sk( zVK4FYb!ETL&c>`KdMEn|2T&-})5S3)O8?4LA~MN-CB?+%fr*ugi7t>dFj!Dfn2VwzH$NpatrE9}i@GN-0yQvry85}S Ib4q9e0A-+N(f|Me literal 0 HcmV?d00001 diff --git a/textures/signs_lib_color_31px_8.png b/textures/signs_lib_color_31px_8.png new file mode 100644 index 0000000000000000000000000000000000000000..d9767df615ecc7a46c2886bbf1af51a4d9cfa0a6 GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^4L~f45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6VX;4}uH!E}sk( zVK4FYb!ETL&c>`KdMEn|2T&-})5S3)O8JpSX&C@JGB^5w<6nY&L| z?PvaRnxT-b!`NXC<0Bq{^acy&Ba#Z|NEZ6e&>qTU^R$0jKG0It64!{5l*E!$tK_0o zAjM#0U}&mqV6JOm8e(K*Wnf}uXsin)4GeV69otbf)O8mNK6)78&q Iol`;+06DT{TL1t6 literal 0 HcmV?d00001 diff --git a/textures/signs_lib_color_31px_9.png b/textures/signs_lib_color_31px_9.png new file mode 100644 index 0000000000000000000000000000000000000000..e64f7f37cc1d4c8e67b7c9efcec5d9db66b348d6 GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^4L~f45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6VX;4}uH!E}sk( zVK4FYb!ETL&c>`KdMEn|2T&-})5S3)O8JpSX&C@JGB^5w<6o#hit z>)1a`XMDsXkltXyd_+>=977>nhq1#Pl7-$eo(N%j#`s6*CD2mU64!{5l*E!$tK_0o zAjM#0U}&mqV6JOm8e(K*Wnf}uXsHV%4GcQn45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6VX;4}uH!E}sk( zVK4FYb!ETL&c>`KdMEn|2T&-})5S3)O8JpSX&C@JGB^5w-m>+*@E zb?hIeGd|)GNN=!UJ|d}bj-imP!`NXC$wKcKPyAzg=KeE>7ig(!iEBhjN@7W>RdP`( zkYX@0Ff`RQFxNFO4KXsZGBB|+HP8i;1_m>xhCV>ikei>9nO2Eg!^;zIV}KeMJYD@< J);T3K0RS}pXITIM literal 0 HcmV?d00001 diff --git a/textures/signs_lib_color_31px_B.png b/textures/signs_lib_color_31px_B.png new file mode 100644 index 0000000000000000000000000000000000000000..48318cba06853df17ad1caeae398ca5d485d7f34 GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^4L~f45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6VX;4}uH!E}sk( zVK4FYb!ETL&c>`KdMEn|2T&-})5S3)O8DF0i^BPru6^5w-oY?5lMw}Bny3K;NoGPu)JLRBhXUS64!{5l*E!$tK_0o zAjM#0U}&mqV6JOm8e(K*Wnf}uV5AEo4cuROtwqt0o1c=IR*74K+4fI@Kn)C@u6{1- HoD!M45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6VX;4}uH!E}sk( zVK4FYb!ETL&c>`KdMEn|2T&-})5S3)O8JpSX&C@JGB^5w-o?)F zK#IZ0z|d6Jz+BhBG{nfr%D}|R2*@_EGB61Lo>Y#aAvZrIGp!Q02DMeUP6IVCc)I$z JtaD0e0svbhXC43m literal 0 HcmV?d00001 diff --git a/textures/signs_lib_color_31px_D.png b/textures/signs_lib_color_31px_D.png new file mode 100644 index 0000000000000000000000000000000000000000..4b692fbdb5933fe7b197885665e36af4858e778f GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^4L~f45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6VX;4}uH!E}sk( zVK4FYb!ETL&c>`KdMEn|2T&-})5S3)O8DF0i^BPru6^5w-m>&+*u z_A~!D%}~hJVeBx6@ez+edV>Y?5lMw}Bny3K;M&GKA@<*`SwKrwOI#yLQW8s2t&)pU zffR$0fuX6cfw``MX^4@Lm4S(sk%=ylG%!e$uXu%`AvZrIGp!Q0263kYVL%NGp00i_ I>zopr00!h`UjP6A literal 0 HcmV?d00001 diff --git a/textures/signs_lib_color_31px_E.png b/textures/signs_lib_color_31px_E.png new file mode 100644 index 0000000000000000000000000000000000000000..468c5abc89603d0128a80cf9f22492ddf9e43049 GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^4L~f45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6VX;4}uH!E}sk( zVK4FYb!ETL&c>`KdMEn|2T&-})5S3)O8DF0i^BPru6^5w<6otsZs z?PvaRnxT-b!`NXC<0Bq{^acy&Ba#Z|NEZ6ez@5N6;oq7deW0bPC9V-ADTyViR>?)F zK#IZ0z|d6Jz+BhBG{nfr%D}|Rz(N;98a$pQ`WQt+ZhlH;S|x4`la8;A2WnvOboFyt I=akR{04^45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6VX;4}uH!E}sk( zVK4FYb!ETL&c>`KdMEn|2T&;8)5S3)O8?0>G9>@Lh|Ta}*17nyI} z5X;tK>@bJ%5syH6g9Y;uNriI^g(M5@;P;7Vv1*U+SPQgLwZt`|BqgyV)hf9t6-Y4{ z85o-C8kp-En1&b`Ss9pE8C&WCNdtq^Ns?PoH00)|WTsW(*09TdA;?nzopr E0OSB+djJ3c literal 0 HcmV?d00001 diff --git a/textures/signs_lib_color_31px_n.png b/textures/signs_lib_color_31px_n.png new file mode 100644 index 0000000000000000000000000000000000000000..3d4cf1ac296c338869b5068170491ab6692fbc25 GIT binary patch literal 355 zcmeAS@N?(olHy`uVBq!ia0vp^4L~f45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6VX;4}uH!E}sk( zVK4FYb!ETL&c>`KdMEn|2T&;8)5S3)@bJ%5syH6g9Y;uNriI^g(M5@;9qiq(e`koq#e*o)e_f;l9a@fRIB8oR3OD* zWMF8jYhbQxU>ag%Y-M6(Wn`dhU}9xp@QJZ)CyIvL{FKbJO57TnW9&eo#Ng@b=d#Wz Gp$PzB&SBgD literal 0 HcmV?d00001 diff --git a/textures/hdf_00.png b/textures/signs_lib_font_15px_00.png similarity index 100% rename from textures/hdf_00.png rename to textures/signs_lib_font_15px_00.png diff --git a/textures/hdf_20.png b/textures/signs_lib_font_15px_20.png similarity index 100% rename from textures/hdf_20.png rename to textures/signs_lib_font_15px_20.png diff --git a/textures/hdf_21.png b/textures/signs_lib_font_15px_21.png similarity index 100% rename from textures/hdf_21.png rename to textures/signs_lib_font_15px_21.png diff --git a/textures/hdf_22.png b/textures/signs_lib_font_15px_22.png similarity index 100% rename from textures/hdf_22.png rename to textures/signs_lib_font_15px_22.png diff --git a/textures/hdf_23.png b/textures/signs_lib_font_15px_23.png similarity index 100% rename from textures/hdf_23.png rename to textures/signs_lib_font_15px_23.png diff --git a/textures/hdf_24.png b/textures/signs_lib_font_15px_24.png similarity index 100% rename from textures/hdf_24.png rename to textures/signs_lib_font_15px_24.png diff --git a/textures/hdf_25.png b/textures/signs_lib_font_15px_25.png similarity index 100% rename from textures/hdf_25.png rename to textures/signs_lib_font_15px_25.png diff --git a/textures/hdf_26.png b/textures/signs_lib_font_15px_26.png similarity index 100% rename from textures/hdf_26.png rename to textures/signs_lib_font_15px_26.png diff --git a/textures/hdf_27.png b/textures/signs_lib_font_15px_27.png similarity index 100% rename from textures/hdf_27.png rename to textures/signs_lib_font_15px_27.png diff --git a/textures/hdf_28.png b/textures/signs_lib_font_15px_28.png similarity index 100% rename from textures/hdf_28.png rename to textures/signs_lib_font_15px_28.png diff --git a/textures/hdf_29.png b/textures/signs_lib_font_15px_29.png similarity index 100% rename from textures/hdf_29.png rename to textures/signs_lib_font_15px_29.png diff --git a/textures/hdf_2a.png b/textures/signs_lib_font_15px_2a.png similarity index 100% rename from textures/hdf_2a.png rename to textures/signs_lib_font_15px_2a.png diff --git a/textures/hdf_2b.png b/textures/signs_lib_font_15px_2b.png similarity index 100% rename from textures/hdf_2b.png rename to textures/signs_lib_font_15px_2b.png diff --git a/textures/hdf_2c.png b/textures/signs_lib_font_15px_2c.png similarity index 100% rename from textures/hdf_2c.png rename to textures/signs_lib_font_15px_2c.png diff --git a/textures/hdf_2d.png b/textures/signs_lib_font_15px_2d.png similarity index 100% rename from textures/hdf_2d.png rename to textures/signs_lib_font_15px_2d.png diff --git a/textures/hdf_2e.png b/textures/signs_lib_font_15px_2e.png similarity index 100% rename from textures/hdf_2e.png rename to textures/signs_lib_font_15px_2e.png diff --git a/textures/hdf_2f.png b/textures/signs_lib_font_15px_2f.png similarity index 100% rename from textures/hdf_2f.png rename to textures/signs_lib_font_15px_2f.png diff --git a/textures/hdf_30.png b/textures/signs_lib_font_15px_30.png similarity index 100% rename from textures/hdf_30.png rename to textures/signs_lib_font_15px_30.png diff --git a/textures/hdf_31.png b/textures/signs_lib_font_15px_31.png similarity index 100% rename from textures/hdf_31.png rename to textures/signs_lib_font_15px_31.png diff --git a/textures/hdf_32.png b/textures/signs_lib_font_15px_32.png similarity index 100% rename from textures/hdf_32.png rename to textures/signs_lib_font_15px_32.png diff --git a/textures/hdf_33.png b/textures/signs_lib_font_15px_33.png similarity index 100% rename from textures/hdf_33.png rename to textures/signs_lib_font_15px_33.png diff --git a/textures/hdf_34.png b/textures/signs_lib_font_15px_34.png similarity index 100% rename from textures/hdf_34.png rename to textures/signs_lib_font_15px_34.png diff --git a/textures/hdf_35.png b/textures/signs_lib_font_15px_35.png similarity index 100% rename from textures/hdf_35.png rename to textures/signs_lib_font_15px_35.png diff --git a/textures/hdf_36.png b/textures/signs_lib_font_15px_36.png similarity index 100% rename from textures/hdf_36.png rename to textures/signs_lib_font_15px_36.png diff --git a/textures/hdf_37.png b/textures/signs_lib_font_15px_37.png similarity index 100% rename from textures/hdf_37.png rename to textures/signs_lib_font_15px_37.png diff --git a/textures/hdf_38.png b/textures/signs_lib_font_15px_38.png similarity index 100% rename from textures/hdf_38.png rename to textures/signs_lib_font_15px_38.png diff --git a/textures/hdf_39.png b/textures/signs_lib_font_15px_39.png similarity index 100% rename from textures/hdf_39.png rename to textures/signs_lib_font_15px_39.png diff --git a/textures/hdf_3a.png b/textures/signs_lib_font_15px_3a.png similarity index 100% rename from textures/hdf_3a.png rename to textures/signs_lib_font_15px_3a.png diff --git a/textures/hdf_3b.png b/textures/signs_lib_font_15px_3b.png similarity index 100% rename from textures/hdf_3b.png rename to textures/signs_lib_font_15px_3b.png diff --git a/textures/hdf_3c.png b/textures/signs_lib_font_15px_3c.png similarity index 100% rename from textures/hdf_3c.png rename to textures/signs_lib_font_15px_3c.png diff --git a/textures/hdf_3d.png b/textures/signs_lib_font_15px_3d.png similarity index 100% rename from textures/hdf_3d.png rename to textures/signs_lib_font_15px_3d.png diff --git a/textures/hdf_3e.png b/textures/signs_lib_font_15px_3e.png similarity index 100% rename from textures/hdf_3e.png rename to textures/signs_lib_font_15px_3e.png diff --git a/textures/hdf_3f.png b/textures/signs_lib_font_15px_3f.png similarity index 100% rename from textures/hdf_3f.png rename to textures/signs_lib_font_15px_3f.png diff --git a/textures/hdf_40.png b/textures/signs_lib_font_15px_40.png similarity index 100% rename from textures/hdf_40.png rename to textures/signs_lib_font_15px_40.png diff --git a/textures/hdf_41.png b/textures/signs_lib_font_15px_41.png similarity index 100% rename from textures/hdf_41.png rename to textures/signs_lib_font_15px_41.png diff --git a/textures/hdf_42.png b/textures/signs_lib_font_15px_42.png similarity index 100% rename from textures/hdf_42.png rename to textures/signs_lib_font_15px_42.png diff --git a/textures/hdf_43.png b/textures/signs_lib_font_15px_43.png similarity index 100% rename from textures/hdf_43.png rename to textures/signs_lib_font_15px_43.png diff --git a/textures/hdf_44.png b/textures/signs_lib_font_15px_44.png similarity index 100% rename from textures/hdf_44.png rename to textures/signs_lib_font_15px_44.png diff --git a/textures/hdf_45.png b/textures/signs_lib_font_15px_45.png similarity index 100% rename from textures/hdf_45.png rename to textures/signs_lib_font_15px_45.png diff --git a/textures/hdf_46.png b/textures/signs_lib_font_15px_46.png similarity index 100% rename from textures/hdf_46.png rename to textures/signs_lib_font_15px_46.png diff --git a/textures/hdf_47.png b/textures/signs_lib_font_15px_47.png similarity index 100% rename from textures/hdf_47.png rename to textures/signs_lib_font_15px_47.png diff --git a/textures/hdf_48.png b/textures/signs_lib_font_15px_48.png similarity index 100% rename from textures/hdf_48.png rename to textures/signs_lib_font_15px_48.png diff --git a/textures/hdf_49.png b/textures/signs_lib_font_15px_49.png similarity index 100% rename from textures/hdf_49.png rename to textures/signs_lib_font_15px_49.png diff --git a/textures/hdf_4a.png b/textures/signs_lib_font_15px_4a.png similarity index 100% rename from textures/hdf_4a.png rename to textures/signs_lib_font_15px_4a.png diff --git a/textures/hdf_4b.png b/textures/signs_lib_font_15px_4b.png similarity index 100% rename from textures/hdf_4b.png rename to textures/signs_lib_font_15px_4b.png diff --git a/textures/hdf_4c.png b/textures/signs_lib_font_15px_4c.png similarity index 100% rename from textures/hdf_4c.png rename to textures/signs_lib_font_15px_4c.png diff --git a/textures/hdf_4d.png b/textures/signs_lib_font_15px_4d.png similarity index 100% rename from textures/hdf_4d.png rename to textures/signs_lib_font_15px_4d.png diff --git a/textures/hdf_4e.png b/textures/signs_lib_font_15px_4e.png similarity index 100% rename from textures/hdf_4e.png rename to textures/signs_lib_font_15px_4e.png diff --git a/textures/hdf_4f.png b/textures/signs_lib_font_15px_4f.png similarity index 100% rename from textures/hdf_4f.png rename to textures/signs_lib_font_15px_4f.png diff --git a/textures/hdf_50.png b/textures/signs_lib_font_15px_50.png similarity index 100% rename from textures/hdf_50.png rename to textures/signs_lib_font_15px_50.png diff --git a/textures/hdf_51.png b/textures/signs_lib_font_15px_51.png similarity index 100% rename from textures/hdf_51.png rename to textures/signs_lib_font_15px_51.png diff --git a/textures/hdf_52.png b/textures/signs_lib_font_15px_52.png similarity index 100% rename from textures/hdf_52.png rename to textures/signs_lib_font_15px_52.png diff --git a/textures/hdf_53.png b/textures/signs_lib_font_15px_53.png similarity index 100% rename from textures/hdf_53.png rename to textures/signs_lib_font_15px_53.png diff --git a/textures/hdf_54.png b/textures/signs_lib_font_15px_54.png similarity index 100% rename from textures/hdf_54.png rename to textures/signs_lib_font_15px_54.png diff --git a/textures/hdf_55.png b/textures/signs_lib_font_15px_55.png similarity index 100% rename from textures/hdf_55.png rename to textures/signs_lib_font_15px_55.png diff --git a/textures/hdf_56.png b/textures/signs_lib_font_15px_56.png similarity index 100% rename from textures/hdf_56.png rename to textures/signs_lib_font_15px_56.png diff --git a/textures/hdf_57.png b/textures/signs_lib_font_15px_57.png similarity index 100% rename from textures/hdf_57.png rename to textures/signs_lib_font_15px_57.png diff --git a/textures/hdf_58.png b/textures/signs_lib_font_15px_58.png similarity index 100% rename from textures/hdf_58.png rename to textures/signs_lib_font_15px_58.png diff --git a/textures/hdf_59.png b/textures/signs_lib_font_15px_59.png similarity index 100% rename from textures/hdf_59.png rename to textures/signs_lib_font_15px_59.png diff --git a/textures/hdf_5a.png b/textures/signs_lib_font_15px_5a.png similarity index 100% rename from textures/hdf_5a.png rename to textures/signs_lib_font_15px_5a.png diff --git a/textures/hdf_5b.png b/textures/signs_lib_font_15px_5b.png similarity index 100% rename from textures/hdf_5b.png rename to textures/signs_lib_font_15px_5b.png diff --git a/textures/hdf_5c.png b/textures/signs_lib_font_15px_5c.png similarity index 100% rename from textures/hdf_5c.png rename to textures/signs_lib_font_15px_5c.png diff --git a/textures/hdf_5d.png b/textures/signs_lib_font_15px_5d.png similarity index 100% rename from textures/hdf_5d.png rename to textures/signs_lib_font_15px_5d.png diff --git a/textures/hdf_5e.png b/textures/signs_lib_font_15px_5e.png similarity index 100% rename from textures/hdf_5e.png rename to textures/signs_lib_font_15px_5e.png diff --git a/textures/hdf_5f.png b/textures/signs_lib_font_15px_5f.png similarity index 100% rename from textures/hdf_5f.png rename to textures/signs_lib_font_15px_5f.png diff --git a/textures/hdf_60.png b/textures/signs_lib_font_15px_60.png similarity index 100% rename from textures/hdf_60.png rename to textures/signs_lib_font_15px_60.png diff --git a/textures/hdf_61.png b/textures/signs_lib_font_15px_61.png similarity index 100% rename from textures/hdf_61.png rename to textures/signs_lib_font_15px_61.png diff --git a/textures/hdf_62.png b/textures/signs_lib_font_15px_62.png similarity index 100% rename from textures/hdf_62.png rename to textures/signs_lib_font_15px_62.png diff --git a/textures/hdf_63.png b/textures/signs_lib_font_15px_63.png similarity index 100% rename from textures/hdf_63.png rename to textures/signs_lib_font_15px_63.png diff --git a/textures/hdf_64.png b/textures/signs_lib_font_15px_64.png similarity index 100% rename from textures/hdf_64.png rename to textures/signs_lib_font_15px_64.png diff --git a/textures/hdf_65.png b/textures/signs_lib_font_15px_65.png similarity index 100% rename from textures/hdf_65.png rename to textures/signs_lib_font_15px_65.png diff --git a/textures/hdf_66.png b/textures/signs_lib_font_15px_66.png similarity index 100% rename from textures/hdf_66.png rename to textures/signs_lib_font_15px_66.png diff --git a/textures/hdf_67.png b/textures/signs_lib_font_15px_67.png similarity index 100% rename from textures/hdf_67.png rename to textures/signs_lib_font_15px_67.png diff --git a/textures/hdf_68.png b/textures/signs_lib_font_15px_68.png similarity index 100% rename from textures/hdf_68.png rename to textures/signs_lib_font_15px_68.png diff --git a/textures/hdf_69.png b/textures/signs_lib_font_15px_69.png similarity index 100% rename from textures/hdf_69.png rename to textures/signs_lib_font_15px_69.png diff --git a/textures/hdf_6a.png b/textures/signs_lib_font_15px_6a.png similarity index 100% rename from textures/hdf_6a.png rename to textures/signs_lib_font_15px_6a.png diff --git a/textures/hdf_6b.png b/textures/signs_lib_font_15px_6b.png similarity index 100% rename from textures/hdf_6b.png rename to textures/signs_lib_font_15px_6b.png diff --git a/textures/hdf_6c.png b/textures/signs_lib_font_15px_6c.png similarity index 100% rename from textures/hdf_6c.png rename to textures/signs_lib_font_15px_6c.png diff --git a/textures/hdf_6d.png b/textures/signs_lib_font_15px_6d.png similarity index 100% rename from textures/hdf_6d.png rename to textures/signs_lib_font_15px_6d.png diff --git a/textures/hdf_6e.png b/textures/signs_lib_font_15px_6e.png similarity index 100% rename from textures/hdf_6e.png rename to textures/signs_lib_font_15px_6e.png diff --git a/textures/hdf_6f.png b/textures/signs_lib_font_15px_6f.png similarity index 100% rename from textures/hdf_6f.png rename to textures/signs_lib_font_15px_6f.png diff --git a/textures/hdf_70.png b/textures/signs_lib_font_15px_70.png similarity index 100% rename from textures/hdf_70.png rename to textures/signs_lib_font_15px_70.png diff --git a/textures/hdf_71.png b/textures/signs_lib_font_15px_71.png similarity index 100% rename from textures/hdf_71.png rename to textures/signs_lib_font_15px_71.png diff --git a/textures/hdf_72.png b/textures/signs_lib_font_15px_72.png similarity index 100% rename from textures/hdf_72.png rename to textures/signs_lib_font_15px_72.png diff --git a/textures/hdf_73.png b/textures/signs_lib_font_15px_73.png similarity index 100% rename from textures/hdf_73.png rename to textures/signs_lib_font_15px_73.png diff --git a/textures/hdf_74.png b/textures/signs_lib_font_15px_74.png similarity index 100% rename from textures/hdf_74.png rename to textures/signs_lib_font_15px_74.png diff --git a/textures/hdf_75.png b/textures/signs_lib_font_15px_75.png similarity index 100% rename from textures/hdf_75.png rename to textures/signs_lib_font_15px_75.png diff --git a/textures/hdf_76.png b/textures/signs_lib_font_15px_76.png similarity index 100% rename from textures/hdf_76.png rename to textures/signs_lib_font_15px_76.png diff --git a/textures/hdf_77.png b/textures/signs_lib_font_15px_77.png similarity index 100% rename from textures/hdf_77.png rename to textures/signs_lib_font_15px_77.png diff --git a/textures/hdf_78.png b/textures/signs_lib_font_15px_78.png similarity index 100% rename from textures/hdf_78.png rename to textures/signs_lib_font_15px_78.png diff --git a/textures/hdf_79.png b/textures/signs_lib_font_15px_79.png similarity index 100% rename from textures/hdf_79.png rename to textures/signs_lib_font_15px_79.png diff --git a/textures/hdf_7a.png b/textures/signs_lib_font_15px_7a.png similarity index 100% rename from textures/hdf_7a.png rename to textures/signs_lib_font_15px_7a.png diff --git a/textures/hdf_7b.png b/textures/signs_lib_font_15px_7b.png similarity index 100% rename from textures/hdf_7b.png rename to textures/signs_lib_font_15px_7b.png diff --git a/textures/hdf_7c.png b/textures/signs_lib_font_15px_7c.png similarity index 100% rename from textures/hdf_7c.png rename to textures/signs_lib_font_15px_7c.png diff --git a/textures/hdf_7d.png b/textures/signs_lib_font_15px_7d.png similarity index 100% rename from textures/hdf_7d.png rename to textures/signs_lib_font_15px_7d.png diff --git a/textures/hdf_7e.png b/textures/signs_lib_font_15px_7e.png similarity index 100% rename from textures/hdf_7e.png rename to textures/signs_lib_font_15px_7e.png diff --git a/textures/hdf_81.png b/textures/signs_lib_font_15px_81.png similarity index 100% rename from textures/hdf_81.png rename to textures/signs_lib_font_15px_81.png diff --git a/textures/hdf_82.png b/textures/signs_lib_font_15px_82.png similarity index 100% rename from textures/hdf_82.png rename to textures/signs_lib_font_15px_82.png diff --git a/textures/hdf_83.png b/textures/signs_lib_font_15px_83.png similarity index 100% rename from textures/hdf_83.png rename to textures/signs_lib_font_15px_83.png diff --git a/textures/hdf_84.png b/textures/signs_lib_font_15px_84.png similarity index 100% rename from textures/hdf_84.png rename to textures/signs_lib_font_15px_84.png diff --git a/textures/hdf_85.png b/textures/signs_lib_font_15px_85.png similarity index 100% rename from textures/hdf_85.png rename to textures/signs_lib_font_15px_85.png diff --git a/textures/hdf_86.png b/textures/signs_lib_font_15px_86.png similarity index 100% rename from textures/hdf_86.png rename to textures/signs_lib_font_15px_86.png diff --git a/textures/hdf_87.png b/textures/signs_lib_font_15px_87.png similarity index 100% rename from textures/hdf_87.png rename to textures/signs_lib_font_15px_87.png diff --git a/textures/hdf_88.png b/textures/signs_lib_font_15px_88.png similarity index 100% rename from textures/hdf_88.png rename to textures/signs_lib_font_15px_88.png diff --git a/textures/hdf_8a.png b/textures/signs_lib_font_15px_8a.png similarity index 100% rename from textures/hdf_8a.png rename to textures/signs_lib_font_15px_8a.png diff --git a/textures/hdf_8b.png b/textures/signs_lib_font_15px_8b.png similarity index 100% rename from textures/hdf_8b.png rename to textures/signs_lib_font_15px_8b.png diff --git a/textures/hdf_8c.png b/textures/signs_lib_font_15px_8c.png similarity index 100% rename from textures/hdf_8c.png rename to textures/signs_lib_font_15px_8c.png diff --git a/textures/hdf_8d.png b/textures/signs_lib_font_15px_8d.png similarity index 100% rename from textures/hdf_8d.png rename to textures/signs_lib_font_15px_8d.png diff --git a/textures/hdf_8e.png b/textures/signs_lib_font_15px_8e.png similarity index 100% rename from textures/hdf_8e.png rename to textures/signs_lib_font_15px_8e.png diff --git a/textures/hdf_8f.png b/textures/signs_lib_font_15px_8f.png similarity index 100% rename from textures/hdf_8f.png rename to textures/signs_lib_font_15px_8f.png diff --git a/textures/hdf_90.png b/textures/signs_lib_font_15px_90.png similarity index 100% rename from textures/hdf_90.png rename to textures/signs_lib_font_15px_90.png diff --git a/textures/hdf_91.png b/textures/signs_lib_font_15px_91.png similarity index 100% rename from textures/hdf_91.png rename to textures/signs_lib_font_15px_91.png diff --git a/textures/hdf_a8.png b/textures/signs_lib_font_15px_a8.png similarity index 100% rename from textures/hdf_a8.png rename to textures/signs_lib_font_15px_a8.png diff --git a/textures/hdf_b8.png b/textures/signs_lib_font_15px_b8.png similarity index 100% rename from textures/hdf_b8.png rename to textures/signs_lib_font_15px_b8.png diff --git a/textures/hdf_b9.png b/textures/signs_lib_font_15px_b9.png similarity index 100% rename from textures/hdf_b9.png rename to textures/signs_lib_font_15px_b9.png diff --git a/textures/hdf_c0.png b/textures/signs_lib_font_15px_c0.png similarity index 100% rename from textures/hdf_c0.png rename to textures/signs_lib_font_15px_c0.png diff --git a/textures/hdf_c1.png b/textures/signs_lib_font_15px_c1.png similarity index 100% rename from textures/hdf_c1.png rename to textures/signs_lib_font_15px_c1.png diff --git a/textures/hdf_c2.png b/textures/signs_lib_font_15px_c2.png similarity index 100% rename from textures/hdf_c2.png rename to textures/signs_lib_font_15px_c2.png diff --git a/textures/hdf_c3.png b/textures/signs_lib_font_15px_c3.png similarity index 100% rename from textures/hdf_c3.png rename to textures/signs_lib_font_15px_c3.png diff --git a/textures/hdf_c4.png b/textures/signs_lib_font_15px_c4.png similarity index 100% rename from textures/hdf_c4.png rename to textures/signs_lib_font_15px_c4.png diff --git a/textures/hdf_c5.png b/textures/signs_lib_font_15px_c5.png similarity index 100% rename from textures/hdf_c5.png rename to textures/signs_lib_font_15px_c5.png diff --git a/textures/hdf_c6.png b/textures/signs_lib_font_15px_c6.png similarity index 100% rename from textures/hdf_c6.png rename to textures/signs_lib_font_15px_c6.png diff --git a/textures/hdf_c7.png b/textures/signs_lib_font_15px_c7.png similarity index 100% rename from textures/hdf_c7.png rename to textures/signs_lib_font_15px_c7.png diff --git a/textures/hdf_c8.png b/textures/signs_lib_font_15px_c8.png similarity index 100% rename from textures/hdf_c8.png rename to textures/signs_lib_font_15px_c8.png diff --git a/textures/hdf_c9.png b/textures/signs_lib_font_15px_c9.png similarity index 100% rename from textures/hdf_c9.png rename to textures/signs_lib_font_15px_c9.png diff --git a/textures/hdf_ca.png b/textures/signs_lib_font_15px_ca.png similarity index 100% rename from textures/hdf_ca.png rename to textures/signs_lib_font_15px_ca.png diff --git a/textures/hdf_cb.png b/textures/signs_lib_font_15px_cb.png similarity index 100% rename from textures/hdf_cb.png rename to textures/signs_lib_font_15px_cb.png diff --git a/textures/hdf_cc.png b/textures/signs_lib_font_15px_cc.png similarity index 100% rename from textures/hdf_cc.png rename to textures/signs_lib_font_15px_cc.png diff --git a/textures/hdf_cd.png b/textures/signs_lib_font_15px_cd.png similarity index 100% rename from textures/hdf_cd.png rename to textures/signs_lib_font_15px_cd.png diff --git a/textures/hdf_ce.png b/textures/signs_lib_font_15px_ce.png similarity index 100% rename from textures/hdf_ce.png rename to textures/signs_lib_font_15px_ce.png diff --git a/textures/hdf_cf.png b/textures/signs_lib_font_15px_cf.png similarity index 100% rename from textures/hdf_cf.png rename to textures/signs_lib_font_15px_cf.png diff --git a/textures/hdf_d0.png b/textures/signs_lib_font_15px_d0.png similarity index 100% rename from textures/hdf_d0.png rename to textures/signs_lib_font_15px_d0.png diff --git a/textures/hdf_d1.png b/textures/signs_lib_font_15px_d1.png similarity index 100% rename from textures/hdf_d1.png rename to textures/signs_lib_font_15px_d1.png diff --git a/textures/hdf_d2.png b/textures/signs_lib_font_15px_d2.png similarity index 100% rename from textures/hdf_d2.png rename to textures/signs_lib_font_15px_d2.png diff --git a/textures/hdf_d3.png b/textures/signs_lib_font_15px_d3.png similarity index 100% rename from textures/hdf_d3.png rename to textures/signs_lib_font_15px_d3.png diff --git a/textures/hdf_d4.png b/textures/signs_lib_font_15px_d4.png similarity index 100% rename from textures/hdf_d4.png rename to textures/signs_lib_font_15px_d4.png diff --git a/textures/hdf_d5.png b/textures/signs_lib_font_15px_d5.png similarity index 100% rename from textures/hdf_d5.png rename to textures/signs_lib_font_15px_d5.png diff --git a/textures/hdf_d6.png b/textures/signs_lib_font_15px_d6.png similarity index 100% rename from textures/hdf_d6.png rename to textures/signs_lib_font_15px_d6.png diff --git a/textures/hdf_d7.png b/textures/signs_lib_font_15px_d7.png similarity index 100% rename from textures/hdf_d7.png rename to textures/signs_lib_font_15px_d7.png diff --git a/textures/hdf_d8.png b/textures/signs_lib_font_15px_d8.png similarity index 100% rename from textures/hdf_d8.png rename to textures/signs_lib_font_15px_d8.png diff --git a/textures/hdf_d9.png b/textures/signs_lib_font_15px_d9.png similarity index 100% rename from textures/hdf_d9.png rename to textures/signs_lib_font_15px_d9.png diff --git a/textures/hdf_da.png b/textures/signs_lib_font_15px_da.png similarity index 100% rename from textures/hdf_da.png rename to textures/signs_lib_font_15px_da.png diff --git a/textures/hdf_db.png b/textures/signs_lib_font_15px_db.png similarity index 100% rename from textures/hdf_db.png rename to textures/signs_lib_font_15px_db.png diff --git a/textures/hdf_dc.png b/textures/signs_lib_font_15px_dc.png similarity index 100% rename from textures/hdf_dc.png rename to textures/signs_lib_font_15px_dc.png diff --git a/textures/hdf_dd.png b/textures/signs_lib_font_15px_dd.png similarity index 100% rename from textures/hdf_dd.png rename to textures/signs_lib_font_15px_dd.png diff --git a/textures/hdf_de.png b/textures/signs_lib_font_15px_de.png similarity index 100% rename from textures/hdf_de.png rename to textures/signs_lib_font_15px_de.png diff --git a/textures/hdf_df.png b/textures/signs_lib_font_15px_df.png similarity index 100% rename from textures/hdf_df.png rename to textures/signs_lib_font_15px_df.png diff --git a/textures/hdf_e0.png b/textures/signs_lib_font_15px_e0.png similarity index 100% rename from textures/hdf_e0.png rename to textures/signs_lib_font_15px_e0.png diff --git a/textures/hdf_e1.png b/textures/signs_lib_font_15px_e1.png similarity index 100% rename from textures/hdf_e1.png rename to textures/signs_lib_font_15px_e1.png diff --git a/textures/hdf_e2.png b/textures/signs_lib_font_15px_e2.png similarity index 100% rename from textures/hdf_e2.png rename to textures/signs_lib_font_15px_e2.png diff --git a/textures/hdf_e3.png b/textures/signs_lib_font_15px_e3.png similarity index 100% rename from textures/hdf_e3.png rename to textures/signs_lib_font_15px_e3.png diff --git a/textures/hdf_e4.png b/textures/signs_lib_font_15px_e4.png similarity index 100% rename from textures/hdf_e4.png rename to textures/signs_lib_font_15px_e4.png diff --git a/textures/hdf_e5.png b/textures/signs_lib_font_15px_e5.png similarity index 100% rename from textures/hdf_e5.png rename to textures/signs_lib_font_15px_e5.png diff --git a/textures/hdf_e6.png b/textures/signs_lib_font_15px_e6.png similarity index 100% rename from textures/hdf_e6.png rename to textures/signs_lib_font_15px_e6.png diff --git a/textures/hdf_e7.png b/textures/signs_lib_font_15px_e7.png similarity index 100% rename from textures/hdf_e7.png rename to textures/signs_lib_font_15px_e7.png diff --git a/textures/hdf_e8.png b/textures/signs_lib_font_15px_e8.png similarity index 100% rename from textures/hdf_e8.png rename to textures/signs_lib_font_15px_e8.png diff --git a/textures/hdf_e9.png b/textures/signs_lib_font_15px_e9.png similarity index 100% rename from textures/hdf_e9.png rename to textures/signs_lib_font_15px_e9.png diff --git a/textures/hdf_ea.png b/textures/signs_lib_font_15px_ea.png similarity index 100% rename from textures/hdf_ea.png rename to textures/signs_lib_font_15px_ea.png diff --git a/textures/hdf_eb.png b/textures/signs_lib_font_15px_eb.png similarity index 100% rename from textures/hdf_eb.png rename to textures/signs_lib_font_15px_eb.png diff --git a/textures/hdf_ec.png b/textures/signs_lib_font_15px_ec.png similarity index 100% rename from textures/hdf_ec.png rename to textures/signs_lib_font_15px_ec.png diff --git a/textures/hdf_ed.png b/textures/signs_lib_font_15px_ed.png similarity index 100% rename from textures/hdf_ed.png rename to textures/signs_lib_font_15px_ed.png diff --git a/textures/hdf_ee.png b/textures/signs_lib_font_15px_ee.png similarity index 100% rename from textures/hdf_ee.png rename to textures/signs_lib_font_15px_ee.png diff --git a/textures/hdf_ef.png b/textures/signs_lib_font_15px_ef.png similarity index 100% rename from textures/hdf_ef.png rename to textures/signs_lib_font_15px_ef.png diff --git a/textures/hdf_f0.png b/textures/signs_lib_font_15px_f0.png similarity index 100% rename from textures/hdf_f0.png rename to textures/signs_lib_font_15px_f0.png diff --git a/textures/hdf_f1.png b/textures/signs_lib_font_15px_f1.png similarity index 100% rename from textures/hdf_f1.png rename to textures/signs_lib_font_15px_f1.png diff --git a/textures/hdf_f2.png b/textures/signs_lib_font_15px_f2.png similarity index 100% rename from textures/hdf_f2.png rename to textures/signs_lib_font_15px_f2.png diff --git a/textures/hdf_f3.png b/textures/signs_lib_font_15px_f3.png similarity index 100% rename from textures/hdf_f3.png rename to textures/signs_lib_font_15px_f3.png diff --git a/textures/hdf_f4.png b/textures/signs_lib_font_15px_f4.png similarity index 100% rename from textures/hdf_f4.png rename to textures/signs_lib_font_15px_f4.png diff --git a/textures/hdf_f5.png b/textures/signs_lib_font_15px_f5.png similarity index 100% rename from textures/hdf_f5.png rename to textures/signs_lib_font_15px_f5.png diff --git a/textures/hdf_f6.png b/textures/signs_lib_font_15px_f6.png similarity index 100% rename from textures/hdf_f6.png rename to textures/signs_lib_font_15px_f6.png diff --git a/textures/hdf_f7.png b/textures/signs_lib_font_15px_f7.png similarity index 100% rename from textures/hdf_f7.png rename to textures/signs_lib_font_15px_f7.png diff --git a/textures/hdf_f8.png b/textures/signs_lib_font_15px_f8.png similarity index 100% rename from textures/hdf_f8.png rename to textures/signs_lib_font_15px_f8.png diff --git a/textures/hdf_f9.png b/textures/signs_lib_font_15px_f9.png similarity index 100% rename from textures/hdf_f9.png rename to textures/signs_lib_font_15px_f9.png diff --git a/textures/hdf_fa.png b/textures/signs_lib_font_15px_fa.png similarity index 100% rename from textures/hdf_fa.png rename to textures/signs_lib_font_15px_fa.png diff --git a/textures/hdf_fb.png b/textures/signs_lib_font_15px_fb.png similarity index 100% rename from textures/hdf_fb.png rename to textures/signs_lib_font_15px_fb.png diff --git a/textures/hdf_fc.png b/textures/signs_lib_font_15px_fc.png similarity index 100% rename from textures/hdf_fc.png rename to textures/signs_lib_font_15px_fc.png diff --git a/textures/hdf_fd.png b/textures/signs_lib_font_15px_fd.png similarity index 100% rename from textures/hdf_fd.png rename to textures/signs_lib_font_15px_fd.png diff --git a/textures/hdf_fe.png b/textures/signs_lib_font_15px_fe.png similarity index 100% rename from textures/hdf_fe.png rename to textures/signs_lib_font_15px_fe.png diff --git a/textures/hdf_ff.png b/textures/signs_lib_font_15px_ff.png similarity index 100% rename from textures/hdf_ff.png rename to textures/signs_lib_font_15px_ff.png diff --git a/textures/signs_lib_font_31px_20.png b/textures/signs_lib_font_31px_20.png new file mode 100644 index 0000000000000000000000000000000000000000..a83236df8ebb07d8b21d1f80c4a6ad721875c629 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^AhtXskYM;0lxP8@xIJAQLpWrU7pMX`u?&o^|3&_Q Oq&;2zT-G@yGywp0oec*7 literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_21.png b/textures/signs_lib_font_31px_21.png new file mode 100644 index 0000000000000000000000000000000000000000..d3b9f61865255cb639701a33061a8079d970a729 GIT binary patch literal 89 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol}!2%@nWJ)FgDFsg##}J9j$q5b(|9P4lKFgn5 m!pP1TXcJ?VdyeDJ4%A#}JM4$q5aO{}VbM@CJ4M p_c-)_V#N=Y4Tl3e134vF7z*T#?!05WdjqJN!PC{xWt~$(6965J8{Yr` literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_23.png b/textures/signs_lib_font_31px_23.png new file mode 100644 index 0000000000000000000000000000000000000000..eded52033509c2a67bf9cc8df5e2a1c91c4fd53a GIT binary patch literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^!ayv~!2%@L&$hDxQa+w8jv*GOlM{aUi?}>>U^MCv zN{!e$VNFkCP3nKoFgFRFIYx)%4g`Fg&vr_}V5;Eb#>ODG9`=960zR26Q~oXwkj&He h40cOeCm(Z)VVj)KA;}593V`M^c)I$ztaD0e0szXFD+2%k literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_24.png b/textures/signs_lib_font_31px_24.png new file mode 100644 index 0000000000000000000000000000000000000000..9225f94a97bd7206cedc5ed0aef29891c53fa1e1 GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^f#=e=VDQt6&9jv*GO*G@jj#h}39{QbXu z?)HG&IgY|sM^@)(38*q`nR|fy(p7<_y*^fY9b1A_mf!AwT3)Ln!SuHKSJua;Y@V-s zm_*8#U*TcdCCSqg^}XkURN|@BNw-UPm7koj!l_QqR66k^Ya~O4)R*nNp7ViLGI+ZB KxvXlsYSsDvkUvT@2fPv{`=0Usmys#vJy6SCpNwO?-qT?K(pb`$(TIb h-5(y#`Li)SUQ?@R)q#|q`+@FY@O1TaS?83{1OPICOLPDL literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_26.png b/textures/signs_lib_font_31px_26.png new file mode 100644 index 0000000000000000000000000000000000000000..b7a977867030111455ecdd35ca086783acb0744e GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^qChOq!2%=~wfa>9sZ387#}JFtPp>%g9Z=wK34B-o zvM^H6?uu0S+SRkBb2MM{xm;zZs-1X5(CyFMwEDhVqPrfw-FB`xlzZZ%gq=axb8I!2 zh(v2_?AFapX%3PyIr3`@-*xw&QJU8~xL0|^vzo+DegTe~DWM4fCsr5m literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_28.png b/textures/signs_lib_font_31px_28.png new file mode 100644 index 0000000000000000000000000000000000000000..8641fe1c8b3633bc6df1a9f96b973a5c5c6cb5e2 GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^oIotk!2%@bi|fk*DH~50#}JM4$q7IB+XX(%XY^(8 z_Kl-l#r0hIh978nDCnx;q7gdtr;c?+K zUcjMT!NXIK$R;Ai`{%e?bBgLFff$KcT|4Iq7Aw+}tGUijw>Xp%Qt^S4nIX|o{ClkR Rz8auO44$rjF6*2UngD+rAV&ZI literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_2b.png b/textures/signs_lib_font_31px_2b.png new file mode 100644 index 0000000000000000000000000000000000000000..1c5be462320879719d5b440b0b09e8f56a4a3d44 GIT binary patch literal 89 zcmeAS@N?(olHy`uVBq!ia0vp^f#=e=VDQVO0fjv*GOlM{aU3-oCzI&t#w n9N_r`M#s;?U&#K*bE6u6{1-oD!M^Pm?8(H#64XcLp07OC;aGV?aOfVaZo;Z bae{jz1M3?O_Af#_ASDc*u6{1-oD!M literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_2f.png b/textures/signs_lib_font_31px_2f.png new file mode 100644 index 0000000000000000000000000000000000000000..91b0e1c75205d71bc5f7bdeae22c67d321a2aacc GIT binary patch literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^oIotk!2%@bi|fk*DHBf@#}JM4TTg7{Wl-Q@*?7DD z<>CdM3a)WXJB=e4PITWA6tA5LMB%*)UYy=@PGb7>{aYC}$vu>>NxdBn)X(7Q>gTe~ HDWM4f^=l%5 literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_30.png b/textures/signs_lib_font_31px_30.png new file mode 100644 index 0000000000000000000000000000000000000000..c34aaf878177f10cfebdf46343ee3cd8a35bf52d GIT binary patch literal 125 zcmeAS@N?(olHy`uVBq!ia0vp^0zfR!!2%>**0kD#C{Gv15RLQ62|xT9lq575oEg;| z0vluxh(2JG;JUEZ+4!%$7<+IiW7LP92v!rGtfq^;E=`Ivo^*I@aZ#yOGCHRa#=xN2 W&ChVSV*V4Lc?_PeelF{r5}E)k=OR)7 literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_31.png b/textures/signs_lib_font_31px_31.png new file mode 100644 index 0000000000000000000000000000000000000000..091e6c9b94850ed4925e3c4a4ed36792399cb31e GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^+(0bP!2%>_Kl-l#q_jL;978nDCnx;q7ZpdD44$rjF6*2UngFQb9UA}u literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_32.png b/textures/signs_lib_font_31px_32.png new file mode 100644 index 0000000000000000000000000000000000000000..e43a58f15df505899dc97efcc02da5ccaffec1df GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^f#=e=VDQqi6+jv*GkS0{OLF(~jb|NX!G z@x`T=U0DuR6iR0BWct38n(fM#=-aWLiOG1)>bE*u-YF!xgmXNrZ0ZpF{F29jqxFG} x{`aFs9~idl-`FK_z^H}erRpIu#a;dr_!2&AJ+Ux)F$-u7gQu&X%Q~loCIAylGtmG5 literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_33.png b/textures/signs_lib_font_31px_33.png new file mode 100644 index 0000000000000000000000000000000000000000..7a873cf17f53d24810aaf850b6a67a6bb3ca202d GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^f#=e=VDQZb$`jv*GOuTD1PV^H8>`uTtP z>lM8U66%G9&yrZ97rdD@dl~P;D1o&yiC=$9)-P~>CABcovSo(ebP0l+XkKsX;ZS literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_34.png b/textures/signs_lib_font_31px_34.png new file mode 100644 index 0000000000000000000000000000000000000000..952d474dbbe1377ae33e617bb372b4854aaec633 GIT binary patch literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^f#=e=VDQl6eJjv*GO&t5jc3x?W%Fd9p$wj`elF{r5}E*3S1Sns literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_35.png b/textures/signs_lib_font_31px_35.png new file mode 100644 index 0000000000000000000000000000000000000000..4297837c4f9b350b336a1025a9573f3d294f0e01 GIT binary patch literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^0zfR!!2%>**0kCKDIZT4#}JK)$q7IF8Jsv|8vbz= zSWRl2$0e~rL+t_k9xe%wFox}-uAF7lgV#K;_vE@Tw$(JUmOjs2-$u^DQ h|M8FpZa!94hDvAo_r792ra*HUJYD@<);T3K0RZiCCiegU literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_36.png b/textures/signs_lib_font_31px_36.png new file mode 100644 index 0000000000000000000000000000000000000000..71c6e4b65f1cd82c8621055942b9420b5e5459b7 GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^0zfR!!2%>**0kCKsYp*3#}JK)XD1u-F(_~_|NOta zu%L0v(!@)t<8 literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_37.png b/textures/signs_lib_font_31px_37.png new file mode 100644 index 0000000000000000000000000000000000000000..c73dc109a6ada0e151b0aacfa31a8efe2578c1e8 GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^f#=e=VDQcj*Ojv*GOuU*0; z`?h6(aJ$fob@>H?CS_;TUaFrGEK+jU+93cWPjt#Csu#5^cj?>UY;!~X?bUrs>`Ocg V<|WK!lmeQ@;OXk;vd$@?2>|sTCJ6ul literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_38.png b/textures/signs_lib_font_31px_38.png new file mode 100644 index 0000000000000000000000000000000000000000..40282983dd72d496a7d109f930853582ddb58e00 GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9f!2%>5B14&gRHUbiV~EA+tCJ1+7!){|fBs)y zxOCYAUaOAo3Ei23NzO_>iJ$qqllI8R+!8pHEhNIt^`-!Bn vtNy~kV5`%AS3Ec=qwu3VW9f&YI#ylIN7k1oGnDQGTEgJz>gTe~DWM4fVv;hR literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_39.png b/textures/signs_lib_font_31px_39.png new file mode 100644 index 0000000000000000000000000000000000000000..a240984b4b4409f0ae0a836b7e23da938ea6fc89 GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^0zfR!!2%>**0kCKsc=sh#}JM4XD4qIVlZHF{`=qm z^|KWM%gn@{-xHYCrJ;F$7Q+Nl1|8-sRffvOYkzpGuDdgsc3u-HTcNoiL#FX|C8J1o s5W}(+^=H-iPrKwgS$F(>@wkRt#=wW4!RUC)TA&pSp00i_>zopr0L?-#4*&oF literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_3a.png b/textures/signs_lib_font_31px_3a.png new file mode 100644 index 0000000000000000000000000000000000000000..a3d967c85fcf89012957803e8eca82be813e1cf6 GIT binary patch literal 78 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol}!2%@nWJ)FgDN#=s#}J9j$q7IDSu#&LG8kDZ bAI)Xhb-cY&PH0&rPyvIdtDnm{r-UW|Ubhnh literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_3b.png b/textures/signs_lib_font_31px_3b.png new file mode 100644 index 0000000000000000000000000000000000000000..becc877da3c34482179b58ef0b250f76e4eb6690 GIT binary patch literal 93 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol}!2%@nWJ)FgDHTr_#}J9j$q7IDSu#&LG8kDl r-_PA);c+VA%zqw_Gygf*1eh55u2;6t)4JgVRL|h)>gTe~DWM4f_O=>s literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_3c.png b/textures/signs_lib_font_31px_3c.png new file mode 100644 index 0000000000000000000000000000000000000000..0d3d291c1a93a89b99e1953bd1c96bb5ce7f5790 GIT binary patch literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^f#=e=VDQl6eJjv*Gk$q7IF1^ToUojExk zgfuZkOkKcaqI!d2lF%E5S1~aR>(grTlpk0pO-bo7$&9kHM~E(Z3WO!22WQ%mvv4FO#q_6C%6Cr literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_3d.png b/textures/signs_lib_font_31px_3d.png new file mode 100644 index 0000000000000000000000000000000000000000..952ffca2d179b864f4a30b6d41b8e0ae921648f6 GIT binary patch literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^0zfR!!2%>**0kCKDLGFU#}JM4$q7IF8Tzyq%wqb} lV8`WlIPpWv;RD(X4EZ<9W-Rng6a=bd@O1TaS?83{1OQz57y1AI literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_3e.png b/textures/signs_lib_font_31px_3e.png new file mode 100644 index 0000000000000000000000000000000000000000..4367ba0c177807f59601f4adc521f6c2ef8d6803 GIT binary patch literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^f#=e=VDQVyOjjv*GOlM{aU3-oCnT*$)G z5zrJbDW%}VY1X#=e=VDQemDhjv*GkM=u=YVo=~<4*36n z`E}J5CB{lC%ev%DOr6hH8MN9|s~vRERIEP|_Kq(qR-m9sn@Q;QM1w#!jZOvC1eZ4* rf*MNYB`zW7Jbb68FG+iGe+lEOhly+VCbI_uZD8bP0l+XkKQhP3I literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_40.png b/textures/signs_lib_font_31px_40.png new file mode 100644 index 0000000000000000000000000000000000000000..5003e81db7213f1a9806a0601ddf3cbe5b3f41f6 GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^azHH4!2%?sQn&U1sR^Dgjv*GOw_XVpYEa-{33ykZ z`74{LEb@rw|E&35CbKMO7Eb6%x+|32VX<_wP=ZTsYg2WHG5eNhhn!uF^S}MQCh^TV zVmnWQU*zw5pF?^Un?5w_*mcOJqT#Ka{|nJ?@f-4Deog%)_xStMh{+EnjrH<{!j`}J ze=_s|M}B4T714Fx8&VTJwsIsLWliJmm?i$1Q8z~aEq}s^uRymkc)I$ztaD0e0s!kf BQJMe% literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_41.png b/textures/signs_lib_font_31px_41.png new file mode 100644 index 0000000000000000000000000000000000000000..22542bf1ba839015f881d577b013663a6c56e69d GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^;y^6V!2%?g70h!3QX!r$jv*GOpI$cPV^H8=KJf4V zur?aO=@9xU_STg7evL*6->`~7v@&%6Yh&*16m=d#Wzp$P!{bTXI# literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_42.png b/textures/signs_lib_font_31px_42.png new file mode 100644 index 0000000000000000000000000000000000000000..8250ba6f79ef98894b0f6e3bcf2ac14e40b3756a GIT binary patch literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz9!2%?G-Bn$Il!K>>V~EA+#cw$nki>u@Dl UYxWg)0nK9YboFyt=akR{05l3CvH$=8 literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_43.png b/textures/signs_lib_font_31px_43.png new file mode 100644 index 0000000000000000000000000000000000000000..60df4ce1b323e58f13dc8205f9fc9b4b14554af5 GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^Vn8gbH+`)DQjwl6jv*GkZ!aGdVo+dV3Hbm2 zvemS$hfHE;6}{0k76=rscwp9Mr?^yG|H4Vmr}cts1o)0$**7oA_CU3i*w>F|mnHl^ vthLm>^lW8buGcZq!tC9ZP1#bH+`)DQa+w8jv*GO-(EK4V^H8=KJf4V z_gWE`z75pUXO@geCw2LNXBm literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_45.png b/textures/signs_lib_font_31px_45.png new file mode 100644 index 0000000000000000000000000000000000000000..edc2321805e5fd9ac4e4345e34005a30d51d1259 GIT binary patch literal 101 zcmeAS@N?(olHy`uVBq!ia0vp^!ayv~!2%@L&$hDxQaYY4jv*GOlM@tp{xLsv(Ei=e z&ZnQcqdED()ZRG}3p6$#=e=VDQfi(qjv*GOlM@tJ{u%SMO!{x} u;6iBA-P6pAQ+~9*n-K76zJg4Y7Xx3V&84@2Tb}`SFnGH9xvX&5tciM%a)9&XsPBkSJj z&p~%jxu-s|JYLTCbWOCbTF;y3?)+uuO#jZDQu9Hn{;+(!+l(@)gwppZ*LuL`ze__t{$xaNtzkLol*6aTSs%P+Y^>bP0l+XkK#^M>d literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_49.png b/textures/signs_lib_font_31px_49.png new file mode 100644 index 0000000000000000000000000000000000000000..a07c15abc5e026500de0c9a5a638f88908758108 GIT binary patch literal 79 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol}!2%@nWJ)FgDKSqM#}J9|Okj4b~P c+H_em{85o-Z1nKX0jgl|boFyt=akR{09z3fK>z>% literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_4a.png b/textures/signs_lib_font_31px_4a.png new file mode 100644 index 0000000000000000000000000000000000000000..ae61bf1719918ac3e566810a08f2b73f051a32ba GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^0zfR!!2%>**0kCKDKk$O#}JM4$q7IDS(Ogdw*|5u z_F^$vFyUB01K&UALyZfX{#PuS=p;1zNqvmt-}(+s28REA7T0+H-be?Uz~JfX K=d#Wzp$PzS%On>7 literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_4b.png b/textures/signs_lib_font_31px_4b.png new file mode 100644 index 0000000000000000000000000000000000000000..87d9c78e465f40b6ea87bf835044b826d3c09dfe GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^qChOq!2%=~wfa>9sYp*3#}JFtcP|_AF(_~_ANcqG zvW1kOR__iC={pWdjL(e23pVrZ@)wf&>Rk1vD5GR?P4#^PzrdwD>w>wgHRJ;2=U4qFGOWP3Ft^R6M&rv$+ar34^DrpUXO@geCwqW-){S literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_4c.png b/textures/signs_lib_font_31px_4c.png new file mode 100644 index 0000000000000000000000000000000000000000..bafd6d2b9f8e7132e1a173c74b5aef4147222471 GIT binary patch literal 88 zcmeAS@N?(olHy`uVBq!ia0vp^f#=e=VDaXeidLo7}wCpa|xw|KB(QlRQ# l2hK7Ff7Sn-hZZhnVR)vRvPy<~(>|b522WQ%mvv4FO#q827@PnA literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_4d.png b/textures/signs_lib_font_31px_4d.png new file mode 100644 index 0000000000000000000000000000000000000000..efc8814823316ba58d7a34a1b10be9d36850eef7 GIT binary patch literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^504y}13q z@BL#l|7vJ?roVD@)a38l@;7wBvkH*~$9`xnV7kGV!ncd7fI;~{UN>vOd<%vzLJNW| e8D^Z3cVx;6^*DBSS6nR6PzFy|KbLh*2~7a(J}ajH literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_4e.png b/textures/signs_lib_font_31px_4e.png new file mode 100644 index 0000000000000000000000000000000000000000..10b7607596277a15c9d95183f5ad20ccc660a910 GIT binary patch literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz9!2%?G-Bn$Il!vE_V~EA+yB7@k8XS0-5B~kX ze7X?dgh?+7nq#Z94ok}K&GX*Z&Z5BRAs^)Ud;*tMd&mXLB~9NJu0Q|Ik@*6H2}6GS d?KkruFcu|hJd5RP-2*g}!PC{xWt~$(696k!D*XTe literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_4f.png b/textures/signs_lib_font_31px_4f.png new file mode 100644 index 0000000000000000000000000000000000000000..9698926a2952dc4445f398c29cead45efcb858d2 GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^5?2 y5B?n&+`VP*S{J!(!tN=vc1RtGJ@iHC0>hO*dxCbwO1=VG!{F)a=d#Wzp$PzFoHmC5 literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_50.png b/textures/signs_lib_font_31px_50.png new file mode 100644 index 0000000000000000000000000000000000000000..67ebc51f0f6f9ef42b36fe7dc551d15023c53e59 GIT binary patch literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^!ayv~!2%@L&$hDxQjVT3jv*Gk$q5H||0z2%HF%`* z9MMX42yZ*BTQOy!_K}ru{wsvJO%cCvw3FdVmyS{phadk!_7f|Nv@{N@Th5un$k2Q( UXis(FY>=4@p00i_>zopr0K(ZNhX4Qo literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_51.png b/textures/signs_lib_font_31px_51.png new file mode 100644 index 0000000000000000000000000000000000000000..83e28f0be1ddc11b81c78ede21618df23173a47c GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^5-CgfAy@)@%q{azRu*@SqCshc!JPVjbsnOB}R6q+Bs)%9J3Rl>IB$+eZC) z^O2it8dHBO$Ghb#vn;*0Leeu=LWM%e21v2Zz23V7-$lB`=`os5!47 T=_d0fpxq3fu6{1-oD!ML literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_52.png b/textures/signs_lib_font_31px_52.png new file mode 100644 index 0000000000000000000000000000000000000000..d651ab264fab7d66f99f8081dcd34cce9049ba71 GIT binary patch literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz9!2%?G-Bn$Il%1!GV~EA+E=0B)f%0te)EmJL>6e;zqp=M@@PtA)Q0(a239AUKK;nM=kq}<=wQdLZz;KHcjuYO zs5jfb?vW43onX*q_WQ&kf+|sXy3TOJfF7EwT8mfPg|D8$p;#|?_vp`!J NJYD@<);T3K0RSj(J+S}) literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_54.png b/textures/signs_lib_font_31px_54.png new file mode 100644 index 0000000000000000000000000000000000000000..ad38df3d81d0f48c1ff010784afa13cbfc1791c5 GIT binary patch literal 93 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz9!2%?G-Bn$Il!~W|V~EA+tZg=zz%6X^;U+%r?*D#kqBxBs%P+Y^>bP0l+XkKzOorO literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_55.png b/textures/signs_lib_font_31px_55.png new file mode 100644 index 0000000000000000000000000000000000000000..80f1ba4071fd00570eaa32aba1bae605eefc93d3 GIT binary patch literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz9!2%?G-Bn$Il%1!GV~EA+hSfpNLf1}BrP5h9L93|KZYt~m7HMdNq>U9FsV#~xProKNHwc~fAa$-9sUS}m#}JFtcP|@qF(~jjU%dDK z(*3}rCW{i-ZyWaWw7Pw9d^2NS0MES1=~Hx5mnK@B*PON}bIDxuDN}-6p9jP(>FS#t oprf-;BEseKbI1Dq_v|y7BUf(^4_&-e2xvNkr>mdKI;Vst0ORB_`Tzg` literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_57.png b/textures/signs_lib_font_31px_57.png new file mode 100644 index 0000000000000000000000000000000000000000..7b43529d7eb9d63a07073d63192d34ef7230660f GIT binary patch literal 151 zcmeAS@N?(olHy`uVBq!ia0vp^azHH4!2%?sQn&U1sW?v;#}JFtZ?9PM9Z=w54!HmS zQrZ#^Gv23{c_yfKeVWF?@amzmz^e0!bw|!LDXv`ix&DmojV%-+mfe(>UYb=hT^FRx60cyULC4wtc(=4Wo3g?oWEF?hQAxvX9sSHmS#}JF&yAwV67!){|fBs+o zF=f%E#GP8^R)$MWt>@bpYhORaAhTd!An$S6KMLj#ydxH6@79>J^04G$zl@gK87pQ+ z>0dawK6iaH%dMUBHnlzcBz9`y#(;&9lAg{pS1x+OQu|Qh^Pf(=?;(8+ONIC60PSS( MboFyt=akR{0NFl1umAu6 literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_59.png b/textures/signs_lib_font_31px_59.png new file mode 100644 index 0000000000000000000000000000000000000000..647bdb8a7ccdaeb4746655ba0c88eab1e443e30f GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^qChOq!2%=~wfa>9DL+pa#}JFtZ!etYVo>04x%l({ z{C&A^4V5k`DaBUFxM+$wf8VU+nsKXiX2!<7=jN=)N$V8StiBTeUM_g?x5_0udKH;vftaE_E#-;=ad6}4054yK$96fUHx3vIVCg!03o3;9{>OV literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_5a.png b/textures/signs_lib_font_31px_5a.png new file mode 100644 index 0000000000000000000000000000000000000000..7b3ba636165144c1f5dce6ccd49f53132b3cf6f2 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9f!2%>5B14&gl((mgV~EA+tCt+P7!(AU9RB~$ z+6p-BRwP42RqE7YHROytbGq@=~t|E-0?qsyl9 g|3?nP7wa<^T+JNM7N>pt2sD<#)78&qol`;+0H-%A@Bjb+ literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_5b.png b/textures/signs_lib_font_31px_5b.png new file mode 100644 index 0000000000000000000000000000000000000000..2ba87b66d70f596d1a6ca3dcd7a9a089198b53d6 GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^oIotk!2%@bi|fk*DJf4E#}JM4$q5eZ|0O*{e(|?2 gb~^0Sam0j?;mDk(Ix&UGCO}mTp00i_>zopr0I5?H82|tP literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_5c.png b/textures/signs_lib_font_31px_5c.png new file mode 100644 index 0000000000000000000000000000000000000000..6c7e6bf753fafe6e334b3983000641e5c200bf57 GIT binary patch literal 114 zcmeAS@N?(olHy`uVBq!ia0vp^AhtXQ3y>^Pm?8(HEInNuLp08BJ*&vaV8C?Lbuwp00i_>zopr0Lx1i`~Uy| literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_5e.png b/textures/signs_lib_font_31px_5e.png new file mode 100644 index 0000000000000000000000000000000000000000..5ac99a6a880a3c288cc54a410f69e625ae2bc082 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^{6H+v!2%>FamGghDQiy`#}JM4$q7ID#f9{FnIo1? zWSqM6BBSP|6HP0)I;Ojos>IA|!S3j3^P6sNJhT1na*WOJ)bqt=aelF{r5}E+`fE6PE literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_60.png b/textures/signs_lib_font_31px_60.png new file mode 100644 index 0000000000000000000000000000000000000000..02e07615d648bae4c3d3d5a16a85084a11e361a1 GIT binary patch literal 88 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol}!2%@nWJ)H0IG!$!ArhC96B-)+CvdPQoU6}~ lVdHpiuf@*hZaJlx;hV{dh;N!-vVlq&JYD@<);T3K0RS?^7P|ld literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_61.png b/textures/signs_lib_font_31px_61.png new file mode 100644 index 0000000000000000000000000000000000000000..8591054e290d8917a3e799310dd419e3fda878d9 GIT binary patch literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^0zfR!!2%>**0kCKDIZT4#}JL+yAv##7!)`T|MD_c0ZmZ53#`98YO+_zO hZ+xi}^0ldeVP?P1Be{brH-P3cc)I$ztaD0e0syJCD_Z~n literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_62.png b/textures/signs_lib_font_31px_62.png new file mode 100644 index 0000000000000000000000000000000000000000..63b6c29e22bd54a319fe05179ab9461be139bff9 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^f#=e=VDQf{6ujv*Gk$q5aO|1BOGgg5bQ z&^pNS-_T^zVwTHQKDRGUP58>1=P$hQ$$y0)r*-`s++-pJ8+;k>9cfU$npi6Nj>Xbs bDg(o^--dVFIJPSRO=R$N^>bP0l+XkKI(#Zb literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_63.png b/textures/signs_lib_font_31px_63.png new file mode 100644 index 0000000000000000000000000000000000000000..f0d6995d6b7aa30890eac0bb9043b66fe1a11839 GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^0zfR!!2%>**0kCKDOXPy#}JM4$q7IF8ThPOPcS$$ znl&t85LXCeTz2+^lE{<~jnab^^|{9+wLx3Xk`rh?)Ek3R08MYB6tjJJGd aWmw-Cv27v8%NIZc89ZJ6T-G@yGywns7ACp? literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_64.png b/textures/signs_lib_font_31px_64.png new file mode 100644 index 0000000000000000000000000000000000000000..f73979c91ace6c1340908993740cc6c6aa9f499b GIT binary patch literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^f#=e=VDQl6eJjv*GkcP|<8F(_~_ANcqG za;cHxQl-MfyXJ9*GRU3d`)Js?(PgrS=p!bfkHwM>JJT9Xq`bN=^)An@ZE)5#=e=VDQr?~}jv*GOlM{aU3-D#Do?z$} z%3*Nj)ME&5;!n^xSRy)0_Wwq!zxHLU7E>OS@lKukpp!vpO2T)OjgH^vJA4q9?!6%@ g=n-_-MxK$u_F~Acg|>xBKw}v^UHx3vIVCg!00o;Ug#Z8m literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_66.png b/textures/signs_lib_font_31px_66.png new file mode 100644 index 0000000000000000000000000000000000000000..8d23c9c6b288018af8a8ffa29d2ab08357ee2489 GIT binary patch literal 102 zcmeAS@N?(olHy`uVBq!ia0vp^+(0bP!2%>_Kl-l#q;x%9978nDCnx;iZ|C?hpRrqE zk^!?~qK16v5BthPHyBPH3Mo9f!ay&v#G^iup-cR_=F4bPgg&ebxsLQ04?|) AX8-^I literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_67.png b/textures/signs_lib_font_31px_67.png new file mode 100644 index 0000000000000000000000000000000000000000..ba5de8d45dac5cc1aa0782d41dd9aae85ad51dd2 GIT binary patch literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^f#=e=VDQn{Wkjv*GO?@m0(cR+!|S@Yxn z`kmG~dVXCyQg)x2Ji#fRt0&CH{P)ZyvGzQ%e5SD+%TBc>yxJk6qBB=9r&Zw2@0uyx zOP{i{AJCd!#C=rd(~Aik3)s!OT=X&vl)baQpOaK}U2*$Rg|_&-;58Tcg+ryRQl-@D Qffh4(y85}Sb4q9e08rOD82|tP literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_68.png b/textures/signs_lib_font_31px_68.png new file mode 100644 index 0000000000000000000000000000000000000000..726598b2aebdc78cb862746d36cad6ec32f7188f GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^0zfR!!2%>**0kCKDML>e#}JM4$q5aO|1BPD2x(X; zzopr E0B@ikegFUf literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_69.png b/textures/signs_lib_font_31px_69.png new file mode 100644 index 0000000000000000000000000000000000000000..b790d77b60b1cae6c89a740b1a4bd07ea1a54b86 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^tUxT!!2%>(wa-rmQnH>djv*44lM@;m|MRrW{Qpp3 kre_zYb5rNt*++~SMVajm^{FVdQ&MBb@0B!ylxBvhE literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_6a.png b/textures/signs_lib_font_31px_6a.png new file mode 100644 index 0000000000000000000000000000000000000000..3e735fee9a11070632cd26952b38eb36d7893a10 GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bf!2%>3@5!$NQi`4~jv*44lM{aMw-|hw-&mr@ ol=L_#>63=|F;})9I~;NuK1jwd?EK=@3RKMC>FVdQ&MBb@0M>09djJ3c literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_6b.png b/textures/signs_lib_font_31px_6b.png new file mode 100644 index 0000000000000000000000000000000000000000..d03c19936838468e94e871a022c469e4c8289adb GIT binary patch literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^0zfR!!2%>**0kCKDNj!q#}JM4$q5aO|1BOEgf-}N zxiYSjXk#i7jEQ-ZcOYA_EHfogMlMZZNsA3DPl}d;l1xW{gTac4tsGhj3f8s@G=KOr c@UgNoG&*QKDe{n31{%uX>FVdQ&MBb@06icg{{R30 literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_6c.png b/textures/signs_lib_font_31px_6c.png new file mode 100644 index 0000000000000000000000000000000000000000..836db1a0d193eca43c4ad1c015f6b49f96c2ccd8 GIT binary patch literal 78 zcmeAS@N?(olHy`uVBq!ia0vp^tUxT!!2%>(wa-rmQlg$Njv*4^$q5aO{|l~lr2lJo b{xpL@v%u_>RpGAXKm`n*u6{1-oD!M|FO1NV#~rIEGl9PEPpYZzOZoX_J_Q z!_%a|248Ng10snI#w{8SZDKsT|0f%=UUrYz^Id-ZjryEP|2aE)vm~!N&6;+xsKzopr0Ky|E;{X5v literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_6e.png b/textures/signs_lib_font_31px_6e.png new file mode 100644 index 0000000000000000000000000000000000000000..f8a8dc6895d5767592e9ef82fcc67ea177d9d57e GIT binary patch literal 107 zcmeAS@N?(olHy`uVBq!ia0vp^0zfR!!2%>**0kCKDI-r8#}JM4$q7IF8Tf=*4H}Le zUB)2%=eU+v7ZXqM|KvhWvCI_J{~NvgwIn214=ctqFepU1A75~Ewgpf(gQu&X%Q~lo FCICOJ9Y6p8 literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_6f.png b/textures/signs_lib_font_31px_6f.png new file mode 100644 index 0000000000000000000000000000000000000000..8982e750cf2ecb2cf69718fbb026b15759d87dc3 GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9f!2%>5B14&gl(VOcV~EA+#=e=VDQm&pZjv*Gk$q7IF1^Ap*4H}Le zUB@DupmC6`Bj8ZON|wtRCaMv&j*En178(k8t$3`Q;<`eKg<<7I50@kbEl#=e=VDQeK`ejv*GOlM{aU3-D#Dax|Q2 z)^=o<@cPjBpNB;xLE~rt(Ods{B19Hg%dTcJk>?Fmt+4TRxgaRY`2S>Zlj`0DxBEjm e<^1_IRT_Kl-l#q;x!8978nDCnx;q7v)n*lyDGp z5O&+J(J=6a3U_iLCvzFQ(S!2uA4KGIUa~MO`0|ne*ZYl?Kz$6Ju6{1-oD!M<$^jjR literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_73.png b/textures/signs_lib_font_31px_73.png new file mode 100644 index 0000000000000000000000000000000000000000..43ec4518d5ec2558be145fbaf511d23c8536ee7c GIT binary patch literal 136 zcmeAS@N?(olHy`uVBq!ia0vp^f#=e=VDQvRMUjv*GO?@l)4V^H8={{7$o zdaL8o)(t_|yB~Hj<($uY;_FnRcSL^Pm?8(Hv^`xMLo|Yu6MpowPSW6Dz9Mvl xMTJu+|KbM07SD%bE~5YXQ~1mrQ#|w?8J_hXwYFzJupX$5!PC{xWt~$(696$08SDT6 literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_75.png b/textures/signs_lib_font_31px_75.png new file mode 100644 index 0000000000000000000000000000000000000000..54696efdebf73f32c2cf75e44dc8047e2c5eae15 GIT binary patch literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^0zfR!!2%>**0kCKDPvC;#}JL+q5K%Aox#)9&t;uc GLK6TkLLC7B literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_76.png b/textures/signs_lib_font_31px_76.png new file mode 100644 index 0000000000000000000000000000000000000000..3cc3dc966728a8d09e0f28fb401d678db226a637 GIT binary patch literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9f!2%>5B14&gl)I;kV~9m>a>5UP7MW*V0u0kx zHg^3>4sFwNTeIkYg~(s^U_s`v)BhH8CqKUEAh?M|EI%M#(92|z#=?n8ZvuViDa915 c&|+e^vS)Vj4}+)GKqDDEUHx3vIVCg!0F!?xmjD0& literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_77.png b/textures/signs_lib_font_31px_77.png new file mode 100644 index 0000000000000000000000000000000000000000..948ae218dee10d6527407a3e48b632651f389006 GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^Qa~)v!2%?M`$WG1sR&OO#}JFtZ?8CVF(`1bIQ;+r z@@>SUs2L%0n{Hnd$WUqO{Tj&iHA(UOH-RP&sgo=xxn33tFmbR8D4p;-?D$P%ckzp- u+9t0TJ1&@=S0%sk`n#o(A)k^pd!-VY^xiccz4Z}j2ZN`ppUXO@geCy`3N#=e=VDQX!r$jv*GOlM{aU3-CFsax}zB zxNdWEFEvK4ccZkivrq`R%YsUi~hMa|s#wDDy4mqq6(mAL4B2%fU oFM&m%$4yCySb%7 literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_79.png b/textures/signs_lib_font_31px_79.png new file mode 100644 index 0000000000000000000000000000000000000000..dbab5114872ccbf4a46025b71aa1c785c20279ed GIT binary patch literal 131 zcmeAS@N?(olHy`uVBq!ia0vp^f#=e=VDQeK`ejv*GOlM{aU3-CFsax}!w zkn&oPcQE8ogEuF$rPl---zK3Pn>}6^oTl&c+Q6!^?Zl#4LNYH~Z+ZQ@9K@-|DsjFamGghDSJ;B#}JM4$q7ID#rYC5YZ|Uy z+9BI~^y!L88JBo|EHPA_xMZW}p`{zWlO`S$dbUI5zwv{qf6h0A7fm>NBf#@HL(pW+ Vr?vOadH{`L@O1TaS?83{1OT<}Eb#yU literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_7b.png b/textures/signs_lib_font_31px_7b.png new file mode 100644 index 0000000000000000000000000000000000000000..81cb103110371fb9c22bb6d4be871d76b5a414df GIT binary patch literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^AhtXQ3y>^Pm?8(Hj6Gc(Lp07OC;Z@V<@hk4(V0W< zL_@s5D*nh1{|y9F4ygZ-x0U$6*x`*<;f$a465Nlx6BwfT)`ZNT-})M;ox#)9&t;uc GLK6VD#~|kb literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_7c.png b/textures/signs_lib_font_31px_7c.png new file mode 100644 index 0000000000000000000000000000000000000000..fc6a6262117140eba8fb872bf32f40b62d8e2021 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^EI=&J2qYL@%ns}ZQrw;{jv*Yf$qP7u96JWag)Ejg OLDHVCelF{r5}E*b=?ta- literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_7d.png b/textures/signs_lib_font_31px_7d.png new file mode 100644 index 0000000000000000000000000000000000000000..70e8f7510251cc60b880c73258318b8e67ea8889 GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^AhtXQ3y>^Pm?8(H3_V>OLp07OCpa|xFX&*}z;&qQ zV#)-T|NP00Y$*r--(VFK`VngMKv;&)vEB4$f@cE5xmjyMj&vFVdQ&MBb@ E0EFNmF8}}l literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_7e.png b/textures/signs_lib_font_31px_7e.png new file mode 100644 index 0000000000000000000000000000000000000000..cf63d5d3dbea436980423ef131fd26ad8980869f GIT binary patch literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^{6H+v!2%>FamGghDPvC;#}JM4$q7ID#rwSY{W3WY zDE9J9P?5Osbix#a1z!J;uli(frX08>p^$IVw2K@|_n9y}wOg3`ezn;TpmqjNS3j3^ HP6r+8Nua=3`(WaLBnP@vh5DgXR|(--Ktze~W#8t^L$rty-~}@r$chFF|_JH?ytfC7ih%+Bxo zjbcrXxdb{~cD=mm)AzRgmK8D*uJ>BBMRLQ99#n*VQZVU>mUF&mThO)M@dZ==&ze>5 z3*2_>U;bS|w#H3i>TiuRcl-Q5#JrYhUpwnVO2(W^j(hbkaBt(f;WQ`p`nA;@7yfT4 k|9A1?!R2v<5$F~MPgg&ebxsLQ01Bv17XSbN literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_83.png b/textures/signs_lib_font_31px_83.png new file mode 100644 index 0000000000000000000000000000000000000000..8c28c965dd68f7c21455ae8b316cea2dbd5e8432 GIT binary patch literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^@*vE?0wlLCzqbiU<$1a|hFF|_JLMqX0R;}{myiDc zH`=YET-d<#h3&ihttduA(Pv6oHF9jpz0Uq|0R^6W)+;@^8zM+X;w z*rW9IUDA?>*%KRG{>*#v=Gx5{`X8$*-Q{>6{+r%d`dUK!%F*8;W_3LK8DD8CnU`Jp RWeK#I!PC{xWt~$(69DjPMK=Hd literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_84.png b/textures/signs_lib_font_31px_84.png new file mode 100644 index 0000000000000000000000000000000000000000..67a557bc8cc75c01aa443f7d5746e0e0b9afcdc4 GIT binary patch literal 200 zcmV;(05|`MP))0001wNklWVx;5OOrA#){J75_Ex!OcZYM!^xW4=V0000 zJ-a{6h(C4Ywch8`%O%%E&kS%ava#QkXu8SjUE&?7sqgCEuc;Du>F>7AhFF|_I%T6!g94AUaNqy` zPb~}-P9+A%T14*pVw%aP&?3H^;rAocTN+FZqCw)(zd6238QhOPf5BqGnge0$yNAE+qX^)o6ozgY(Kxoywb;)>V7?XcJum-QmvJKs%L|*y}N5Q kwWsgd_OtT;KSw`im!GTX?X-1&9ndWdp00i_>zopr032&fH~;_u literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_87.png b/textures/signs_lib_font_31px_87.png new file mode 100644 index 0000000000000000000000000000000000000000..0632b15c04bb0ad17ce172a5b0fe9fd29069876e GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^@*vE?0wlLCzqbiU<#@U{hFF|_J7uHL0R;|c&g1|8 z8_nHQ#^5tCFsyRo6OoS7jw??b{aj?R$@t32{R)Tdk}vF8)30XH&2}%cMD^pr|95t= ztZDYMm$rzq&)3@(r8LiPvD>|lw8Mo$Q9o~cC+vSMGqad$|LRYV4*y_2+o5FMtggEh PXfK1OtDnm{r-UW|Rir|c literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_88.png b/textures/signs_lib_font_31px_88.png new file mode 100644 index 0000000000000000000000000000000000000000..75687301d92476a3d814f97fe987d5bdf6f69642 GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^@*vE?0wlLCzqbiUwR*ZZhFF|_8*-ZOfC9(jBme)W zmVa1KY}4GHDk+}4fi+t2%1QyBFKiX=?sE68omFsf;`Mp??rO4%ulEtF%(7d`2Vd>h zo#!&i!0*$uC!0UER6P^E>RmqF`tgZ{%*x8MXBp`+Y`>-dd!O)zwcFHHUyJo#RZF=4 pd}@Na^PA;Y*~I7nSW#bLrq?`A-8yk@W-8D@44$rjF6*2UngBa-O+x?x literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_8a.png b/textures/signs_lib_font_31px_8a.png new file mode 100644 index 0000000000000000000000000000000000000000..e38280ea4b409fbf2bce9fcb5a38034c9c5a0ab3 GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^c0er8!2%>jEw;q~scD`rjv*e$-(Ek+*I>ZG9Pr@( z|DAC*lDyf9(LN8J9K5(k(|FfGt*2>K?CV<&zgJ7@*H|?_y!uH6i`FlV)!bE{efaU6nt>R~%TIjy~ z*M?@%SmV`e{@ra)y}!->M~ggvy}af>mk*ERPuqOvT>gq_TCtM3ene3+(1i@1u6{1- HoD!M<>`qjX literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_8b.png b/textures/signs_lib_font_31px_8b.png new file mode 100644 index 0000000000000000000000000000000000000000..7b6c97c1dc9a96c29cae7d46bdf2bc28c238106a GIT binary patch literal 224 zcmV<603ZK}P)@fS)4L*f2hpfmH})TU;VPh3jkp@toiycmXa`ZUG_nvDOs| zhba#MnSf^$LfTHEGuyg<&uMjqds^;N4q}@7!~3vAI?yXy=c($;(iLVBhKIpS!lPh_ zZ<2JE!5Hv9x=eC4lgU*xpGdZIA^u;Xx#zV4&?$Bp{H4l~`^67k4)^ua;r4p|?FW9~ anYaPuFf&Ep(jEw;q~sTNNc#}JR>Z>JsPJD|Yf{PNQO z|EXoS4j#=Fl&EN!-T8~lM8jpN4&TJKe7mIx}PI&em9)+SnhIKTG}t^Jt=#p+34K# oU&WQQKy3SW_Dv6Y^M4f0InA%)u9n%j80a1bPgg&ebxsLQ0Npf4kpKVy literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_8d.png b/textures/signs_lib_font_31px_8d.png new file mode 100644 index 0000000000000000000000000000000000000000..f4e0f71db6951f3b9631f826e8b104353e6ab9ed GIT binary patch literal 223 zcmV<503iQ~P)!1iW*hOZKkPxE~li#X|TyVb(1~xb%JAcE%)@NZP@Dblx^L`c* zv$1A@XY6*C;xJ#g>jPxe3CsS)ViD<^&kUszly-Znxe>tk4dr)laTfd)l*X$q^wM~| z@?E8+z!mYza{ZYn6`Qhq5qczKD0kjS;5&ni0!Nu<$|{1Y-)rQV)iQ$z6v6$sU+@cl Zq8>cxJ2Rm4vEl##002ovPDHLkV1m)5UakND literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_8e.png b/textures/signs_lib_font_31px_8e.png new file mode 100644 index 0000000000000000000000000000000000000000..d5463468eb77b7c983e5dc844eb5ece50256b1ea GIT binary patch literal 219 zcmV<103`p3P)yGQcOJPIj~^$RZD~W%j7%sM0zH^K9Ebi9UHPW VFdLiZ^|t^3002ovPDHLkV1gwJUkm^M literal 0 HcmV?d00001 diff --git a/textures/signs_lib_font_31px_8f.png b/textures/signs_lib_font_31px_8f.png new file mode 100644 index 0000000000000000000000000000000000000000..726b7c152f775f5fb6c3045504c89d7a4e5bea6f GIT binary patch literal 221 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 M07*qoM6N<$f@!zpcmMzZ literal 0 HcmV?d00001 diff --git a/textures/signs_lib_sign_wall_steel_edges.png b/textures/signs_lib_sign_wall_steel_edges.png new file mode 100644 index 0000000000000000000000000000000000000000..791ec9f13276d414016b8cf5bedcb59237666161 GIT binary patch literal 468 zcmV;_0W1EAP)e* zOU~*r427LI&!!zzhyh~hY>1^WK_V?}$T86rI?gee8(){f>w+MgR~(2qCW5 z>*MjLwF1B}4A$D5vy}4ndKqJ4jLtbkW=bVq@D5Ws%%jYZrSeAu|=6Pl~B5JJxKxa`0yNStx732$)XUVl)^F2xl&4N&3j);skI`aQfl9K0I=4k zl%$lscVi6a^5y_QDb;)DCnEYXztwy1Qc7zryX7q!V*r2^9yfm=A~MF*TG`7l1OSXN zeEBu#y-z8z{(otP|HB!EfrxU>Y>myb3vPp57-L#%zl7g248tE2qabkp+y literal 0 HcmV?d00001 diff --git a/textures/signs_lib_sign_wall_steel_inv.png b/textures/signs_lib_sign_wall_steel_inv.png new file mode 100644 index 0000000000000000000000000000000000000000..dfa25bf0627d1f38e64a31ee2ec4948cb7680cf4 GIT binary patch literal 1107 zcmV-Z1g!gsP) zTaMc}5JitjQO|ZO=%5iGe_3btkVOV*7%&7oYD$!3l2SefEZF1B3a0Bz;;SyJZrvh$ z*oXb!ElVFie*DEo7wrv2!80or>VHk)p5<&o= zEK8YR*A=Zb$K#Rj-@j)7`K^<$U%$$RFJHdky=UKd0N&rzdcsSL(VZguwIjGa&@L_Y_4zUDr70LVT{2!N7FRK7+IEu2E9Ls-<%O~=CH%J}6aWeJ)6rgnY}gNL6_6B~4mu`S#vptz});M*ykZrfHH5<2Z6S z9K?B5RrGx?q*6*@t(E8v!yqNuwym7iwyh92gz$F~CITe|>-!$9HGSVpO)twLA)KZO ztu?Q&uUxNJNkg*Vzkd@#pss64TO#AF(%u1Z&hhf{A}Eb9D5Y@D$pOi{_ssK*)|%_} ziuaxn0(qXx{%zZs=b0EIRaIfFm9-B5ZpopP5{K)$iu8sMD9cjHD2Yx|%AzPJ%aUbT zWGso5wN|A2uR@eIv~A1h&!74E^C$B>ljr$e*(6<00E{ur^Gpaq8riZeXsvP1k!2Y% zMwC*75JXr03ZN`YVvHP*M-idaP|C8zIVa`WbscYSZ#d`3^PHw>xLhu5+a@3q&~)SU zpLlks1N**Xt(DLxHm63Cz)aJ`IF7u%y-DeY5bjddG>wQ=jFGlf>~-aSH6cvDCZhl4mP%aY6G!oKemMIm9f))GPxa^5y7fV!@^TrMAv;Sc*T Zu|EsaSq?t%|B?Uz002ovPDHLkV1jEw9fAM= literal 0 HcmV?d00001 diff --git a/textures/signs_lib_sign_wall_wooden.png b/textures/signs_lib_sign_wall_wooden.png new file mode 100644 index 0000000000000000000000000000000000000000..fd8fcbd9481620d8f2fe81b7ef39567c3d006118 GIT binary patch literal 2437 zcmV;033~R4P)kKU^-}Hc{JZkHqV34T^`$Z43{IB9HGL)?fbPzr8H; z^S`9~yE2vF&IqiIDdk~cqGg%4DsW%sEUK=_3F#-7NzqqGB%$!q%YilCT`?d0OBZ&6CZ?0~KrPR$t#xOIr7XUK`kaC8N-jQ-} z;B=a*aGqg^y=lVWz=#PZ!ClqXtp^skmSDZ2+6W;E=@N16Za;>P0OAY)d00FLLu$Lk z7>^UWbPAr9aKDsoPbtsPUX|Pi4=v;zhRWztp@U)Dlh(ZhK=pcQF96d*0N$PW;fgp1 z72_1fkPx$(=Q&Q`)`eqP5^h^-y=QV`FslvSwpy5OA{b_EtPS3+uWtaRQUJ8AxQ9rb z3o-HD6(NT*n?ei-WiEJrtha}2&NeSO5WoRUhj4JKOn#FQa-^WdW0~U%fFl67H4bUc zG3rnUbpbSR&WDm7uj6=FhRE}+T5F;s<;cNf=c-T6KP806@a+|kbRHS zlO`d*0a$NW041o79h4rQB$Wv3O!|Del&QctPSdts`FJqbc`7FAIU{}CkL9*2hfrHRE(dp; z=G3+^&AAUPr+f0+x><=o`*xBh6yT;G#uEViULt_ySO7f!5NvJgdy1JnZ_oQYr!-}A z<~RoqQ;BJway+!_=0hmZ{#=>0@13mAg?jBd({MhV!@RuKKrRu$G*6FD)!d}_n8K)X zI_40A7*QOs{F;H35`eq=^Saf*j69!? z^K#;KU90Fk1y6Ga=R$mMCB7mlRcF4GjOQmgt3@cj4$;E&(^ z(7KxD58vvu+|+WJ^UzeA$KlGIL%F-3P20Zimxm`VCFZDob@y22ecw&l4Kd?-GkdiG z+@4ne^)_#Hm_?>*h|m#F=d#u4L$yoHobn9!Yn7$o;rr*1b1A9I-eu%z>Pz$#+5 z>TdoDu*?&H^C{-}B(=BZ!_-tp2u`YX zt77i2J}_kfhb5#b>aeARF|ER+2NqEbzU|_~ z?n311ZvavVpPiE2ySN(Pzdv%~z47_DG>aj|ckjG52P2Z@kocXNj=3z?ix8aAa+0|~ zT2PA1gyVr<08|Y?HzFc;B99beENMRE0Tz#uVQw4?5>E?-z;uY_O2kRS)_Op1+7B~& z3vTX1kB85;l?=*HG}8oIYO>aA~WzukuH zHriH))WLzr(CtkPI0%3#8DhynnTT^29}bROLa42Aj4mc36oRYtCImB#(REM{Q%=F=>D9Vr_iZ^JO#4!z zD?dN0d%B-QhV*R1*cmbM>nAi7|9nvI?~lx3Z`Qib%aOwT{CMR!^=KhR9pj=<*&tga zBgf^r?bl~V(7waMFs(bSw;o(?mscYL8-Nfvm$HWLA>b3z))VU^d=AEd6_bWiI~TboU3e`$#(bE(L2zs z))w01TbsQ#Zec0ow!+Hy2m@C~K^TV}s@Lb*i{N}qGfdBgM zi#jt0Kx2yML*}w`v(mtPfr!V zufa|XY|PGq=N$8G#1z~-1de5DRROPiGgnh7G05m`-^VajD~b9TLzLhmzW#X0F@V4O z`+xo^-mJg+m;d=Z`S;)XPZ9q={_y3W%olyp{{#Im9=OF?TxuDn00000NkvXXu0mjf D5XZ^H literal 0 HcmV?d00001 diff --git a/textures/signs_lib_sign_wall_wooden_edges.png b/textures/signs_lib_sign_wall_wooden_edges.png new file mode 100644 index 0000000000000000000000000000000000000000..9b0ac53884d77423cea4163b6835c363a55891a5 GIT binary patch literal 540 zcmV+%0^|LOP)$B zOKuf05Uh6FGoG3E5if}n2>}}<#4Xry2u{LnxERYUNO+&THy@AfZnKyK1&LaAS5;Rv z{rLXHS@U?D01$x)pFUjwyg#Ls0c^Xf^KO{4W%KKBX=?j;IIkMVwpsY=wwj^<_T0dTWzw3MpiG2~$i zAxb}t0RH+nwM|k0?2pG%aC@~2Fs`u<7qBtLAZ4u_$0WuOftbkx&mNLJ1zFa5KVhpw3^FR!pss;aojS-dCuP}xd+IHnj!8E7VyD_AttY{I@CC2g@U)!8D ei{gLSto$D>4kKcBreEs-0000 zOO7Q+6+lnih>Xb0_v%$wW7-D9h!I=zcDw*~!-S_u019gKP-ES}ywrbk-Yx$T4dmeE$JeL(H}`Qyvy z2z(Z(%^{N~?-{zGFOIGi>pc$-NA_(837pT7Q6nj4*3$tkiJU7{g?LNIHDjpsQi!|K zb#Pb%X&=e}t4yoqX$|agV)6_0Lh1$`4QZWV z6tRt78>J@b4PmgqbW$vzK1xcu#J!5~J6rGxd@urNB*0ocG2;QE}n zpKo|SSXPfUfLIX2!5+|&5To2{!+M9Y9V3l(ajykL3N=RDJfj0tJk2zW^&F3mrX3Kb zgJ&K>EEOLDi#t>HN)zRJ-pQ>qO2T@J4x!eHrbKIlfnZgMTYVz}>(|)nndNX|i16;g zv+b4A4EO7uuYPgjvhCP%C$cafpO}`wp_Ri_~jR>sA!1GU*v1PhOCg(Bg*{_jhnV4qJP(j>+70VnP z(=y}TfqdK1Rx#EPuL+S(i3KwXOE8pF@ZQi=IGilY`bG^*)5PP`iEU3<5%3ES$A$Gl z*tU&SJIid*X`vwagC}ndVC~Rtzazi-stJh6qHs9IX4tA%@X(aTHyNp!Ve#R zBA3qSp0B>?TL;17WqJEm;JOGN~XTW~Xk0HO_6 zj~LK4=%Z7c#j2tA#GWcc^^Fu*%j7*ql~R>Hgs1mMWD;T)PRErz9M(DBy;D+F5O8MT z?S#DRjNVwn%I#7yC_=_hl_fyUmTnyD49A1K7RXge8HQS5;pzQKH-VfxE(8XaUX;Bh ztaFHf2g(peiI~=jIn&aevS;G`POFj8GJ9&&)DSDQ*4f{xfi@C7@5mfzN%_|gndNk1 zh{Xkust~sbVpxtdnlnulYZ^K2Y?n&!9XnZMR9fxS)TtF}Gwj>oa5B&8vth2}186!e#74H*u-x+o1@s~%m0A-L;#^z@( z&lgmo)`GQ$Z7URnr^kk>q3o6YR)||=wuAK6E+{2|CPuOBV=zf&48!Cnj8PsQPxPj& z4+r`%=!0bvusYN2La&+NE0e(AzyCM08sZMMb*xUFd|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 diff --git a/textures/signs_metal_back.png b/textures/signs_metal_back.png deleted file mode 100644 index 48420b2f0a2f7452bfa93f7706e0f3273b538edc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/textures/signs_metal_sides.png b/textures/signs_metal_sides.png deleted file mode 100644 index b7b4526c03a0f9db4688397d06b4a1714f4facd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/textures/signs_orange_front.png b/textures/signs_orange_front.png deleted file mode 100644 index 6e81443414d24bc5858b5d3bdb2f2aa650b2620a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WyggkULp+WrZ`rURVS#Ew(gH(? zUt${^RtT&61>DW>c(dui&v>;HK^IHrH633((I)HQ3f9G9Jy8Z(jDJ`AJhAH7)lj%4 e)&wNX!|-DZ$Co8S>YISZGI+ZBxvXV@fVeOZc0D>7BUk|NdJbZ|uD_H691$G9<53J%(52kwnH8Xg+`njxgN@xNA DyPzNn diff --git a/textures/signs_post_back.png b/textures/signs_post_back.png deleted file mode 100644 index 829b8441fc5b9727e4795e76c4b4656053a0af71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 311 zcmV-70m%M|P)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 diff --git a/textures/signs_post_bottom.png b/textures/signs_post_bottom.png deleted file mode 100644 index bea83e382f1d92fb147162b03db941231e52819c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/textures/signs_post_front.png b/textures/signs_post_front.png deleted file mode 100644 index 02a0e593e2e0fa67762fd14ba13356291cf49988..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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# diff --git a/textures/signs_post_top.png b/textures/signs_post_top.png deleted file mode 100644 index 6b251f637b11e68d6e9a3515e7a16f5a028b316e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/textures/signs_top.png b/textures/signs_top.png deleted file mode 100644 index aa86aa8af8979743042179cab5780cb569e7129a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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)! diff --git a/textures/signs_wall_sign_locked.png b/textures/signs_wall_sign_locked.png deleted file mode 100644 index 7061167486217ca65dee22c19f6ed75b7812d3cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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@ diff --git a/textures/signs_wall_sign_metal.png b/textures/signs_wall_sign_metal.png deleted file mode 100644 index 7eff1a68c7ddf632be6d7802dcfedce3da6c2735..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 553 zcmV+^0@nSBP)sxVgExy1Kf%ySu!+yuH1>zP`S{zrVo1z`?=6!otGC!^6bH z#KpzM#>U3S$H&OX$jQmc%gf8p&(G1((bm@1<>lq)=jZ9^>F@9FWs7m40002!NklX?2(=ghW z#SCRN3$%>8+~$mO?oxhA01i9F&&OVQe~=A0`duz^oTiJ{RW6dt8faU@EQ!-uE*>Ae z76I*Ro)?G$5uf7WS=o4hTgjJVR>)@z?^I*AS<7OMS-zAabZbDivJlfK2oizO(5V3V zPLnvAjQnvp@o&v4kaciB3dX+Y4F>(5idH{wdXB@du1hYsI_v0^HM{MOuG5ZQA^-dm r+w8n+Dr{z&Ck?2#bVdD`Dwq2MY9}RLCjG*e00000NkvXXu0mjf*U%pd diff --git a/textures/signs_white_black_front.png b/textures/signs_white_black_front.png deleted file mode 100644 index f4163f1929c95de812f22c4b61063ff42f4ff2d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 110 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WOg&v3Lp+WrZ&+ZMAhETzopr E04$LpfdBvi diff --git a/textures/signs_white_black_inv.png b/textures/signs_white_black_inv.png deleted file mode 100644 index 42bb0142fee288957fc4c1cdca606a45bc63deb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/textures/signs_white_red_front.png b/textures/signs_white_red_front.png deleted file mode 100644 index 48216c9b41e541ecbf62974195e3cd851f3c0447..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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> diff --git a/textures/signs_white_red_inv.png b/textures/signs_white_red_inv.png deleted file mode 100644 index 52ac3c87eb5c9c04fd8063c01ac3bce722526c7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/textures/signs_yellow_front.png b/textures/signs_yellow_front.png deleted file mode 100644 index b05b9a477f6246c286917030d6b88f0c33483115..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WyggkULp+WrZ`rURVS#Ew(gH(? zUt${^RtT&61>DW>c(dui&;NQq1B_F?Z0m9Rw1Rc9SWlEe*1;95U)CEDa}x eiy&bG28ISHj>-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 diff --git a/textures/slc_1.png b/textures/slc_1.png deleted file mode 100644 index 3cbbbe6cec54cb86854f08e8c60f3759268910a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/textures/slc_2.png b/textures/slc_2.png deleted file mode 100644 index f86ae90a57872a235e92ae3a5c4a5cdaad86ebe5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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- diff --git a/textures/slc_3.png b/textures/slc_3.png deleted file mode 100644 index 19389117e22cb3581c9212c89ff174fd854d7b17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/textures/slc_4.png b/textures/slc_4.png deleted file mode 100644 index cdcb302662048c766d1fc1c085f9c32ed19e8705..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/textures/slc_7.png b/textures/slc_7.png deleted file mode 100644 index a38eb4256641ce67f4044680a0e1dfce16a88737..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/textures/slc_9.png b/textures/slc_9.png deleted file mode 100644 index d2a0974c9132cf29d2523b0d8fd728aee5a5e5da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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+?% diff --git a/textures/slc_A.png b/textures/slc_A.png deleted file mode 100644 index bed719c32e419f6854946c196ac8ccf03430a574..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/textures/slc_B.png b/textures/slc_B.png deleted file mode 100644 index f1f9d263f5cecf2a478714f7e77c8beac72d406f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/textures/slc_D.png b/textures/slc_D.png deleted file mode 100644 index a9f06c4bf3dc715401193b7db6fff9f37e78f148..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/textures/slc_E.png b/textures/slc_E.png deleted file mode 100644 index d73776b19a94945e7a7ee3429ec1935f3b018cd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/textures/slc_n.png b/textures/slc_n.png deleted file mode 100644 index 8f59c9bfecf70cc3297af37208b80890297b088b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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%