From 9f32a4c69247b221393de455b20a8d769c6a6fc8 Mon Sep 17 00:00:00 2001 From: Michieal Date: Wed, 19 Oct 2022 18:55:07 -0400 Subject: [PATCH 1/7] MineClone2 Signs Rewrite - move from GitHub to MeseHub GitHub link: https://github.com/michieal/Mineclone2-Signs --- mods/ITEMS/mcl_signs/README.txt | 28 +- mods/ITEMS/mcl_signs/init.lua | 659 ++-------- mods/ITEMS/mcl_signs/locale/template.txt | 2 +- mods/ITEMS/mcl_signs/mod.conf | 4 +- mods/ITEMS/mcl_signs/signs_api.lua | 1148 +++++++++++++++++ mods/ITEMS/mcl_signs/textures/_0.png | Bin 877 -> 1851 bytes mods/ITEMS/mcl_signs/textures/_1.png | Bin 883 -> 1852 bytes mods/ITEMS/mcl_signs/textures/_1_2.png | Bin 876 -> 1863 bytes mods/ITEMS/mcl_signs/textures/_1_4.png | Bin 881 -> 1859 bytes mods/ITEMS/mcl_signs/textures/_1_sup.png | Bin 868 -> 1850 bytes mods/ITEMS/mcl_signs/textures/_2.png | Bin 876 -> 1815 bytes mods/ITEMS/mcl_signs/textures/_2_sup.png | Bin 865 -> 1851 bytes mods/ITEMS/mcl_signs/textures/_3.png | Bin 882 -> 1861 bytes mods/ITEMS/mcl_signs/textures/_3_4.png | Bin 886 -> 1859 bytes mods/ITEMS/mcl_signs/textures/_3_sup.png | Bin 863 -> 1850 bytes mods/ITEMS/mcl_signs/textures/_4.png | Bin 87 -> 294 bytes mods/ITEMS/mcl_signs/textures/_5.png | Bin 886 -> 1857 bytes mods/ITEMS/mcl_signs/textures/_6.png | Bin 891 -> 1860 bytes mods/ITEMS/mcl_signs/textures/_7.png | Bin 889 -> 1856 bytes mods/ITEMS/mcl_signs/textures/_8.png | Bin 874 -> 1851 bytes mods/ITEMS/mcl_signs/textures/_9.png | Bin 886 -> 1858 bytes mods/ITEMS/mcl_signs/textures/_a.png | Bin 83 -> 292 bytes mods/ITEMS/mcl_signs/textures/_a_.png | Bin 88 -> 298 bytes mods/ITEMS/mcl_signs/textures/_a_acute.png | Bin 862 -> 1859 bytes mods/ITEMS/mcl_signs/textures/_a_acute_.png | Bin 882 -> 1929 bytes .../mcl_signs/textures/_a_circumflex.png | Bin 866 -> 1859 bytes .../mcl_signs/textures/_a_circumflex_.png | Bin 876 -> 1930 bytes mods/ITEMS/mcl_signs/textures/_a_grave.png | Bin 865 -> 1856 bytes mods/ITEMS/mcl_signs/textures/_a_grave_.png | Bin 880 -> 1930 bytes mods/ITEMS/mcl_signs/textures/_a_ring.png | Bin 867 -> 1859 bytes mods/ITEMS/mcl_signs/textures/_a_ring_.png | Bin 880 -> 1929 bytes mods/ITEMS/mcl_signs/textures/_a_sup.png | Bin 867 -> 1852 bytes mods/ITEMS/mcl_signs/textures/_a_tilde.png | Bin 868 -> 1860 bytes mods/ITEMS/mcl_signs/textures/_a_tilde_.png | Bin 874 -> 1929 bytes mods/ITEMS/mcl_signs/textures/_acute.png | Bin 853 -> 1839 bytes mods/ITEMS/mcl_signs/textures/_ae.png | Bin 866 -> 1859 bytes mods/ITEMS/mcl_signs/textures/_ae_.png | Bin 872 -> 1927 bytes mods/ITEMS/mcl_signs/textures/_ae_lig.png | Bin 866 -> 1854 bytes mods/ITEMS/mcl_signs/textures/_ae_lig_.png | Bin 868 -> 1922 bytes mods/ITEMS/mcl_signs/textures/_am.png | Bin 1907 -> 2854 bytes mods/ITEMS/mcl_signs/textures/_ap.png | Bin 874 -> 1839 bytes mods/ITEMS/mcl_signs/textures/_as.png | Bin 81 -> 294 bytes mods/ITEMS/mcl_signs/textures/_at.png | Bin 91 -> 304 bytes mods/ITEMS/mcl_signs/textures/_b.png | Bin 86 -> 295 bytes mods/ITEMS/mcl_signs/textures/_b_.png | Bin 82 -> 297 bytes mods/ITEMS/mcl_signs/textures/_bl.png | Bin 880 -> 1852 bytes mods/ITEMS/mcl_signs/textures/_br.png | Bin 881 -> 1852 bytes mods/ITEMS/mcl_signs/textures/_broken_bar.png | Bin 857 -> 1835 bytes mods/ITEMS/mcl_signs/textures/_c.png | Bin 881 -> 1852 bytes mods/ITEMS/mcl_signs/textures/_c_.png | Bin 883 -> 1852 bytes mods/ITEMS/mcl_signs/textures/_c_cedille.png | Bin 868 -> 1854 bytes mods/ITEMS/mcl_signs/textures/_c_cedille_.png | Bin 873 -> 1855 bytes mods/ITEMS/mcl_signs/textures/_ca.png | Bin 78 -> 287 bytes mods/ITEMS/mcl_signs/textures/_cedille.png | Bin 854 -> 1834 bytes mods/ITEMS/mcl_signs/textures/_cent.png | Bin 873 -> 1855 bytes mods/ITEMS/mcl_signs/textures/_cl.png | Bin 880 -> 1853 bytes mods/ITEMS/mcl_signs/textures/_cm.png | Bin 871 -> 1795 bytes mods/ITEMS/mcl_signs/textures/_co.png | Bin 873 -> 1838 bytes mods/ITEMS/mcl_signs/textures/_copyright.png | Bin 883 -> 1861 bytes mods/ITEMS/mcl_signs/textures/_cr.png | Bin 878 -> 1855 bytes mods/ITEMS/mcl_signs/textures/_currency.png | Bin 866 -> 1855 bytes mods/ITEMS/mcl_signs/textures/_d.png | Bin 86 -> 298 bytes mods/ITEMS/mcl_signs/textures/_d_.png | Bin 80 -> 291 bytes mods/ITEMS/mcl_signs/textures/_d_dash.png | Bin 876 -> 1862 bytes mods/ITEMS/mcl_signs/textures/_d_dash_.png | Bin 872 -> 1856 bytes mods/ITEMS/mcl_signs/textures/_degree.png | Bin 859 -> 1853 bytes mods/ITEMS/mcl_signs/textures/_diaresis.png | Bin 852 -> 1833 bytes mods/ITEMS/mcl_signs/textures/_div.png | Bin 858 -> 1846 bytes mods/ITEMS/mcl_signs/textures/_dl.png | Bin 884 -> 1859 bytes mods/ITEMS/mcl_signs/textures/_dt.png | Bin 869 -> 1788 bytes mods/ITEMS/mcl_signs/textures/_dv.png | Bin 886 -> 1853 bytes mods/ITEMS/mcl_signs/textures/_e.png | Bin 880 -> 1855 bytes mods/ITEMS/mcl_signs/textures/_e_.png | Bin 85 -> 297 bytes mods/ITEMS/mcl_signs/textures/_e_acute.png | Bin 870 -> 1859 bytes mods/ITEMS/mcl_signs/textures/_e_acute_.png | Bin 871 -> 1861 bytes .../mcl_signs/textures/_e_circumflex.png | Bin 874 -> 1859 bytes .../mcl_signs/textures/_e_circumflex_.png | Bin 872 -> 1861 bytes mods/ITEMS/mcl_signs/textures/_e_grave.png | Bin 869 -> 1857 bytes mods/ITEMS/mcl_signs/textures/_e_grave_.png | Bin 874 -> 1860 bytes mods/ITEMS/mcl_signs/textures/_ee.png | Bin 869 -> 1858 bytes mods/ITEMS/mcl_signs/textures/_ee_.png | Bin 869 -> 1860 bytes mods/ITEMS/mcl_signs/textures/_eq.png | Bin 867 -> 1795 bytes mods/ITEMS/mcl_signs/textures/_ex.png | Bin 875 -> 1839 bytes mods/ITEMS/mcl_signs/textures/_ex_inv.png | Bin 855 -> 1842 bytes mods/ITEMS/mcl_signs/textures/_f.png | Bin 885 -> 1855 bytes mods/ITEMS/mcl_signs/textures/_f_.png | Bin 84 -> 297 bytes mods/ITEMS/mcl_signs/textures/_g.png | Bin 87 -> 295 bytes mods/ITEMS/mcl_signs/textures/_g_.png | Bin 884 -> 1854 bytes mods/ITEMS/mcl_signs/textures/_gr.png | Bin 869 -> 1836 bytes mods/ITEMS/mcl_signs/textures/_gt.png | Bin 872 -> 1852 bytes mods/ITEMS/mcl_signs/textures/_guill_left.png | Bin 856 -> 1853 bytes .../ITEMS/mcl_signs/textures/_guill_right.png | Bin 855 -> 1855 bytes mods/ITEMS/mcl_signs/textures/_h.png | Bin 893 -> 1919 bytes mods/ITEMS/mcl_signs/textures/_h_.png | Bin 86 -> 298 bytes mods/ITEMS/mcl_signs/textures/_ha.png | Bin 80 -> 283 bytes mods/ITEMS/mcl_signs/textures/_hs.png | Bin 1257 -> 2140 bytes mods/ITEMS/mcl_signs/textures/_i.png | Bin 80 -> 293 bytes mods/ITEMS/mcl_signs/textures/_i_.png | Bin 80 -> 288 bytes mods/ITEMS/mcl_signs/textures/_i_acute.png | Bin 863 -> 1853 bytes mods/ITEMS/mcl_signs/textures/_i_acute_.png | Bin 866 -> 1856 bytes .../mcl_signs/textures/_i_circumflex.png | Bin 867 -> 1853 bytes .../mcl_signs/textures/_i_circumflex_.png | Bin 867 -> 1853 bytes mods/ITEMS/mcl_signs/textures/_i_grave.png | Bin 863 -> 1851 bytes mods/ITEMS/mcl_signs/textures/_i_grave_.png | Bin 870 -> 1857 bytes mods/ITEMS/mcl_signs/textures/_j.png | Bin 881 -> 1854 bytes mods/ITEMS/mcl_signs/textures/_j_.png | Bin 83 -> 291 bytes mods/ITEMS/mcl_signs/textures/_k.png | Bin 88 -> 296 bytes mods/ITEMS/mcl_signs/textures/_k_.png | Bin 887 -> 1815 bytes mods/ITEMS/mcl_signs/textures/_l.png | Bin 79 -> 282 bytes mods/ITEMS/mcl_signs/textures/_l_.png | Bin 82 -> 289 bytes mods/ITEMS/mcl_signs/textures/_lt.png | Bin 865 -> 1808 bytes mods/ITEMS/mcl_signs/textures/_m.png | Bin 84 -> 286 bytes mods/ITEMS/mcl_signs/textures/_m_.png | Bin 84 -> 292 bytes mods/ITEMS/mcl_signs/textures/_macron.png | Bin 855 -> 1832 bytes mods/ITEMS/mcl_signs/textures/_mn.png | Bin 873 -> 1836 bytes mods/ITEMS/mcl_signs/textures/_mu.png | Bin 869 -> 1915 bytes mods/ITEMS/mcl_signs/textures/_n.png | Bin 84 -> 287 bytes mods/ITEMS/mcl_signs/textures/_n_.png | Bin 91 -> 298 bytes mods/ITEMS/mcl_signs/textures/_n_tilde.png | Bin 873 -> 1925 bytes mods/ITEMS/mcl_signs/textures/_n_tilde_.png | Bin 879 -> 1929 bytes mods/ITEMS/mcl_signs/textures/_not.png | Bin 1301 -> 2259 bytes mods/ITEMS/mcl_signs/textures/_o.png | Bin 878 -> 1850 bytes mods/ITEMS/mcl_signs/textures/_o_.png | Bin 878 -> 1849 bytes mods/ITEMS/mcl_signs/textures/_o_acute.png | Bin 870 -> 1856 bytes mods/ITEMS/mcl_signs/textures/_o_acute_.png | Bin 867 -> 1855 bytes .../mcl_signs/textures/_o_circumflex.png | Bin 872 -> 1856 bytes .../mcl_signs/textures/_o_circumflex_.png | Bin 875 -> 1856 bytes mods/ITEMS/mcl_signs/textures/_o_dash.png | Bin 874 -> 1921 bytes mods/ITEMS/mcl_signs/textures/_o_dash_.png | Bin 878 -> 1923 bytes mods/ITEMS/mcl_signs/textures/_o_grave.png | Bin 870 -> 1855 bytes mods/ITEMS/mcl_signs/textures/_o_grave_.png | Bin 873 -> 1857 bytes mods/ITEMS/mcl_signs/textures/_o_sup.png | Bin 865 -> 1848 bytes mods/ITEMS/mcl_signs/textures/_o_tilde.png | Bin 867 -> 1856 bytes mods/ITEMS/mcl_signs/textures/_o_tilde_.png | Bin 869 -> 1856 bytes mods/ITEMS/mcl_signs/textures/_oe.png | Bin 865 -> 1853 bytes mods/ITEMS/mcl_signs/textures/_oe_.png | Bin 866 -> 1854 bytes mods/ITEMS/mcl_signs/textures/_p.png | Bin 85 -> 295 bytes mods/ITEMS/mcl_signs/textures/_p_.png | Bin 83 -> 298 bytes mods/ITEMS/mcl_signs/textures/_paragraph.png | Bin 871 -> 1929 bytes mods/ITEMS/mcl_signs/textures/_pilcrow.png | Bin 872 -> 1849 bytes mods/ITEMS/mcl_signs/textures/_plus_minus.png | Bin 858 -> 1841 bytes mods/ITEMS/mcl_signs/textures/_pound.png | Bin 868 -> 1859 bytes mods/ITEMS/mcl_signs/textures/_pr.png | Bin 895 -> 1862 bytes mods/ITEMS/mcl_signs/textures/_ps.png | Bin 78 -> 285 bytes mods/ITEMS/mcl_signs/textures/_q.png | Bin 87 -> 295 bytes mods/ITEMS/mcl_signs/textures/_q_.png | Bin 883 -> 1852 bytes mods/ITEMS/mcl_signs/textures/_qo.png | Bin 873 -> 1837 bytes mods/ITEMS/mcl_signs/textures/_qu.png | Bin 876 -> 1855 bytes mods/ITEMS/mcl_signs/textures/_qu_inv.png | Bin 858 -> 1853 bytes mods/ITEMS/mcl_signs/textures/_r.png | Bin 82 -> 289 bytes mods/ITEMS/mcl_signs/textures/_r_.png | Bin 887 -> 1858 bytes mods/ITEMS/mcl_signs/textures/_rc.png | Bin 902 -> 1861 bytes mods/ITEMS/mcl_signs/textures/_re.png | Bin 75 -> 291 bytes mods/ITEMS/mcl_signs/textures/_registered.png | Bin 882 -> 1861 bytes mods/ITEMS/mcl_signs/textures/_s.png | Bin 881 -> 1855 bytes mods/ITEMS/mcl_signs/textures/_s_.png | Bin 885 -> 1858 bytes mods/ITEMS/mcl_signs/textures/_sl.png | Bin 882 -> 1842 bytes mods/ITEMS/mcl_signs/textures/_sm.png | Bin 871 -> 1798 bytes mods/ITEMS/mcl_signs/textures/_sp.png | Bin 862 -> 1782 bytes mods/ITEMS/mcl_signs/textures/_sr.png | Bin 879 -> 1841 bytes mods/ITEMS/mcl_signs/textures/_sz.png | Bin 874 -> 1857 bytes mods/ITEMS/mcl_signs/textures/_t.png | Bin 83 -> 294 bytes mods/ITEMS/mcl_signs/textures/_t_.png | Bin 82 -> 290 bytes mods/ITEMS/mcl_signs/textures/_thorn.png | Bin 2480 -> 3803 bytes mods/ITEMS/mcl_signs/textures/_thorn_.png | Bin 153 -> 339 bytes .../ITEMS/mcl_signs/textures/_times_cross.png | Bin 860 -> 1854 bytes mods/ITEMS/mcl_signs/textures/_times_dot.png | Bin 849 -> 1839 bytes mods/ITEMS/mcl_signs/textures/_tl.png | Bin 871 -> 1845 bytes mods/ITEMS/mcl_signs/textures/_u.png | Bin 82 -> 292 bytes mods/ITEMS/mcl_signs/textures/_u_.png | Bin 82 -> 295 bytes mods/ITEMS/mcl_signs/textures/_u_acute.png | Bin 873 -> 1924 bytes mods/ITEMS/mcl_signs/textures/_u_acute_.png | Bin 876 -> 1924 bytes .../mcl_signs/textures/_u_circumflex.png | Bin 874 -> 1926 bytes .../mcl_signs/textures/_u_circumflex_.png | Bin 876 -> 1925 bytes mods/ITEMS/mcl_signs/textures/_u_grave.png | Bin 870 -> 1924 bytes mods/ITEMS/mcl_signs/textures/_u_grave_.png | Bin 878 -> 1925 bytes mods/ITEMS/mcl_signs/textures/_ue.png | Bin 870 -> 1923 bytes mods/ITEMS/mcl_signs/textures/_ue_.png | Bin 872 -> 1923 bytes mods/ITEMS/mcl_signs/textures/_un.png | Bin 73 -> 272 bytes mods/ITEMS/mcl_signs/textures/_v.png | Bin 85 -> 298 bytes mods/ITEMS/mcl_signs/textures/_v_.png | Bin 87 -> 295 bytes mods/ITEMS/mcl_signs/textures/_vb.png | Bin 873 -> 1834 bytes mods/ITEMS/mcl_signs/textures/_w.png | Bin 876 -> 1848 bytes mods/ITEMS/mcl_signs/textures/_w_.png | Bin 889 -> 1855 bytes mods/ITEMS/mcl_signs/textures/_x.png | Bin 83 -> 294 bytes mods/ITEMS/mcl_signs/textures/_x_.png | Bin 85 -> 296 bytes mods/ITEMS/mcl_signs/textures/_y.png | Bin 82 -> 294 bytes mods/ITEMS/mcl_signs/textures/_y_.png | Bin 87 -> 295 bytes mods/ITEMS/mcl_signs/textures/_y_acute.png | Bin 875 -> 1861 bytes mods/ITEMS/mcl_signs/textures/_y_acute_.png | Bin 871 -> 1862 bytes mods/ITEMS/mcl_signs/textures/_y_diaresis.png | Bin 874 -> 1860 bytes mods/ITEMS/mcl_signs/textures/_yen.png | Bin 866 -> 1853 bytes mods/ITEMS/mcl_signs/textures/_z.png | Bin 886 -> 1855 bytes mods/ITEMS/mcl_signs/textures/_z_.png | Bin 887 -> 1861 bytes .../mcl_signs/textures/default_sign_dark.png | Bin 0 -> 746 bytes .../textures/mcl_signs_sign_dark.png | Bin 0 -> 1418 bytes 196 files changed, 1290 insertions(+), 551 deletions(-) create mode 100644 mods/ITEMS/mcl_signs/signs_api.lua create mode 100644 mods/ITEMS/mcl_signs/textures/default_sign_dark.png create mode 100644 mods/ITEMS/mcl_signs/textures/mcl_signs_sign_dark.png diff --git a/mods/ITEMS/mcl_signs/README.txt b/mods/ITEMS/mcl_signs/README.txt index ee161fc95..a5887f2a2 100644 --- a/mods/ITEMS/mcl_signs/README.txt +++ b/mods/ITEMS/mcl_signs/README.txt @@ -1,4 +1,21 @@ -Mod based on reworked signs mod by PilzAdam: + +--- +# Mineclone2-Signs +--- +A reworking of MineClone 2's mcl_signs to be colorable and made to glow. Rquires Minetest and Mineclone2. +--- + +Created by Michieal (FaerRaven) @ DateTime: 10/14/22 4:05 PM + + +Reworked to be an API and to allow players to color, and/or make the lettering for the signs glow (be bright at night). +Reworked by Michieal (FaerRaven), including the sign textures batch changed to be white instead of the original black. + +A special thanks to Cora for pointing me in the right direction (as always). + + +The original Mod, MCL_SIGNS is based on reworked signs mod by PilzAdam: + https://forum.minetest.net/viewtopic.php?t=3289 License of code and font: MIT License @@ -9,5 +26,14 @@ Original font license text states: “YOU MAY USE THEM AS YOU LIKE” (in about. License of textures: See README.md in top directory of MineClone 2. License of models: GPLv3 (https://www.gnu.org/licenses/gpl-3.0.html) + Models author: 22i. + Source: https://github.com/22i/amc + +Mineclone 2 source code: +https://git.minetest.land/MineClone2/MineClone2 + +--- +NOTE: This MODule requires Glow Squids in order for all features to work 100% correctly. Glow Squids are currently +in review by the MineClone 2 Team, and should be available soon after this initial release of the new signs. \ No newline at end of file diff --git a/mods/ITEMS/mcl_signs/init.lua b/mods/ITEMS/mcl_signs/init.lua index b6bfb3fe8..10bd909ba 100644 --- a/mods/ITEMS/mcl_signs/init.lua +++ b/mods/ITEMS/mcl_signs/init.lua @@ -1,580 +1,143 @@ +--- +--- Generated by EmmyLua(https://github.com/EmmyLua) +--- Created by Michieal (FaerRaven). +--- DateTime: 10/14/22 4:05 PM +--- + local modname = minetest.get_current_modname() local modpath = minetest.get_modpath(modname) -local S = minetest.get_translator(modname) -local F = minetest.formspec_escape local table = table +local m = -1 / 16 + 1 / 64 --- Load the characters map (characters.txt) ---[[ File format of characters.txt: -It's an UTF-8 encoded text file that contains metadata for all supported characters. It contains a sequence of info blocks, one for each character. Each info block is made out of 3 lines: -Line 1: The literal UTF-8 encoded character -Line 2: Name of the texture file for this character minus the “.png” suffix; found in the “textures/” sub-directory -Line 3: Currently ignored. Previously this was for the character width in pixels +-- Signs API +dofile(modpath .. "/signs_api.lua") -After line 3, another info block may follow. This repeats until the end of the file. +-- LOCALIZATION +local S = minetest.get_translator(modname) -All character files must be 5 or 6 pixels wide (5 pixels are preferred) -]] - -local chars_file = io.open(modpath.."/characters.txt", "r") --- FIXME: Support more characters (many characters are missing). Currently ASCII and Latin-1 Supplement are supported. -local charmap = {} -if not chars_file then - minetest.log("error", "[mcl_signs] : character map file not found") -else - while true do - local char = chars_file:read("*l") - if char == nil then - break - end - local img = chars_file:read("*l") - chars_file:read("*l") - charmap[char] = img - end -end - --- CONSTANTS -local SIGN_WIDTH = 115 - -local LINE_LENGTH = 15 -local NUMBER_OF_LINES = 4 - -local LINE_HEIGHT = 14 -local CHAR_WIDTH = 5 - - --- Helper functions -local function round(num, idp) - local mult = 10^(idp or 0) - return math.floor(num * mult + 0.5) / mult -end - -local function string_to_array(str) - local tab = {} - for i=1,string.len(str) do - table.insert(tab, string.sub(str, i,i)) - end - return tab -end - -local function string_to_line_array(str) - local tab = {} - local current = 1 - local linechar = 1 - tab[1] = "" - for _,char in ipairs(string_to_array(str)) do - -- New line - if char == "\n" then - current = current + 1 - tab[current] = "" - linechar = 1 - else - tab[current] = tab[current]..char - linechar = linechar + 1 - end - end - return tab -end - -local function create_lines(text) - local line_num = 1 - local tab = {} - for _, line in ipairs(string_to_line_array(text)) do - if line_num > NUMBER_OF_LINES then - break - end - table.insert(tab, line) - line_num = line_num + 1 - end - return tab -end - -local function generate_line(s, ypos) - local i = 1 - local parsed = {} - local width = 0 - local chars = 0 - local printed_char_width = CHAR_WIDTH + 1 - while chars < LINE_LENGTH and i <= #s do - local file - -- Get and render character - if charmap[s:sub(i, i)] then - file = charmap[s:sub(i, i)] - i = i + 1 - elseif i < #s and charmap[s:sub(i, i + 1)] then - file = charmap[s:sub(i, i + 1)] - i = i + 2 - else - -- No character image found. - -- Use replacement character: - file = "_rc" - i = i + 1 - minetest.log("verbose", "[mcl_signs] Unknown symbol in '"..s.."' at "..i) - end - if file then - width = width + printed_char_width - table.insert(parsed, file) - chars = chars + 1 - end - end - width = width - 1 - - local texture = "" - local xpos = math.floor((SIGN_WIDTH - width) / 2) - for i = 1, #parsed do - texture = texture..":"..xpos..","..ypos.."="..parsed[i]..".png" - xpos = xpos + printed_char_width - end - return texture -end - -local function generate_texture(lines, signnodename) - local texture = "[combine:"..SIGN_WIDTH.."x"..SIGN_WIDTH - local ypos - if signnodename == "mcl_signs:wall_sign" then - ypos = 30 - else - ypos = 0 - end - for i = 1, #lines do - texture = texture..generate_line(lines[i], ypos) - ypos = ypos + LINE_HEIGHT - end - return texture -end - -local n = 23/56 - 1/128 - -local signtext_info_wall = { - {delta = {x = 0, y = 0, z = n}, yaw = 0}, - {delta = {x = n, y = 0, z = 0}, yaw = math.pi / -2}, - {delta = {x = 0, y = 0, z = -n}, yaw = math.pi}, - {delta = {x = -n, y = 0, z = 0}, yaw = math.pi / 2}, -} - -local signtext_info_standing = {} - -local m = -1/16 + 1/64 - -for rot=0, 15 do - local yaw = math.pi*2 - (((math.pi*2) / 16) * rot) - local delta = vector.multiply(minetest.yaw_to_dir(yaw), m) - -- Offset because sign is a bit above node boundaries - delta.y = delta.y + 2/28 - table.insert(signtext_info_standing, { delta = delta, yaw = yaw }) -end - -local function get_rotation_level(facedir, nodename) - local rl = facedir * 4 - if nodename == "mcl_signs:standing_sign22_5" then - rl = rl + 1 - elseif nodename == "mcl_signs:standing_sign45" then - rl = rl + 2 - elseif nodename == "mcl_signs:standing_sign67_5" then - rl = rl + 3 - end - return rl -end - -local function get_wall_signtext_info(param2, nodename) - local dir = minetest.wallmounted_to_dir(param2) - if dir.x > 0 then - return 2 - elseif dir.z > 0 then - return 1 - elseif dir.x < 0 then - return 4 - else - return 3 - end -end - -local sign_groups = {handy=1,axey=1, deco_block=1, material_wood=1, attached_node=1, dig_by_piston=1, flammable=-1} - -local function destruct_sign(pos) - local objects = minetest.get_objects_inside_radius(pos, 0.5) - for _, v in ipairs(objects) do - local ent = v:get_luaentity() - if ent and ent.name == "mcl_signs:text" then - v:remove() - end - end - local players = minetest.get_connected_players() - for p=1, #players do - if vector.distance(players[p]:get_pos(), pos) <= 30 then - minetest.close_formspec(players[p]:get_player_name(), "mcl_signs:set_text_"..pos.x.."_"..pos.y.."_"..pos.z) - end - end -end - -local function update_sign(pos, fields, sender, force_remove) - local meta = minetest.get_meta(pos) - if not meta then - return - end - local text = meta:get_string("text") - if fields and (text == "" and fields.text) then - meta:set_string("text", fields.text) - text = fields.text - end - if text == nil then - text = "" - end - - local sign_info - local n = minetest.get_node(pos) - local nn = n.name - if nn == "mcl_signs:standing_sign" or nn == "mcl_signs:standing_sign22_5" or nn == "mcl_signs:standing_sign45" or nn == "mcl_signs:standing_sign67_5" then - sign_info = signtext_info_standing[get_rotation_level(n.param2, nn) + 1] - elseif nn == "mcl_signs:wall_sign" then - sign_info = signtext_info_wall[get_wall_signtext_info(n.param2)] - end - if sign_info == nil then - minetest.log("error", "[mcl_signs] Missing sign_info!") - return - end - - local objects = minetest.get_objects_inside_radius(pos, 0.5) - local text_entity - for _, v in ipairs(objects) do - local ent = v:get_luaentity() - if ent and ent.name == "mcl_signs:text" then - if force_remove then - v:remove() - else - text_entity = v - break - end - end - end - - if not text_entity then - text_entity = minetest.add_entity({ - x = pos.x + sign_info.delta.x, - y = pos.y + sign_info.delta.y, - z = pos.z + sign_info.delta.z}, "mcl_signs:text") - end - text_entity:get_luaentity()._signnodename = nn - text_entity:set_properties({textures={generate_texture(create_lines(text), nn)}}) - - text_entity:set_yaw(sign_info.yaw) -end - -local function show_formspec(player, pos) - minetest.show_formspec( - player:get_player_name(), - "mcl_signs:set_text_"..pos.x.."_"..pos.y.."_"..pos.z, - "size[6,3]textarea[0.25,0.25;6,1.5;text;"..F(S("Enter sign text:"))..";]label[0,1.5;"..F(S("Maximum line length: 15")).."\n"..F(S("Maximum lines: 4")).."]button_exit[0,2.5;6,1;submit;"..F(S("Done")).."]" - ) +-- PLACE YAW VALUES INTO THE TABLE. +for rot = 0, 15 do + local yaw = math.pi * 2 - (((math.pi * 2) / 16) * rot) + local delta = vector.multiply(minetest.yaw_to_dir(yaw), m) + -- Offset because sign is a bit above node boundaries + delta.y = delta.y + 2 / 28 + table.insert(mcl_signs.signtext_info_standing, { delta = delta, yaw = yaw }) end +-- HANDLE THE FORMSPEC CALLBACK minetest.register_on_player_receive_fields(function(player, formname, fields) - if formname:find("mcl_signs:set_text_") == 1 then - local x, y, z = formname:match("mcl_signs:set_text_(.-)_(.-)_(.*)") - local pos = {x=tonumber(x), y=tonumber(y), z=tonumber(z)} - if not pos or not pos.x or not pos.y or not pos.z then return end - update_sign(pos, fields, player) - end + if formname:find("mcl_signs:set_text_") == 1 then + local x, y, z = formname:match("mcl_signs:set_text_(.-)_(.-)_(.*)") + local pos = { x = tonumber(x), y = tonumber(y), z = tonumber(z) } + if not pos or not pos.x or not pos.y or not pos.z then + return + end + mcl_signs:update_sign(pos, fields, player) + end end) -local node_sounds -if minetest.get_modpath("mcl_sounds") then - node_sounds = mcl_sounds.node_sound_wood_defaults() -end - -minetest.register_node("mcl_signs:wall_sign", { - description = S("Sign"), - _tt_help = S("Can be written"), - _doc_items_longdesc = S("Signs can be written and come in two variants: Wall sign and sign on a sign post. Signs can be placed on the top and the sides of other blocks, but not below them."), - _doc_items_usagehelp = S("After placing the sign, you can write something on it. You have 4 lines of text with up to 15 characters for each line; anything beyond these limits is lost. Not all characters are supported. The text can not be changed once it has been written; you have to break and place the sign again."), - inventory_image = "default_sign.png", - walkable = false, - is_ground_content = false, - wield_image = "default_sign.png", - node_placement_prediction = "", - paramtype = "light", - sunlight_propagates = true, - paramtype2 = "wallmounted", - drawtype = "mesh", - mesh = "mcl_signs_signonwallmount.obj", - selection_box = {type = "wallmounted", wall_side = {-0.5, -7/28, -0.5, -23/56, 7/28, 0.5}}, - tiles = {"mcl_signs_sign.png"}, - use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false, - groups = sign_groups, - stack_max = 16, - sounds = node_sounds, - - on_place = function(itemstack, placer, pointed_thing) - local above = pointed_thing.above - local under = pointed_thing.under - - -- Use pointed node's on_rightclick function first, if present - local node_under = minetest.get_node(under) - if placer and not placer:get_player_control().sneak then - if minetest.registered_nodes[node_under.name] and minetest.registered_nodes[node_under.name].on_rightclick then - return minetest.registered_nodes[node_under.name].on_rightclick(under, node_under, placer, itemstack) or itemstack - end - end - - local dir = vector.subtract(under, above) - - -- Only build when it's legal - local abovenodedef = minetest.registered_nodes[minetest.get_node(above).name] - if not abovenodedef or abovenodedef.buildable_to == false then - return itemstack - end - - local wdir = minetest.dir_to_wallmounted(dir) - - --local placer_pos = placer:get_pos() - - local fdir = minetest.dir_to_facedir(dir) - - local sign_info - local nodeitem = ItemStack(itemstack) - -- Ceiling - if wdir == 0 then - --how would you add sign to ceiling? - return itemstack - -- Floor - elseif wdir == 1 then - -- Standing sign - - -- Determine the sign rotation based on player's yaw - local yaw = math.pi*2 - placer:get_look_horizontal() - - -- Select one of 16 possible rotations (0-15) - local rotation_level = round((yaw / (math.pi*2)) * 16) - - if rotation_level > 15 then - rotation_level = 0 - elseif rotation_level < 0 then - rotation_level = 15 - end - - -- The actual rotation is a combination of predefined mesh and facedir (see node definition) - if rotation_level % 4 == 0 then - nodeitem:set_name("mcl_signs:standing_sign") - elseif rotation_level % 4 == 1 then - nodeitem:set_name("mcl_signs:standing_sign22_5") - elseif rotation_level % 4 == 2 then - nodeitem:set_name("mcl_signs:standing_sign45") - elseif rotation_level % 4 == 3 then - nodeitem:set_name("mcl_signs:standing_sign67_5") - end - fdir = math.floor(rotation_level / 4) - - -- Place the node! - local _, success = minetest.item_place_node(nodeitem, placer, pointed_thing, fdir) - if not success then - return itemstack - end - if not minetest.is_creative_enabled(placer:get_player_name()) then - itemstack:take_item() - end - sign_info = signtext_info_standing[rotation_level + 1] - -- Side - else - -- Wall sign - local _, success = minetest.item_place_node(itemstack, placer, pointed_thing, wdir) - if not success then - return itemstack - end - sign_info = signtext_info_wall[fdir + 1] - end - - -- Determine spawn position of entity - local place_pos - if minetest.registered_nodes[node_under.name].buildable_to then - place_pos = under - else - place_pos = above - end - - local text_entity = minetest.add_entity({ - x = place_pos.x + sign_info.delta.x, - y = place_pos.y + sign_info.delta.y, - z = place_pos.z + sign_info.delta.z}, "mcl_signs:text") - text_entity:set_yaw(sign_info.yaw) - text_entity:get_luaentity()._signnodename = nodeitem:get_name() - - minetest.sound_play({name="default_place_node_hard", gain=1.0}, {pos = place_pos}, true) - - show_formspec(placer, place_pos) - return itemstack - end, - on_destruct = destruct_sign, - on_punch = function(pos, node, puncher) - update_sign(pos) - end, - on_rotate = function(pos, node, user, mode) - if mode == screwdriver.ROTATE_FACE then - local r = screwdriver.rotate.wallmounted(pos, node, mode) - node.param2 = r - minetest.swap_node(pos, node) - update_sign(pos, nil, nil, true) - return true - else - return false - end - end, - _mcl_hardness = 1, - _mcl_blast_resistance = 1, -}) - --- Standing sign nodes. --- 4 rotations at 0°, 22.5°, 45° and 67.5°. --- These are 4 out of 16 possible rotations. --- With facedir the remaining 12 rotations are constructed. - --- 0° -local ssign = { - paramtype = "light", - use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false, - sunlight_propagates = true, - walkable = false, - is_ground_content = false, - paramtype2 = "facedir", - drawtype = "mesh", - mesh = "mcl_signs_sign.obj", - selection_box = {type = "fixed", fixed = {-0.2, -0.5, -0.2, 0.2, 0.5, 0.2}}, - tiles = {"mcl_signs_sign.png"}, - groups = sign_groups, - drop = "mcl_signs:wall_sign", - stack_max = 16, - sounds = node_sounds, - - on_destruct = destruct_sign, - on_punch = function(pos, node, puncher) - update_sign(pos) - end, - on_rotate = function(pos, node, user, mode) - if mode == screwdriver.ROTATE_FACE then - node.name = "mcl_signs:standing_sign22_5" - minetest.swap_node(pos, node) - elseif mode == screwdriver.ROTATE_AXIS then - return false - end - update_sign(pos, nil, nil, true) - return true - end, - - _mcl_hardness = 1, - _mcl_blast_resistance = 1, -} - -minetest.register_node("mcl_signs:standing_sign", ssign) - --- 22.5° -local ssign22_5 = table.copy(ssign) -ssign22_5.mesh = "mcl_signs_sign22.5.obj" -ssign22_5.on_rotate = function(pos, node, user, mode) - if mode == screwdriver.ROTATE_FACE then - node.name = "mcl_signs:standing_sign45" - minetest.swap_node(pos, node) - elseif mode == screwdriver.ROTATE_AXIS then - return false - end - update_sign(pos, nil, nil, true) - return true -end -minetest.register_node("mcl_signs:standing_sign22_5", ssign22_5) - --- 45° -local ssign45 = table.copy(ssign) -ssign45.mesh = "mcl_signs_sign45.obj" -ssign45.on_rotate = function(pos, node, user, mode) - if mode == screwdriver.ROTATE_FACE then - node.name = "mcl_signs:standing_sign67_5" - minetest.swap_node(pos, node) - elseif mode == screwdriver.ROTATE_AXIS then - return false - end - update_sign(pos, nil, nil, true) - return true -end -minetest.register_node("mcl_signs:standing_sign45", ssign45) - --- 67.5° -local ssign67_5 = table.copy(ssign) -ssign67_5.mesh = "mcl_signs_sign67.5.obj" -ssign67_5.on_rotate = function(pos, node, user, mode) - if mode == screwdriver.ROTATE_FACE then - node.name = "mcl_signs:standing_sign" - node.param2 = (node.param2 + 1) % 4 - minetest.swap_node(pos, node) - elseif mode == screwdriver.ROTATE_AXIS then - return false - end - update_sign(pos, nil, nil, true) - return true -end -minetest.register_node("mcl_signs:standing_sign67_5", ssign67_5) +mcl_signs:generate_signs() -- initialize the nodes for the signs. -- FIXME: Prevent entity destruction by /clearobjects minetest.register_entity("mcl_signs:text", { - pointable = false, - visual = "upright_sprite", - textures = {}, - physical = false, - collide_with_objects = false, + pointable = false, + visual = "upright_sprite", + textures = {}, + physical = false, + collide_with_objects = false, - _signnodename = nil, -- node name of sign node to which the text belongs + _signnodename = nil, -- node name of sign node to which the text belongs - on_activate = function(self, staticdata) - if staticdata and staticdata ~= "" then - local des = minetest.deserialize(staticdata) - if des then - self._signnodename = des._signnodename - end - end - local meta = minetest.get_meta(self.object:get_pos()) - local text = meta:get_string("text") - self.object:set_properties({ - textures={generate_texture(create_lines(text), self._signnodename)}, - }) - self.object:set_armor_groups({ immortal = 1 }) - end, - get_staticdata = function(self) - local out = { _signnodename = self._signnodename } - return minetest.serialize(out) - end, + on_activate = function(self, staticdata) + if staticdata and staticdata ~= "" then + local des = minetest.deserialize(staticdata) + if des then + self._signnodename = des._signnodename + end + end + local meta = minetest.get_meta(self.object:get_pos()) + local text = meta:get_string("text") + self.object:set_properties({ + textures = { mcl_signs:create_lettering(text, self._signnodename) }, + }) + self.object:set_armor_groups({ immortal = 1 }) + end, + get_staticdata = function(self) + local out = { _signnodename = self._signnodename } + return minetest.serialize(out) + end, +}) + +-- Make the wall signs burnable. +minetest.register_craft({ + type = "fuel", + recipe = "mcl_signs:wall_sign", + burntime = 10, }) minetest.register_craft({ - type = "fuel", - recipe = "mcl_signs:wall_sign", - burntime = 10, + type = "fuel", + recipe = "mcl_signs:wall_sign_dark", + burntime = 10, }) +-- register crafts (actual recipes) if minetest.get_modpath("mcl_core") then - minetest.register_craft({ - output = "mcl_signs:wall_sign 3", - recipe = { - {"group:wood", "group:wood", "group:wood"}, - {"group:wood", "group:wood", "group:wood"}, - {"", "mcl_core:stick", ""}, - } - }) + + -- debug step + minetest.log("verbose", "Register Sign Crafts: \n" .. dump(mcl_signs.woods)) + + for w = 1, #mcl_signs.woods do + local itemstring = "" + + if mcl_signs.woods[w] == "mcl_core:sprucewood" or mcl_signs.woods[w] == "mcl_core:darkwood" then + itemstring = "mcl_signs:wall_sign_dark" + else + itemstring = "mcl_signs:wall_sign 3" + end + + local c = mcl_signs.woods[w] + + minetest.register_craft({ + output = itemstring.." 3", + recipe = { + { c, c, c }, + { c, c, c }, + { "", "mcl_core:stick", "" }, + }, + }) + end end if minetest.get_modpath("doc") then - doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign") - doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign22_5") - doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign45") - doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign67_5") + doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign") + doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign22_5") + doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign45") + doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign67_5") + doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:wall_sign_dark") + doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign_dark") + doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign22_5_dark") + doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign45_dark") + doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign67_5_dark") end minetest.register_alias("signs:sign_wall", "mcl_signs:wall_sign") minetest.register_alias("signs:sign_yard", "mcl_signs:standing_sign") +minetest.register_alias("mcl_signs:wall_sign 3", "mcl_signs:wall_sign") minetest.register_lbm({ - name = "mcl_signs:respawn_entities", - label = "Respawn sign text entities", - run_at_every_load = true, - nodenames = { "mcl_signs:wall_sign", "mcl_signs:standing_sign", "mcl_signs:standing_sign22_5", "mcl_signs:standing_sign45", "mcl_signs:standing_sign67_5" }, - action = function(pos, node) - update_sign(pos) - end, -}) + name = "mcl_signs:respawn_entities", + label = "Respawn sign text entities", + run_at_every_load = true, + nodenames = { + "mcl_signs:wall_sign", "mcl_signs:wall_sign_dark", + "mcl_signs:standing_sign", "mcl_signs:standing_sign_dark", + "mcl_signs:standing_sign22_5", "mcl_signs:standing_sign22_5_dark", + "mcl_signs:standing_sign45", "mcl_signs:standing_sign45_dark", + "mcl_signs:standing_sign67_5", "mcl_signs:standing_sign67_5_dark" + }, + action = function(pos, node) + mcl_signs:update_sign(pos) + end, +}) \ No newline at end of file diff --git a/mods/ITEMS/mcl_signs/locale/template.txt b/mods/ITEMS/mcl_signs/locale/template.txt index 6635e989f..7336db4f4 100644 --- a/mods/ITEMS/mcl_signs/locale/template.txt +++ b/mods/ITEMS/mcl_signs/locale/template.txt @@ -1,7 +1,7 @@ # textdomain: mcl_signs Sign= Signs can be written and come in two variants: Wall sign and sign on a sign post. Signs can be placed on the top and the sides of other blocks, but not below them.= -After placing the sign, you can write something on it. You have 4 lines of text with up to 15 characters for each line; anything beyond these limits is lost. Not all characters are supported. The text can not be changed once it has been written; you have to break and place the sign again.= +After placing the sign, you can write something on it. You have 4 lines of text with up to 15 characters for each line; anything beyond these limits is lost. Not all characters are supported. The text can not be changed once it has been written; you have to break and place the sign again. Can be colored and made to glow.= Enter sign text:= Maximum line length: 15= Maximum lines: 4= diff --git a/mods/ITEMS/mcl_signs/mod.conf b/mods/ITEMS/mcl_signs/mod.conf index 1af689d7b..ada0ae58a 100644 --- a/mods/ITEMS/mcl_signs/mod.conf +++ b/mods/ITEMS/mcl_signs/mod.conf @@ -1,2 +1,4 @@ name = mcl_signs -optional_depends = mcl_sounds, mcl_core, doc +description = New and Improved signs - can be colored and made to glow. +depends = mcl_core, mcl_sounds, mcl_dye, mcl_colors +optional_depends = doc diff --git a/mods/ITEMS/mcl_signs/signs_api.lua b/mods/ITEMS/mcl_signs/signs_api.lua new file mode 100644 index 000000000..94f71de13 --- /dev/null +++ b/mods/ITEMS/mcl_signs/signs_api.lua @@ -0,0 +1,1148 @@ +--- +--- Generated by EmmyLua(https://github.com/EmmyLua) +--- Created by Michieal (FaerRaven). +--- DateTime: 10/14/22 4:05 PM +--- + +local DEBUG = false -- special debug setting. +local table = table -- copied from the original signs init file. + +if DEBUG then + minetest.log("Signs API Loading") +end + +-- INITIALIZE THE GLOBAL API FOR SIGNS. +mcl_signs = {} + +-- LOCALIZATION +local S = minetest.get_translator("mcl_signs") +-- Signs form +local F = minetest.formspec_escape + +-- PATHs +local modpath = minetest.get_modpath("mcl_signs") + +-- CONSTANTS +local SIGN_WIDTH = 115 + +local LINE_LENGTH = 15 +local NUMBER_OF_LINES = 4 + +local LINE_HEIGHT = 14 +local CHAR_WIDTH = 5 + +-- SET UP THE CHARACTER MAPPING +-- Load the characters map (characters.txt) +--[[ File format of characters.txt: +It's an UTF-8 encoded text file that contains metadata for all supported characters. It contains a sequence of info + blocks, one for each character. Each info block is made out of 3 lines: +Line 1: The literal UTF-8 encoded character +Line 2: Name of the texture file for this character minus the “.png” suffix; found in the “textures/” sub-directory +Line 3: Currently ignored. Previously this was for the character width in pixels + +After line 3, another info block may follow. This repeats until the end of the file. + +All character files must be 5 or 6 pixels wide (5 pixels are preferred) +]] + +local chars_file = io.open(modpath .. "/characters.txt", "r") +-- FIXME: Support more characters (many characters are missing). Currently ASCII and Latin-1 Supplement are supported. +local charmap = {} +if not chars_file then + minetest.log("error", "[mcl_signs] : character map file not found") +else + while true do + local char = chars_file:read("*l") + if char == nil then + break + end + local img = chars_file:read("*l") + chars_file:read("*l") + charmap[char] = img + end +end + +-- for testing purposes +-- local test_color = "#BC0000" + +local pi = math.pi +local n = 23 / 56 - 1 / 128 + +-- GLOBALS +--- colors used for wools. +mcl_signs.mcl_wool_colors = { + unicolor_white = "#FFFFFF", + unicolor_dark_orange = "#502A00", + unicolor_grey = "#5B5B5B", + unicolor_darkgrey = "#303030", + unicolor_blue = "#0000CC", + unicolor_dark_green = "#005000", + unicolor_green_or_lime = "#50CC00", + unicolor_violet_purple = "#5000CC", + unicolor_light_red_pink = "#FF5050", + unicolor_yellow = "#CCCC00", + unicolor_orange = "#CC5000", + unicolor_red = "#CC0000", + unicolor_cyan = "#00CCCC", + unicolor_red_violet_magenta = "#CC0050", + unicolor_black = "#000000", + unicolor_light_blue = "#5050FF", +} +mcl_colors_official = { + BLACK = "#000000", + DARK_BLUE = "#0000AA", + DARK_GREEN = "#00AA00", + DARK_AQUA = "#00AAAA", + DARK_RED = "#AA0000", + DARK_PURPLE = "#AA00AA", + GOLD = "#FFAA00", + GRAY = "#AAAAAA", + DARK_GRAY = "#555555", + BLUE = "#5555FF", + GREEN = "#55FF55", + AQUA = "#55FFFF", + RED = "#FF5555", + LIGHT_PURPLE = "#FF55FF", + YELLOW = "#FFFF55", + WHITE = "#FFFFFF" +} +mcl_signs.woods = { "mcl_core:sprucewood", "mcl_core:darkwood", "mcl_core:wood", "mcl_core:birchwood", "mcl_core:junglewood", "mcl_core:acaciawood", "mcl_mangrove:mangrove_wood" } + +mcl_signs.signtext_info_wall = { + { delta = { x = 0, y = 0, z = n }, yaw = 0 }, + { delta = { x = n, y = 0, z = 0 }, yaw = pi / -2 }, + { delta = { x = 0, y = 0, z = -n }, yaw = pi }, + { delta = { x = -n, y = 0, z = 0 }, yaw = pi / 2 }, +} +mcl_signs.signtext_info_standing = {} +mcl_signs.sign_groups = { handy = 1, axey = 1, deco_block = 1, material_wood = 1, attached_node = 1, dig_by_piston = 1, flammable = -1 } + +-- HELPER FUNCTIONS' VARIABLES +local sign_glow = 6 +local Dyes_table = { + { "mcl_dye:aqua", mcl_colors_official.AQUA }, + { "mcl_dye:black", mcl_colors_official.BLACK }, + { "mcl_dye:blue", mcl_colors_official.BLUE }, + { "mcl_dye:brown", mcl_colors_official.brown }, + { "mcl_dye:cyan", mcl_signs.mcl_wool_colors.unicolor_cyan }, + { "mcl_dye:cyan 2", mcl_signs.mcl_wool_colors.unicolor_cyan }, + { "mcl_dye:green", mcl_colors_official.GREEN }, + { "mcl_dye:green 2", mcl_colors_official.GREEN }, + { "mcl_dye:dark_green", mcl_colors_official.DARK_GREEN }, + { "mcl_dye:grey", mcl_colors_official.GRAY }, + { "mcl_dye:grey 2", mcl_signs.mcl_wool_colors.unicolor_grey }, + { "mcl_dye:grey 3", mcl_colors_official.GRAY }, + { "mcl_dye:dark_grey", mcl_colors_official.DARK_GRAY }, + { "mcl_dye:dark_grey 2", mcl_signs.mcl_wool_colors.unicolor_darkgrey }, + { "mcl_dye:lightblue", mcl_signs.mcl_wool_colors.unicolor_light_blue }, + { "mcl_dye:lightblue 2", mcl_signs.mcl_wool_colors.unicolor_light_blue }, + { "mcl_dye:lime", mcl_signs.unicolor_green_or_lime }, + { "mcl_dye:magenta", mcl_signs.mcl_wool_colors.unicolor_red_violet_magenta }, + { "mcl_dye:magenta 2", mcl_signs.mcl_wool_colors.unicolor_red_violet_magenta }, + { "mcl_dye:magenta 3", mcl_signs.mcl_wool_colors.unicolor_red_violet_magenta }, + { "mcl_dye:orange", mcl_signs.mcl_wool_colors.unicolor_orange }, + { "mcl_dye:orange 2", mcl_signs.mcl_wool_colors.unicolor_dark_orange }, + { "mcl_dye:pink", mcl_signs.mcl_wool_colors.unicolor_light_red_pink }, + { "mcl_dye:pink 2", mcl_signs.mcl_wool_colors.unicolor_light_red_pink }, + { "mcl_dye:purple", mcl_colors_official.LIGHT_PURPLE }, + { "mcl_dye:red", mcl_signs.mcl_wool_colors.unicolor_red }, + { "mcl_dye:red 2", mcl_colors_official.RED }, + { "mcl_dye:silver", mcl_signs.mcl_wool_colors.unicolor_grey }, + { "mcl_dye:violet", mcl_colors_official.DARK_PURPLE }, + { "mcl_dye:violet 2", mcl_colors_official.DARK_PURPLE }, + { "mcl_dye:white", mcl_colors_official.WHITE }, + { "mcl_dye:white 3", mcl_colors_official.WHITE }, + { "mcl_dye:yellow", mcl_colors_official.YELLOW }, + { "mcl_dye:yellow 2", mcl_signs.mcl_wool_colors.unicolor_yellow }, +} + +--- This allows optional mods and helps prevent breaking. +--- +--- modname: the mod that defines the wood to add; item_name: the item_string of the wood to add. +--- eventually, this will become modname, item_name, coloration_code. +function mcl_signs.register_wood (modname, item_name) + if minetest.get_modpath(modname) then + table.insert(mcl_signs.woods,item_name) + end +end + +function mcl_signs.register_dye (modname, item_name, color_code) + if minetest.get_modpath(modname) then + table.insert(mcl_signs.Dyes_table,{ item_name, color_code }) + end +end + +-- DEFINE SIGN BASE TYPES +mcl_signs.wall_standard={} +mcl_signs.standing_standard ={} + +--- Register a new sign, tint the textures, and gives it an unique node name +--- modname: optional (pass "" or "false" to ignore), for use with other mods to +--- allow the creation of a sign from the mod's wood (if installed). +--- type: "wall", "standing". +--- +--- color: the color code to color the base sign textures. +--- +--- _name: the sign's name suffix, such as "_dark" or "_red", etc. +function mcl_signs.register_sign (modname, type, color, _name) + local mod_name_pass = false + if modname ~= "" and modname ~= "false" then + if minetest.get_modpath(modname) then + mod_name_pass = true + end + if mod_name_pass == false then + return + end + end + local wsign ={} + + if type == "wall" then + wsign = table.copy(mcl_signs.wall_standard) + end + + + +end +--- the same as register_sign, except caller defines the textures. +--- modname: optional (pass "" or "false" to ignore), for use with other mods to +--- allow the creation of a sign from the mod's wood (if installed). +--- type: "wall", "standing". +--- +--- color: the color code to color the base sign textures. (use white or grey to not color the sign) +--- +--- _name: the sign's name suffix, such as "_dark" or "_red", etc. +--- +--- model_texture: the texture file to use for the sign. +--- +--- inventory_image: the image used for in-inventory and in hand. +function mcl_signs.register_sign_and_textures (modname, type, color, _name, model_texture, inventory_image) + local mod_name_pass = false + if modname ~= "" and modname ~= "false" then + if minetest.get_modpath(modname) then + mod_name_pass = true + end + if mod_name_pass == false then + return + end + end + +end + +--- the same as register_sign_and_textures, except uses 1 image for all of the model textures. +--- modname: optional (pass "" or "false" to ignore), for use with other mods to +--- allow the creation of a sign from the mod's wood (if installed). +--- type: "wall", "standing". +--- +--- color: the color code to color the base sign textures. (use white or grey to not color the sign) +--- +--- _name: the sign's name suffix, such as "_dark" or "_red", etc. +--- +--- model_texture: the texture file to use for the sign. +--- +--- inventory_image: the image used for in-inventory and in hand. +function mcl_signs.register_sign_and_tiles (modname, type, color, _name, tiles, inventory_image) + local mod_name_pass = false + if modname ~= "" and modname ~= "false" then + if minetest.get_modpath(modname) then + mod_name_pass = true + end + if mod_name_pass == false then + return + end + end + +end + + +-- Helper functions +local function string_to_array(str) + local tab = {} + for i = 1, string.len(str) do + table.insert(tab, string.sub(str, i, i)) + end + return tab +end + +local function string_to_line_array(str) + local tab = {} + local current = 1 + local linechar = 1 + tab[1] = "" + for _, char in ipairs(string_to_array(str)) do + -- New line + if char == "\n" then + current = current + 1 + tab[current] = "" + linechar = 1 + else + tab[current] = tab[current] .. char + linechar = linechar + 1 + end + end + return tab +end + +local function get_rotation_level(facedir, nodename) + local nnames = { + { "mcl_signs:standing_sign22_5", 1 }, + { "mcl_signs:standing_sign22_5_dark", 1 }, + { "mcl_signs:standing_sign45", 2 }, + { "mcl_signs:standing_sign45_dark", 2 }, + { "mcl_signs:standing_sign67_5", 3 }, + { "mcl_signs:standing_sign67_5_dark", 3 } + } + local rl + local offset = 0 + for x = 1, #nnames do + if nnames[x][1] == nodename then + offset = nnames[x][2] + break + end + end + rl = facedir * 4 + offset + if DEBUG then + minetest.log("NodeName: " .. nodename .. " RL value: " .. rl) + end + return rl +end + +function mcl_signs:round(num, idp) + local mult = 10 ^ (idp or 0) + return math.floor(num * mult + 0.5) / mult +end + +function mcl_signs:get_color_for_sign(item_name) + + for d = 1, #Dyes_table do + if Dyes_table[d][1] == item_name then + return Dyes_table[d][2] + end + end + return "false" +end + +function mcl_signs:color_sign (pos, text_color) + + local success = mcl_signs:update_sign(pos, nil, nil, true, text_color) + + -- debug step + local meta = minetest.get_meta(pos) + if not meta then + if DEBUG then + minetest.log("verbose", "Sign Color Fail - Metadata.") + end + return false + end + if DEBUG then + minetest.log("verbose", "Post-Sign Color: " .. meta:get_string("mcl_signs:text_color") .. " " .. meta:get_string("mcl_signs:glowing_sign") .. ".\n" .. dump(pos)) + end + + return success + +end + +function mcl_signs:glow_sign (pos, remove_glow) + local success = true + -- Get Meta Data for the sign. + local meta = minetest.get_meta(pos) + + if not meta then + return false + end + local text = meta:get_string("text") + if text == nil then + text = "" + end + + -- we can't make the text glow if there isn't any text + if text == "" then + return false + end + + if remove_glow == nil then + remove_glow = false + end + + -- set up text glow + local objects = minetest.get_objects_inside_radius(pos, 0.5) + local text_entity + for _, v in ipairs(objects) do + local ent = v:get_luaentity() + if ent and ent.name == "mcl_signs:text" then + text_entity = v + break + end + end + if remove_glow == true then + text_entity:set_properties({ + glow = nil, + }) + meta:set_string("mcl_signs:glowing_sign", "false") + else + text_entity:set_properties({ + glow = sign_glow, + }) + meta:set_string("mcl_signs:glowing_sign", "true") + end + + -- debug step + if DEBUG then + minetest.log("verbose", "Post-Sign Glow: " .. meta:get_string("mcl_signs:text_color") .. " " .. meta:get_string("mcl_signs:glowing_sign") .. ".\n" .. dump(pos)) + end + return success +end + +function mcl_signs:create_lettering(text, signnodename, sign_color) + if sign_color == nil then + sign_color = mcl_colors.BLACK + end + local texture = mcl_signs:generate_texture(mcl_signs:create_lines(text), signnodename, sign_color) + + return texture +end + +function mcl_signs:create_lines(text) + local line_num = 1 + local tab = {} + for _, line in ipairs(string_to_line_array(text)) do + if line_num > NUMBER_OF_LINES then + break + end + table.insert(tab, line) + line_num = line_num + 1 + end + return tab +end + +function mcl_signs:generate_line(s, ypos) + local i = 1 + local parsed = {} + local width = 0 + local chars = 0 + local printed_char_width = CHAR_WIDTH + 1 + while chars < LINE_LENGTH and i <= #s do + local file + -- Get and render character + if charmap[s:sub(i, i)] then + file = charmap[s:sub(i, i)] + i = i + 1 + elseif i < #s and charmap[s:sub(i, i + 1)] then + file = charmap[s:sub(i, i + 1)] + i = i + 2 + else + -- No character image found. + -- Use replacement character: + file = "_rc" + i = i + 1 + if DEBUG then + minetest.log("verbose", "[mcl_signs] Unknown symbol in '" .. s .. "' at " .. i) + end + end + if file then + width = width + printed_char_width + table.insert(parsed, file) + chars = chars + 1 + end + end + width = width - 1 + + local texture = "" + local xpos = math.floor((SIGN_WIDTH - width) / 2) + for i = 1, #parsed do + texture = texture .. ":" .. xpos .. "," .. ypos .. "=" .. parsed[i] .. ".png" + xpos = xpos + printed_char_width + end + return texture +end + +function mcl_signs:generate_texture(lines, signnodename, letter_color) + local texture = "[combine:" .. SIGN_WIDTH .. "x" .. SIGN_WIDTH + local ypos + if signnodename == "mcl_signs:wall_sign" or signnodename == "mcl_signs:wall_sign_dark" then + ypos = 30 + else + ypos = 0 + end + for i = 1, #lines do + texture = texture .. mcl_signs:generate_line(lines[i], ypos) + ypos = ypos + LINE_HEIGHT + end + + texture = "(" .. texture .. "^[multiply:" .. letter_color .. ")" + return texture +end + +function mcl_signs:get_wall_signtext_info(param2, nodename) + local dir = minetest.wallmounted_to_dir(param2) + if dir.x > 0 then + return 2 + elseif dir.z > 0 then + return 1 + elseif dir.x < 0 then + return 4 + else + return 3 + end +end + +function mcl_signs:destruct_sign(pos) + local objects = minetest.get_objects_inside_radius(pos, 0.5) + for _, v in ipairs(objects) do + local ent = v:get_luaentity() + if ent and ent.name == "mcl_signs:text" then + v:remove() + end + end + local players = minetest.get_connected_players() + for p = 1, #players do + if vector.distance(players[p]:get_pos(), pos) <= 30 then + minetest.close_formspec(players[p]:get_player_name(), "mcl_signs:set_text_" .. pos.x .. "_" .. pos.y .. "_" .. pos.z) + end + end +end + +function mcl_signs:update_sign(pos, fields, sender, force_remove, text_color) + -- Get Meta Data for the sign. + local meta = minetest.get_meta(pos) + + if not meta then + return false + end + local text = meta:get_string("text") + if fields and (text == "" and fields.text) then + meta:set_string("text", fields.text) + text = fields.text + end + if text == nil then + text = "" + end + + --local placer_pos = placer:get_pos() + -- mcl_signs:show_formspec(placer, place_pos) + + -- find text color. + local sign_color + + if meta:get_string("mcl_signs:text_color") == "" then + -- if no sign text color has been assigned, make it black. + sign_color = mcl_colors.BLACK + meta:set_string("mcl_signs:text_color", sign_color) + else + sign_color = meta:get_string("mcl_signs:text_color") + end + + if text_color == nil then + text_color = "false" + end + + if text_color == "false" then + text_color = sign_color --if a new color hasn't been chosen, then keep the existing color. + end + + -- find the sign's glow value + local has_glow = false + + if meta:get_string("mcl_signs:glowing_sign") == "" or meta:get_string("mcl_signs:glowing_sign") == "false" then + has_glow = false + meta:set_string("mcl_signs:glowing_sign", "false") + else + has_glow = true + end + + -- debug step + if DEBUG then + minetest.log("Pre-Sign Update: " .. sign_color .. " " .. meta:get_string("mcl_signs:glowing_sign") .. ".\n" .. dump(pos)) + end + + local sign_info + local n = minetest.get_node(pos) + local nn = n.name + + if nn == "mcl_signs:standing_sign" or nn == "mcl_signs:standing_sign22_5" or nn == "mcl_signs:standing_sign45" or nn == "mcl_signs:standing_sign67_5" then + sign_info = mcl_signs.signtext_info_standing[get_rotation_level(n.param2, nn) + 1] + elseif nn == "mcl_signs:standing_sign_dark" or nn == "mcl_signs:standing_sign22_5_dark" or nn == "mcl_signs:standing_sign45_dark" or nn == "mcl_signs:standing_sign67_5_dark" then + sign_info = mcl_signs.signtext_info_standing[get_rotation_level(n.param2, nn) + 1] + elseif nn == "mcl_signs:wall_sign" or nn == "mcl_signs:wall_sign_dark" then + sign_info = mcl_signs.signtext_info_wall[mcl_signs:get_wall_signtext_info(n.param2)] + end + if sign_info == nil then + if DEBUG then + minetest.log("error", "[mcl_signs::update] Missing sign_info!") + end + return false + end + + local objects = minetest.get_objects_inside_radius(pos, 0.5) + local text_entity + for _, v in ipairs(objects) do + local ent = v:get_luaentity() + if ent and ent.name == "mcl_signs:text" then + if force_remove then + v:remove() + else + text_entity = v + break + end + end + end + + if not text_entity then + text_entity = minetest.add_entity({ + x = pos.x + sign_info.delta.x, + y = pos.y + sign_info.delta.y, + z = pos.z + sign_info.delta.z }, "mcl_signs:text") + end + text_entity:get_luaentity()._signnodename = nn + + -- Set the actual properties for the sign + text_entity:set_properties({ + textures = { mcl_signs:create_lettering(text, nn, text_color) }, + }) + + if has_glow then + text_entity:set_properties({ + glow = sign_glow, + }) + end + + text_entity:set_yaw(sign_info.yaw) + + -- save sign metadata. + meta:set_string("mcl_signs:text_color", text_color) + -- debug step + if DEBUG then + minetest.log("Post-Sign Update: " .. meta:get_string("mcl_signs:text_color") .. " " .. meta:get_string("mcl_signs:glowing_sign") .. ".\n" .. dump(pos)) + end + + return true + +end + +function mcl_signs:show_formspec(player, pos) + minetest.show_formspec( + player:get_player_name(), + "mcl_signs:set_text_" .. pos.x .. "_" .. pos.y .. "_" .. pos.z, + "size[6,3]textarea[0.25,0.25;6,1.5;text;" .. F(S("Enter sign text:")) .. ";]label[0,1.5;" .. F(S("Maximum line length: 15")) .. "\n" .. F(S("Maximum lines: 4")) .. "]button_exit[0,2.5;6,1;submit;" .. F(S("Done")) .. "]" + ) +end + +function mcl_signs:generate_signs() + local node_sounds + if minetest.get_modpath("mcl_sounds") then + node_sounds = mcl_sounds.node_sound_wood_defaults() + end + + -- wall signs' & hanging signs' base + mcl_signs.wall_standard = { + description = S("Sign"), + _tt_help = S("Can be written"), + _doc_items_longdesc = S("Signs can be written and come in two variants: Wall sign and sign on a sign post. Signs can be placed on the top and the sides of other blocks, but not below them."), + _doc_items_usagehelp = S("After placing the sign, you can write something on it. You have 4 lines of text with up to 15 characters for each line; anything beyond these limits is lost. Not all characters are supported. The text can not be changed once it has been written; you have to break and place the sign again. Can be colored and made to glow."), + inventory_image = "default_sign.png", + walkable = false, + is_ground_content = false, + wield_image = "default_sign.png", + node_placement_prediction = "", + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "wallmounted", + drawtype = "mesh", + mesh = "mcl_signs_signonwallmount.obj", + selection_box = { type = "wallmounted", wall_side = { -0.5, -7 / 28, -0.5, -23 / 56, 7 / 28, 0.5 } }, + tiles = { "mcl_signs_sign.png" }, + use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false, + groups = mcl_signs.sign_groups, + stack_max = 16, + sounds = node_sounds, + + on_place = function(itemstack, placer, pointed_thing) + local above = pointed_thing.above + local under = pointed_thing.under + + -- Use pointed node's on_rightclick function first, if present + local node_under = minetest.get_node(under) + if placer and not placer:get_player_control().sneak then + if minetest.registered_nodes[node_under.name] and minetest.registered_nodes[node_under.name].on_rightclick then + return minetest.registered_nodes[node_under.name].on_rightclick(under, node_under, placer, itemstack) or itemstack + end + end + + local dir = vector.subtract(under, above) + + -- Only build when it's legal + local abovenodedef = minetest.registered_nodes[minetest.get_node(above).name] + if not abovenodedef or abovenodedef.buildable_to == false then + return itemstack + end + + local wdir = minetest.dir_to_wallmounted(dir) + + --local placer_pos = placer:get_pos() + + local fdir = minetest.dir_to_facedir(dir) + + local sign_info + local nodeitem = ItemStack(itemstack) + -- Ceiling + if wdir == 0 then + --how would you add sign to ceiling? + return itemstack + -- Floor + end + + if wdir == 1 then + -- Standing sign + + -- Determine the sign rotation based on player's yaw + local yaw = pi * 2 - placer:get_look_horizontal() + + -- Select one of 16 possible rotations (0-15) + local rotation_level = mcl_signs:round((yaw / (pi * 2)) * 16) + + if rotation_level > 15 then + rotation_level = 0 + elseif rotation_level < 0 then + rotation_level = 15 + end + + -- The actual rotation is a combination of predefined mesh and facedir (see node definition) + if rotation_level % 4 == 0 then + nodeitem:set_name("mcl_signs:standing_sign") + elseif rotation_level % 4 == 1 then + nodeitem:set_name("mcl_signs:standing_sign22_5") + elseif rotation_level % 4 == 2 then + nodeitem:set_name("mcl_signs:standing_sign45") + elseif rotation_level % 4 == 3 then + nodeitem:set_name("mcl_signs:standing_sign67_5") + end + fdir = math.floor(rotation_level / 4) + + -- Place the node! + local _, success = minetest.item_place_node(nodeitem, placer, pointed_thing, fdir) + if not success then + return itemstack + end + if not minetest.is_creative_enabled(placer:get_player_name()) then + itemstack:take_item() + end + sign_info = mcl_signs.signtext_info_standing[rotation_level + 1] + -- Side + else + -- Wall sign + local _, success = minetest.item_place_node(itemstack, placer, pointed_thing, wdir) + if not success then + return itemstack + end + sign_info = mcl_signs.signtext_info_wall[fdir + 1] + end + + -- Determine spawn position of entity + local place_pos + if minetest.registered_nodes[node_under.name].buildable_to then + place_pos = under + else + place_pos = above + end + + local text_entity = minetest.add_entity({ + x = place_pos.x + sign_info.delta.x, + y = place_pos.y + sign_info.delta.y, + z = place_pos.z + sign_info.delta.z }, "mcl_signs:text") + text_entity:set_yaw(sign_info.yaw) + text_entity:get_luaentity()._signnodename = nodeitem:get_name() + + minetest.sound_play({ name = "default_place_node_hard", gain = 1.0 }, { pos = place_pos }, true) + + mcl_signs:show_formspec(placer, place_pos) + return itemstack + end, + on_destruct = function(pos) + mcl_signs:destruct_sign(pos) + end, + + -- Not Useless Code. If a sign is created without text, this shows the formspec again for textual entry. + on_punch = function(pos, node, puncher) + mcl_signs:update_sign(pos) + end, + on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_FACE then + local r = screwdriver.rotate.wallmounted(pos, node, mode) + node.param2 = r + minetest.swap_node(pos, node) + mcl_signs:update_sign(pos, nil, nil, true) + return true + else + return false + end + end, + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + if DEBUG then + minetest.log("verbose", "MCL_SIGNS::Wall_Sign Right Click event.") + end + + -- make sure player is clicking + if not clicker or not clicker:is_player() then + return + end + + local item = clicker:get_wielded_item() + local iname = item:get_name() + + if node then + if DEBUG then + minetest.log("verbose", "MCL_SIGNS::Wall_Sign Right Click event on valid node.") + end + + -- handle glow from glow_ink_sac *first* + if (iname == "mcl_mobitems:glow_ink_sac") then + clicker:set_wielded_item(item) + local success = mcl_signs:glow_sign(pos) + if success then + if DEBUG then + minetest.log("verbose", "Sign Glow Success.") + end + itemstack:take_item() + end + return + end + + -- "mcl_dye:black" is a special case: it makes the sign's lettering black AND removes glow. + if (iname == "mcl_dye:black") then + clicker:set_wielded_item(item) + local success = mcl_signs:glow_sign(pos, true) + mcl_signs:color_sign(pos, mcl_colors.BLACK) + if success then + if DEBUG then + minetest.log("verbose", "Sign Glow removal Success.") + end + + itemstack:take_item() + end + return + end + + -- check the wielded item to make sure that it is a dye. + local txt_color = mcl_signs:get_color_for_sign(iname) + if txt_color ~= "false" then + clicker:set_wielded_item(item) + local success = mcl_signs:color_sign(pos, txt_color) + if success then + if DEBUG then + minetest.log("verbose", "Sign Color Success.") + end + itemstack:take_item() + end + end + end + end, + + _mcl_hardness = 1, + _mcl_blast_resistance = 1, + } + if DEBUG then + minetest.log(dump(mcl_signs.wall_standard)) + end + + -- Standing sign nodes. + -- 4 rotations at 0°, 22.5°, 45° and 67.5°. + -- These are 4 out of 16 possible rotations. + -- With facedir the remaining 12 rotations are constructed. + + -- standing sign base. + mcl_signs.standing_standard = { + paramtype = "light", + use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false, + sunlight_propagates = true, + walkable = false, + is_ground_content = false, + paramtype2 = "facedir", + drawtype = "mesh", + mesh = "mcl_signs_sign.obj", + selection_box = { type = "fixed", fixed = { -0.2, -0.5, -0.2, 0.2, 0.5, 0.2 } }, + tiles = { "mcl_signs_sign.png" }, + groups = mcl_signs.sign_groups, + drop = "mcl_signs:wall_sign", + stack_max = 16, + sounds = node_sounds, + + on_destruct = function(pos) + mcl_signs:destruct_sign(pos) + end, + + -- Not Useless Code. If a sign is created without text, this shows the formspec again for textual entry. + on_punch = function(pos, node, puncher) + mcl_signs:update_sign(pos) + end, + on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_FACE then + node.name = "mcl_signs:standing_sign22_5" + minetest.swap_node(pos, node) + elseif mode == screwdriver.ROTATE_AXIS then + return false + end + mcl_signs:update_sign(pos, nil, nil, true) + return true + end, + + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + + if DEBUG then + minetest.log("verbose", "MCL_SIGNS::Standing_Sign Right Click event.") + end + + -- make sure player is clicking + if not clicker or not clicker:is_player() then + return + end + + local item = clicker:get_wielded_item() + local iname = item:get_name() + + if node then + -- handle glow from glow_ink_sac *first* + if DEBUG then + minetest.log("verbose", "MCL_SIGNS::Standing_Sign Right Click event on valid node.") + end + + if (iname == "mcl_mobitems:glow_ink_sac") then + clicker:set_wielded_item(item) + local success = mcl_signs:glow_sign(pos) + if success then + if DEBUG then + minetest.log("verbose", "Sign Glow Success.") + end + itemstack:take_item() + end + return + end + + -- check the wielded item to make sure that it is a dye. + local txt_color = mcl_signs:get_color_for_sign(iname) + if txt_color ~= "false" then + clicker:set_wielded_item(item) + local success = mcl_signs:color_sign(pos, txt_color) + if success then + if DEBUG then + minetest.log("verbose", "Sign Color Success.") + end + itemstack:take_item() + end + end + end + end, + + _mcl_hardness = 1, + _mcl_blast_resistance = 1, + } + + minetest.register_node("mcl_signs:wall_sign", mcl_signs.wall_standard) + -- 0° + minetest.register_node("mcl_signs:standing_sign", mcl_signs.standing_standard) + -- 22.5° + local ssign22_5 = table.copy(mcl_signs.standing_standard) + ssign22_5.mesh = "mcl_signs_sign22.5.obj" + ssign22_5.on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_FACE then + node.name = "mcl_signs:standing_sign45" + minetest.swap_node(pos, node) + elseif mode == screwdriver.ROTATE_AXIS then + return false + end + mcl_signs:update_sign(pos, nil, nil, true) + return true + end + minetest.register_node("mcl_signs:standing_sign22_5", ssign22_5) + + -- 45° + local ssign45 = table.copy(mcl_signs.standing_standard) + ssign45.mesh = "mcl_signs_sign45.obj" + ssign45.on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_FACE then + node.name = "mcl_signs:standing_sign67_5" + minetest.swap_node(pos, node) + elseif mode == screwdriver.ROTATE_AXIS then + return false + end + mcl_signs:update_sign(pos, nil, nil, true) + return true + end + minetest.register_node("mcl_signs:standing_sign45", ssign45) + + -- 67.5° + local ssign67_5 = table.copy(mcl_signs.standing_standard) + ssign67_5.mesh = "mcl_signs_sign67.5.obj" + ssign67_5.on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_FACE then + node.name = "mcl_signs:standing_sign" + node.param2 = (node.param2 + 1) % 4 + minetest.swap_node(pos, node) + elseif mode == screwdriver.ROTATE_AXIS then + return false + end + mcl_signs:update_sign(pos, nil, nil, true) + return true + end + minetest.register_node("mcl_signs:standing_sign67_5", ssign67_5) + + -- standard signs, dark: + -- dark standard wall sign / hanging sign base + mcl_signs.wall_standard_dark = table.copy(mcl_signs.wall_standard) + mcl_signs.wall_standard_dark.wield_image = "default_sign_dark.png" + mcl_signs.wall_standard_dark.tiles = { "mcl_signs_sign_dark.png" } + mcl_signs.wall_standard_dark.inventory_image = "default_sign_dark.png" + mcl_signs.wall_standard_dark.on_place = function(itemstack, placer, pointed_thing) + local above = pointed_thing.above + local under = pointed_thing.under + + -- Use pointed node's on_rightclick function first, if present + local node_under = minetest.get_node(under) + if placer and not placer:get_player_control().sneak then + if minetest.registered_nodes[node_under.name] and minetest.registered_nodes[node_under.name].on_rightclick then + return minetest.registered_nodes[node_under.name].on_rightclick(under, node_under, placer, itemstack) or itemstack + end + end + + local dir = vector.subtract(under, above) + + -- Only build when it's legal + local abovenodedef = minetest.registered_nodes[minetest.get_node(above).name] + if not abovenodedef or abovenodedef.buildable_to == false then + return itemstack + end + + local wdir = minetest.dir_to_wallmounted(dir) + local fdir = minetest.dir_to_facedir(dir) + + local sign_info + local nodeitem = ItemStack(itemstack) + -- Ceiling + if wdir == 0 then + --how would you add sign to ceiling? + return itemstack + -- Floor + elseif wdir == 1 then + -- Standing sign + + -- Determine the sign rotation based on player's yaw + local yaw = pi * 2 - placer:get_look_horizontal() + + -- Select one of 16 possible rotations (0-15) + local rotation_level = mcl_signs:round((yaw / (pi * 2)) * 16) + + if rotation_level > 15 then + rotation_level = 0 + elseif rotation_level < 0 then + rotation_level = 15 + end + + -- The actual rotation is a combination of predefined mesh and facedir (see node definition) + if rotation_level % 4 == 0 then + nodeitem:set_name("mcl_signs:standing_sign_dark") + elseif rotation_level % 4 == 1 then + nodeitem:set_name("mcl_signs:standing_sign22_5_dark") + elseif rotation_level % 4 == 2 then + nodeitem:set_name("mcl_signs:standing_sign45_dark") + elseif rotation_level % 4 == 3 then + nodeitem:set_name("mcl_signs:standing_sign67_5_dark") + end + fdir = math.floor(rotation_level / 4) + + -- Place the node! + local _, success = minetest.item_place_node(nodeitem, placer, pointed_thing, fdir) + if not success then + return itemstack + end + if not minetest.is_creative_enabled(placer:get_player_name()) then + itemstack:take_item() + end + sign_info = mcl_signs.signtext_info_standing[rotation_level + 1] + -- Side + else + -- Wall sign + local _, success = minetest.item_place_node(itemstack, placer, pointed_thing, wdir) + if not success then + return itemstack + end + sign_info = mcl_signs.signtext_info_wall[fdir + 1] + end + + -- Determine spawn position of entity + local place_pos + if minetest.registered_nodes[node_under.name].buildable_to then + place_pos = under + else + place_pos = above + end + + local text_entity = minetest.add_entity({ + x = place_pos.x + sign_info.delta.x, + y = place_pos.y + sign_info.delta.y, + z = place_pos.z + sign_info.delta.z }, "mcl_signs:text") + text_entity:set_yaw(sign_info.yaw) + text_entity:get_luaentity()._signnodename = nodeitem:get_name() + + minetest.sound_play({ name = "default_place_node_hard", gain = 1.0 }, { pos = place_pos }, true) + + mcl_signs:show_formspec(placer, place_pos) + return itemstack + end + minetest.register_node("mcl_signs:wall_sign_dark", mcl_signs.wall_standard_dark) + + -- 0° + -- dark standing sign + mcl_signs.standing_standard_dark = table.copy(mcl_signs.standing_standard) + mcl_signs.standing_standard_dark.wield_image = "default_sign_dark.png" + mcl_signs.standing_standard_dark.tiles = { "mcl_signs_sign_dark.png" } + mcl_signs.standing_standard_dark.inventory_image = "default_sign_dark.png" + mcl_signs.standing_standard_dark.drop = "mcl_signs:wall_sign_dark" + minetest.register_node("mcl_signs:standing_sign_dark", mcl_signs.standing_standard_dark) + + -- 22.5° + local ssign22_5d = table.copy(mcl_signs.standing_standard_dark) + ssign22_5d.mesh = "mcl_signs_sign22.5.obj" + ssign22_5d.on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_FACE then + node.name = "mcl_signs:standing_sign45" + minetest.swap_node(pos, node) + elseif mode == screwdriver.ROTATE_AXIS then + return false + end + mcl_signs:update_sign(pos, nil, nil, true) + return true + end + minetest.register_node("mcl_signs:standing_sign22_5_dark", ssign22_5d) + + -- 45° + local ssign45d = table.copy(mcl_signs.standing_standard_dark) + ssign45d.mesh = "mcl_signs_sign45.obj" + ssign45d.on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_FACE then + node.name = "mcl_signs:standing_sign67_5" + minetest.swap_node(pos, node) + elseif mode == screwdriver.ROTATE_AXIS then + return false + end + mcl_signs:update_sign(pos, nil, nil, true) + return true + end + minetest.register_node("mcl_signs:standing_sign45_dark", ssign45d) + + -- 67.5° + local ssign67_5d = table.copy(mcl_signs.standing_standard_dark) + ssign67_5d.mesh = "mcl_signs_sign67.5.obj" + ssign67_5d.on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_FACE then + node.name = "mcl_signs:standing_sign" + node.param2 = (node.param2 + 1) % 4 + minetest.swap_node(pos, node) + elseif mode == screwdriver.ROTATE_AXIS then + return false + end + mcl_signs:update_sign(pos, nil, nil, true) + return true + end + minetest.register_node("mcl_signs:standing_sign67_5_dark", ssign67_5d) + + +end + diff --git a/mods/ITEMS/mcl_signs/textures/_0.png b/mods/ITEMS/mcl_signs/textures/_0.png index e764f3d6a0a224ad3b529855691b012fa69d317c..7ec1aea7a8b3ffb7b5b5a4b6a66a7df0ccd76851 100644 GIT binary patch literal 1851 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}Tgt3cTe8{1tUE}13e1{BLhQAD+6OIBSQs411l3#DoIr{vTiv4D%dIj3MpnL7G_pf7NB<- zYk~3%EP|{;iiVDC!hwnGN`)dujT0AgC_8ODC>nI}gNkudQ4=SZn7D+bl&YG#hNhN@ zshPQjrIoXbtDC!rr&n-DXjpheWK?oWYFc_mW>#@YX<2ziWmR)aYg>CqXV;|3Q>IRv zK4a#rMT?g#UABD1%2k^-Z`rzS`;MKv4jn#n^w{weCr@3veC6u3>o;!Rdidz^lc&#~ zzj*oTbPj7;S~%q+;ls%Xe2hFJSUiEpd$~Nl7e8wMs5Z1yaDW%*aUB&_LJF zIKMt+d3X~Q^l@8BL0m_=jPi@i%N=m{dgY(l$$`gxH8IX!{ U&mI?Gt;fLN>FVdQ&MBb@04$XJT>t<8 delta 840 zcmV-O1GoIU4($ez8Gi-<0063BcP#(_0@8X^SaechcOYwj0s^*+GTmLJdZVA~M; zHbghWtH|^``&-YqA>m6-`#F?7uBM0O?2FqryN$m-Cqpp0!k%#8Q%EB2KD`KLAVn%# z!JUP8N+SA6bV)vlUC8zQ;N5yJv5R%fKw*@85N`nn}dJqSR25JH^-{wNgZ(05tIXriQCKHSi zM!c!vJ>ggC&CnP#b%~;1aY9;PUOaOe)0pJu9a=y@V}Hj~SA16u4|x+Gz)ohm!t7XJ zjmKr;P`c-qEY1QwjVWx%WPKYzh~Qf>84?hP8HWUAipFe2h@*o~#mrd}A0R-g+$jvO z5y^n#Jbhz~(b8q*ON^ssZICPmG}u6Zm69TVEID$h>O7BBHLIy>(V8WvtT|`P^Ngw{ zmP{?1nSWcc>f*`OvzxmYuZ4@?2-A{_h2o`@TH&<9bj9cjjam;rB;YUeH;+rQ^-p?fdAo^&FW&UEUTPdoiAXC273AtMbPdD!q#M!iv^y=|YU z(F?iHsnMo3iKV4ycWMxu{V_rFIMK-r#5fU%+kYg0gyzXCI;F&u++-FDV^b)D8tH`7 zX%Yj$bQ0^J8@oHXPq_t6f5nYIA{QpQ|3NNHber5;Ztqa*b$wA}0h+sT#x%;n!3KrX zD|?;aq%XJOUk!X4`Zn}!X#Q1y{D4^ z0FiARKH~!w2`v;!LaXcm0010GL_t&t*JEHH75s-{6af@A6E1GWRb7k}Ta) z!oUb*f!xdpW%B^pOpMG7%s@I1h@}`=!D>o?Y-uRF2FTU`ssZU`0%Ai(CI*l`pkEn` zfNT*UJpqW905Jy`>Hw93RKsX@Pu~CqBRxX{JqrdS14BzI17j;ALj^+vD-%;IBU2=| zWdU`;+y*iN<~A-Mn;Gf`HlP|dB(^A&4e|pc6U2`KAiYqwF*xpEZu@`Z{{sdAFE>v& zphX~O0*U{(8Jrn7*x1Nsy6Qkn#T!26>=6SsB3q=tnSMWMXDvWn<^y!`fpm!N- zf$|J2f~-P{hK_8)fr;!&g(60c6BlwQJ8e8D8g%i4ig8j=6DOCLxP+vXs+zinrk07R znYo3fm9vYho4bdnS8zyZSa?KaRB}pcT6#uiR&hybS$RceRdY*gTYE=m*QCi)rcRqa zW9F9X@jO*zpr5PhGlv*fm^@Vd2=W@(XT*7|i7cPNJ%;etEe0NDMquPI z3o_U<{QTFYv4Ck557{u_|9_L=(Xwz)VDeNgag8WRNi0dVN-jzTQoypz$Vk`FK-bVX z#L(Qz*x1U{RNKJ7%D^CT%Lh3~h5rIoEm9yG zQY$jktei4SiUU%Mf)jHKa#9&AbQC~H=&hYPP?aKFl?%`nA(^=#mtd5tp=zB%K*hpv z#h$r|>8U=cdFdq?42DMamzQn@N(-V&hi9e$WliI!Ht7Q;CE=36`DrEPiAAXlNJY74 Tj|;HcV_@)f^>bP0l+XkKyU+SE delta 844 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 diff --git a/mods/ITEMS/mcl_signs/textures/_1_sup.png b/mods/ITEMS/mcl_signs/textures/_1_sup.png index 6be5fdcb1c82353b035fc97ce7940222a21d8525..0e20bf3a68cda4c09c044139df3f5063d2145367 100644 GIT binary patch literal 1850 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}T|eac`2 zWQzdl2|&CAh&jLzoIr{vTiv4D%dIj3MpnL7G_pf7NB<-Yk~3% zEP|{;iiVDC!hwnGN`)dujT0AgC_8ODC>nI}gNkudQ4=SZn7D+bl&YG#hNhN@shPQj zrIoXbtDC!rr&n-DXjpheWK?oWYFc_mW>#@YX<2ziWmR)aYg>CqXV;|3Q>IRvK4a#r zMT?g#UABD1%2k^-Z`rzS`;MKv4jn#n^w{weCr@3veC6u3>o;!Rdidz^lc&#~zj*oT zbPj7;S~%q+;ls%Xe2zm0Xkxq=03ak&&*Ufv%x(h@rWa zF|aH%)iyA&GB8No@&QzmAvEOXr(~v8!ZjFJgcuos3O_?jh=yh1zd$xffow>v$V{_x z$}A}kNG%FZ%q_@CWw6ju03o5bcIrS?if~mfKv#rh=7L;;QL6573F!eU7KSVK%uP&B z^-0Z3FUepqG^)S6bSqF=5LG%nGX*GX8b7s3A1EmamkiEND=AMbN@YMQ$~}8rfR!Et NgQu&X%Q~loCIFmR{A2(C delta 845 zcmV-T1G4HWymsmNi}@$H<-F z$%J5p9v@10W&BFH1sY?fE>ZMLC!_`D#WSZdjY)3a;eQ1LG`6O?^j#%9joFBxqk~Vy%vlm2AV8|z zDGaa?$$;ZL$3`Ec<;%*K8Al61sAMsq!3F}Xloa`6$&o`<=Xs>6SxsGw)+{+?%{g11 zXH+$@WPfVe%-o7q7f-I9-Q2x+EnEagn3h~D6fdRJia{$vSM;v%sP*7Oj&$ge4?FxQ zM{P)-mYTNQta&S~cJ9)#{d?{fy7$uSNheb2OsAgtwA0UW)`46bGSbkIhYcTP)EhP0 z+xCeXy(9NIHQLlBv9$c`P7P+Ww-7Xs6P?UJjDHh>xJ?2`Xr9cXQ%XF^O=ht$Hia^% zkxn?BCNU69C$SE?vAdJ|lv~jBSKRnd1GWRb7k}T`sfGcI01HI`f#8B3s$k*AAe2*>r( zvm1FC6d4X5;QsYDoR4*ZIP1C?3$IrOF;THmf~hC&hWX9j&nlm-Um2I9Ch?X_%$7_3 zCeTeTsS%!Oo}O9^96+Ohn308n5y%2LhY`x=0kWAGnHiXYbRG~(F|vZylmOY%P<9QF ztpQX6(#r(IhKx)MAbl-BYy@PB0O<)pyab3jz)%OM6r>tPyLZG(8t7Rt7#SE^ zS{WEy85t@V8d#Z_S{WN6xh)H*3+6VE5iqxL0olw@H?RTKupzNUp=^*J7?~h`6aeXk zvW>yf0(0B{8~-0L2za@9x&bW$ITJ|yzs=yxz`@4G&c@2Y&d$!s$-%`V!pp9XZ3R<7E#dCS&q+js2Tb?ESsqsNY)IC<*Q zuqec!9r-=(U9^_Ou4*DRPRCJL`OvU7(>PL{*z&<0+ zV@+iF4DK<6ziu(`Ff#%pk6Dnxp5f=eE{z3Dqj<=M0ssG-42IsH*@4MZwZt`|BqgyV z)hf9t6-WWgG9x2hLjzqy;}Ao0D`R6TQ&VjN11kfA#4R5{B^g3PZhlH;S|wbAfklWB zu<$dsGPHzfSQh>ZRBK3qY)GxhOtW&zEGZ61EecM|Eyzh_u+UKeA)&W+>OfVBa8)iq zSA=Bdf?R@8s(J_1cmWj)!xekxCZ?zQq~@iUWH1;S)n8t^6(}u;DjlAg0+cn4pW37k jl$3-^2Ir@hlqVLYG9VS@o;@zUKt&9mu6{1-oD!M<9ux5l delta 813 zcmV+|1JeAL4(tYyBYy(bdQ@0+Qek%>aB^>EX>4U6ba`-PAZ2)IW&i+q+U=HGvg9TV zhTmC5mVhLL#Bwl~s_Y=k&ktt$HYZb+NgfZB0jq@s`ULGT{`zxt0>VL;p_6Uj>LMeM%Mm0Q&vF%z=9b0T5)bjSjU% zENwk|QiIs+hY4EOi7sX!#)&}O76BwQFJ{pxC1hUY7PD9whe8?DNEe(=ix>!|L9CM= z?4IO)$t`I5SKRoY$c2UO{~#9@x1GWRb7k}Tnz0ZHQ!iH1$eCxsWKzF;OMtG)qdTKFn0F3}* zMivG}APeMVMkt#H$Yx?>W?%-=c|a`1$O=|d0%S`=*)>4622c%1FG!ssBNGEiAJD4| zMnJX*ke&dY(O<^NNiCgw=pt7{3rm@3uPOFqYmb_|2O_WU=Z+f^K=7R z1ac;j_=$VSiD#0X>vBPS;(4>yklFRz4=qKu*u$>9G120;#>i?Wy* zl^B==8JPtc{~uwH2fCA$5e$HS2LnbXW)@a9b`DN1ZlHp#0-%s$W@2GxWn}?+m$4Qo z&%h$cDx_%W$R-?^$gWfnA zuRebI{N?Mn?>~P20{M#(7^yIT)n9@@e=)JJFtf0O{Kd#r4#doYEUb!#Y(kEK?1_cK zN=A(wB2E(*Zam1TY#j7KG^yw!mzavlL)DKUuYr9=oX48T@)_J?2!GvT;9+J2Mjo>u zgFVB~e_a|2m`3rC4FmrFHyNI+z3T={o~k9T5hW>!C8<`)MX5jvSe6+X=^7g78XAWf znp+tgTbY__8yHv_7$k1_04m848glbfGSe#I8VoE#j0~(yjI9hUAsUv2{{q!4QXm^r zD>BopoH9#_15%5E6LSl4QW-3C6hKJmt(`hhl_Fe~3(yrInYkdBV3ewM%iKW~jxb!Y zXKrG8s!wWOdPxR@p;7(irCWj0f~eBrnJGY7)A*@P`anrZxMXmCT1k0gQ7QvcQSRB} S0<85I7(8A5T-G@yGywphz5ZnY delta 842 zcmV-Q1GW6S4&ern8Gi-<0063BcP#(_0@iv|SaechcOY{ z;K_twgdQJCcxC)bxdobYr7ltQODCiS=EWMnXK;skO*TdCPM-OG2@V+OwpK)2s%3WRLqr?= z%j=A)CV!SpEt{EJvFhT<)w7$s7q5kj;0V)_i-qE)lv*)pMd*s&6&|%7e8`awJ@R3P zALXbG>C;lvmYX$irPa<|I<|k$-9qmP zHPQvA(;^0fX%OqA8@oHXPq_t6f5naeL@q3J|ASmu=r*~J++I-Y_57m9325!YrD>Fj zgAESDD|=nvq%YUuUjuvx`VRCRX#K009e=RGZ;?EAmMeQ;jQ{`u32;bRa{vG?BLDy{ zBawR!K;r`y4JjxENV>BC0016IL_t&t*JEISfd33=;6E-2ysB{vFro=EG7LBX09^eB U{FlHVWdHyG07*qoM6N<$f?d;zZ2$lO diff --git a/mods/ITEMS/mcl_signs/textures/_3.png b/mods/ITEMS/mcl_signs/textures/_3.png index 4e7da566537ef81c92667396758a0e2924262e17..c58caaa8c0ca3a2fab4746e223bd56c3be4747b2 100644 GIT binary patch literal 1861 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}T( z{_pBj%QJ#BEo?Y-uRF2FTU`ssZU` z0%Ai(CI*l`pr;v(fNT*UJpqW905Jy`>Hw93RKsX@Pu~CqBRxX{JqrdS14BzI17j;A zLj^+vD-%;I69Xi-WdU`;+y*iN<~A-Mn;Gf`HlP|dB(^A&4e|pc6U2`KAiYqwF*p)o zZu@`Z{{sdAFE>v&phX~O0*U{(8Jrn7*x1Nsy6Qkn#T!26>=6SsB3q=tnSMWMXDvWn<^y!`fpm!N-f$|J2f~-P{hK_8)fr;!&g(60c6BlwQJ8e8D8g%i4ig8j=6DOCL zxP+vXs+zinrk07RnYo3fm9vYho4bdnS8zyZSa?KaRB}pcT6#uiR&hybS$RceRdY*g zTYE=m*QCi)rcRqaW9F9X@jO*zpr5PhGlv*fm^@Vd2=W@(XT*7|i7cPN zJ%;etEe0NDMquPI3o_U<{QTFYv4Ck557{u_|9_L=tgqiQVDeNgag8WRNi0dVN-jzT zQoypz$Vk`FK-bVX#L(Qz*x1U{RNKJ7%D^CT%Lh3~h5rK8F;XBKQY$jktei4SiUU%Mf)jHKa#9&AbQC~H=&hYPP?aKFl?%`nA(^=# zmtd5t#bURlfr^FUiam1^(^Gv?^U_N)7z~Z-FE8B+lomvl4$n*h%9_ScZPEuyO2Q?B f^V3So6N^$Akcx889v5K!$H3s}>gTe~DWM4fw#Nkt delta 845 zcmV-T1G4 zRB6z;`bG^)OnkDTXKsl5l(`reZVO79l?EH|^dJs44b%i;zO99p-?IEQa(M0pO(qy4 z%y?77d%~~Oo1rmg>Jml2;)Jxox_IU^mNCiA7Fs|+V}Hj~SA16u4|x+Gz)ohm!tB^! zjmKr;P`c-qEY1QwjVWx%WPKYzh~QhX7!nYO8J7fQipFe2h@*o~#mZR{A0R-g+$jvO z5y^n#Jbh!1(b8q*ON^^!9gr*rG&n$jm69TVEID$h>b#FsHLIy>(V8WvtT|`P^Ny+} zmP{?1nSWcc>f*`OvzxmYuZ4@?3e%E{h2o`@TH&<9bj9onjam;rB;YUeH;$G_)pp?fdAo^&FW&UEUTPdoiAXC273AtMbPdD!q#M!iv^eQcko z(F?iHsnMo3iKV4ycWMxu{V_rFI?>4t#5fU%+kYg0gyzXCI;F&u++-FD<4`Dr8tH`7 zX%Yj$bQ0^J8@oHXPq_t6f5nYIA{QpQ|3NNHber5;Ztqa*b^W8r0yIzIjA@jCiwz2= zSN1yplfK-Ce>L!J=-be@q4`xYIzH{fZ*A&!rOoX)#sB~S24YJ`L;(K){{a7>y{D4^ z0FiARL*oM#2`wmQE!S%R001FLL_t&t*JEHH75s-{6aj2(?1KMsse-FyBBbI!19boZ X10f3d*8x&^00000NkvXXu0mjf#QBm^ diff --git a/mods/ITEMS/mcl_signs/textures/_3_4.png b/mods/ITEMS/mcl_signs/textures/_3_4.png index 46e17104995b2f3646af911061a74767533bf36e..31690910825d89b0827067a17fbc532f4de4d202 100644 GIT binary patch literal 1859 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}Tx;Tb#TzBoUeh<=l9OzdnFRR^j;SsJy5A)=!ZXd& zQ;UHEXcQ1LvM?|LSs-W0m6(2=Wa`HH>!m^bJrj(la#BvtTeXFtoHXFt#!>R4_EL zGBLC=G(>V+7Dy-5Z6G6HZsP*7nW1iA1FB&|Vv8cVjgblBM*)ytDBBnug)q1Mzw!S8 zgMgQtryI~BkTZeA|Jw}C3><81>};$Y?Ck8EoE%&{BD_4@+&q#(!u%q#Qu1=LQZh0M zDthV)N;=9iG8*QZItGR&CMNRgmbMl~HhRV;Mj%5NIXO9bxOpUac_oY#WfYA_2LBH* z2yy^jl*P=b#K0uT$SlbC{|JLT(4DM|U;y+x7%(z1v#_$Ub8vET0~Kr)0EHAY6ALpd zD+|!OjI}^{1{Oh9Aw@$+HsQcTcBMiQqsEB~Ih36?9uy6__(8=usi=vQOH5osQc6`# zT|-mL#MI2(!qUpw#nsK-!_zA`Bs45MA~GsDB{eNQBQvYGq_nKOqOz*FrM0cSqqA$$ zPb?HxGHT=yahkYr<3UbkKb$@|Xn~>=}Ok>(W@jG>V6881VnU$uNU`@@!!8R4s9hC`m~yNwrEYN(EBDvdqXx z*U&)M&^W}<+{)P4%G6Zbz`)ADAaTnFP)UZ+kei>9nN|tcU|XVw6UXsCJXjFfB=~ke$AgXkDW(rW&G=6H6K2TB;E*YGkR#Ki= Zl*)iqlzaBL0Bb)622WQ%mvv4FO#p4+{lx$P delta 862 zcmV-k1EKuG4)z9+8Gi-<0063BcP#(_0@r#}SaechcOY$OoCdj*MB^=e}!G|9V~78@oW#a z1F`QwZzJ!3vPNb!wx91n!k3-)dnmhKO%Kc2_iTKA*5ms0{yiDQ=!$s4frpSpJbjHK zn1K|js0B|J;$=x_C)5=;z1A+|`dYkO>z#J7Zo5275n|pB`JG1FPWoEAQ=!Kh(S78n z4qZSzOgz|7GdJkIY%a!yn_LJ`XtDuM58`0cKuuug+g#`zx18fOa*W&w zo=gZv=<%V1SH`cDTc9~t>Jml2bV6ESUc7P|(^%xz6MtSnKyz!Vr@m(i4|x+Gz%FKb z%IsKRjmH(@P`c-qoSX%I8dKPi$@&fei7>WeGRWdYG2@V+OwpK)2s%3WRLqr?= z%j=A)CV!SpEt{EJvFhT<)w7$s7q5kj;0V)_i-qE)lv*)pMd*s&6&|%7e8`awJ@R3P zALXbG>C;lvmYX$irPa<|I<|k$-9qmP zHPQvA(;^0fX%OqA8@oHXPq_t6f5naeL@q3J|ASmu=r*~J++I-Y_54MV6VTd)OVcP5 z2OAuQSN6JolfGPse+}>*=sVDNp!Kg}cKlZhzX3BwcZ{6XkG22+010qNS#tmYE+YT{ zE|Gc0knT!I2v oCI4en{hxt>fq@a9J5h810Hmf8@j2wT9RL6T07*qoM6N<$g4tP>J^%m! diff --git a/mods/ITEMS/mcl_signs/textures/_3_sup.png b/mods/ITEMS/mcl_signs/textures/_3_sup.png index add337326dac50fa418d861b6a470db0df06645e..eae28867daba18b97abb806bfcbca8ae7c0e1372 100644 GIT binary patch literal 1850 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}T$Vkt&eu$mGeTN=u)0kSoKYCw8H>I@l~7(n`fK4mZh zvPFRO1R!1l#2jD<@&rgVjCS|*4Nx%BGc?e%U@$T;w6roXwlXqQFf_3;F#@uY+?EB> z33VID2$u)IvvcDq>wPbh^&;noUD|LjDm`ux`L99vW$#| zxu%YRp^1r!yt<{Wg^`V(v567L5JpZ;P9AO^30__aBSjfSBa*@Y0}O&3Ko?~(Gb%AK z2{JMZGX6ipAP;mWDH{SF3maka3YSZQ|TeofBv2)jxYE#}NLy#lXYN2#h>tK?Zw< zpZ~fv7BG$CAsYt#|8FvE>EVe2CQsE8*NBpo#FA92gwG9lc3=9&td;pbX2o1UUDVb@Na190)Aw~vPCdO8VmJkig!heA(7AcSosTG-N zR!*5E#Q~{B!HKyAIjIa5Itm~p^wv%ts7ev8$_40(kjz|=OE5~+=dXkKfr^FUiam1^ z(^Gv?^U_N)7z~Z-FE8B+lomvl4$n*h%9_ScZPEuyO2Q?B^V3So6N^$Akcx889v5Jx P$H3s}>gTe~DWM4fZw>r9 delta 841 zcmV-P1GfCS4&Mfl8Gi-<0063BcP#(_0@Zp{SaechcOY;T3L6)BjX8JMHnW{|kIi}iRSqQjC;12!Q&k=s$ zBGDM4nx~x7fh*>ixuD_4bzL;xG>z#H-*>-uBA{=Quq<0!^JLzlfmO_s+qWj2C zFR+AoJYJ95jeq82^lNn`CMcD{Uew!CRtt`hGhS*W6vI!^wpB8UV~G{S8fcyCgyBX>5`%oVy%n~QPgDi;D28f?JRf;ebYP?O2!HWyms<~3d=$HAOmJ$eZH<>|~}( zX2$}{ab6)#rF(A4;wGBdYq#l@qmCpUM`UNUFF5vDn13)yqdrC`v4&;`8?p!00009a7bBm001r{001r{ z0g-$SKjQ-x4JreI*$^-Q0013HL_t&t*JEH{VE7NkSiygE4q=r{_*CH3PJaLZCVU6` TR1GWRb7k}TSke;WDV+hCf+FnO41_g#gY5)I!wwfZyQYqDBe2GVHOGfm` zL%ah0N@df$r@d!2V0`njxg HN@xNA`RGpO delta 68 zcmZ3+6h1-Hj*WqVVO2u8E|8M*ba4!+U`$q!{&QUIgZ%8S{~Am)nr28`R`PK?#mHc- W!uweyFnB*uC4;A{pUXO@geCyE)D;&1 diff --git a/mods/ITEMS/mcl_signs/textures/_5.png b/mods/ITEMS/mcl_signs/textures/_5.png index baf23b273e1ad6dec02aeb3a2824a9f5b61936b1..96da18b506110d02cc728614c33bea183feccfe3 100644 GIT binary patch literal 1857 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 diff --git a/mods/ITEMS/mcl_signs/textures/_7.png b/mods/ITEMS/mcl_signs/textures/_7.png index 7594eb9d6e92af86264b85ec6056182aa10e23aa..2b078c1349f29ef1ed420809c262ec21f8f90a35 100644 GIT binary patch literal 1856 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TD7yy8)&Qyj>16_9Lq;YB zkUpS)8H|8z5g!Am4Z~mXm?NF00kpGLjyev1|tJQODh9oDIOET8a5=hD3lHI10xf}j{+dQP_{7(Pyz@bZu@`Z z{{sdAFE>v&phX~O0*U{(8Jrn7*x1Nsy6Qkn#T!26>=6SsB3q;uVlbnORub*f}`4xPc0`3V=e2nTds& zm6ZkPUB+6VJOhg$tB|6hBb#twBD+$dh*9Ijg&fLG8xM*GUHqV8oK)1r$t5N(At|M* zrmmr>WnyY(ZeeNV?BeR??&0Yb91<+v*#~fzWVs-^OvvRzW@073*;|GV5GtT#Aj&!5(N5-iG_ukg&pKCMy7I*#|2qf z6%E;h90S=C3x$=88aYIqCNA7~kW<+>=!0ld(M2vX6_bamA3?)FKnhrv z85!vs8t57thZve$85>)fnra&uSQ!{3ZutNz$q*WH^HVa@D&ZOoEJBQcg`csNp(RAa zvhZJ^>O~4mdKI;Vst0K@M7+yDRo delta 851 zcmV-Z1FZbO4*3R<8Gi-<0063BcP#(_0@Zp{SaechcOY!RwJb#XUg({}1^gd!2>ygWQC_>CfA%Dc^$Vors@^Hg%Goq*Gw-+KY z#n{24WpFFVq&O5F?tC z5_PIHY3#O9!xR$_HnhwQabGeQ9LQw-7(j^NTQM0D5QrIv1Z9fGY($8ogHOfGSrT6$K&sp+ zOt2BjfaAP;V~o+(W#wCpqXi%oTf~3{8wjvcQsj>%M-Ek8=aH&rHFYgov*eUD=WKbM zQPsqfseffNb1PO|Jh^&ybNAx4a1k6~T5_>ayp&QaoK~2w7+s-J>&2H`>C!7-cKKDV z+K@giHEp?B^Hy5z+@)jt_uMUX@1@s41F1C9(2<7?A7#{uT$?h})S0JEpJmnuH9Fh& zjT(KB`!zK>)E2R{_3TLvVzVD6XdNfIn1L840)KH^1d!0Ym_?_Qc#&JoVqt6wWl$qs za5^nwAeaWRPI|C=lKUmMpy^+6<9{L-7P|j~Tv+H1xu3axL9N&QMUf3??ZOq)C=&-8 z6oyy!y1q%j-G={a;M>r*p>IR$uVQxm+J(OXcTIMtN5CxE00006VoOIv0RI600RN!9 zrva0ZYaU1A0~HA_1b^7*O8@`>B}qg002ovPDHLkV1hU&j*tKV diff --git a/mods/ITEMS/mcl_signs/textures/_8.png b/mods/ITEMS/mcl_signs/textures/_8.png index b61f4e294c2076ddbc94e199619e248ff1778d9e..d4580e83fccf115d3a0b75caf677ba2519eb0bea 100644 GIT binary patch literal 1851 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}T&~V^? z{jmjX&9haQq>m*QWNtBW*~Qe%V9zwa`z*`!U>^SH-+f9zce|uUc&2%JYB6vCjR0as z76wKj3*=-*D4Pe!W@2P!U35+00NkumRPuA+bfFY>*!qnIL`?0O^IYjlod|bKCzL{~s_2c)5AH z0WAVK6G;5O&EU+y!N$hU#>&CY&d$ln!NnuO%frphBPk@zFCr@?FDEM{Bcq_Ar>>x+ zqbwt%VXmoTU}$1uBCl>~Yhh%gXKZ2wGK7(nlaq&=M}n7E!bnj@(THU5{{Vv^2hc@X z%#2D5OoEKef{g!L#-L1fK-%w T_P79RJq89(S3j3^P6>arTWGmY8_3p=WN0`;xgB7j7q%v?@(D;ORjeY#OKu#C%%|oqo&duaU!ZCulOk z7-7bn8r~CrrQQt9xl)%X`V}Xn1=htYr?HGhZne+?0)Lu2rh3Nrtl=SV;se;lOwTYo zHdy0vnK+d0xg{rOfu6<`He|BC4Io7Dtyl~R2*iv_f-*&8HX_8)!KY&7EQt>gAXV-Z zCfJB%z;Rx_F~{iCW#vnZs|6qwN5p^z2MDlIQsj>%M-Ek8_mQe*HFYgov*eUD=WKc1 zQPsqfseffNb1PO|Jh^&ybNAx4a1mT#T5_>ayp&QaoK~2wm|dY!>%oT{>Cht|cKA__ z+K@giHEp?B^Hy5z+@<6A_uMUX@1@s41F1C9(2<7?A7#{uT$?h})S0JEpJmn?HQLAa zi5k6-`1GWRb7k}T1jL4n zObj4>Kp!(00ofuzdIAtH0b&j?)B!35sfN++p1uJJMtX(@dKL^u28Nba2F6xKh6;uT zRwiavhNehv%L3|xxea6l%xzpiHZ#->Y(O<^NNiCk8{`K@CWs#eKzgBUV{i<@-1h&* z{|5{LUT&UlK#M@m1QP#mGdMGFu(7eTv2w7pvvYECaPf%n@^EwWND2w_i^xjJ%gIW~ z$SA1jsVgYyD9gxbm}}}77@C-v$g5l0S{T{r8Jie^3}NKtKT(FjACJG$I-N zKfoZ!0d!FoGoum%lOQ9rAmjfd4DvvCvND1J(2roi$i&RT%Er#Y$;Ay+uvGvQQp`*& z%&e>|K<_fv0_7Q41X+a?4ISBp0~6Vm3Pp?>CobercG`GQH0a_772~9$CQdFfaS2H& zRW)@DO)V2sGjj_|D`yv1H+K(Dui%i-u<(e;sN|H?wDgS3tm2Z=vhs?`s^*r~w)T$B zu1S-pOr17;#>`oZ7B5-4Z25|nt2S-kvUS_`9Xod&I(+2lvEwIBp1O4T%GGPvZ`{1~ z@X_NZPoF)1@$%KjPoKYh{r3IG&tD*aF#;nM2C(`|5a=%^78Yg}c96dqnaY8fS&)TQ z(U48ZF_1m6P*};Rkwe63;=+vwIhBorK8Pk2UE~r|F?p!^5#%+n&xrF_6Inikdko>P zTMRtRjKIia7G$tz`1!9(V*%4B93~ zh5rIoFj62JQY$jktei4SiUU%Mf)jHKa#9&AbQC~H=&hYPP?aKFl?%`nA(^=#mtd5t zIr~cOfr^FUiam1^(^Gv?^U_N)7z~Z-FE8B+lomvl4$n*h%9_ScZPEuyO2Q?B^V3So b6N^$Akcx889v5Kc$H3s}>gTe~DWM4fp?CmL delta 848 zcmV-W1F!tT4)z9+8Gi-<0063BcP#(_0@Zp{SaechcOY@z}uyo|tyFA!2 z#C{CX!|*P$Jg@Q5^J7T(meY9;<;<(;Wjp8LcFZ2*pYO>KjIOXJ9C!#xMC;3oUlqH|7{^T~@xuxLN>0aYPJgaDV_SB}M*Na^z6ebswo}R#VraHA_xebIz96 z9aT*%nSWX~Gq+;Z#gnUNH+L^y3m3r^rX?2(#Y-u*!fA!+irEz!wO)M5l`g&VWtU&& zstxJWQqz{3HE*TW&Rsf=f6v`Q_g;D(G>}Ro4IO#d@KHvc$h9dmO`Un#^jT(oP@{8f z->A_CxnEPGLv0aDThE@!b&}C%Ip83!45FH~uGbVWIm!$c2UOko%e27u0&)|0uEnty8#S8fD^Q zgTnC2Ue|xpZ};K98u&K!ZRp$3`l^^6pLXGIiWzpO*PHBe00006VoOIv0RI600RN!9 zrva0ZYaT@70~HA_59kUp!vFvPB1uF+R0!8&U?3Izhhh`~6gCq!ZH!n{Gh#Cvw|2Z* a$p8R9#Rme%ULBDD00001GWRb7k}TSkdCK|V+hCf-m@Ed859H#AK*^)fnra&uSQ!{3ZuyXfq9HdwB{QuOuED?}#K^$P#MsKv5~5*Q_%D#R89ZJ6T-G@y GGywp7Yf^Fm delta 64 zcmZ3&6g)xFij9GRVO2u8E|8M)ba4!+U`$@1_=Eq@4;4X~lB@qeu4>t=$;_~LBG-$FVF0QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fI)Bu8WK%P{_#B#W95AdT*~G7lVPop+^`0*WcvZW+D1YjZOJ7&-zUb z6HX~PSR7q(gY|slCSK9V`b)eMZ*WNVoL*)I)U8_L8c~vxSdwa$T$Bo=7>o>zjC2hR zbPbI|49%^Kjjc>gwG9lc3=9&te8@u4kei>9nN|tcU|j->^{jRt> diff --git a/mods/ITEMS/mcl_signs/textures/_a_acute.png b/mods/ITEMS/mcl_signs/textures/_a_acute.png index b72b4853e2f4f3befbebfb15f04cfc5932320767..552988e317f9df83d0e5b5d21bec6c655d6a5cf6 100644 GIT binary patch literal 1859 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}Tx;Tb#Tu<$F9xH7R6=zf>f2+uT6 zPb~%xpiw}~$ilz~WPzN{2xapC*-VVg49q|}4~V50S;1;bfNW_fy9UVC0IC7$WddSD zMkWT3KA@KwjDTzrAUy$ymjE#b80r9(f>gt3cTe8{1tUE}13e1{BLhQAD+6OIBSQs4 zQ!4{gD zoIr z{vTiv4D%dIj3MpnL z7G_pf7NB<-Yk~3%EP|{;iiVDC!hwnGN`)dujT0AgC_8ODC>nI}gNkudQ4=SZn7D+b zl&YG#hNhN@shPQjrIoXbtDC!rr&n-DXjpheWK?oWYFc_mW>#@YX<2ziWmR)aYg>Cq zXV;|3Q>IRvK4a#rMT?g#UABD1%2k^-Z`rzS`;MKv4jn#n^w{weCr@3veC6u3>o;!R zdidz^lc&#~zj*oTbPj7;S~%q+;l zs%Xe2Hq)$ delta 844 zcmV-S1GD_Y4&DZk8Gi-<0063BcP#(_0?~R@SaechcOYwj0s^*+GTmLJdZVA~M; zHbghWtH|^``&-YqA>m6-`#F?7uBM0O?2FqryN$m-Cqpp0!k%#8Q%EB2KD`KLAVn%# z!JUP8N_0tdNj`{O$o2i;-Fh#vi*?K8ITRu0t&m@0wB@8Pa=E$Try0@R^V18FnBrr3 zh}{_7$2hOm)qj)`sT}sA{w!tnpm-pZvW8_;!=>okss+`t#0Fv=G!N7ks1PICgA#SB zH0WGyqlPIaKH1PRH^hC)T#O611trZ&gAI6k5C@3{Y63Ce=0eMFS^gS1Ja>X76O0i? zys6{wup z$7SMBy62WG&H_D+DQw7OeH%cC;9D^n5)gKIcLlBjH)J< zOf8$4TYs_Y;>p#so4XgUg^S<_(~^sY;-!>Y;k3eZ#pnu+S`R+tNQWNzu)~jX)Q0qF zscFm2nzzzw=Pn)FzvphDdoR77bRw0`bn2N;JN+zY9musIBMlvS*zi$Cy-}mRZJ(&o z3%Sp!(WW+urKM+gY7m?KF+uY<(a8+NI1z~3B!7T}=E*ENrNoomWEKl!Qz(NP>4ej1 z5(B|>66>HFyF0m0xdlys#f?8A7bd#@K`u;mo7`J&?@;S?eNkiqn!9kuG|Iri28Gir zd!65;FSp@e4SXB=HuP<1{#A^QU%T)dWSw@Tr?SE*00009a7bBm001r{001r{0eGc9 zc9DPyLgND!4h0kuP!q!d001CKL_t&t*JEHH0{kZ^fK%Ilyk@cxW5Iu1W)kNL+yDS! W+Y0*r&vfem0000-$FVF0QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fIp-43}M{TKUoY&{c}x6c0MCw6_k_uS$aZpQO6 zFtE0yMtG)qdTKFn01X6UMivG}APeL>Mkt#H$Yx?>W?%-=c|a`1$O=|d0%S`=*)>46 z22c%1FB1?OGBPoM^Z`B2U<71~0O<)pyab3jz)%OM6r>tPyLZG(8t7Rt7#SE^ zS{WEy85t@Vnpl~bS{a%nxvc@H3+6VE5iqxL0olw@H-OyFhQtKGWBn3%|`TiRL}+2|RY7=a97!MAjko9Q3Erh5(ASUBeNjm|04|YKzFh-f&s)UAdfP$u(GjpaB^`2 z6>Jp%g%mRr3o|P#3(&iawLp0W7C}}aMMFn6;lM<8r9u&-#)%6#l$|yn6b-ugLB%+! zsELzHOk6@zN>xo=LsQGd)Xdz%(#qMz)y>_*(val)|vI#i`vL_Y_D;YI%h&WALxbYyTvT@J{(WIh_Tw*FF4^=;cyax6e zaUN?T%V%(pA^dfVfrpt97e0EHVpXx-(>K;^$D1T8B|MLBT7;d zOH!?pi&B9Uuq-q((ls>DH8c(}G`BJ~wlX!!?N&S%YYiBKsKaSWTsg;WtJ2Nq!tAy<`(3nGFa#+fRNBzJ9VHcMYt*# zpesT$b3rb_D3w#Z=D!0f7KSVK%uP&B^-0Z3FUepqG^)S6bSqF=5LG%nGX*GXc5Ke& msX$3dxMXmCT1k0gQ7QvcRp8m<0<1$B7(8A5T-G@yGywo*vmC(y delta 861 zcmV-j1ETzi5Ap_(8Gi-<002Q(%q{=`0@Qj`SaechcOY}yQ6HmJclCOD5RGdZ8_mj=SI+E zf-%C3cQt$@{F8b!G{#I_qQkE^`2x%{r?HGlZnn?@0)HAirn=(0YIw+-;{ohsrYp>j z4VL4)Oq@#h+>*svpr=O+8!}nj1`s0nRxE}D1dc?al;|*KBSIV$HmWPfIE*@}xtS5I#4p1owwf-6jO$`-QcoJ)bz0@DSv3p7eO`IIxBdZyD(Kl52C z(x=9%HC3x#b1jXVG#vkynuX>qx6-L2m3r*jQ@8Ft_cD-cLq;4r(y-wpk8-0%``A8F zqZe|YQ=?675{paE?$jVQdow}vI?>4t#5fX&+kYg0gyzZYaEg&9xykIvj6lJ{sp-((QR_?xqU#bmGwoD1!$ha8Ph`sE;cB1 zFYIN0lm565e{0~&(3hbvL;r)Jf$IW)F2hgnwUx;?)-b>T000SaNLh0L04^f{04^f| zc#(Y!Q{w{_4J{EqA@{!k001#bL_t&-)0K`v3IH$+!qTz-f7zbP6uKNmLSP~cc6=!F nuB1}(3*i0~3E+h1E`3J>z@ZEMz0xmt00000NkvXXu0mjfAi<4y diff --git a/mods/ITEMS/mcl_signs/textures/_a_circumflex.png b/mods/ITEMS/mcl_signs/textures/_a_circumflex.png index f9b80df66dae50b8372c2e7ca46e651482836758..2246753757c05e96f0af698d72f55388f1b4877b 100644 GIT binary patch literal 1859 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}Tx;Tb#T#r3#$aTPhf$8AK z6aV+;bR|sO9F=nPN|8gmsA~Pf`5U%<$~h7^k<-=W`_W$gEN6b61Ap%S0J`5LHNrE^ z(^HFq185WwGqNx+0$CuZGeX%sKsFO2GXpb_&I4j8Mpm$z5+GX|%B}&jHGpbBdYORO zkdcW2qz~w21|uL_1V~Q+;w3=L0fst2r6AQX+TGJPK*31Q&_K_E!N|bS(#pWt%E(Z` z(A3Jn)XLNp$!%FcT`;$SjDWd~3&>`Mx`7R-h7E}=3T1=*z{mvgqX0-Rlx+--LYUkB z-}wK4LBPw+(+y}5$eBRm|7`|m1`akhb~aWHc6N47P7W>}5ndi{ZXQV?VSW)=DS0_r zDH$0B6+LwYB^_lM84Yty9RouX6BBuLOIr&g8$DwaBak7CoSd9I+&mJzyb?x=GKxkd zgZ~E@1UY~%%3@|zVqg+vWEN!ne}q9E=uTEfFaY`y3>cZ1Sy&0Dr^+rDGxu0w~996fgY#K}{aE?>EN?fQ+I zw;n!v{N(Ag=PzEq`uOSdm#^Qx|M>X}8f2KE_o9%~}YXK;@p z{B?_ghnW!=dCYrRfod2jkPWF7nQ2x|nI**msYStwxdl0?3>G>HASCqGP93O95w6Mw=!%fcT#!pJ zO4Yshr)>f%7KSVK%uP&B^-0Z3FUepqG^)S6bSqF=5LG%nGX*GX8b7s3A1EmamkiEN dD=AMbN@YMQ$~}8rfVCe3gQu&X%Q~loCIEg@1%?0s delta 846 zcmV-U1F`(W4&nxo8Gi-<0063BcP#(_0@Hd_SaechcOY@z}uyo|tyFA!2 z#C{CX!|*P$Jg@Q5^J7T(meY9;<;<(;Wjp8LcFZ2*pYO>KjIOXJ9C!#xMC;3oUm(eZ(%-BbWD3gqV*){)o|$lYYqM;fCK zU&~AE=IlP_xPNz7Q%0n6IGg&hl|6#ug;2_#mQf9lVr;t>RL2$@h;`7sP+OovjA&0v z)Tz>>vHM01OH4f2&@(s0eaT#m3%3m=txA&(czO^An+9qEF+bKq+i%(a8aX_7f+iD; z5oY{U!&k!JsSiVQuGA%pe#Z%Efpzi9X)I%rTP?JJfPdzRsqXmh8eZ}yzJOiKbcflo z!5XjI#HIAiE!ms}dKyzWkjeTnfDpmAVlgBj5Hk{+GDTxHBE-?br()$Si7yZ!Rqhlf z*ob7nabCVL$7t)a@-4>I0uU-$3}|qG04pU${#bJ4P}OxGscKeJ*P=B`PFZu#me(Cs zO)QyOHh(j>V%5cyt7kWNFJ225!4;+@7YoHpDYe3Bh3Sgf6&kf(e94tAz4B$3U*)O| z>C;lvmYX$irPa<|I*xzO-9qy|5ldUop41>V`(c9Cb)t(Ih;bqiw|_+d3C)XHbV`XAxy39N#-UIKHPQvA z(;^0fX%OqA2fHV^UvdkY{uMX=Cvst-`#;Eqh3=61ncElCdfophvH`7AxMCV*;$nls z@XB7-f6{OF;lCRAHuP=i+tB)|m>r*X;cu_YcC06%ZnFRY010qNS#tmYE+YT{E+YYW zrICIMMB@V$4h1+Ph<_je001IML_t&t*JEHH0RH0=_|HI$*8h0TWg%n-$FVF0QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fI|#RV`k?^5jU9Mz#Fiu47GX#m{?V1NiJ;UA^i*H|{*+&I}$gkCaoF z7#LVvQX@RmJUz7-IDjSsF(V5DBaj919wU^^17tHXGBYp(={z8oVq^uYDFL#jq3jwU zTLY*Dq?ZYZ4H=mjK>C0_XD|Y?MS%1KAYKB*9AKyeR0>iJquo7y0~Cz(3=Q-w7>o=I zEv*cUt&9v63{9*|Os$NKklfY))CF@J$OxF*xPWYCs2f1;XG3C(LfIfcFfu{>C;-w6 zWfy~D5(pq}`+wvA0|o&vH%~X9MIdJaiT}45oEbRS*x1=vIoR3RIXOAFctm)4xVd>G zg@pMFmiHo@^JG= z@bXF+Dat4skqrJHU=ZX0x~PGfQHg;`kdaxC@&6G9d7wL48NmSJ6_7`nSy&0Dr^+rDGxu0w~996fgY#K}{a zE?>EN?fQ+Iw;n!v{N(Ag=PzEq`uOSdm#^Qx|M>X}xYE#}NLy#lXYN2#h>tK?Zw}yQ6HmJclCOD5RGdZ8_mj=SI+E zf-%C3cQt$@{F8b!G{#I_qQkE^`2x%{Yp{$-Znn?@0)HAirn=(0YIw+-;{ohsrYp>j z4VL4)Oq@#h+>*svpr=O+8!}nj1`s0nRxE}D1dc?al;|*KBSIV$HmWPfIE*@}xtS5I#4p1owwf-6jO$`-QcoJ)bz0@DSv3p7eO`IIxBdZyD(Kl52C z(x=9%HC3x#b1jXVG#vkynuX>qx6-L2m3r*jQ@8Ft_cD-cLq;4r(y-wpk8-0%``A8F zqZe|YQ=?675{paE?$jVQdow}vI?>4t#5fX&+kYg0gyzZYaEg&9xykIvj6lJ{sp-((QR_?xqU#bmGwoD1!$ha8Ph`sE;cB1 zFYIN0lm565e{0~&(3hbvL;r)Jf$IW)F2hgK1eL~jp-`Ft000SaNLh0L04^f{04^f| zc#(Y!P2&R<4J{yV|M!Ie001jVL_t&-(_>&jfd33wz<+#_D1Z@*N=BlL`;X3MA=XuJ hHWLn&gq=-1007FR4E$3*^3VVP002ovPDHLkV1hW^i7NmA diff --git a/mods/ITEMS/mcl_signs/textures/_a_grave.png b/mods/ITEMS/mcl_signs/textures/_a_grave.png index 3f0de45a5b02b364dcb3e3c447ca877911893914..6ccb2088e6696f132c721c2787d4bc44ef7c1199 100644 GIT binary patch literal 1856 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}Tf`NX^<(Au72p*{COVhMy{LsZyz3KWm(O~Yj-`#2k3a0)CkWsPfsld z4xl+e%*evP2xNiW%?M@l0NG58%nZyxIuD4Y7+Jw;N`P!>D7yy8)&Qyj>16_9Lq;YB zkUpS)8H|8z5g!Am4Z~mXm?NF00kpGLjyev1|tJQODh9oDIOET8a5=hD3lHI10xf}j{+dQP_{8R{$OtVf8+lH z1_3WOPdA`NAZG%J|F;>O893P3*x6V)*xA`RIXSp^M0k0)xp^dog!x5erR3#grDS9j zRP@vplysD3WHih*bqowmOibj}Ep07~Z1jvxj6jAka&mI=aPvs;@=6#f$|xF<4E`Tr z5aa;5D2tg`H|qMvW5}awt1(JSZA;@q>zSQc)8pmzcPOq?D?f zx`w8fiK&^ng{76Vi>sTvho@I?NN8AiL}XNQN@`kqMrKxVNoiSmMP*fUOKV$uM`zch z$y26In?7UatVN5LEM2yI#mZHiHgDOwZTpU$yAB;ba`f2o6DLnyx_ss8wd*%--g@}x z@sp>|p1*kc>f@)+U%r0({^RE_kiQs#kqQG?{Ur$W7ZVE$GYdP&UyMxUK+G)2!m4P< zCgd2%o>(ZXWYowZ;xuvL#)F*7#z7xMlZq~KiK&=8RQ(9@8rWyVd8~;npTRwb@YgK{ z9%e>hc?zxs|c8m8q$=fq|8QLE@GVppp!sAvZrIGp!P?!N4NK$iT|P*vilnqG4J1 zFHrR&1+pQvA~Vg(DYK+FAhjqsF}ENmmBB(s0fdC!+NlFoDZ*8`09_H1nG13WMyYCW z;af9Mu`pb*XKrG8s!wWOdPxR@p;7(irCWj0f~eBrnJGY7)A*@P`anrZxMXmCT1k0g aQ7QvcQSRB}0<8KN7(8A5T-G@yGywp4%>Uc~ delta 845 zcmV-T1G4@z}uyo|tyFA!2 z#C{CX!|*P$Jg@Q5^J7T(meY9;<;<(;Wjp8LcFZ2*pYO>KjIOXJ9C!#xMC;3oUm(eZ(%-BbWD3gqV*){)o|$lYYqM;fCKngVr;t>RL2$@h;`7sP+OovjA&0v z)Tz>>vHM01OH4f2&@(s0eaT#m3%3m=txA&(czO^An+9qEF+bKq+i%(a8aX_7f+iD; z5oY{U!&k!JsSiVQuGA%pe#Z%Efpzi9X)I%rTP?JJfPdzRsqXmh8eZ}yzJOiKbcflo z!5XjI#HIAiE!ms}dKyzWkjeTnfDpmAVlgBj5Hk{+GDTxHBE-?br()$Si7yZ!Rqhlf z*ob7nabCVL$7t)a@-4>I0uU-$3}|qG04pU${#bJ4P}OxGscKeJ*P=B`PFZu#me(Cs zO)QyOHh(j>V%5cyt7kWNFJ225!4;+@7YoHpDYe3Bh3Sgf6&kf(e94tAz4B$3U*)O| z>C;lvmYX$irPa<|I*xzO-9qy|5ldUop41>V`(c9Cb)t(Ih;bqiw|_+d3C)XHbV`XAxy39N#-UIKHPQvA z(;^0fX%OqA2fHV^UvdkY{uMX=Cvst-`#;Eqh3=61ncElCdfophvH`7AxMCV*;$nls z@XB7-f6{OF;lCRAHuP=i+tB)|m>r*X;cs_kcBabN-ev#*010qNS#tmYE+YT{E+YYW zrICIML*oM#4h0Q$JG%n_001FLL_t&t*JEJ71OAgNfuRb&5iGdO`;W^qWHX6#1#SQU XY10b&$L6G;00000NkvXXu0mjf#$Jrb diff --git a/mods/ITEMS/mcl_signs/textures/_a_grave_.png b/mods/ITEMS/mcl_signs/textures/_a_grave_.png index 8176f51c52e6f3f68a828cf56d6a6e144617d953..f973dec5d87d8dd961b80b656e0a77d0e3103e7b 100644 GIT binary patch literal 1930 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz!2%>-$FVF0QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fID^B4C<#Wfz)UG;JE!;@dtWB)y1GWyIdE)e`A zfq{XwB{jk`&C^qhfdgnF5HqqcFalX1?=eEzJU})RBQpatkj?{QDMnVXni3#e8p^H# zvNeEeKzf;g*pQKl0i+M;a|RFrw*NQ&KVT5>a`SWpS_E^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<5A1R0qH8UG()kO#Vxl@SaeUIBTOnT3^&or9B$ z8>nEb04SuGnOK-vSy_PIWvm6tGq4D<3Mm>ovIz$!vMUve7&T5@$f4}C@t|nX#SbdR zNkvVZTw>x9l2WQ_>Kd9_CZ=ZQ7M51dF0O9w9-dyoA)#U65s^{JDXD4c8JStdC8cHM z6_r)ZEv;?s9i3g1CQq3GGAU*RJ2VdF$b$$4{OPfBE|D`;VW$K>lI`Mk)+Ie1_&PL7=~wSXh`@ z*g^hcWGV-FT#$uT(U48ZF_1m6P*};Rkwe63;=+vwIhBorK8Pk2UE~r|F?p!^5#%+n z&xrF_6Inikdko>PTMRtRjKIia7G$tz`1!9(V*%4B9`Q( z3Pth|)jZ{t4wRT<=7NqNSGig`;(A^s?UtVH;i&rs!z5^B`+xWCUtrh!0E^pxKHG!s zK$=0@;j zLNLOJcQt%u{F8bMG{#I_qQftpd;#W}(^$qNH=pnV0)HA?Q(gM58XofIcmO+@>5|#8 z!E&5eh*RmFTe3I{{Pc)nLndoG03^cPip7wCz>!Fl5*@~DM9|T}r(oqQkxvjHRc;gp z*oY*+ah`KyjM4IC<;#q#WgUdDRBvzN?SaD{13*+TZ5b19g#Aaud#0*_KoKIM$3p6RsH&wQ4O z^r^9GP1UN`Tub974adKwW}$h@t#s;0r5?NX)UA8Zy$s~qkP(NDG;H|Dqui*`KDJNP z=!M+p)M!(i#NzU^J2jZi-a^p4PINK@F^&Y{Hh&2qp?NYpoMPljZZbPE<4`Dr8tH`7 zXc7a#*ok$}joqExr`&?Z-{QuGCfLmY000SaNLh0L04^f{04^f| zc#(Y!QR4#@4J`(}@^W|p001vZL_t&-(_>(Ofd3450A5KrV8o)D5tmW_ahd<0fq{X6 lg^=YKI+$>%B+lu?0RYIE3;ko@pg#Zr002ovPDHLkV1oR1GWRb7k}Tx;Tb#T#r5L$i<)_!gMjc zf2+uT6 zPb~%xpiw}~$ilz~WPzN{2xapC*-VVg49q|}4~V50S;1;bfNW_fy9UVC0IC7$WddSD zMkWT3KA@KwjDTzrAUy$ymjE#b80r9(f>gt3cTe8{1tUE}13e1{BLhQAD+6OIBSQs4 zQ!4`#D^pV>w`Bo!!Q2Ki0_HX@Ae$NL1~#A?HYBzvlnwF&BNN1r0wBFmwlO#gVQ%|> zoIr z{vTiv4D%dIj3MpnL z7G_pf7NB<-Yk~3%EP|{;iiVDC!hwnGN`)dujT0AgC_8ODC>nI}gNkudQ4=SZn7D+b zl&YG#hNhN@shPQjrIoXbtDC!rr&n-DXjpheWK?oWYFc_mW>#@YX<2ziWmR)aYg>Cq zXV;|3Q>IRvK4a#rMT?g#UABD1%2k^-Z`rzS`;MKv4jn#n^w{weCr@3veC6u3>o;!R zdidz^lc&#~zj*oTbPj7;S~%q+;l zs%Xe2Z8&WGW)2y5_ONs+hi-Hq#3vyB!EOZn=Na(GdI#87&T$KyZ6(O0qAeUg2 zs;tQ$uLBhe!xekxCZ?zQq~@iUWH1;S)n8t^6(}u;DjlAg0+cn4pW37kl$3-^2Ir@h clqVLYG9VS@o;@zW+K++3)78&qol`;+0LR<_5C8xG delta 846 zcmV-U1F`(W4&w%p8Gi-<0063BcP#(_0@Qj`SaechcOY@z}uyo|tyFA!2 z#C{CX!|*P$Jg@Q5^J7T(meY9;<;<(;Wjp8LcFZ2*pYO>KjIOXJ9C!#xMC;3oU$a_B6@m$`#~h8 z_*!0KH)r=b$A7)Mnld7l!`al2t?UsLFN9L|w2W$a6l2@9pgOkLK&*r2h1voYVnlmV zqE3}2jomkDSYqPAhMu`0?n~xkT)1s0X;qqRz|(^`*fdZRi21P=+J4LS*T~_y6EvA% zj4(9@X0flStq0fY#?6^kJOftZollqnjs5h0EaJ{2oxNqm6-sdA?< z!A2wlj`Q-3IYwKTm2WYw7JyL6VnBlf1Xw94^2d@RhpMjoNL90%x)!Zja>|->w!H4B zYGTRMvVWPm6{{|uTs^zFd+}Ph2(B6I_L{3=&% zNS~IPw%n|FE3J0!(sBHI?iRZD((9msR2pgM$is$@GU`OGO_^!x%+sdNGV6mHon!k( zjXuczni?Hyi&)xv_M`@}*$)%6t`l9%K#UWCxPL7INN8TnqEkw|$Sr2EFb;(>sF5x> zofa_=OoLb_J=i_T{gPYI^sl(_KamRy-Ty%@EOdw5&)mMC*6aR9kqu~_!WGjf6Bip4 zhFA8w{*!*Y5C7G`x1n!C--gy##q9XB3x5NqV0Np`bEqZ&000SaNLh0L04^f{04^f| zc#(Y!MB@V$4g@$llTKj(001IML_t&t*JEHH0RH0=z$wANgi8g6Y8HZKp-cY9=K>M| Y06|*|`^f)nF#rGn07*qoM6N<$f&f>NZvX%Q diff --git a/mods/ITEMS/mcl_signs/textures/_a_ring_.png b/mods/ITEMS/mcl_signs/textures/_a_ring_.png index d3e9b7e9646ccca175498207ca8314a91204ad8d..0c28aadcc9dd1c1dba29cc3e6126010db36c9a52 100644 GIT binary patch literal 1929 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz!2%>-$FVF0QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fILhT}uQqeroXQ1{^ngvb#s*P(!JroY<_^HwQB>?yTFm{{z#4&3r=A@4p>j zU|?-YjqptK^weVD02&Cyj4TX{Ko-b%j8HZYkj=!%%)kt!^MF{2krk|_1jv?#vTJ~B z4WJs3UM3(mWMpCh=>vM4!3f9}0n!tIcnJ`5fT0dhDM&SpcK7rRP%zRnG|;nPFfuT- zv@$TZGBQ*!G_f){@-SBX5e6BV`pRKU}tCNM)G;tLF)@)>x3sk|ve7d(F#;LF$jQmc!_6bX z%PV1|D5GdZGWdUhL68IJq6TJ0B?cxzMrJ|A|3?_)f$n5w1OtdyKptggVP#|I;N;>4 zD%dIj3MpnL7G_pf7NB<-Yk~3%EP|{;iiVDC!hwnGN`)dujT0AgC_8ODC>nI}gNkud zQ4=SZn7D+bl&YG#hNhN@shPQjrIoXbtDC!rr&n-DXjpheWK?oWYFc_mW>#@YX<2zi zWmR)aYg>CqXV;|3Q>IRvK4a#rMT?g#UABD1%2k^-Z`rzS`;MKv4jn#n^w{weCr@3v zeC6u3>o;!Rdidz^lc&#~zj*oTWKS#c@69{ z;yl(wme1fGL-^|!0}nGJF!GoM8SEK;{_E0Mz%+_SY#8wWzsZoae-@~~R4s9hC`m~y zNwrEYN(EBDve3v#*U&)M&^W}<+{)P4%G6Zbz`)ADAaTowEEEm7`6-!cm2eFP79mCk zRwl+)hL#Ww%ff#x18R^0*^pY1nP%mbSyCL3S`?g^Tac5=V4`Q( z3Pth|)jZ{t4wRT<=7NqNSGig`;(A^s?UtVH;i&rs!z5^B`+xWCUtrh!0E^pxKHG!s zKAC zKz24NG^nq(QpFM@cQ&-l6}nHGi*e>E7XnloY{1ikIM`HB6PWq77FzS>HD4vi%#Gm5 zgkXdb?`rtS_$T!iXpEVZ9H9X|a@c?!*(ia7^CIO%9j~e3qUB2hye`_5Mafq$RCT294aargQ_Mqb%T`=Gx_WYR_v|He7F=PPQ?`&j=UfUVEeKsOy1=89lTSJ0sb@Ov^fRBO zB7JJCT2r;^HP_O(NyG7Psaa^=ax0xWQmMzTJ$38eb1wtAHe|%1BMloq@+dcIw2$o* zHF_cUIW^kUCb78u>`o14v$qg5uM?fjK#U`SxPMIoNNAqS4yPD-lAFwq%s3Rvphi03 zG@8UfFm_@cbYpiX_bIoa@wd3~ugHao?q84#6Wu2Fp4$i1T3Np+vH;CfI5j=t<&jfd33wz<**S85kHC7#Oh#G7@Fne{?nr kv95x%nQ*AYs+&vz0Jp{s`^C5YDgXcg07*qoM6N<$f@KYoKmY&$ diff --git a/mods/ITEMS/mcl_signs/textures/_a_sup.png b/mods/ITEMS/mcl_signs/textures/_a_sup.png index 4f4f9801cff3035bae4da6a583afc103b125fe6c..c2a001016d34a976724a1ff051d646f59a9d9f61 100644 GIT binary patch literal 1852 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TBQJvi&tU_r z7ytElJ73`5#mN-hHGyervc8*Z#D;C>lm0woWmw52)V)}|66kQ3)CkWsPfsld4xkx8 z%*evP2xNiW%m`)k0NG58%nZyxIuD4Y7+Jw;N`P!>D7yy8)&Qyj>16_9Lq;YBkUpSa z8H|8z5g!Am4Z~mXm?NF00kpGLjyev1|tJQODh9oDIOET8a5=hD3lHI10xf}j{+dQP_{8R?qF{Ff8+lH1_3WO zPdA`NAZG%J|F;>O893P3*x6V)*xA`RIXSp^M0k0)xp^dog!x5erR3#grDS9jRP@vp zlysD3WHih*bqowmOibj}Ep07~Z1jvxj6jAka&mI=aPvs;@=6#f$|xF<4E`Tr5aa;5 zD2tg`H|qMvW5}awt1(JSZA;@q>zSQc)8pmzcPOq?D?fx`w8f ziK&^ng{76Vi>sTvho@I?NN8AiL}XNQN@`kqMrKxVNoiSmMP*fUOKV$uM`zch$y26I zn?7UatVN5LEM2yI#mZHiHgDOwZTpU$yAB;ba`f2o6DLnyx_ss8wd*%--g@}x@sp>| zp1*kc>f@)+U%r0({^RE_kiQs#kqQG?{Ur$W7ZVE$GYdP&UyMxUK+G)2!m4P(ZXWYowZ;xuvL#)F*7#z7xMlZq~KiK&=8RQ(9@8rWyVd8~;npTRwb@YgK{9%e>h zc?zxs|c8m8q$=fq|8QLE@GVppp!sAvZrIGp!P?!N4NK$iT`3Som2&G%O4M1*%%4 zKsKaSWTsg;WtJ2Nq!tAy<`(3nGFa#+fRNBzJ9VHcMYt*#pesT$b3rb_C{=45Up4_1 z3&RzA<|d}6`lRNimt-&)8r5H3x)mrbh$!RwJb#XUgi@bn-KHVxDSVt&kpw%@Y-HF9|F1WhIw zBaHZ|hOdObQy+%rT&YVG{f-mT0`uaP)0oC0x9-pa0)Lt(rn=+1Yk0|<_yTq@(;a5V z0&Bc(6PMC6w`6k`=xI#hKql+Q073-ciph|GK+HHKC{r|MBSIVmWn=;eXnWs&kW!48ZI@|V* z8hw!aH8nca7O}MT>`4t`vmYjC9Vfb&ffy$OaerF`kkGuCMW>W_kz34SVQdOzP$OM% zIxS)#m0fc({`-aOh5Ag000SaNLh0L04^f{04^f| zc#(Y!MB@V$4K)%aGd^4Z001IML_t&t*JEISfd5d875rylU|?WD=3vNTlSDQXr`ZDt Y0J!4_`~?0ZhyVZp07*qoM6N<$f)iDRQ~&?~ diff --git a/mods/ITEMS/mcl_signs/textures/_a_tilde.png b/mods/ITEMS/mcl_signs/textures/_a_tilde.png index 567632c37777180fe8fc5e2b033d8698b6c5279a..0600d53ad4994ca96ca2b373b32898df52213783 100644 GIT binary patch literal 1860 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}T$tKNN&pl>VmlqWCYA@TtGH6)D3JvHEc+1Q79Ya2Sz4{9|b^qp=@Jt9Kzi8 z|Hl6Z3<6$mo^C*kK+Xgb|8FxmGjOo6v9qyqu(Pvsa&mC-i16}obMr_F3G<7{O3BN~ zO3BD5sOYIHDCsE6$Y_{r>KGWBn3%|`TiRL}+2|RY7=a97!MAjko9Q5G|!5(ASUBeNjm|04|YKzFh-f&tKvV8F=4%)-jX&cVsW4OFmI02ETp zOf1Z-tSmt9GS&j+8CV2ag%k}P*@OcV*_8@Kj2b5{ECr+Nabot8FYu9hw zy!G(W<0ns_J%91?)yGetzkL1n{m0K=Ab&9eBNYa)`b!Y#FD4ciW)^mkzZjXyftXp4 zg;mjzO~^5jJ+V+&$*7S-#A)KfjR!fEje|ajCKX-e5>qjGsQMA)HL%Z!^H>vEK7)G< z;jdc^Jj{&1$YT~{uxI%BuS;VA(c?zxs|c8m8q$=fq|8QLE@GVppp!sAvZrIGp!P?!N4NK$iT|P*viln zqG4J1FHjXD1+pQvA~Vg(DYK+FAhjqsF}ENmmBB(s0fdC!+NlFoDZ*8`09_H1nG13W zMya}o@yt1(Vqv&q&)mfHRG-wm^pXq)L!zopr07$9-i~s-t delta 847 zcmV-V1F-zW4&(-q8Gi-<0063BcP#(_0@Qj`SaechcOY@z}uyo|tyFA!2 z#C{CX!|*P$Jg@Q5^J7T(meY9;<;<(;Wjp8LcFZ2*pYO>KjIOXJ9C!#xMC;3oUZ1HDyF9hqI|4TiGKhUI?Y^X&KeuxX$s5c6X#wEdRtuaU!ZCulOk z7-7awHGC!fo%%2|=Sp3o=y#lu7FZXroW?R1xz$1o2!CjvnCg!2uHhwb;tSZtOm~*^%prpIcJ48%AQh=1E6fQ077EIOsci`-%s3*%5IgBt0A z(`gX{!8C|<(u3WT+%LHWP5+7;{}Z{e(ET6e!a{e*{mktPYQ64%6xo2*DO@p)GI6m% zVR&V)>p$tY`|w{4d>i^U^lfN;Rm_f0yYM%PHFl^cn&Y+r000SaNLh0L04^f{04^f| zc#(Y!MdJe%4h9a#AGvw}001LNL_t&t*JEHH0RE%Vm;!jU{>N)B3of(%<6xthN!SJW Z0Ra6?4EPZ4bOQhY002ovPDHLkV1k-`mdOAB diff --git a/mods/ITEMS/mcl_signs/textures/_a_tilde_.png b/mods/ITEMS/mcl_signs/textures/_a_tilde_.png index fd3d97784bb99d3064bd7bc4c0b1c135ef27721b..baffca08e4826124e4e9d7a6928c3724e1c639a1 100644 GIT binary patch literal 1929 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz!2%>-$FVF0QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fInY$ir#24*0g2gFj0tY9@IK(;iLT?1rm z0M&r>G6At6BNGEiAJF3rMnJX*ke&dH83+OF)#@-G7B>PKf)jnbSEn#7(l!N@+dP4D;qlpCl@zR z!BzoKNHH_9Ftf6<0KLmt3zTPI5o8roG<0MW4oqZMDikqloVbuf*=gfJ(V&YTRE(2~ znmD<{#3dx9RMpfqG__1j&CD$c?zxs|c8m8q$=fq|8QLE@GVStuHE^HVa@D&ZOoEJBP7 ztW1op3@srVmWBUX2Gk%0vLUr1GtJ5=v!pm6wJ10-w;(5#!9qs?goNJOsRLCh!d1Bd zT@jL*3vvlYsVr%my&9-k7_QheH!(fcCp9m@t| delta 853 zcmV-b1FHOq59$Vx8Gi-<002Q(%q{=`0@Qj`SaechcOYAwZ?U20Sf@gG~iBftYV=q2)I(f0Z1b8$pu^ z#t1Xs)$ozWc5G;URC12e6Zwt}r_` zSdQ~DaVp(&OBQE=o*pr5$YgCBK#1U5u^18%I1-6cqQjVt2yt}qDOfp6!W-UolOqx=%H1DWl zV$sx+nSZ%uD=r>gJ-NAi_L4aZt}x9hTgaYsE(J~tOc%^9&?x2PQ_gtmnNBalB2-MaVO%RsIT8FA=H!-kJM%8eTBWBWvn zUdVk;jW)GOEG|8}Q-j#-%>>QsL?<&4<47QGlYambnkTcvDMp^;CbJ_m4uvwPkxn>` zCNU6Td_5rn4))z$sOb;2j*r3q8 zu$TEw`r|(Qt${B?UxvO6{SSr)t_%FR3_k%4f0fKA*=EK7000SaNLh0L04^f{04^f| zc#(Y!OXC9-4J|MKK&jfd6PTZb7Vo5sOMjbVYdWfU{X}NaEJP fghM4^XA=(q;hYWonvDGs00000NkvXXu0mjf(>a3? diff --git a/mods/ITEMS/mcl_signs/textures/_acute.png b/mods/ITEMS/mcl_signs/textures/_acute.png index 0655de2dd5011929c6e388d7f88b98ca8d900d00..709cf70fb371793b61394c012dd92513a13e3cdc 100644 GIT binary patch literal 1839 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}Tyf1#{c~8~-0L2za@9x&bW$ITJ|yzs=yxz`@4G z&c@2Y&d$!s$-%`V!pp9XZ3R<7E# zdCS&q+js2Tb?ESsqsNY)IC<*Quqec!9r-=(U9^_Ou z4*DRPRCJL`OvU7(>PL{*z&<0+V@+iF4DK<6ziu(`Ff#%pk6Dnxp5f=eE{z3Dqj<=M z0ssG-49(&TdV$GPwZt`|BqgyV)hf9t6-WWgG9x2hLjzqy;}Ao0D`R6TQ&VjN11kfA z#4R5{B^g3PZhlH;S|wbAfklXsft87|m7yg>!?N&SpxQ(VWJ792W}1~#W=U~CYEf`v zZb42egN2R)2noHlQwOS2gsXA^x*{Yq7vvI*QZ@8^0I2*GhAZ~WO-xVqNzF?y$zU)v zs=vH+D^OYxRXRK~1t@D8Keb68C@Be-49-t0DNig)Wk4#*J$qb$H5~(kr>mdKI;Vst E0OFJNH2?qr delta 829 zcmV-D1H$~T4%G&b8Gi-<0063BcP#(_0@r#}SaechcOY*^(gIWGuFqMz$>W=81`79G@uq*`JBXEZC&)+lr zg^NT}NNS!-&JkBCsc=QZ<9*#V#kBADrKhHMdx-74V3-88+<%XG9RCWtK08=C_Uqjq z>;z&zfj&k)0cDNMXdFL3frM{6o##+aznWf_bAGe&ey!L2>hp6lh|v}CgaZ#DiMab3 zMKA*?Qc(-;EX2!_&`x-&u>M55kn7jtJzAf%i}l#$U5XI%amb%EI(E{pwc854&WN5P zzrDa3QhdE$wSSx4=N$LyYRXV5hqI`UrR)|QA!m}^Eu$EIini@iP#jBaAl5OEzbLpT-mpWU_t&Kq8E-m<$OB#Ee6NGDTxHBIxMgQ!#Uv#1{yV zDt8JKY(z5PIIpqM$7uVq@@>Y^0uU-$3}~={04pU${#bJ4P}OxFscKeJ*P=B`PFZu# zme(0oO@AzzS~fGcV%5cyt7kWNFJ225!4ak<7YoHpDYatIiqI9kD?Dnw_>wDKdgaS5 zzsgk`(x;`SEjMf4N~@i_bZq~gyM^w(^g3uDl|~vm^048fj5?8PQ)Zev^R(%+%=(~4 zXWPC}qfg|1O^pt>~uN<3txT5P#!DAa08Q5}FsY=#&yKa*J6kj7^~o zYNQKJr$r0|(;(JK4|Y#-zvLD){T4U=8M&~~{U7AQLU+jh$n6Viz3wlHY(Q%lE={9M z9BgnHUfJvVCjD_8{%e5mK;MDB1Fe4*v*W*7_!mYRca9!y5X1lg010qNS#tmYE+YT{ zE|Gc1GWRb7k}Tx;Tb#Trcf)>40j1E>b1mkEds z8JQSB`hZ?$Faokgfb;|)UIN4%V5kFB3Q`TD-93E+6pZu?4fHG+j0_AdtqhEoCzfU-)3-T;9z58XJh4HXJ_Z+I1E3$lfRTxrg_Vt+gOiIJs9>uAD5RK~ zSeRK^S%BVUtOd$5un4jWDH=Mm2?r*!D;0_uHBMZ}q3pErplHy=4=Tnkx|JhscGpMnOVgprDf$6l~v6xt!?cc zon4bAPnkMx`iz;g7A;<~blLJ1D_3pWyk+aQ?K^hvI&}ER(PPI?oIG{u@|COCuHU$M z>*1rvPo6$|{^I4UkDoq&`TFhqkDtFl{$d11Dhy!tmmttzOe`$SEbJhEF*20{F|!~G ztD+&BkYgZwVxh2-Q6qGeQ$1KQT&+zkKm&O97Q9NYBfdBtZhCBA_w1LS}wZt`|BqgyV)hf9t6-WWg zG9x2hLjzqy;}Ao0D`R6TQ&VjN11kfA#4R5{B^g3PZhlH;S|wbAfklXsft87|m7yg> z!?N&Spc+OBWJ792W}1~#W=U~CYEf`vZb42egN2R)2noHlQwOS2gsXA^x*{Yq7vvI* zQdLE`*9oXt7_QheH!(fcCp9mw2)_x2Op00i_>zopr0D!XqK>z>% delta 845 zcmV-T1G4!RwJb#XUgRdAQ-X8PU`8+Y78D z#n{24WpFFVq&O5F^@? z5_PIHY3#O9!xR$_HnhwQabGeQ9LQw-7(j^NTQM0D5QrIv1Z9fGY($8ogHOfGSrT6$K&sp+ zOt2BjfaAP;V~o+(W#wCpqXi&TvKY`{0|8b_iu|$U$f2t1JW|!HrmjV6mYlNYoGq_2 zs+w3bwSR18ZpEsLCs)sI?q0kWE`lRWOD-0Qmr`nl(+blSqboFOz4($VU3%rqF2BlE z8`7txrY$#X-b$;TyL4>-p1Xzaz4SV0AeBZMI`XjLql`L{Yg1;LI`g#Yv&{OSMrYf; zQKJuXzotfq+9H;=o;|5SZ1%$ht>Z)&GZ5oMAb)O)01}!Pv*?r(FLH}nER0Q|3~Hnc zPNzi-1k)haNe^~Ua=+vjH2o`X{7>YqUASTzW#V9i z!tlyo*Ei|6+wflvd>i^U^lfPURm_fGyYM%6M|P%X-j<~R000SaNLh0L04^f{04^f| zc#(Y!L*oM#3?33vfvExj001FLL_t&t*JEHH75qn|@vHog*BBODX8p&(Mlth017!dJ XQ0xl&lDj@b00000NkvXXu0mjfSILbZ diff --git a/mods/ITEMS/mcl_signs/textures/_ae_.png b/mods/ITEMS/mcl_signs/textures/_ae_.png index e19fdf1c8501cd8a993f6420b6e698ddfdfd6dd8..2f6a56d00500349128f52d503072a00b0b6fca81 100644 GIT binary patch literal 1927 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz!2%>-$FVF0QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fI zOKOB?ny0500|(GJAZBD?U<9&2eq)5Pd4OytMrHp{c_WTR(nVgxdTk&}~?hnq)&msi3_ zQAW{-Wbpq0gCGacMGef1N(@YbjLd?J|Bo=p1Kr8W2nGwh=DOELf4NWZ*Q!{f5ODks=S2uSLPp{yR(6I1`$f)F$)U@=B%&g*)(z5c3%Btp; z*0%PJ&aO$5r%atTea6gLixw|gx@`H1m8&*w-m-Pu_8mKS9XfpE=&|D`PM*4S`O4L6 z*Kgds_3+W-Cr_U}fAR9w$4{TXeEs(Q$Io9Ne=!0h6$T(aL-Us)&|gd}EX*wIAb&A3 zm4iGk$ik{<$R^|%$evgztYp;4A>uS~;l_iU%Emz-M3agxa*3&!JXHM%@*3D@#CfcV zET6$WhVa)d1|DWcVB|3iGT1Zx{MV(ifN2zu*f8M#f0N<&wyp+X@>VTzjVMV;EJ?LW zE=mPbz_QTDNY~In*U&h`(A>({*viyY+W=T18YFJ{kcFZlH$NpatrD)mz#_!Rz{ zxgeKdl*(4A6;eRO!f?f&xryniKB;->B^eBcM)jAMZUssUqDqHnrT}Hlj?K9|6(}hQ hmkiEND=AMbN@YN*3OsvUfHf!sgQu&X%Q~loCIEY17`gxe delta 851 zcmV-Z1FZaq59kJv8Gi-<002Q(%q{=`0@Qj`SaechcOY`Q( z3Pth|)jZ{t4wRT<=7NqNSGig`;(A^s?UtVH;i&rs!z5^B`+xWCUtrh!0E^pxKHG!s zKrxzwi zJRZw~c4IUjqkmt!D=|T-6!xaxwz7I~JR#+!MnW}w6n$GYqdK-&L9Bu1iCP0?VyHck zos9|&>Z`3(vBb!o4J~tp?$hRCoVhM2aaI~^z|(>_*i=vxnEAFATJz>LUnR%Pjo`_I zV1yCxYWT?bC-oL+jG4MbhhIAR0?ad~v5ZM>KH&ufG=H|Hy7XN&Jmk&s0CqCdC9`9L zlctm`%{!`? zSTwa{W`Azkii<~APj2p>y=2aUD@=3B7P9A@OTnZCp$kSAc$9MTDQ7(OOsAcG=Cf3! zPmNV;s#d+`S{gTLIQ}g)3(Z?@rBg>L_1LwiZrywCWgypvj5u_pVZ%orA8Nq+zd&6C;T6eCY^li86Ohe8?DNGF^| zlNbobPOO7&?C#_~lZ~9pm_?XriTn%Y;fpa z*vtG)`r|hIZGf*pUxB^?{SSc#t_%FR3_k&Qt(CpftG;Of000SaNLh0L04^f{04^f| zc#(Y!N#g?*3?2lgRUA_Q001XRL_t&-(_>&D0RE%VxB(*;m5f9g_aB|jf1GWRb7k}Tn zrT{S`3j-sN1#&ebl+6QVGchtVFazm4AeLfe1*<6mvZbNy8X#K(s0O5$35X3DnHWI& zfWBog0m6(r~_0AQVpZsJ$(ZdjPwi*^eh;R3=A!;42-Re3>6Gbtqjbq z49$?-mIc%Wa~sGAnA^C3Y-Xq%*nn!-kl3P7HpmZ*Ob|Z`fb>Gy#^Bh4x$Xar{|^`h zyxct9fEIzA2_*jCW^iWUU}IxvW949HXXoVP;NlVC<>BV$krWc<7m<~cmy?x}kx@|5 zQ&&*ZQI?U>FxS*EFf=hSkyp30wJ@^LGd3{-8N$fP$;rdbBf-lnVWcRdXhbsje}F-d z1L&eGW=16jCP7AKLB{__803NOWMu>cpdZ12k%^gwm5rT)lZzXuV5L?6mQqXwbzED#l4gO`Kd};u4Zls%q*Q znp!5NX66=_R?aT2ZtfnQUcn)uVc`*xQOPN(Y3Ui6S;Zx#W#tu>Rn0A}ZS5VMU6UqH znL2IyjG40*Enc#8+42=DS8dw7W$U)>J9h3mboj{8W5-XNJay^vm8;jT-?(|};iJb- zo<4j2;^nK4pFV&2`tAFVpT9u>z(JGL-`{vmgtrq9L1* zV<3BCp|FxsBZr97#DyCVaw;1KeGpA5y2vG_V)9V+BgkuDpAqM=CbE16_ZY%ow-|Vs z8G(_Uw|Nl*fWRVpofXP#}#5JNMC9x#cD!C{XNCC?-BO_fy z16@Po5JPh-V`D2*Q*8qSD+7bXEgwK78A3yDeoAIqC0v7nMTn7sm5H&Hp(RAavhZJ^ z%0&ufLuy54nw3*#NpV1GQE*~zK~5@zg^mIU3B9#b2dYwpt8xLlA|x{x@z}uyo|tyFA!2 z#C{CX!|*P$Jg@Q5^J7T(meY9;<;<(;Wjp8LcFZ2*pYO>KjIOXJ9C!#xMC;3oU$a_B6@m$`#~h8 z_*!0KH)r=b$A7)Mnld7l!`al2t?UsLFN9L|w2W$a6l2@9pgOkLK&*r2h1voYVnlmV zqE3}2jomkDSYqPAhMu`0?n~xkT)1s0X;qqRz|(^`*fdZRi21P=+J4LS*T~_y6EvA% zj4(9@X0flStq0fY#?6^kJOftZollqnjs5h0EaJ{2oxNqm6-sdA?< z!A2wlj`Q-3IYwKTm2WYw7JyL6I3&If5MZUG$RA6N9ICqRBUR06>RPmB$ti2j+48!h zs);32%YSC(R;;>sa`o)y?!{~2BDlh|{hF8mFqYIduvNI5G2000SaNLh0L04^f{04^f| zc#(Y!L*oM#4hIoa428}B001FLL_t&t*JEIy4fqem3`jJJBm)Bj!+%DCD)34Cr_hZ6 X=FAHB3JTag00000NkvXXu0mjf1FeoF diff --git a/mods/ITEMS/mcl_signs/textures/_ae_lig_.png b/mods/ITEMS/mcl_signs/textures/_ae_lig_.png index 0eb5d2f5c9130d98fb878cbcdd6910fadd2570aa..8aba2a4bc37d2416c9822338b3a726faf337a0c7 100644 GIT binary patch literal 1922 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz!2%>-$FVF0QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fI8ZuQ0W=AS8Ce(@fh>@>7@=$)Ae)JinSmKd=K--4BP&=<36L!fW!C`N8bCE5y-YxC z$jHP1(g*Z0gAtG|0;DGZ@e&~B07D(1QjlsG?e6ItpkSnDXrO1oU}RuuX=Pw+Wn`#e zXkukzW@Tc5_WTR(nVgxdTk&}~?hnq)&msi3_QAW{- zWbpq0gCGacMGef1N(@YbjLd?J|Bo=p1Kr8W2nGwh= zDOELf4NWZ*Q!{f5ODks=S2uSLPp{yR(6I1`$f)F$)U@=B%&g*)(z5c3%Btp;*0%PJ z&aO$5r%atTea6gLixw|gx@`H1m8&*w-m-Pu_8mKS9XfpE=&|D`PM*4S`O4L6*Kgds z_3+W-Cr_U}fAR9w$4{TXeEs(Q$Io9Ne=!0h6$T(aL-Us)&|gd}EX*wIAb&A3m4iGk z$ik{<$R^|%$evgztYp;4A>uS~;l_iU%Emz-M3agxa*3&!JXHM%@*3D@#CfcVET6$W zhVa)d1|DWcVB|3iGT1Zx{MV(ifN2zu*f8M#f0N;K^5X_z@>VTzjVMV;EJ?LWE=mPb zz_QTDNY~In*U&h`(A>({*viyY+rYrez#wtUhb$Bgx%nxXX_asd1{NVk2397rREdy$h0@;vSk(p-Ylvz?7kXjU+m|KvO%3z_R0761QrMe%+sYb2@kA(PO-rbTpJHsQW>m)(D~L7FJW*?)OpIs` zWM`v7gZk<#RV*=bXG70i5%(!`G0t4&LV!wx4R~4*2b&6N0x{p#Ld$Pn{wg^HmWPfIE*@}xtS5I#4p1owwf-6jO$`-QcoJ)bz0@DSv3p7eO`IIxBdZyD(Kl52C z(x=9%HC3x#b1jXVG#vkynuX>qx6-L2m3r*jQ@8Ft_cD-cLq;4r(y-wpk8-0%``A8F zqZe|YQ=?675{paE?$jVQdow}vI?>4t#5fX&+kYg0gyzZYaEg&9xykIvj6lJ{sp-((QR_?xqU#bmGwoD1!$ha8Ph`sE;cB1 zFYIN0lm565e{0~&(3hbvL;r)Jf$IW)F2heDQ(u8eoLd|FKE_$Hr#DXViaOl30ymA)t^N Z0017a2LgMPK|TNg002ovPDHLkV1oJ?eQN*! diff --git a/mods/ITEMS/mcl_signs/textures/_am.png b/mods/ITEMS/mcl_signs/textures/_am.png index 76a886757c165d1fb5091735f1a04cc1c3cc23b3..15ad80d7378f49c6c702cb572579fa5525611f05 100644 GIT binary patch literal 2854 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 O00001GWRb7k}TSke;WDV+hCf-ZPF|3 Q8K{QA)78&qol`;+09L;goB#j- diff --git a/mods/ITEMS/mcl_signs/textures/_at.png b/mods/ITEMS/mcl_signs/textures/_at.png index 1c7fa502c2e6772f87161d9a3cf0a68f500c03d7..b6b1ebe3107e934f337add8d5023afd4bf11e94f 100644 GIT binary patch literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz!2%>-$FVF0QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fI)Bu8WK%P{_j5#W95AdTE~{AAm~V(XUg5_bj&a~v(`J9 zp(Ka#;I>yMe3tXdJJ<^;q%q9kep`N!&2=%K=;B#Z>wspcmbgZgq$HN4S|t~y0x1R~ z10y3{Ljzqy;}Ao0D`R6TQ&VjN11kfA#4R7PP&DM`r(~v8!ZjFJgcuoEnHXCcT0%4| T3;(qYsDZ)L)z4*}Q$iB}uJlsM delta 72 zcmdnM6g@%GiH(7Q!7==d9*|P1GWRb7k}TSkiMsjV+hCf(%zkd3|&hGpTuKt5;iboFyt I=akR{0E;M3yZ`_I delta 67 zcmZ3^6gEN9mW_ddVO2u8E|8M-ba4!+U`$rv{KKAH(hw}rR=Dzy|Eve~B0iQ343BE~ VKfdYfssk!y@O1TaS?83{1OTM}73u&0 diff --git a/mods/ITEMS/mcl_signs/textures/_b_.png b/mods/ITEMS/mcl_signs/textures/_b_.png index c89961d1b754e06dd2c50e78cae8a49a0bb6227d..034f595ce0c221977007719469af1cc104165475 100644 GIT binary patch literal 297 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TSkfEoGV+hCf+OvjS2Mk0GUwA&@cl=G+Q|%&NHklg&vbOzs zXx6_ZvgOvkItLwZt`|BqgyV)hf9t6-Y4{85kMq8XD*t z8iyE~TNxW$nVM=F7+4t?ByRbTg`y!hKP5A*60X6(BE-nR%EZ{p&=R6yS@h^T+)#2Pco&Nv(%DKHVDZ3_gkiA3Udr R-v=sU@O1TaS?83{1OO?T5_1GWRb7k}T)3g~c`)CkWsPfsld4xkx8 z%*evP2xNiW%m`)k0NG58%nZyxIuD4Y7+Jw;N`P!>D7yy8)&Qyj>16_9Lq;YBkUpSa z8H|8z5g!Am4Z~mXm?NF00kpGLjyev1|tJQODh9oDIOET8a5=hD3lHI10xf}j{+dQP_{8R?qF{Ff8+lH1_3WO zPdA`NAZG%J|F;>O893P3*x6V)*xA`RIXSp^M0k0)xp^dog!x5erR3#grDS9jRP@vp zlysD3WHih*bqowmOibj}Ep07~Z1jvxj6jAka&mI=aPvs;@=6#f$|xF<4E`Tr5aa;5 zD2tg`H|qMvW5}awt1(JSZA;@q>zSQc)8pmzcPOq?D?fx`w8f ziK&^ng{76Vi>sTvho@I?NN8AiL}XNQN@`kqMrKxVNoiSmMP*fUOKV$uM`zch$y26I zn?7UatVN5LEM2yI#mZHiHgDOwZTpU$yAB;ba`f2o6DLnyx_ss8wd*%--g@}x@sp>| zp1*kc>f@)+U%r0({^RE_kiQs#kqQG?{Ur$W7ZVE$GYdP&UyMxUK+G)2!m4P(ZXWYowZ;xuvL#)F*7#z7xMlZq~KiK&=8RQ(9@8rWyVd8~;npTRwb@YgK{9%e>h zrRfvOfM zkPWF7nQ2x|nI**msYStwxdl0?3>G>HASCqGP93O95w6Mw=!%fcT#!pJN>ycXCv%`; zVYp(?+{E-$pVYkck_-kzqx#EBw*sXFQKiE(Q-HFj@l%`hfs&GN$>997lJdl&R0gD? V+_T38SnV+|c)I$ztaD0e0swNw{3`$e delta 841 zcmV-P1GfCU4)6w$8Gi-<0063BcP#(_0@Qj`SaechcOY!RwJb#XUgY~HDyF9hqI_3OW8drUI?Y^VHwqMDf+f+L3J##fmjF43$+C*#E9mk zM4c*48oO=OFvY}!4J~s++?UM7xNzH0(yBDsfTss>uxX$s5c6X$wEdRtuaU!ZCulOk z7-7UuHGC!fo%%2|=Sp3o=y#lu7MK^WoW?X3xpjvY5P#4-G1VR4UBgS>#22uOneH$< z7FgqTo4Ayoxh0#kKu==|2Qpbd1`s0nR!oKj1Y*V^L7Ad48xi8@;8QVkmc$nbkSccy z6Kq5>;5aYe7-O_`S@{;@XaNY7j7{Qe0|8b_iu|$U$f2t1JW|!HrmjV6mYlNYoGq_2 zs+w3bwSR18ZpEsLCs)sI?q0kWE`lRWOD-0Qmr`nl(+blSqboFOz4($VU3%rqF2BlE z8`7txrY$#X-b$;TyL4>-p1Xzaz4SV0AeBZMI`XjLql`L{Yg1;LI`g#Yv&{OSMrYf; zQKJuXzotfq+9H;=o;|5SZ1%$ht>Z)&GZ5oMAb)O)01}!Pv*?r(FLH}nER0Q|3~Hnc zPNzi-1k)haNe^~Ua=+vjH2o`X{7>YqUASTzW#V9i z!tlyo*Ei|6+wflvd>i^U^lfPURm_fGyYM%h=XR>&z@^6k000JJOGiWi{{a60|De66 zlaXs4KjQ-x2`>l#%80N40013HL_t&t*JEHH7yQR5z(lk*tSXs^wwZ}6cftVxVpatN TL1b;000000NkvXXu0mjfHT;QY diff --git a/mods/ITEMS/mcl_signs/textures/_br.png b/mods/ITEMS/mcl_signs/textures/_br.png index 88b1ba4a3640c74ab3c1095800270e93febb159e..aebe3a025042a20180e8a681ad3a99042e2af2b8 100644 GIT binary patch literal 1852 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}T1jL4nObj4>K)*5= z0ofuzdIAtH0b&j?)B!35sfN++p1uJJMtX(@dKL^u28Nba2F6xKh6;uTRwm|FhGs}^ z%L3|xxea6l%xzpiHZ#->Y(O<^NNiCk8{`K@CWs#eKzgBUV{qKT-1h&*{|5{LUT&Ul zK#M@m1QP#mGdMGFu(7eTv2w7pvvYECaPf%n@^EwWND2w_i^xjJ%gIW~$SA1jsVgYy zD9gxbm}}}77@C-v$g5l0S{T{r8Jie^3}NKtKT(FjACJG$I-NKfoZ!0d!Fo zGoum%lOQ9rAmjfd4DvvCvND1J(2roi$i&RT%Er#Y$;Ay+uvGvQQp`*&%&e>|K<_fv z0_7Q41X+a?4ISBp0~6Vm3Pp?>CobercG`GQH0a_772~9$CQdFfaS2H&RW)@DO)V2s zGjj_|D`yv1H+K(Dui%i-u<(e;sN|H?wDgS3tm2Z=vhs?`s^*r~w)T$Bu1S-pOr17; z#>`oZ7B5-4Z25|nt2S-kvUS_`9Xod&I(+2lvEwIBp1O4T%GGPvZ`{1~@X_NZPoF)1 z@$%KjPoKYh{r3IG&tD*aF#;nM2C(`|5a=%^78Yg}c96dqnaY8fS&)TQ(U48ZF_1m6 zP*};Rkwe63;=+vwIhBorK8Pk2UE~r|F?p!^5#%+n&xrF_6Inikdko>PTMRtRjKIia z7G$tz`1!9(V*%4B93~h5rIoEm9yG zQY$jktei4SiUU%Mf)jHKa#9&AbQC~H=&hYPP?aKFl?%`nA(^=#mtd5tzTD0afQp6T ziam1^(^Gv?^U_N)7z~Z-FE8B+lomvl4$n*h%9_ScZPEuyO2Q?B^V3So6N^$Akcx88 T9v5J>$H3s}>gTe~DWM4fT6g@z}uyo|tyFA!2 z#C{CX!|*P$Jg@Q5^J7T(meY9;<;<(;Wjp8LcFZ2*pYO>KjIOXJ9C!#xMC;3oUA?{1&VqCawC}~xiY{1ilIM_5$6Nve-7TSKx_SeYaxf3** zV2m*1ry9Nz{!V=unscQtQS>`bNDHisS59LYi`;6V1%CuIPfT^kch~TeH}M7RVx~LH zjt$m$-6k%jXKu;nEYQ=K!huZIj{$@Tz7>lh0fCrtNl>O}%tnMbI`~wqoF(xE0;I~F z!UP+U3^>lqH|7{^T~@xuxLN>0CF79zIzWJxk|KXBIdZ7#x{p*ftEp?znkA>KIcLl3 zj;bb>On)t#nOm{y;>p#so4XgUg^S<{(~^sY;-!>Y;k3eZ#q0`=S}(rjN|#>wvdgb> z)rRzGscFm2nzzzw=Pn(`zvphDdoR5X8c3y)hK@XJ_$Z@J1GWRb7k}T$Vkt&eu$mGeTN=u)0kSoKYCw8H>I@l~7(n`fUSlugeNGH^7AR}OI;{vjop>ALU zs$oN7iz2y=kqP2Q0gzrO+ZY^GFt`1`@&5sXfR~%68_*(Jp%g%mRr3o|P#3(&iawLp0W7C}}aMMFn6;lM<8r9u&- z#)%6#l$|yn6b-ugLB%+!sELzHOk6@zN>xo=LsQGd)Xdz%(#qMz)y>_*(@(s#)lOnKGb1qam<1W^8Gioj(pbPWiid0%@c+Nb z;JmpXm?s%jOI#yLQW8s2t&)pUffTSTGcwXOG|)9P4ly*hG6ofA+6D$z1_p^+K7dLx zgofPwl+3hBxCR4@5F-OC6JskwONfSL;lDsNi4@3&)QZeBE2qqo;(*km;Kba5oKyx2 z9R&~)dTXZ+RHX=48U=cdFdq?42DMamzQn@ zN(-V&hi9e$WliI!Ht7Q;CE=36`DrEPiAAXlNJY74j|;GtV_@)f^>bP0l+XkKQy27) delta 835 zcmV-J1HAmJ4%r5f8Gi-<0063BcP#(_0@Zp{SaechcOY43yzR8$?BF-3_nHNRw*csB{mT2pn0IQK!q4; z4@%Uj(x7wIjT)wy_+&%P+@SlkxfmC23rd=W1{?77APzPS)C6X}&4t#uWsTR!F>)t( zG9ehD$A=PL8NX6)fyS7rOBDUm32A|O@yuyVW0IS9cz*!_jjgFJeOCz&c@rPNPG-7f zb}X>Q;|g&o-E&J8XMvx_6gFhCz5_rajIEdq2?)fDLxM6zV>Tk_=-^W^bC$#h2#_jw z3Il9JGT=DRvC+q9`Lgn5#?b;0Dp?F@uz>(8B}M*Na^z6ec^;{1R#VraHA_xebIz9M z8C6XznSWX~Gq+;Z#gnUNH+L^y3m3r=rX?2(#Y-u*V$h1v6}>AwYCZUnBOQ9=!wx^n zQ5({yrKT-6Yu-w$ox5~w|DL;r?!EMS(uq_$)2U}Z?ew#pbs*PT@5p^ljW)GOEG<8~Q-j&;Ed1GWRb7k}Tz(e z!3f9}0n!tIcnJ`5fT0dhDM&SpcK7rRP%zRnG|;nPFfuT-v@$TZGBQ*!G_W!;w=yz8 za$6Qq7tC!SBVcah0C;-w6WgCOz4(7K1H~v3h5b$#I zbOTxhawd@Yf1AOXfrE{WosE@)ot>SNlY@&#gqMe#n@3Vem|sLzN?uM@N=8OOMNeHp zNk>^mM#EfF$H36U#6(`*($>PrM$g#92xJH&CnqNlH;)7_uY{4JjG__A;Qs*zK@Omc zvX~i_7?=bZnFSgDA7PLOx|5X=41j(F14brh7FITP4o)s^pn|Oeppar_Vqs=wWdVAZ zu@)%Lz#_;hq-f~KCLEZ^u2d*u)Hrb=hqBYggQ7tfKd2Zd6*X~kiHS={N~x-;YiMej zn3|beSXw!|xVpJ}czOkggocGjL`Eg2q^6~3WM&nYl$MoOR8}>&w6?W(baqXeJZ0*% z=`&`|TC{k{(q+q6tX#Ee^OmjKw(r=v>(JpNM~@vpaq`rq%U7;myME*5t%r{uKY9A> z`HPpYK7RWAVP*tI z9sCwrl#5k237_JiCaE^N-~6o-29Zxv`V-J1B(zNVBu$MWoQY}uq^x+sA`b{ z*^pY1nP%mbSyCL3S`?g^Tac5=V4mdKI;Vst0Q_V7zW@LL delta 843 zcmV-R1GN0S4)F$%8Gi-<0063BcP#(_0@Zp{SaechcOY!RwJb#XUgRdAQ-X8PU`8+Y6DH z;%j+{-JIR$9Dn!fYRZUI4rft6ma=f! zEU?DwHgPFEb4xa7fu6<`4rH=^3?M}Ct(Xi62*iv-f-*&8HX_8)!KY&8NOHbFfK<6t zm|!E40mpgy#u%fm%gVPHM+-oxWNZ>&8wjvcQsj>%M-Ek8=aH&rHFYgov*eUD=WKbM zQPsqfseffNb1PO|Jh^&ybNAx4a1k6~T5_>ayp&QaoK~2w7+s-J>&2H`>C!7-cKKDV z+K@giHEp?B^Hy5z+@)jt_uMUX@1@s41F1C9(2<7?A7#{uT$?h})S0JEpJmnuH9Fh& zjT(KB`!zK>)E2R{_3TLvVzVD6XdNfIn1L840)KH^1d!0Ym_?_Qc#&JoVqt6wWl$qs za5^nwAeaWRPI|C=lKUmMpy^+6<9{L-7P|j~Tv+H1xu3axL9N&QMUf3??ZOq)C=&-8 z6oyy!y1q%j-G={a;M>r*p>IR$uVQxm+J(OXlZJMw61VuL00006VoOIv0RI600RN!9 zrva0ZYaT!20~HA`7;?geMF0Q*9Z5t%R0!8&V4xlN55*_~80`P(+L*8ygWF6B006T_ V2m26g0fztp002ovPDHLkV1lZ}h-Lr) diff --git a/mods/ITEMS/mcl_signs/textures/_c_.png b/mods/ITEMS/mcl_signs/textures/_c_.png index 1352609136cc971650a74ac57c6709f298a4cf95..bd6d69d71c0eac4ccaac0cba00b8fa6903ecdd49 100644 GIT binary patch literal 1852 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}T(0t&3 z{jq}*;=OYv6imOd>Gz1WdANU=#mc68@cvPj9$rqtw8v^9K!>}eMtG)qdTKFn0L=hm zMivG}APeMXMkt#H$Yx?>W?%-=c|a`1$O=|d0%S`=*)>4622c%1FB1?OGBPoM^a1_K zU<70Xtzwt}#7lsf0}OS5Np@EgDrInEp zlH0O?x?pYt83A(}7m&>ibpsnv4I2_$6v_tqfsqN~M*)ytDBBnucQCj8zw!S8gMgQt zryI~BkTZeA|Jw}C3><81>};$Y?Ck8EoE%&{BD_4@+&q#(!u%q#Qu1=LQZh0MDthV) zN;=9iG8*QZItGR&CMNRgmbMl~HhRV;Mj%5NIXO9bxOpUac_oY#WfYA_2LBH*2yy^j zl*P=b#K0uT$SlbC{|JLT(4DM|U;y+Z7%(z1v#_$Ub8vET0~Kr)0EHAY6ALpdD+|!O zjI}^{1{Oh9Aw@$+HsQcTcBMiQqsEB~Ih36?9uy6__(8=usi=vQOH5osQc6`#T|-mL z#MI2(!qUpw#nsK-!_zA`Bs45MA~GsDB{eNQBQvYGq_nKOqOz*FrM0cSqqA$$ zPb?HxGHT=yahkYr<3UbkKb$ z@|Xn~>=}Ok>(W@jG>V6881VnU$*?=-kqj_-s+PD$l%ynv$V{_x$}A}kNG%FZ%q_@CWw6ju03o5bcIrS?if~mfKv#rh=7L;;QL66w(zO$) zSQxI@GdD3k)h9JCy(ELd(5U|M(yc&gK~(AR%oL!kY5deCeW0WyTrxO6t)x7$D3t-J VDEI7f0akkq44$rjF6*2UngI1-`!RwJb#XUg*^%prN< z2{s}baGaNKj4|4}tbB`cv;c%k76Te=6u?SJkw2CkIaGC>N2;3D)U{~Ml2g{4v*mS0 zRTE35mVeF6typ#O4mb)4v824b8D#D8rOKtl6k7M)V!MQ$;Rg|R7=L5+05 z>9mM}U>d|a>A~(v?w8zxrhmna|A|~!=>89KVWB(Ze&+TCwO;oZMK++d3s+2|OdM=b z7+%@y`X>E$8~&?-Z$saPz74IvirMjN7ybsE|8}ZlLN2%f000JJOGiWi{{a60|De66 zlaXs4LgND!2|E_M)PENM001CKL_t&t*JEIy3iuDjC;}Ml|LEG7u$je##cbRbQ2+oO W=m-6P#y52U00001GWRb7k}TLW-G*g_)I=1?XMI zTA(}wiy*6zqM;+3a9|?4QlW@Z(iUwW$pkka<)WpdpCN3cY31zV>gMj@=@lFj8WtWA8I_!pnwFlCnN?g;T2@|BS=HRq+ScCD*)?hMl&RCE z&zL!D(c&dbmn~nha@D5ITefc7zGLUELx+zXJ$C%W$y1juU%7hi`i+~n9zJ^f&P z778mFHFAhJO`2XKzXfgFz0Zg8%C9V-ADTyViR>?)FKnhrv85!vs8t57t zhZve$85>)fnra&uSQ!{3ZutNz$q*WH^HVa@D&ZOoEJBP7tW1op3@srVmWBTURW4E> z8&WGW)2y5_ONs+hi-Hq#3vyB!EOZn=Na(GdI#87&T$KyZ6(O0qAeUg2s;n24(@vLIOPkZ#aMb9N`BF ziKdX$JeQm!N-C*v#lYiLuAX9A?NxO5^ehjt?H3G@pqJ}0pMP7wLaz4-mbUzOmIvF0 z*telK&)c9(&y2y=^KD4@lGA<;WzVbWVLSUb8n4%ST(90gCqpp0!k%#8Q%E9OpI!tj zkRlbmpk*PRl7z9YHc5INyO8Va;N3>=Vi)U{%X26~%v&M9i_w;ozK-3B(Bq2e?)mA3 zNKEmuJjQNxAAjS#c2`qIq;lAsdfUnxK@s6hvZiHJ!%s1`RST+Piw(p&Xdb97P$5RN z2PNuMY0$a)Mh#0$e6pcuZixGoxfmC2av?ya!3I1%h=WZ7HG!CKYoX=0EPst0o;yL4 z3C0LBKGg6^_?3DyG{#I_qUcwgkQP`M&z#0GCb`){3x5b`?3n6`@2cS;Z{h>k$xK(6 z9UH9ixJ(>M_uP`jS)iveg$U9k%o>uZ1^an-l)+& zwolaP9l6h`(WW+urKM+gY7m>fnV@-{=wt?BoPP+!Z4y92^JEsCQsPN&GK+Ld>7bd#@K`u;mo7_ikFR1mpz9_N)%~LpI8fD;O zgTm>Rz0Pmam;3Oq2EGk_8~Qdh|5c2R|7zhkkyv+@*jI2P00009a7bBm001r{001r{ z0g-$SMB@V$4K^*fctD~6001IML_t&t*JEIy9rzE$C;}Ml|LEG7uo#2eObk^_xXi@> Y00>kG`z6q^t^fc407*qoM6N<$f@Z;wx&QzG diff --git a/mods/ITEMS/mcl_signs/textures/_c_cedille_.png b/mods/ITEMS/mcl_signs/textures/_c_cedille_.png index 7eb654bc43566cbb63aa43d4f85a6934104635db..3dcffc8e429ed8d6c61d605018855840c47f4ffa 100644 GIT binary patch literal 1855 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}T zWic}PKf)jnbSEn#7y$ha28>M1EUawo9GqO-Km}U`Kq1A<#KO$V$^!H* zV=Yjgfklv2NYT)dO*k--U8zvSsBz*#4rQl}2StM}eo!$^Dr(~75)+q@lu}hw*U;25 zF*P%{u(Wb^admU|@bn4}2@MO6h>S{3Nli=7$jmA(DJ?6nsH|#kX>Duo=Zc#u=sIOv0DQqe^&F%^@CsvkjK1N)3Pk2R6yGq}eP{<_7$!^{Yb zJZ3=#dxoF?x-=Frjp8922K@hTGDL;(O97LoYKdz^NlIc#s#S7PDv$z}WkyE2h6cKZ z#vz90R>sD_;!NAXz{B^eBcM)jAMZUssUqDqHnrT}G4$Ld@GCztd>jNndMsD)cxbx{v(y zLL{d6cs*)2yMNC)uGQ6)p;QigQEy8*TX2M&NzQH=#qd+K?JNbwvBU;q9W)P=7N`(I z?MaC`Rhl%;x>3Uv6Aw1j%niCPn~QPbCKmz}nry(+gE-hUP!pK>HWxa_E$4WR93yvv zCli7ZdVDD1mGLX(7HH0ux{v02MCZV zcM211L^9wwud&g`==5df%Z#H1AXKs#&|m`rR!WNevE<01s_Q&b)vTtjMQfIvvgVvE zuQRHeSbs9LY-Vo7s*5LA&u;EsycRBkBTP#!7K)crYQ>-xp(}bT@5p^ljW)GKES-LKrv|gxTL@ami7sX!#(#-G+!g^OG%se+DJ5Ry7PD9wn?f1X zNEe(=ix>!|L9CN*?C#_~~(#UzFdcY4e%Z4JJ5Ha^{--f{8tOV0g+aBmetjAr~m)}32;bRa{vG?BLDy{ zBawR!NaF()4L1ntXQiY7001UQL_t&t*JEIy3iuDjC;}Ml|LEG7u$je##cbRbVW?ul cWf=wl0CDFD{f=(Z!2kdN07*qoM6N<$g8mDPpa1{> diff --git a/mods/ITEMS/mcl_signs/textures/_ca.png b/mods/ITEMS/mcl_signs/textures/_ca.png index 79fa4345fb62cead4fe35a77fa465bd899e845ef..799333fcc07504f6cb080bd89b63c0cf0f1cc180 100644 GIT binary patch literal 287 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TSkh-UfV+hCfcptAuMXum~|Sure{WGPHzfSQh>Z1GWRb7k}TldiK>C0_V=w};MS%1KAYKB*9AF4?G)Og! zcK7rRP%zRnG|;nPFfuT-v@$TZGBQ*!G_f)@u`)J8a$6QiC)8~qBVcah0>&?1mCfyDpY49*N3Y;5dotQ_p@ z?3|n&Ts$JYJlxzol0w4#BC=BQaIzCa$}%z<=9)SNh9)K^^6Hkh7DhID z#wJD}Ll`+ZIeEBwBzSoxj1*-QjYtOn4=@OF09};D%&5e`B*@4t$oT&VgFMiktc+j) z^g9?ZGBLBTvaxe;a&ZF{Y!v{76f+YGGb<|#(7TMaKzRlhK~^C}Lq|5@z(jVXLJ_0J zi3>TDoi-j64Z8S2#W<;`iIYoATtZSxRZU$(Q_IBE%-q7#%Gt%$&E3P(D>x)HEIcAI zDmf)JEj=SMtGJ}Jth}PKs=1}Lt-YhOYtrN?Q>RUzF>}_U#Y>hhTfSoDs!f}>Y~8kf z$Ie}c4j(ys?D&b3r!HN-a`oEv8#iw~eDwIq(`V0LynOZX)8{W=zkUDl^B2fpjKD~R z0j&NK1p14Kg@u`g9po=Yrg9)=7Gz;nG-MNU3}jC%6jm~7CkWnhrF24(@vLIOPkZ#aMb9N`BF ziKdX$JeQm!N-C*v#lYiLuAX9A?NxO5^ehjt?H3G@pqJ}0pMP7wLaz4-mbUzOmIvF0 z*telK&)c9(&y2y=^KD4@lGA<;WzVbWVLSUb8n4%ST(90gCqpp0!k%#8Q%E9OpI!tj zkRlbmpk*PRl7z9YRwTcUUC8xy@NT1bv5R%fG!N7ks1PIC zgA#SBH0WG?qlP6WKH1PSH^hC)T#O4hxe%bzU;~~W#KES4nn29Awb1fgmcK?0&z+#j z1Y?95A8L3d{7StU8e^s|QS>WLNDHisXHH`oliX~f1%CuIc1(4}ch&HaH}L`NWTq?3 zjt$m$TqX{sdv3|%EYQ=K!iG%Nw*iC*z7>lh0fCrtNl>O}%tnMbI`~wqoF(xA0;I~F z!T=lOJ>WP`-KIcLlB zj;bb>On)t#nOm{y;>p#so4XgUg^S<{(~^sY;-!>Y;k3eZ#q0`=S`R+tNQWNzu)~jX z)Q0qFscFm2nzzzw=Pn(`zvphDdoR77bRw0`bn2N;JN+zY9musIBMlvS*zi$Cy-}lm zY@evnJ93{>qfKoROH0r0)F3u{GePq@(a8+NIDZj{+a!R5=E*ENrNoomWEKnKP$+{M z>4ej15(B|>66>HFyF0m0xdlys#f|?&E=+X)gIt*CHo1@7UQp|GeNkiqnx}BaG|Irm z28Gird!65;FZbbJ4SXB=HuP<1{;L=r|JA~8n!9(Gw}r@R00009a7bBm001r{001r{ z0g-$SHsb>o4K^gfr1%B^000z8L_t&t*JEH9Cg4Ae!Gtb=6952J`vL)b%H47R0000< KMNUMnLSTY^mW8DN diff --git a/mods/ITEMS/mcl_signs/textures/_cent.png b/mods/ITEMS/mcl_signs/textures/_cent.png index ecdb1f1d1473db7942c44e380f44c5aa4c03ce84..ac2265b0522ac42e95f9ed730dc000332f51ee81 100644 GIT binary patch literal 1855 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}Tm6(2=WO?HH>!m^bJrj(la#BvtTeXFtoHXFt#!>R4_EQGBpGu zB)4UObVA(*G6Lo{E+Cs3>IOET8a5=hD3aS4nIL`?0O^IYjlt0ebKCzL{~s_2c)5AH z0WAVK6G;5O&EU+y!N$hU#>&CY&d$ln!NnuO%frphBPk@zFCr@?FDEM{Bcq_Ar>>x+ zqbwt%VXmoTU}$1uBCl>~Yhh%gXKZ2wGK7(nlaq&=M}n7E!bnj@(THU5{{Vv^2hc@X z%#2D5OoEKef{g!L#9fXP#}#5JNMC9x#cD!C{XNCC?-BO_fy16@Po z5JPh-V_CkWnhrFF~@HpsZ>9)FyqPq$FH2I6tkVJh3R10jVhW T>~R6sd<+bpu6{1-oD!M<24(@vLIOPkZ#aMb9N`BF ziKdX$JeQm!N-C*v#lYiLuAX9A?NxO5^ehjt?H3G@pqJ}0pMP7wLaz4-mbUzOmIvF0 z*telK&)c9(&y2y=^KD4@lGA<;WzVbWVLSUb8n4%ST(90gCqpp0!k%#8Q%E9OpI!tj zkRlbmpk*PRk~voNt9>22kn8K<-A3UZXi4R~WGhJbJ zY_P`TGI1!~b4wOyfu6<`He|BC4Io7Dtyl~R2*iv_f-*&8HX_8)!KY&7EQt>gAXV-Z z2H1#Xz;T|wF~?}>vhpRy)dCPISqx}!fB-8cMgCZF4=4n6W=hacsr z4e8TT)0UexZ>81FT{@0`&)q`zUV1(0L@J%>)H9!U`dQ98kZVIm8anc@;iHUtqelDK zK2f807%)a5TJ00001GWRb7k}T>}?kIfnpU?vfhenda%K#lQhH z1c(_~7#M*pkfRx)Y#tz+iIJIs8A#^=u@oaKSWO9#Ee&PY0NENqH6XoAKy1j!!~oI< z^elrBkSzkFCjjvhAm#u=9iUQ>Y8dVA=^LP6q-SWLXTe}(U}$M&U~FY%s9u)IvvcDq>wPbh^&;noUD|LjDm`u zx`L99vW$#|xu%YRp^1r!yt<{Wg^`V(v567L5JpZ;P9AO^30__aBSjfSBa*@Y0}O&3 zKo?~(Gb%AK2{JMZGX6ipAP;mWDH{Rjq(Ow25-Z0sDIT--nfTLnNN#mvOQ%*x6F z^e$s9P@aKBkX1<0(2-3zFp*uUP{gQl;zAB(r;P_igD!qhF-|IK;^Yz&myncFRa4i{ z)G{$OGqmaka3YSZQ|TeofBv2)jxYE#}NLy#lXYN z2#h>tK?ZwgwG9lc3=9&td;pbX2o1UUDVb@Na190)Ax6N$&)CY)5~5*Q_%Bf1 zA_cM`wIVak$|%CzZiMM*)O{-rA`HRVl(%xd2@el9>x~2}Y^9vh*3S z++YxfEB4GyOi%Sm%}X!IU@$bQzr1uSP+AaGIy^H4C~F!&wMic+DG8Sh&QB{TPb^Ah XKq|^Tdt89^9s`4?tDnm{r-UW|pV|Nj delta 842 zcmV-Q1GW6U4)6w$8Gi-<0063BcP#(_0@Zp{SaechcOY@z}uyo|tyFA!2 z#C{CX!|*P$Jg@Q5^J7T(meY9;<;<(;Wjp8LcFZ2*pYO>KjIOXJ9C!#xMC;3oUZ1HDyF9hqI|4TiGKhUI?Y^X&KeuxX$s5c6X#wEdRtuaU!ZCulOk z7-7awHGC!fo%%2|=Sp3o=y#lu7FZXroW?R1xz$1o2!CjvnCg!2uHhwb;tSZtOm~*^%prN< z2{s}baGaNK%rV-!tbB`cwXCBd8HdEz0RpU)6!~MxkwaD2eWa>cO;v`dhsP!y7bDIU4E6T zHl$BWOivcj-9(J$DP;d+Bx1Kq`$ibmU>fM;Ub@*QU%gb>?Z)XPNaujn1)s zqedU(eoc)IwM8s#J$q7v*zAW1TGxp#W+29iK!4m80VFgpX3;4nUgQ?DSQv*w8PrG@ zoKA}v2&O@-lOF7zr*p>IR$t73M1+J(OXueo-tg=G$i00006VoOIv0RI600RN!9 zrva0ZYaTx10~HA`EhKS4W&i*H97#k$R0!8&U?3O#$0@*sO*s=uW>LXRf@U)S0Af}J U1VQ11?*IS*07*qoM6N<$f=KU)^Z)<= diff --git a/mods/ITEMS/mcl_signs/textures/_cm.png b/mods/ITEMS/mcl_signs/textures/_cm.png index 6b2b10a17eb252b67aeb35b9e152145475c6fa23..6a6a8bc5ae289a08d9430b24b1aa949d4adaf526 100644 GIT binary patch literal 1795 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}T`sfGcI01HI`f#8B3s$oTrOp2*>s0 zKj#^keR!@U{yVPpYkuRzMj#Meoy+k0GK!~oLQ0>nl@wg`}( z0K`jxm;($!E(fWG(e9qU0SZQXh6Z{T3`PcqmR1JFRz`*jh6Yw9=2oWWNN&pl>4drs zWCYA@TtGH6)D3JvHEc+1Q6#r9GC}+(0MZL(8-t?&=C=Pg{y$(4@N)BX16l-fCXo1l zo57iZgN==yjg^C)ot=}DgNsLmmxr61M^Z?bUqn_)UQSj@Mn*wJPhCMtM_EQj!(3Cx zz|h3RL|)y}*22g}&)CEWWC$ZCCnpa#j|4BTgps0*q7lj9{{aR;4xo#&m>HEAm;@P_ z1sVSzVUP#9la&z+fPM!9MkZz!RyKAHPA+bsf~^9ekYZ+HVP<7z0eY9Q7AViaBFHMF zXz0i$9GJ+iR48K9IB_9|veU+cqCpows2C>|HF0u@iAzXIsj8`KXlj|5nweWzS~We&gn?hmRgVdHU@6i$mSee*OaaixC*9Fo4xxf#!_R+R z8Vi_4@sJGz{{J@_63>2q227r+C9V-ADTyViR>?)FKnhrv85!vs8t57thZve$85>)f znra&uSQ!{3ZutNz$q*WH^HVa@D&ZOoEJBQcg`csNp(RAavhZJ^8bS(WLuy54nw3*# zNpV1GQE*~zK~5@zg^mIU3B9#b2dYwpt8xLlA|x{xIt27{qd{pF=wfzpDg(&3pYKv~oHsZIJoNlCb5aDG}zd16s215#1$+2i61RK(!v L>gTe~DWM4f@Cxt~ delta 808 zcmV+@1K0e64(A4tBYy(cdQ@0+Qek%>aB^>EX>4U6ba`-PAZ2)IW&i+q+U=HYa@-&c zhW~Sl9sx-RiQ`}}Grd8N-xo~wBiUxAX@3T00n0)HJpykyfBhWc2MUR%kkmYvoFhsq zsc^-><5jMnVp{E0bocZu53%hR43VIh>oK2Oze29}36{3}cz>1$+lJV;p*PRlpiIw< z!PfI_NcfV|ehy{NtLb4o`!^b|*Lqy9-ajWpFuKB?aNtu&B3hqb1S^mt6}_NkA)b6i4n>H0E97@E+H%s@v0D*(ToK(pKfMr%DL$6R*p2RE zoY(GZ%7|1Bdw)}JTUjG0BAiLqw2W%_DaN*HL3M1gfmjF41GNPz#E9mgM4c)PI#=JQ zVTp-PHuTI5ai205j4c2&ECJv>0 zZpq>-(9@X0hD_GC0fY#?6^kJOftYbgP^M_iMua#z_*AT%CGi0Qq{^Mb02`4EIL^~I z<`^wqR=&izS^z>NX}bF{VZo4$h9FO4IO#d@KHv+QKNlqpQzD0a-UP9 zO>GiOOV94qAU1n5LGwD%$qd9e5s2F)fQ07BEM+>S#FN})77OE0D1#d5gwtsf1Hp6> z>!2IEJGoD}1xi^U^lfPVs~8>s)xvM1{&$$=rojx6F)TRa0~HA`IX1GWRb7k}TH=a$76wKj3*<^hD4Pe!W@2P! zU=i zKs9VgY*8e)F)~5?C;-w6WgCNI3+A@}H~v3h5b$#IbOTxhawd@Yf1AOXfrE{WosE@) zot>SNlY@&#gqMe#n@3Vem|sLzN?uM@N=8OOMNeHpNk>^mM#EfF$H36U#6(`*($>Pr zM$g#92xJH&CnqNlH;)7_uY{4JjG__A;Qs*zK@OmcvX~i_7?=bZnFSgDA7PLOx|5X= z41j(I14brh7FITP4o)s^pn|Oeppar_Vqs=wWdVAZu@)%Lz#_;hq-f~KCLEZ^u2d*u z)Hrb=hqBYggQ7tfKd2Zd6*X~kiHS={N~x-;YiMejn3|beSXw!|xVpJ}czOkggocGj zL`Eg2q^6~3WM&nYl$MoOR8}>&w6?W(baqXeJZ0*%=`&`|TC{k{(q+q6tX#Ee^OmjK zw(r=v>(JpNM~@vpaq`rq%U7;myME*5t%r{uKY9A>`HPpYK7RWAVP*tI9!?N&SpvpuFWJ792W}1~#W=U~CYEf`vZb42e zgN2R)2noHlQwOS2gsXA^x*{Yq7vvI*QkADT={r!dFkG=`Zen_>PikIzNd|+VQT^qm zTY=JosM6t?DL`4%_^D0$KuJlsWN?03NqJ&XDg#nc?%Cr4tmqgRJYD@<);T3K0RUS& B^)Ubd delta 835 zcmV-J1HAmM4(SGv8Gi-<0063BcP#(_0@iv|SaechcOYxG>|~}( zX2$|+JgyLj(ml6iaTfS#OkqPN>pK7>!q|$*kbpqUI3y@jG-e}$jt)K*GiOPBfB>m- zr!c@qBm<7~92A4rl7FdXGjl6eT|BvZc60aQwQvy}VOnyrP`s2 zy#l9`k!v0{;{z25Fa|}JwzvQQ02E0?K~xCWV_={f_zz<+4Q?~x000m50s|w8amN4v N002ovPDHLkV1n1Xf|URO diff --git a/mods/ITEMS/mcl_signs/textures/_copyright.png b/mods/ITEMS/mcl_signs/textures/_copyright.png index 7cfdf217ea3ef1e22be1112389d363244d1633a7..1f0e3c9343b507e308823ba889ff2511f8a9d8a1 100644 GIT binary patch literal 1861 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 WsVMjCaRJtR3=E#GelF{r5}E)G;QdJe delta 839 zcmV-N1GxOZ4(@z}uyo|tyFA!2 z#C{CX!|*P$Jg@Q5^J7T(meY9;<;<(;Wjp8LcFZ2*pYO>KjIOXJ9C!#xMC;3oUI0%HeG4$5!?TiWfpDds;>{Jc_aHT2LKZY#`P_^FnQb3NfNN zDN(0Nlg92FH7qglU_;N`5cef>F)rLTl(Z^MHsI+2ELa+-3B>$Z3vIt;`)lOz+zFaY zFa~lz*YK6_ck08?oGW#SqTg{sT3}tgvIfgotUAb+5FVyZj7yM~v%i7#LmGu>f! zY_P`bHgPFEb4xa7fu6<`4rH=^3?M}Ctyl~R2*iv_f-*&8HX_8)!KY&7EQv1=AXV-Z zCfJB%z;Rx_F~?}@vhpp))dCPISqx}!fB-8cMgCZF81FT{@0`&)q`zUV0rgkV+#B9eLRBQAVA}wJ9@Aoq5{yS!R7uqjPNE zsL=qQ@COpW#VFk z!tlyo*MHJ)_u;=9_%`%y=-bfxs+b+0cHwV;z;>roQM2{{000JJOGiWi{{a60|De66 zlaXs4J>vrv2`~($LSLo;000|FL_t&t*JEHH75pbC!Gukgi7c}zF!Mh_+W=}#1q9e{ R52*kE002ovPDHLkV1nP5gV+E7 diff --git a/mods/ITEMS/mcl_signs/textures/_currency.png b/mods/ITEMS/mcl_signs/textures/_currency.png index 1264c89455a54773697b10452fc7b9cdeed0c288..45806c12b977d752c5fc3fc3cd2d30149d815b35 100644 GIT binary patch literal 1855 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}T zK<_db0ofuzdIAtH0b&j?1o;G{8b-T&`UWT%=@}a6SuhwG7+P8x7+V<`Di|7DnHpP} zSR%PC3#1e3Hjoi8w{Zd4%uqM50oAY}u|<*G#>fQmqX0-Rlx+--KA7A7-}wK4LBPw+ z(+y}5$eBRm|7`|m1`akhb~aWHc6N47P7W>}5ndi{ZXQV?VSW)=DS0_rDH$0B6+LwY zB^_lM84Yty9RouX6BBuLOIr&g8$DwaBak7CoSd9I+&mJzyb?x=GKxkdgZ~E@1UY~% z%3@|zVqg+vWEN!ne}q9E=uTEfFaY`;3>cZ1Sy&0Dr^+rDGxu0w~996fgY#K}{aE?>EN?fQ+Iw;n!v{N(Ag z=PzEq`uOSdm#^Qx|M>X}8f2KE_o9%~}YXK;@p{B?_ghnW!= zdCYrRfoc~i zkPWF7nQ2x|nI**msYStwxdl0?3>G>HASCqGP93O95w6Mw=!%fcT#!pJN>yb|K0lyh zVYp(?+{E-$pVYkck_-kzqx#EBw*sXFQKiE(Q-HFj@l%`hfs&GN$>997lJdl&R0gD? V+_T38So1M3c)I$ztaD0e0stH|`q%&f delta 844 zcmV-S1GD_U4&nxo8Gi-<0063BcP#(_0@Zp{SaechcOY24(@vLIOPkZ#aMb9N`BF ziKdX$JeQm!N-C*v#lYiLuAX9A?NxO5^ehjt?H3G@pqJ}0pMP7wLaz4-mbUzOmIvF0 z*telK&)c9(&y2y=^KD4@lGA<;WzVbWVLSUb8n4%ST(90gCqpp0!k%#8Q%E9OpI!tj zkRlbmpk*PRk~!AZCMmCD7jk_ayxZtq>|)(=c@9O0c`M|1G1_v{*Rfj>dR!6RJwLq= zi77so$JmYTV}G32?rO@2R1SMnZ(CU-C?cFm*0hXj_$kJ=YC&~uv4L0z%>%UsD#VEP zphTT24LVofs9}kTPd4<-4RN0`7vsWhK}oaHU;~~W#KES4nn29Awb1fgmcK?0&z+#j z1Y?95A8L3d{7StU8e^s|QS>WLNDHisXHH`oliX~f1%CuIc1(4}ch&HaH}L`NWTq?3 zjt$m$TqX{sdv3|%EYQ=K!iG%Nw*iC*z7>lh0fCrtNl>O}%tnMbI`~wqoF(xA0;I~F z!T=kQ3^>lyH|7{ET~@xtxLN>0C5r(K4iI3aq{tsjjvT5w?;};sYU*0FX2~gQ&e`(3 zqpFD|Q-8~5=2on_cyjgZ=I+I7;Uc)gwB%x;cqye;IIS>UF}p&e)`Jf@(xFE_?C_%; zwIO|4YT9zM=B>2axl70K@3~v(-b=41ok*oKoqFcePCv_82Xbx5NJB>+Hhh#(Z`5cX z+b3%Dj@;+eXj7ZS($cd#HHgjLOwhbebTR`mPJaaAHVGi1c`}PmDe)vXnZ?356w07R zI^lGh#6U2e#5(B4?oRGgZb8#uapOOc3lrV{AQvXOP3|MN7u0%PUldt@<|&*pjWTet zLE-euUgtOI%YFD)1K)ogE00001GWRb7k}TSkddd0V+hCf+Ov*a2OI>L4jMiAA8*#4s23UG-@9eTEt|TC zSe`vExTa?I-{i5%Gnvl)fwAi#r*K|CODj;fYKdz^NlIc#s#S7PDv)9@GB7gIH8jvQ zG!8K|w=y=iGBwpUFt9Q(NZj%v3q?b2eoAIqC0v7nMTn7sm5H&Hp(RAavhZIZ&og+s L`njxgN@xNAR_;<4 delta 67 zcmZ3*6gEN9mW_ddVO2u8E|8M-ba4!+U`$rv{?nf1!zseYlYC;5YKMXFxn(>I41E{) VKA9WYJOL_X@O1TaS?83{1OQ?f6Hx#F diff --git a/mods/ITEMS/mcl_signs/textures/_d_.png b/mods/ITEMS/mcl_signs/textures/_d_.png index 8803ea0368ee7ca333d12de4192f5e3f28dd02eb..da46423c93d9559dc8ed9c506945089c9644b918 100644 GIT binary patch literal 291 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TSkhZ6bV+hCf{$h%6%ZDk10;}A+)cq|mCO|`@|q9i4;B-JXpC>2OC7#SED=^7g78XAWfnp+tg zTbY__8yHv_7$k1_kcFZlH$NpatrD)mz#_!Rz{h^T+)#2WN^|Ytsy|Kt6_pbNN4RsHi#u PRKnot>gTe~DWM4f6weaY diff --git a/mods/ITEMS/mcl_signs/textures/_d_dash.png b/mods/ITEMS/mcl_signs/textures/_d_dash.png index 73f5a1246c1951aefe727c9a3aa4622c92ca2390..3f9b1e460b5606888c917ce7ca23372b207f43ff 100644 GIT binary patch literal 1862 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}Tb9heI z|9CTJ&7=jBMJ+Q^)(J2wGI=cEyD_6IygJzXdFl3!@DsluwM*xH<>l|tD31hs!6h}q zGtJXei-7}Z8W1zGFfamHAlEZO**rit6C*PNGmy>$Vkt&eu$mGeTN=u)0kSoKYCw9K zfY^|ci2FlDNYBtf&w|0oz|hjlz}U*j zP{GjD%D}?P*bK>SSwLMdw}Fg+xs40RW`??f4XB0U_b4?usLlYAdd38%$3nLpnV-q8gA&i`yoIKn-61=<;Mv5|u zMkIs(2N(o7fG)~nW>jKe5@ci+Wc+`GK_2K%Rz@%Y`VkBmnV4Bv+1NQaxwwG}whDkk zikXRpnU$3V=v~HIpgaSMAghp~p(C4cU?RIxp@>oA#DyHnP8$!323`E1Vw_ae#K|Ql zE+HwUs-~`?sbyknW^Q3==I-I?6&w;879J59m7J2AmY$KBRa{b9R$ftA)!fqB z*51+CHEHscsne#9glAUcUPH>GPMb-@gC&`3vMPMqs4E09Jnq0{z9r!otkL4)PZxQ#lYb z3$m~(8nOvF2C^p>3M&~ka)>xhT)6Qdr?PR-2hpUWi(FzVCJ$9Vg1iRy8F3zKBFkrR zk0JbZi-Cuk5g2*Qf(-TyKmT=UEMOYNLpBWf|KDUt-|Z6uOrEMGt`Q|Ei6yC4$wjF^ z3RspI8R;4t=o%V_7@Aud8(W#0Y8x0>85ksP`2Z@(5E^pxQ!>*k;TjAqLW~ToOpL7z zEg>3~h5rIoGEyKLQY$jktei4SiUU%Mf)jHKa#9&AbQC~H=&hYPP?aKFl?%`nA(^=# zmtd5t4bOH20~HIy6?^6;rl@z}uyo|tyFA!2 z#C{CX!|*P$Jg@Q5^J7T(meY9;<;<(;Wjp8LcFZ2*pYO>KjIOXJ9C!#xMC;3oU$a_B6@m$`#~h8 z_*!0KH)r=b$A7)Mnld7l!`al2t?UsLFN9L|w2W$a6l2@9pgOkLK&*r2h1voYVnlmV zqE3}2jomkDSYqPAhMu`0?n~xkT)1s0X;qqRz|#X*uryE;i21P=+J4LS*T~_y6EvA% zj4(9@X0flStq0fY#?6^kJOftZollqnjs5h0EaJ{2oxNqm6-sdA?< z!3KE`IL^yA<``{VR=&l!S^z>NivbM|5MZUG$RA6N9ICqRBUR06>RPmB$ti2j+48!h zs);32%YSC(R;;>sa`o)y?!{~2BDlh|{hF8mF`qjs+Kv2<|&000SaNLh0L04^f{04^f| zc#(Y!P2&R<4hSTICtV@{001jVL_t&t*JEJ70sccV0}_oQiB;e~E~6M&h%xIw0|NsC h6E-s#@mWA7000%g3jMN(12+Hw002ovPDHLkV1iD5jmZE2 diff --git a/mods/ITEMS/mcl_signs/textures/_d_dash_.png b/mods/ITEMS/mcl_signs/textures/_d_dash_.png index e9c9e69c7071cc30dde88764e54c8b91032ae2a1..57e424f37adbe89ad5c7f8b63985ac1b488ecbf1 100644 GIT binary patch literal 1856 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TClMHYsoMtfeBxCCjvNImW5Ea0*J=JzDV%Mn~c?;;}HfsS`cjqptK^weVD z0Gb2Dj4TX{Ko-c|j8HZYkj=!%%)kt!^MF{2krk|_1jv?#vTJ~B4WJs3UM3(mWMpCh z=>z(g!3f9}0n!tIcnJ`5fT0dhDM&SpcK7rRP%zRnG|;nPFfuT-v@$TZGBQ*!G_^9Y zurjeka$6Qq7tC!SBVcah0C;-w6WgCOz59YT2H~v3h z5b$#IbOTxhawd@Yf1AOXfrE{WosE@)ot>SNlY@&#gqMe#n@3Vem|sLzN?uM@N=8OO zMNeHpNk>^mM#EfF$H36U#6(`*($>PrM$g#92xJH&CnqNlH;)7_uY{4JjG__A;Qs*z zK@OmcvX~i_7?=bZnFSgDA7PLOx|5X=41j(F14brh7FITP4o)s^pn|Oeppar_Vqs=w zWdVAZu@)%Lz#_;hq-f~KCLEZ^u2d*u)Hrb=hqBYggQ7tfKd2Zd6*X~kiHS={N~x-; zYiMejn3|beSXw!|xVpJ}czOkggocGjL`Eg2q^6~3WM&nYl$MoOR8}>&w6?W(baqXe zJZ0*%=`&`|TC{k{(q+q6tX#Ee^OmjKw(r=v>(JpNM~@vpaq`rq%U7;myME*5t%r{u zKY9A>`HPpYK7RWA zVP*tI9sCwrl#5k237_JiCaE^N-~6o-29Zxv`V-J1B(zN11l3_D?>|&hGpTu zK-G&B$cEI4%rq;f%#z}O)S}?T+=84`1`8bp5E6Q8rw&x52v_9-bVW#JF32SqrE0u{ zF{q>$hAZ~WO-xVqNzF?y$zU)vs=vH+D^OYxRXRK~1t@D8Keb68C@Be-49-t0DNig) YWk4#*J$qb$RUZR`r>mdKI;Vst06EtDQ~&?~ delta 851 zcmV-Z1FZbO4(JAu8Gi-<0063BcP#(_0@Qj`SaechcOY@z}uyo|tyFA!2 z#C{CX!|*P$Jg@Q5^J7T(meY9;<;<(;Wjp8LcFZ2*pYO>KjIOXJ9C!#xMC;3oUZ1HDyF9hqI|4TiGKhUI?Y^X&KeNx5c6X#wEdRtuaU!ZCulOk z7-7awHGC!fo%%2|=Sp3o=y#lu7FZXroW?R1xz$1o2!CjvnCg!2uHhwb;tSZtOm~*^%prmWn=;eXnWs&kW!48ZI>+{n z8hw!aH8nca7O}MT>`4t`vmYjCT_?Jjffy$OaerF`kkGuCMW>W_kz34SVH^r&P$OM% zIxS)#m0fc;g)62}CN4H8 z46p2U{U`l)AO5R>Z$saPz74IfirMjj75)b3Id-xK<}wHX000SaNLh0L04^f{04^f| zc#(Y!N#g?*4hS-K^XPK`001XRL_t&t*JEIy2rx1*F#N|N#=w9k@t+Bsb|xfM=*FOG d$7>Op007`-2muV8vfKaw002ovPDHLkV1np;iM{{; diff --git a/mods/ITEMS/mcl_signs/textures/_degree.png b/mods/ITEMS/mcl_signs/textures/_degree.png index 64a7ee2b13725713bc529b63a0b164351a484132..95b6c0800fdb38f280982d6e729e2364a6fb1bff 100644 GIT binary patch literal 1853 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}T9g%JU})RBQpatkj?{QDMnVXni3#e8p^H#vNeEeKzc#y3>ldiK>C25 zWiSG=MS%1KAYKB*9AF6Y2S_!HcK7rRP%zRnG|;nPFfuT-v@$TZGBQ*!G_f+aure`5 za$6QiC)8~qBVcah0> z&?1mCfyDpY49*N3Y;5dotQ_p@?3|n&Ts$JYJlxzol0w4#BC=BQaIzCa z$}%z<=9)SNh9)K^^6Hkh7DhID#wJD}Ll`+ZIeEBwBzSoxj1*-QjYtOn4=@OF09};D z%&5e`B*@4t$oT&VgFMiktc+j)^g9?ZGBLBTvaxe;a&ZF{Y!v{76f+YGGb<|#(7TMa zKzRlhK~^C}Lq|5@z(jVXLJ_0Ji3>TDoi-j64Z8S2#W<;`iIYoATtZSxRZU$(Q_IBE z%-q7#%Gt%$&E3P(D>x)HEIcAIDmf)JEj=SMtGJ}Jth}PKs=1}Lt-YhOYtrN?Q>RUz zF>}_U#Y>hhTfSoDs!f}>Y~8kf$Ie}c4j(ys?D&b3r!HN-a`oEv8#iw~eDwIq(`V0L zynOZX)8{W=zkUDl^B2fpjKD~R0j&NK1p14Kg@u`g9po=Yrg9)=7Gz;nG-MNU3}jC% z6jm~7CkWnhrF8U=cdFdq?42DMamzQn@N(-V&hi9e$WliI!Ht7Q;CE=36`DrEPiAAXlNJY74 Tj|;HgV_@)f^>bP0l+XkK^xyoF delta 836 zcmV-K1H1ga4%-Hh8Gi-<0063BcP#(_0@iv|SaechcOY}FHuDZBYi34g`}qzeeA#K=hqA}j^st@%n~l%MdR&j*-zS3@T@g<>@DP%StFKuE zE07`;t>DT+yetWQ5yv%&yw)z{`dYkO@11tBZo5275n|pB`JG1FPWoEAQ=!Kd(S7Ep z2iQW2kL6Lj*?)b`aqX_A45f0|n|j;I*@GkGOqUuN)$mjF?W_gWvBd^r9W)Qr7N`(I z?MaC`Rhl%;wo$_p6Aw1D%niCPn~QPbCKm!!nry(+16Z&$P!pK>wiY_)E$4iV95Z)< zCli7ZMtrE@mGLX}7HH0uxs##54i`FbTWz9KT zUT0J_v43Q0+05LERTodLp55HNcr9E6N0^peEEF%L)QU+fLRXBg@Tm3RLymOlkqV(Ij=J2jZi-a^niPINH?F@H`3;1GWRb7k}T60cTe^{1azfKYJ_K+r>7PJ2T%hLGqNx+0$CsjGD6urKsFO2GXpb_ z&I4j8Mpm$z5+GX|%B}&jHGpbBdO_+88JQSB`hXr|Faokgfb;|)UIN4%UGE^`$u`)KdGBHMSTNX$s)NLRmU~c0AvYDZ7U<0aQ zLt={}xs8zt;zt3HUMSlb98oa0{lD@50fT^-o2MJlB9JqI#Q)n2&I}xEZ0u~T9PI4u zoSYn7JR-b2+}u2pLc;tavQqMLvQjcK3MzW)3Q9W4GBO(GnmPuCCMG8G>Xx<^MmBoJ zCPpAb7&$pPdANBbczGp^6lD~RNCy88FbHx0U6jSlsKme|$jB_n`2PrlJkXu2j9>ut zI~XuBF|)9;v2$>8aRU`>6##`4GZPClD=Q1oyNtC!c?K3iRv|@0M>gTWM0TY@5u?V5 z3ptdXHXalWy7)oGIH{I3zSIJR&kG zIVCkMJtH%#xTLhKyrQzIxuvzOy`!^h(&Q;qr%j(RbJn88OO`HMzGCI7O`ErD-L`$l z&RvHNA31vL_=%IJE?vHI_1g6tH*YWKS#c@69{;yl(wme1fGL-^|!0}nGJF!GoM8SEK;{_E0Mz%+`7Y#8wWzsaz( zg5xSMd8(GUMwFx^mZVxG7o`FzU|D8lq-$uPYiJx|Xl`X}Y-MVyZD3$!V34@w1E?fJ zXvob^$xN$+YcQ|~F){#_d{%~*5Dm-1e}U=|DUc1R6`5&PPMIae0jWj7iMa(isSFl6 z3Lqr()=nL$N)fKg1?Y;9%v_L5FiKUn%H5hk#lmpKp1FzXsXnQB=_MHqhDP<5mu>}0 y3!+MgXQlvUP2;CF=>sJt;gZ4mX(i=}MX3x(MY(5>3$Tu3VDNPHb6Mw<&;$V3g!4xL delta 829 zcmV-D1H$~N4%7ya8Gi-<0063BcP#(_0@iv|SaechcOY;u)>ud3Dy?5Hhy6y5TMTmJj!5j{v_ORz zYEMeksnVozwv8I5n0Tl?>fttX~x4F)qJIXMgbG^Vg2ll2_{5@Bq`WJo|DW*icfDH^j8K}QFlikY({K0ts} zxl@>6Ba#8fd5w*Cj80!xzRWmU074~Wlla;|fR&OWe=Iq2sOmb8R5h!qYtfn|r>r?= z%j=A)CV!SpEt{EJvFhT<)w7$s7q5kj;0V)_i-qE)lv*)pMd*sRD?DmF_>dzVdgQ|n zKgv-X(x;`SEjMf4N~@i_bZq~gyM^w(^g3uDl|~vm^048fj5?8PQ)Zev^R(%+%zC3n zd)q!yqj%&!r$(FFB9=}+yHkVN>@5VX<3txT5P#!DAa08Q5}FsY=#&yKa*J6kj7^~o zYNQKJr$r0|(;(JKH+FY&pK=SD{)!v_iCkFd{s+0R&~0)bxxJv)>-j~I6VTd)OVcP5 z2OAuQSN6KTNndWmzXtdY^d0Cs(E3*~JN~PM-;r8(meKmWaR2}S32;bRa{vG?BLDy{ zBawR!Gvfml4J9iu^rQs<000q5L_t&t*JEJ71OB7Y!wdibwN(NCmh*%P00000NkvXX Hu0mjfvEzj- diff --git a/mods/ITEMS/mcl_signs/textures/_div.png b/mods/ITEMS/mcl_signs/textures/_div.png index 808343753996aa8a028d996058e9d3ea8d235acb..ab688814607605c41f0f03f00d6c7bb97eedc039 100644 GIT binary patch literal 1846 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}ThTXlH;Z|o4d(w4}|3<3Wic}P zKf)jnbSEn#7y$ha28>M1EUawo9GqO-Km}U`Kq1A<#KO$V$^!H*V=Yjgfklv2NYT)d zO*k--U8zvSsBz*#4rQl}2StM}eo!$^Dr(~75)+q@lu}hw*U;25F*P%{u(Wb^admU| z@bn4}2@MO6h>S{3Nli=7$jmA(DJ?6nsH|#kX>Duo=Z zc#u=sIOv0DQqe^&F%^@CsvkjK1N)3Pk2R6yGq}eP{<_7$!^{YbJZ3=#dxoF?x-=Fr zjp8922K@hTGA#6~I08(bswJ)wB`Jv|saDBFsXz)?mKho88XD*t8iyE~TNxW$nVM=F z7+4t?ByRZtD#;KUa`RI%(<xgeKdl&V3SOtOKBh2e@la}(23eNyw% zOEMS?jp{Ei-3pWzM3oNDOaaQ8#!qe12TDr9C4=+RO3D+9QW=nna?c(YV1>uP;OXk; Jvd$@?2>=-B_d@^x delta 837 zcmV-L1G@aS4%!Bg8Gi-<0063BcP#(_0@Qj`SaechcOY24(@vLIOPkZ#aMb9N`BF ziKdX$JeQm!N-C*v#lYiLuAX9A?NxO5^ehjt?H3G@pqJ}0pMP7wLaz4-mbUzOmIvF0 z*telK&)c9(&y2y=^KD4@lGA<;WzVbWVLSUb8n4%ST(90gCqpp0!k%#8Q%E9OpI!tj zkRlbmpk*PRlC&hYT7Dh7kn8K<-A3U*svprN< z0X8BTaGa-a%rRQJtbB=awE%=l#v$=}fB-8cMgCZF4=4n6W=hacsr z4e8TT)0UexZ>81FT{@0`&)q`zUV1(0L@J%>)H9!U`dQ98kZVIm8anc@;iHUtqelDK zK2f807%)|%^m<7E000?DL_t&t*JEHH2mFUIn26TGh^&p477-5sv1GWRb7k}Tx;Tb#Tu<$FnY$ir#24*0g2gFj0tY9@IK(;iLT?1rm0M&r>G6At6 zBNGEiAJEGTMnJX*ke&dVVU~U5$0dpG{kj)Hr0~=5c8xmU-$_Dv?kqP2Q0gzrO+ZY^$Ft`1` z@&5sXfR~%68_*(Jp%g%mRr z3o|P#3(&iawLp0W7C}}aMMFn6;lM<8r9u&-#)%6#l$|yn6b-ugLB%+!sELzHOk6@z zN>xo=LsQGd)Xdz%(#qMz)y>_*(@(s#)lOnKGb1qam<1W^8Gioj(pbPWiid0%@c+Nb5cWEA7chCMmbgZgq$HN4S|t~y0x4iw zW@MymXrOCo9Aap0Wo&F^YN~BuU}a#Cxa9+=BtvM(%}>cptAuMXum~{%7JkN7hL#Ww z%ff$wY8WYy4XG8GX;w~|CB*@$MZt-=1v#k<7CH(bB=pu!9jHnXuF3`Iijd4)kV`O1 zRZEQ{IY7n2aK)aviRr06sd?!o84QL-^_Q1!1xgE|N{45r0A)?%r#9&WB_-jK!TD(= c<%vb93`j+}XO9c8_G4i1boFyt=akR{0Hj0yDF6Tf delta 845 zcmV-T1G4!RwJb#XUgY~HDyF9hqI_3OW8drUI?Y^VHwqMDf+f+L3J##fmjF43$+C*#E9mk zM4c*48oO=OFvY}!4J~s++?UM7xNzH0(yBDsfTstrU}>Nx5c6X$wEdRtuaU!ZCulOk z7%g_6HGC!fo%%2|=Sp3o=y#lu7MK^Wtid!ExpjvY5P#4-G1VR4UBgS>#22uOneH$< z7FgqTo4Ayoxh0#kKu==|2Qpbd1`s0nR!oKj1Y*V^L7Ad48xi8@;8QVkmc$nbkSccy z6Kq5>;5aYe7-O_`S@{;@XaNY7ECw{#K!BB!B7ZD7a;WM$k5o0QscX@iC8w-8XUpr1 zswS39Eq|MtTe0fm$;l8c4nrIcFXw8C`7=n9QmFTUhTmtOg@%dc|P zhV*HvY0J%;x6*3oE*;yy=Wd~UFTD;LNTrd6jy!DmD5Fl~+LW25&OB}UEVDkS(b=|d z)aZlUuc^_Ywuq&zXHRMnoBc3B>p0QH48%AQh=1E6fQ077EIOsci`-%s3u99#gBt0A z(`gX{!8C|<(u3WT+%LHWP5+7;{}Z{e(ET6e!a{e*{mktPYQ63+iflk@7p|B_nK;;> zFubzY^-cQiHvCru--f;oeH&VT6|>{lF8mFOCw8cp-PTwD000JJOGiWi{{a60|De66 zlaXs4L*oM#2{0B|Ag0^^001FLL_t&t*JEHH2mFUI7|{h_V*l}J#Vg6cM3(mdr27H@ X$)ySVYSYZ-00000NkvXXu0mjf&^?#@ diff --git a/mods/ITEMS/mcl_signs/textures/_dt.png b/mods/ITEMS/mcl_signs/textures/_dt.png index 5dfa75349e3d10546bce4f0ac7377ec524528e31..b9a53650d58cd0050df3cc37d90b22580c95a0a7 100644 GIT binary patch literal 1788 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}T`sfGcI01HI`f#8B3s$xTlL_2*>s0 zKj#^keR!@U{&N>jRY_rGxVfKMZH!D1KMH{KLfOXPu!p(r|Be3-7zDiBJl%j6ft(2>{@-SBX5e6B zV`pRKU}tCNM)G;tLF)@)> zx3sk|ve7d(F#;LF$jQmc!_6bX%PV1|D5GdZGWdUhL68IJqAX@cB?cxzMrJ|A|3?_) zf$n5w1OuSo!GMv8nT3^&or9B$8>nEb04SuGnOK-vSy_PIWvm6tGq4D<3Mm>ovIz$! zvMUve7&T5@$f4}C@t|nX#SbdRNkvVZTw>x9l2WQ_>Kd9_CZ=ZQ7M51dF0O9w9-dyo zA)#U65s^{JDXD4c8JStdC8cHM6_r)ZEv;?s9i3g1CQq3GGAU*RJ2VdF$b$$4{OPfBE|D`;VW$ zK>lI`Mk)+o^_L*fUra14%q;96e=#zZ12MB83#+0bn~-B5dt#xml2Idvh||P{8xL|S z8wY(5O)9#`C8lEXQ1v6oYha%d=dmWTd2Nn%Q7P)T|)z1L*o!bb1P$GD^pW#0|P4q zgTyT#KqVPMLvDUbW?Cg&gMmee5wP$xwlcJYXjm5h3sf~ofow>v$V{_x$}A}kNG%FZ z%q_@CWw6ju03o5bcIrS?if~mfKv#rh=7L;;QL65=S~4A|SQxI@GdD3k)h9JCy(ELd z(5U|M(yc&gK~(AR%oL!kY5deCeW0WyTrxO6t)x7$D3t-JDEI7f@dYYk@O1TaS?83{ F1OVWt>9zm> delta 806 zcmV+>1KIri4dn)qBYy(cdQ@0+Qek%>aB^>EX>4U6ba`-PAZ2)IW&i+q+U=HYa@-&c zhW~Sl9sx-RiQ`}}Grd8N-xo~wBiUxAX@3T00n0)HJpykyfBhWc2MUR%kkmYvoFhsq zsc^-><5jMnVp{E0bocZu53%hR43VIh>oK2Oze29}36{3}cz>1$+lJV;p*PRlpiIw< z!PfI_NcfV|ehy{NtLb4o`!^b|*Lqy9-ajWpFuKB?aNtu&B3hqb1S^mt6}_NkA)bLa$>Na(x}V+vr{FV%>6i4n>H0E97@E+H%s@v0D*(ToK(pKfMr%DL$6R*p2RE zoY(GZ%7|1Bdw)}JTUjG0BAiLqw2W%_DaN*HL3M1gfmjF41GNPz#E9mgM4c)PI#=JQ zVTp-PHuTI5ai205j4c2&ECJv>0 zZpq>-(9@X0hD_GC0fY#?6^kJOftYbgP^M_iMua#z_*AT%CGi0Qq{^Mb02`4EIL^~I z<`^wqR=&izS^z>NivbM|5MZUG$RA6N9I86+BUR06>RPmB$ti2j+48)js);32%Vy?Q zth#t|^?&T+Lq{Gqe3Vgd)My{uCu;PL+~?G2 zQ=7!n(z81?h|S(i(7aA`G6OMA1mZRcAfb6Oi)BtJ@gz5y#lkog%AiI%;dGkBKro%e zI_SpkPVQ4~LDOGx<3EuL6W#wH7bdz*?jyGs)OuZC6j^}gDV#BlGH|g$;q=O0=Qrug zefU=c--f;oeH)tpDn`eDweTBaJ$I42pms5lF)TLY0~HA{A0hl6cmMzZ6iGxuR0!8& kV4ynq&%nUIz(j%u05Pip0&z;@p8x;=07*qoM6N<$f@g$$oB#j- diff --git a/mods/ITEMS/mcl_signs/textures/_dv.png b/mods/ITEMS/mcl_signs/textures/_dv.png index 2989d93db1c61427560471a6723725fcb7a7ff74..86d22fea41da54ec16c60050a4b4f688f76c221f 100644 GIT binary patch literal 1853 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}Tovje^c!?3tA}nX#$OkeHW zn308n5y%2Lni0wds%KzgWM*In(s@8E#mEX)Qvzg5L)kSzwgylQNG}r*8!|F6fb;=9 z%U}d#ivZ~fK)eKqIlxc{s1&3cM!S3Z1}GTm85-zWFc=vaT3Q(xTNxQD7#diaSXh~w zAh|6Is0-#ckP$GqaRJ%PP&cpv)vzJ4MWJkv9~hY+eiQ)dg|dyokq2|z{~P}wFbH_L zdAb2D0yz^%{J+iM%)r6M#?Hpd!OqUk$;rXRBf`tW&CMezB+M@&D_WTR(nVgxdTk&}~?hnq)&msi3_QAW{-Wbpq0gCGac zMOn;@N(@YbjLd?J|Bo=p1Kr8W2nIkuf&n8FGYcylI|nBhH&DS=0Z>RWGqEtUva$fZ z%UBDPXJ8Rz6;d>GWD^cdWLGK_F>0K+kVDyN<3Z7&iyu^slZu)+xx~aJB&Af<)HO7< zOiazpEiA2^U0mJVJv_aFLqfyCBO;@cQ&Q8?GcvP^OG?YiD=Mp+TUy)NJ36~2O`bA! z+VmMSXDwR1Wa+ZyD^{-Bw0XMuc{znEB9m|56C{$gY*2V!PH7FI<=HX+AA z_QXPAC8I_T5vPd@Hy-3vHV*nAnpAX=OH9S&q3TDF*T6m_&SOnv`3&wcguiYv@Gvt1 zBac~-!Jgsgzb=ghOrvsCwrl#5k237_JiCaE^N-~6o-29Zxv`V-J1B(zNVBu$MWoQY}uq^x+$Ob8p z4XG8GX;w~|CB*@$MZt-=1v#k<7CH(bB=pu!9jHnXuF3`Iijd4)kV`O1)%jfC=K&Q9 z!xekxCZ?zQq~@iUWH1;S)n8t^6(}u;DjlAg0+cn4pW37kl$3-^2Ir@hlqVLYG9VS@ Uo;@zWdXIs@)78&qol`;+07uaI6951J delta 848 zcmV-W1F!tO4)z9+8Gi-<0063BcP#(_0@Zp{SaechcOY@z}uyo|tyFA!2 z#C{CX!|*P$Jg@Q5^J7T(meY9;<;<(;Wjp8LcFZ2*pYO>KjIOXJ9C!#xMC;3oUA?{1&VqCawC}~xiY{1h4Sg`bNDHisS59LYi`;6V1%CuIPfT^kch~TeH}M7RVx~LH zjt$m$-6k%jXKu;nEYQ=K!huZIj{$@Tz7>lh0fCrtNl>O}%tnMbI`~wqoF(xE0;I~F z!UP+U3^>lqH|7{^T~@xuxLN>0C5r(K4iI3aq{tsjjvT7G?ju#rYU*0FX2~gQ&e`(1 zqpFD|Q-8~5=2on_cyjgZ=I+I7;Uc)gwB%x;cqye;IIS>UF}p&e){8H>(xq3v?DDHz zwIO|4YT9zM=B>2axl70K@3~v(-b=5822yFHp(76)KFX*Qxi)2{sWVTTKFh2RYIKh6 z8#VeM_iJi&s4Ze?>)DeU#AZKC(7H}^F#|D91b^bT2q2+(F^f(q@gldF#lkog%AiKN z;B;EVKrjtro%CS$B=<{hLDRqD#{WbvEOh?|xv>-tan?LPch1K)1GWRb7k}TnY$ir#24*0g2gFj0tY9@IK(;iLT?1rm0M&r>G6At6BNGEi zAJDrDMnJX*ke&dVVU~U5$0dpG{kj)Hr0~=5c8xmU-$_Dv?kqP2Q0gzrO+ZY^uFt`1`@&5sX zfR~%68_*(Jp%g%mRr3o|P# z3(&iawLp0W7C}}aMMFn6;lM<8r9u&-#)%6#l$|yn6b-ugLB%+!sELzHOk6@zN>xo= zLsQGd)Xdz%(#qMz)y>_*(@(s#)lOnK zGb1qam<1W^8Gioj(pbPWiid0%@c+Nb@YPKCH86RqmbgZgq$HN4S|t~y0x4iwW@Mym zXrOCo9Aap0Wo&F^YN~BuU}a#Cxa9+=BtvM(%}>cptAuMXum~{%7JkN7hL#Ww%ff$w zY8NSx4XG8GX;w~|CB*@$MZt-=1v#k<7CH(bB=pu!9jHnXuF3`Iijd4)kV`O1)wNel zE&~+{!xekxCZ?zQq~@iUWH1;S)n8t^6(}u;DjlAg0+cn4pW37kl$3-^2Ir@hlqVLY YG9VS@o;@zWnva3O)78&qol`;+05*>Pb^rhX delta 841 zcmV-P1GfCX4)6w$8Gi-<0063BcP#(_0@Qj`SaechcOY!RwJb#XUgRdAQ-X8PU`8+Y6DH z;%j+{-JIR$9Dn!fYRZUI4rft6ma=f! zEU?DwHgPFEb4xa7fu6<`4rH=^3?M}Ct(Xi62*iv-f-*&8HX_8)!KY&8EQv1=AXV-Z zCfJB%z;Rx_F~(@?vhpp)(E<=ESqx~fQ2;9?MgCZF81FT{^aZ&)q`zUV0rgkV+#B9eLRBQAVA}wJ9@Aoq5{yS!R7uqqA+_ zsL=znl3ZTPPSz72gF`Zl!wDrU#8UHBWXzjmxEVwm>;000JJOGiWi{{a60|De66 zlaXs4KjQ-x2{90;STd*p0013HL_t&t*JEIy9rzE$C;}*KMl?Z2Y%1}aNdW)=zf=eN T&w`D700000NkvXXu0mjf&x(Q| diff --git a/mods/ITEMS/mcl_signs/textures/_e_.png b/mods/ITEMS/mcl_signs/textures/_e_.png index 5ef88d28276ecf56091a3a7af9535e518388daac..f9b674b1564ad71f8e9feb552b28f9dd3f3af38a 100644 GIT binary patch literal 297 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TSkfEoGV+hCf*0YXW2NW2X4|e|euYbJxMv%sg%R&)mrDlH~ zUir?ec3|Cp$rP?os3jj5%mbgZgq$HN4S|t~y0x1R~10y3{Ljzqy z;}Ao0D`R6TQ&VjN11kfA#4R7PP&DM`r(~v8!ZjFJgcuoEnHXCcT0%4|3;zZ3JAh^XK>x4$cy@Wm;?{e130dhy}7SoLVIK U-miq!8mNxJ)78&qol`;+0CzVNssI20 diff --git a/mods/ITEMS/mcl_signs/textures/_e_acute.png b/mods/ITEMS/mcl_signs/textures/_e_acute.png index 911207f866bf9e089cdd352f8ac3f0f545fe1d0c..4566f2dbcc0291c5aef680eb0b9c74525de464f8 100644 GIT binary patch literal 1859 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}Tx;Tb#Tu<$F6Gb ztqd%I3?#Q@fpkLM1~LNXHZCBW8R`Z$pc*zLwkVR@7?~h`6aeXkvW>w}2y@&28~-0L z2za@9x&bW$ITJ|yzs=yxz`@4G&c@2Y&d$!s$-%`V!pp9XZ3R<7E#dCS&q+js2Tb?ESsqsNY)IC<*Quqec!9r-=(U9^_Ou4*DRPRCJL`OvU7(>PL{*z&<0+V@+iF4DK<6ziu(` zFf#%pk6Dnxp5f=eE{z3Dqj<=M0ssG-3|pUi-2^62)e_f;l9a@fRIB8oR3HT`%Z!Y4 z4GnY+jYAC0t&EMWOii^746FrR zfod2jkPWF7nQ2x|nI**msYStwxdl0?3>G>HASCqGP93O95w6Mw=!%fcT#!pJO4a?U z)mMOuh2e@la}(23eNyw%OEMS?jp{Ei-3pWzM3oNDOaaQ8#!qe12TDr9C4=+RO3D+9 ZQW=nna?c(YVC~1i;OXk;vd$@?2>{d00qg(( delta 849 zcmV-X1FrnT4(0}s8Gi-<0063BcP#(_0@Qj`SaechcOYkBR{T1eRDu=zOx23EW93f|t)h(kKeu}oOQcxUAY#`P_^FV2V3Nh3k zl&DjsLFcL)HB2$_$%dM_LFH+4F)rK|lr#$sHel#M93&d33Cw((3$1a>8n2OKN< z0X8BTaGdAZ=wq~eS@|;KXaNY7ECw{#D1eocB7ZD7a;WM&k5o0QscX@iC8w-8XUp@9 zswS39Eq|MtTe0fm$;l8c4nrIcDRXhrCX-W49T9(>4=4n6W=hacsr z4e8TT)0UexZ>81FT{^aZ&)q`zUV1(0L@J%>)H9!U`dQ98kZVIm8anc@;iHUtqegq% zK2f807%)s)xvLU!grF?;%r#}001RPL_t&t*JEHH0{kZ^fK%IlT-yFKFfcGMq6sn*wBSF{ bwi5;bTGa{p9hgXi00000NkvXXu0mjfYSxOC diff --git a/mods/ITEMS/mcl_signs/textures/_e_acute_.png b/mods/ITEMS/mcl_signs/textures/_e_acute_.png index b6019374024b953e0b19fe8913bd52b851bb207f..70502e82f7190d7fdc9dd5034f9271e4e4d8c5f2 100644 GIT binary patch literal 1861 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}T3;c1z-7kUNxe4@c`kkT#=81YKevH1mqd5?szX2@xTHpS zrg?g5F>nA417b!N21XzY|J4mb5!I21a z+y5K?A20}bxp}$)Edn_cNc_Le;LO0m#>URZ%E8Xg&dJHa#UsMY!_CbjDJ0AX!XqN1l2cOC(lau%ic3n%$}1|Xnp;}i z+B-VCCQY6)b=ve9GiNPYykzOJeA&aSFc^a zar4&0M~|O8efIpt%U2&ieg5+G+xH(oe}VkP2#i!1!0InSpud<{SeRMZLH=T7DhFa_ zK^9g;LpCADK=#B!VI`wR4iTq`3pXC*R5lL!AevNkkxNX)?MniLsTT zB}Bur@L!-hMhav@YDH$6l~ZO(aX@NOaAIyjPAY?ijsge?y|q&Zs#1ijasj#`Br_M} z5{y#yW&IscJthoS?3tUGp6ZjDmtK;=U}#i-dFfW5v>>W epH@ delta 851 zcmV-Z1FZbT4(A4t8Gi-<0063BcP#(_0@Hd_SaechcOY!RwJb#XUg)3@{zYgA`_Yu2Tk6hkE5n?_H`6EV0PWmC2hZ}yI5j{P>y%32h zzLuBR&DnjU5nN%Ic3c`TV7{W zHL+xB*?-L3id7d+uAbf8y?8BL1V@;bTr3nXrPK zq)$stTW;38l~y}<>Dc}~cMIKn>2=URDvdOBT=4sPsne{=9&bED{ zMjzyUO^pt?3XKr6m>vexoWCL2eaK$vr#K8uI z;g!9vZ_;nK;lCRAHuP=i+tB)}m>s`%;cupVcB`EJo}d5#010qNS#tmYE+YT{E+YYW zrICIMN#g?*4hbrJgh6Bg001XRL_t&t*JEHn1^*cc37`N*d@7J7{xf0`WW;I-6E>q5 d2|9&z003Cx2>#&g(UbrH002ovPDHLkV1j`Ah2Q`H diff --git a/mods/ITEMS/mcl_signs/textures/_e_circumflex.png b/mods/ITEMS/mcl_signs/textures/_e_circumflex.png index 2b5ace3c42076e0e01204f226569fe002344daf6..0aca71f43382c7c338ad7783628a718930844c6f 100644 GIT binary patch literal 1859 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}Tx;Tb#T#xN_hc;ui+K?xAATc(ETo{5uRzD zo>~kXK%;<|k%fT~$O1W?5z6KPvY8l}8JK}|9uP}0vVzr=0NK(|b`6lN0aOFh3sPsu z$ix8B2lO(75s)ncq$dFJ5+LRPLy&Jks$sOdr*D9Qk)EM}o&|%EfuW_9fw7g5p@N~Q zm4T&|kvWpvvOqeaZUY$sa~l_s%?xz|8&C}!5?d6>ZH!D1KMH{KLfOXPD1^D~|Be3- z7zDiBJl%j6ft(2>{@-SBX5e6BV`pRKU}tCNM)G;tLF)@)>x3sk|ve7d(F#;LF$jQmc!_6bX%PV1|D5GdZGWdUh zL68IJqAX@cB?cxzMrJ|A|3?_)f$n5w1OuSo!GMv8nT3^&or9B$8>nEb04SuGnOK-v zSy_PIWvm6tGq4D<3Mm>ovIz$!vMUve7&T5@$f4}C@t|nX#SbdRNkvVZTw>x9l2WQ_ z>Kd9_CZ=ZQ7M51dF0O9w9-dyoA)#U65s^{JDXD4c8JStdC8cHM6_r)ZEv;?s9i3g1 zCQq3GGAU*RJ2VdF$b$ z$4{OPfBE|D`;VW$K>lI`Mk)+o^_L*fUra14%q;96e=#zZ12MB83#+0b zn~-B5dt#xml2Idvh||P{8xL|S8wY(5O)9#`C8lEXQ1v6oYha%d=dmWTd2Nn%Q7P) zT|)z1L*o!bb1P$GD^pW#0|P4qgTyT#KqVPMLvDUbW?Cg&gMmeek%5(ov6Z1EM8mT1 zU!WRB3S>iSMP{0nQ)WqVKx$ENVs1fBDuacN0tgAcwNnSGQiQ8=0lFe2GZ*9%j8Zks z?cPJ6Vqv&q&)mfHRG-wm^pXq)L!ib?REVMW zphTT24LVods9}nUPd3!d4Z2U8i*ez$prl!7umM94;vmsLO-;8txeost;5*QFpzlEQU&ZM7uNHm-q#$>g7AfCZ00009a7bBm001r{001r{ z0g-$SO5+0+4hbByKGgjH001aSL_t&t*Nu&_2><{LgUtU&+r3a4MjzU diff --git a/mods/ITEMS/mcl_signs/textures/_e_circumflex_.png b/mods/ITEMS/mcl_signs/textures/_e_circumflex_.png index c17d9dc29c385c007c5e105273f742d3bce7bc5f..02148554a39e9bde40c8453048a9d8e1a76a7df6 100644 GIT binary patch literal 1861 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TE^#4UcWnyY(ZeeNV?BeR??&0Yb91<+v*#~fzWVs-^OvvRzW@073*;|GV5GtTR(}Zs{l&z>!py=B@)sjhIS?}o zval)|vI#i`vL_Y_D;YI%h&WALxbYyTvT@J{(WIh_Tw*FF4^=;cyax6eaUN?T%V%(p zA^dfVfrpt97e0kHVpXx-(+~aXipO`d8(GUMwFx^mZVxG7o`Fz zU|D8lq-$uPYiJx|Xl`X}3@ppE4GgRd3=+3|0F`724Y~O#nQ4`94F(n=Mg~?U##V-w z5Dm-1e}U>4DUc1R6`5&PPMIae0jWj7iMa(isSFl63Lqr()=nL$N)fKg1?Y;9%v_L5 zFiO?$oSLBeOc<`%GdD3k)h9JCy(ELd(5U|M(yc&gK~(AR%oL!kY5deCeW0WyTrxO6 dt)x7$D3t-JDEI7f0oH#E44$rjF6*2UngI3b0?q&c delta 852 zcmV-a1FQVS4(JAu8Gi-<0063BcP#(_0@Hd_SaechcOY!RwJb#XUg>vD-!sQ%pSA&@wl~eaT#m3%3m=txA&(7sWs1gZM2Mq%ds@y3| zuo20Cv&09Hzh{ITT7p{naVQq`=cu0?B>oU-PeEw3}G znpiTmY=35M#j1-ZSI=(lUc44Af+I{zE*6THQfh_M3ey#%D>Q1o_>wDKdgaS5zsgk` z(x;`SEjMf4N~@i_bZq~gyM^w(^g3uDl|~vm^048fj5?8PQ)Zev^R(%+%=(~4XWPC} zqYrYwrbdU_B9^wEJ*h!#_QM3N<3txT5aUE3Zhwma5}FsY=#&yKa*J6kj7^~oYNQKJ zr$r0|(;(JK4|Y#-zvLD){VQ(#PvpWv_kWNJ3*902Gq*3O^}4?(vH`7KxMCV*;$VZq z@XB7-H|e+A@Lvsl8~Qf%ZD{>f%#L5X@Hf?WcCe$R8>|2T010qNS#tmYE+YT{E+YYW zrICIMO5+0+4hc6Of-SuO001aSL_t&t*JEHnfd33=;6E-2IAFvli!AY<5sM%rR-2iy e8HLv(G64WL5()i;Xeu2500001GWRb7k}T-j%fS8emff2|8Ih+y7<^i&q7?~NEfpi`aOEI#7)sz6)(ol8{kgWk!1JVmpXUNFJ z0MZBaFoO}0Edrz`0Pzwa<^V&GUqGs1w7aKofP#^pp@E(SgOP!urImrPm64%>p{bPt zkZpwIwk(iNsM|nBz}&_KWHUqEzy?&qhQt;{avLKP#E$|Xy->C>I09jA`+wvA0|o&v zH%~X9MIdJaiT}45oEbRS*x1=vIoR3RIXOAFctm)4xVd>Gg@pMFmiHo@^JG=@bXF+Dat4skqrJHU=ZX0 zx+sg8QHg;`kdaxC@&6G9d7wL48NmSPcQ9aNVrF4wW9Q)H;sz?%DgX*8W+oP9R#q0E zcNuGe@(e73tU`*0j%>n#iR?;+B1Vl97jh^&Z9FI%bn%0VaZ*teCzqJGgrtbvx}>nyN9P&a7buactm7Wa!P7idPZheaY<=ec|~Pab4zPmdq-#2q{&mJ zPMbbs=B!1Fmn>bje8tLDn>KIRx^4T8ox2VlK63Qf@e?OcUAlbb>b2`PZr*zM=<$=M z&z`?{`Re1R&tJZN`~KtSFOa_&fsqOWSp6jk^cNEg3o{El$X|?1uS~;l_iU%Emz-M3agxa*3&!JXHM%@*3D@#CfcVET6$WhVa)d1|DWc zVB|3iGT1Zx{MV(ifN2yD*)ZV$f0JRo^WHtcUvB{QuOuED?}#K^$P#MsKv5~5*Q_%BfX zA_cM`wIVak$|%CzZiMM*)O{-rA`HRVl(%xd2@el9>x~2}Y?ZBIWT0 zs8|@T*fTdVJ=G^QFTEs#!O*Dw^3tt9X+c!!@XQpTtZDqzCVil!BwR8$Kdq!Zu_%=R WsVMjCaRJtS3=E#GelF{r5}E*5TK|{; delta 848 zcmV-W1F!tS4&?@r8Gi-<0063BcP#(_0@Qj`SaechcOYXuOqKSkSCDJYI5HW2Hed7!jFg&1lN zO4O;+pmWuY8m5@|WJAr|p!>AB7#D5}N}7cR8!+@B4mJ(c1ZKX?h1R%bjn~LAawm8) zAsC^@hZ0^Hzfx|2#+a!~6#dc(X@Pn1%ooy^f6k#tbCbqv;c%k76Te=6u?SJkw2CkIaGC?N2;3D)U{~Ml2g{4v*me4 zRTE35mVeF6typ#OX}bF{VZo4$h9FO4IO#d@KHv+QKP+W zpQzD0a-UP9O>GiO%g^rAU^aUTLGw7#$qd9e5r2r=B!GnG$t*gh#FN})77JrjD1#d5 zgwtsf1Hp6>>!2IEJGoD}1x+r7uz5{&+`VKVzRg8}RYT-9xS$C09mRH39000SaNLh0L04^f{04^f| zc#(Y!M&kn&4haK3HrWUO001OOL_t&t*JEJ71OAgNfuZU@E^YrA7#J8B(F7TZvY9yB a2?GFP%?bG$LzA@t00001GWRb7k}TC1wW-tP>MS%1KAYKB*9AKyeR0>iJquo7y0~Cz(3=Q-w7>o=IEv*cUt&9v6 z3{9;JEUiq;k=&LA)CF@J$OxF*xPWYCs2kXTYS@t2qEI%-4~$F@KMH{KLfOXPIE1{@-SBX5e6BV`pRKU}tCNM)G;tLF)@)>x3sk|ve7d(F#;LF$jQmc!_6bX%PV1|D5GdZ zGWdUhL68IJqAX@cB?cxzMrJ|A|3?_)f$n5w1OuQS!GMv8nT3^&or9B$8>nEb04SuG znOK-vSy_PIWvm6tGq4D<3Mm>ovIz$!vMUve7&T5@$f4}C@t|nX#SbdRNkvVZTw>x9 zl2WQ_>Kd9_CZ=ZQ7M51dF0O9w9-dyoA)#U65s^{JDXD4c8JStdC8cHM6_r)ZEv;?s z9i3g1CQq3GGAU*RJ2V zdF$b$$4{OPfBE|D`;VW$K>lI`Mk)+o^_L*fUra14%q;96e=#zZ12MB8 z3#+0bn~-B5dt#xml2Idvh||P{8xL|S8wY(5O)9#`C8lEXQ1v6oYha%d=dmWTd`$txQd|4GgRd3=+3|0F`724Y~O#nQ4`94F(n=Mg~?U##V-w z5Dm-1e}SqPDUc1R6`5&PPMIae0jWj7iMa(isSFl63Lqr()=nL$N)fKg1?Y;9%v_L5 zFiTaL%5997 dlJdl&R0gD?+_T38Sp6|Dc)I$ztaD0e0svyF0k!}D delta 854 zcmV-c1F8JP4(bMw8Gi-<0063BcP#(_0@Hd_SaechcOY!RwJb#XUg)3@{zYgA`_Yu2Tk6hkE5n?_H`6EV0PWmC2hZ}yI5j{P>y%32h zzLuBR&DnjU5nN%Ic3c`TV7{W zHL+xB*?-L3id7d+uAbf8y?8BL1V@;bTr3nXrPK zq)$stTW;38l~y}<>Dc}~cMIKn>2=URDvdOBT=4sPsne{=9&bED{ zMjzyUO^pt?3XKr6m>vexoWCL2eaK$vr#K8uI z;g!9vZ_;nK;lCRAHuP=i+tB)}m>s`%;cwpBcCmDUG!Os)010qNS#tmYE+YT{E+YYW zrICIMOydI;4hb&|?zQUx001gUL_t&t*JEISfd33Q08R-81_lNOMq;)8XT&1Nh}9A% gY(_B>bPDMJ0ASh({sxkPVgLXD07*qoM6N<$f&-X_7ytkO diff --git a/mods/ITEMS/mcl_signs/textures/_ee.png b/mods/ITEMS/mcl_signs/textures/_ee.png index 646c19e14109fa090f90a46f59a083f07ea38807..4871c31be87a9c2fcd59074e789e0ce3cd8482ce 100644 GIT binary patch literal 1858 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}To=IEv*cUt&9v642`Xf zEv<|!kldC9(g}4N$OxF*xPWYCs2kXTYS@t2qDXFIWP6M4GWKmj7m;PO-s+n%qlJ^Ei136tZHs)ZENr7?3y%r z%G7DoXUv?nXz`Mz%a*TLxoXqqEnBy3-?4Mop~FXx9y@;G=!0ld(M2vX6_bamA3Im5iohGmbgZgq$HN4S|t~y0x4iwW@Mym zXrOCo9Aap0Wo&F^YN~BuU}a#Cxa9+=BtvM(%}>cptAuMXum~|Sure{WGPHzfSQh>Z zRKZArY)GxhOtW&zEGZ61EecM|Eyzh_u+UKeA)&W+>OfVBa8)iqSA=Bdf?R@8sy^!M znFUlV3|H)#o0y*JlbV-alEGkTRDXHtR-m*Xs&sf}3Q*QGerl6GP*M^u8JwS1Ql40p Y%79dqd-k{hD?bJXPgg&ebxsLQ03!4N5dZ)H delta 847 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 O5re0zpUXO@geCy)CFvRf delta 804 zcmV+<1Ka$A4&w%pBYy(adQ@0+Qek%>aB^>EX>4U6ba`-PAZ2)IW&i+q+U=HGvg9TV zhTmC5mVhLL#Bwl~s_Y=k&ktt$HYZb+NgfZB0jq@s`ULGT{`zx|#A~c@IU1`6%R%7#%t3hg=?R_-#e>^!)aNNKEmyyu@zK?sJZN zcQs{1Du=VFAAeifBPd=7rR-@L)$l0BwrfFkY_Wk@2h9t$1uDdd=A=ZODoq-@Z`82F z#Dfhzb3@#h%*D8H+fdS~G}(Zs2e4pipe7LWV=c7(mhG>R!*eHSGQk*O#!oeTCH$TG zFf`{%U83lBoRAh+7q6VgG8VbjLJJ6Jo|x*6@2=q`Z-3$o*u_kDm>nCe@w!c1O3&Pq z%~_zQF@*z}tRDji5qv8aLjnRZudI%pu3MjATuu;HVOI+1HrW|}(lwCS_V`k+SV*uGJt4|2bzMu*xW zmbRWfsX=V^!vwACL>Ds<<3u2CivSXu7qjS;5@RoNi&-p;L!k_6qzg``MGOSfAl69_ zc29D@L!J=-be@q4iZUJ3j5g-_>1qur#CeT#+#>Hsb>o2|74_8AF)>000z8L_t&t*JEHH i9xyWehqDNYk^%si4gv#(YqLcF00001GWRb7k}TY8dVA=^LP6q-SWLXTe}(U}$M&U~FY%s9u)IvvcDq>wPbh^&;noUD|LjDm`ux`L99vW$#|xu%YRp^1r! zyt<{Wg^`V(v567L5JpZ;P9AO^30__aBSjfSBa*@Y0}O&3Ko?~(Gb%AK2{JMZGX6ip zAP;mWDH{Rjq(Ow25-Z0sDIT--nfTLnNN#mvOQ%*x6F^e$s9P@aKBkX1<0(2-3z zFp*uUP{gQl;zAB(r;P_igD!qhF-|IK;^Yz&myncFRa4i{)G{$OGqmaka3 zYSZQ|TeofBv2)jxYE#}NLy#lXYN2#h>tK?Zw z85ksP`2Z@(5E^pxQ!>*k;TjAqLX3cgpRtvpB}Bur@L!YDH$6l~ZO(aX@NO zaAIyjPAY?ijsge?y|q&Zs#1ijasj#`Br_M}5{y!{@QrybP_Zyvv1e{#da6%qUV2Fe zgP~FV<)vGJ(t@bc;h8BwS=0EbP5MAdNw{Qiep*R+Vo@psQc>>N;{vSd7#KWV{an^L HB{Ts5{YCYX delta 836 zcmV-K1H1gM4(kSx8Gi-<0063BcP#(_0@Qj`SaechcOY!RwJb#XUgRdAQ-X8PU`8+Y6DH z;%j+{-JIR$9Dn!fYRZUI4rft6ma=Ow7|T0ivcj?&vJ$DP;d+Bx1Kq`$ibmU>fM;Ub@*QU%gb>?Z)XPNaujn1}x zqedU(eoc)IwM8s#J$q7v*zAW1TE~elW+29iK!4m80VFgpX3;4nUgQ?DSQwi^8PrG@ zoKA}v2&O@-lOF7ziAJo!&M8 O00001GWRb7k}TLW-G*g_)I=1?XMITA(}wiy*6zqM;+3a9|?4 zQlW@Z(iUwW$pkka<)WpdpCN3cY31zV>gMj@=@lFj z8WtWA8I_!pnwFlCnN?g;T2@|BS=HRq+ScCD*)?hMl&RCE&zL!D(c&dbmn~nha@D5I zTefc7zGLUELx+zXJ$C%W$y1juU%7hi`i+~n9zJ^f&P778mFHFAhJO z`2XKz_%~zYA7JuSEpd$~Nl7e8wMs5Z1yaDW%*aUB&_LJFIKdJ3pm7_QheH!(fcCp9mw2R(1>wp00i_>zopr E0Ko(Jm;e9( delta 834 zcmV-I1HJsR4%Y^d8Gi-<0063BcP#(_0@Qj`SaechcOYj9%n@Nk)K|O z#1tQ|N9|_!Ie*8sx|%YS%3&|+Z7F99j*v6S*)5|Oeu}o8rJy*L*g&j<=7G`z6=JA8 zDN(0Nlg3#$YM5f;!G@Z-LHA{IF)rNXLV!Y(4S0GG2b%_J;30gQ3!USZbG$~5kvqYY z3Bd?GK9umv_?2=CH0MfPqUe`SNDIu1S59LZi`=@y3x5b`ZcX*n_blNdZ{h>k#Y|6` z9Sf}SxI!FC_uP_`v%pVd3L7$6-vJ;I##T&*1O#HnAwij(8B}M*Na^z6ebsni|R#VraHA_xebIz96 z8C6XznSWX~Gq+;Z#gnUNH+L^y3m3r=rX?2(#Y-u*V$h1v6}>AwYCZUnBOQ9=!wx^n zQ5({yrKT-6Yu-w$ox5~w|DL;r?!ELnXdsnF8anc@;iHT?k!w?CnmY5e>9fpwqegq% zK2f801GWRb7k}TnY$ir#24*0g2gFj0tY9@IK(;iLT?1rm0M&r>G6At6BNGEi zAJDrDMnJX*ke&dVVU~U5$0dpG{kj)Hr0~=5c8xmU-$_Dv?kqP2Q0gzrO+ZY^uFt`1`@&5sX zfR~%68_*(Jp%g%mRr3o|P# z3(&iawLp0W7C}}aMMFn6;lM<8r9u&-#)%6#l$|yn6b-ugLB%+!sELzHOk6@zN>xo= zLsQGd)Xdz%(#qMz)y>_*(@(s#)lOnK zGb1qam<1W^8Gioj(pbPWiid0%@c+NbFiG!bE--njmbgZgq$HN4S|t~y0x4iwW@Mym zXrOCo9Aap0Wo&F^YN~BuU}a#Cxa9+=BtvM(%}>cptAuMXum~{%7JkN7hL#Ww%ff$w zY8NSx4XG8GX;w~|CB*@$MZt-=1v#k<7CH(bB=pu!9jHnXuF3`Iijd4)kV`O1)$8Y2 z`hkjt;fg(T6Vp?DQuESFG8hbv>Mt+d3X~Q^l@8BL0m_=jPi@i%N=m{dgY(l$$`gxH Y8IX!{&mI?G&Bwst>FVdQ&MBb@0OB|PDgXcg delta 846 zcmV-U1F`(S4)q3*8Gi-<0063BcP#(_0@Qj`SaechcOY!RwJb#XUgRdAQ-X8PU`8+Y6DH z;%j+{-JIR$9Dn!fYRZUI4rft6ma=f! zEU?DwHgPFEb4xa7fu6<`4rH=^3?M}Ct(Xi62*iv-f-*&8HX_8)!KY&8EQv1=AXV-Z zCfJB%z;Rx_F~(@?vhpp)(E<=ESqx~fQ2;9?MgCZF81FT{^aZ&)q`zUV0rgkV+#B9eLRBQAVA}wJ9@Aoq5{yS!R7uqqA+_ zsL=znl3ZTPPSz72gF`Zl!wDrU#8UHBWOV0NpIs3OGx000JJOGiWi{{a60|De66 zlaXs4MB@V$2{9^eRO=c5001IML_t&t*JEHH2mFU(6ahG3L>GXHVX9=pW;j+syk?RK Y0KE$a10?L;@c;k-07*qoM6N<$f?hC#mH+?% diff --git a/mods/ITEMS/mcl_signs/textures/_f_.png b/mods/ITEMS/mcl_signs/textures/_f_.png index d0dec2b358ba4b2a7c42cf3919a43e397f93ac1b..9c234f7c0427428e99e78df84c8a5f33be2484b7 100644 GIT binary patch literal 297 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TSkfEoGV+hCf*0Y9O3$BXu zt#SnxHajhwT`e{%s_Bm&+hSfe>1lkMcLO!6mbgZgq$HN4S|t~y0x1R~10y3{Ljzqy z;}Ao0D`R6TQ&VjN11kfA#4R7PP&DM`r(~v8!ZjFJgcuoEnHXCcT0%4|3;zZ3JAhVO2u8E|8M;ba4!+U`$>h^XK>x4o(Z{VAEYXZ3=naE0`G)c=1GWRb7k}TSkiMsjV+hCf-m`{W3>9LcOJ6_PvMmMzCijaP^)T*YeY#(Vo9o1a#1RfVlXl=GSW3P&^0s; zF*LU_HnuV~)iyA&GB8No@*xXFLvDUbW?Cg&gMmeek%5(ov6Z1EM8mT1Um%||c)I$z JtaD0e0szneR4xDj delta 68 zcmZ3^6h1-Hj*WqVVO2u8E|8M*ba4!+U`$@1_=EothglPIy0Cu70|kR+tut1AU}X3Z W#Q(8C>9ZhEC4;A{pUXO@geCy6D;16a diff --git a/mods/ITEMS/mcl_signs/textures/_g_.png b/mods/ITEMS/mcl_signs/textures/_g_.png index bfe05463823d72b814da4549e7f7baf6bb63c549..881d06842248d6a1d96578b28ac750c944018267 100644 GIT binary patch literal 1854 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}Twz-eqCoy08&LtS25O)dabeGf!&ooa@Ed~yt zDL~A~!oUb*fn3c9W%B^pOpMG7%s@I1h@}`=!D>o?Y-uRF2FTU`ssZU`0%Ai(CI*l` zpl=zBfNT*UJpqW905Jy`>Hw93RKsX@Pu~CqBRxX{JqrdS14BzI17j;ALj^+vD-%mA zQ)48zWdU`;+y*iN<~A-Mn;Gf`HlP|dB(^A&4e|pc6U2`KAiYqwF*x>MZu@`Z{{sdA zFE>v&phX~O0*U{(8Jrn7*x1Nsy6Qkn#T!26>=6SsB3q=tnSMWMXDvWn<^y!`f zpm!N-f$|J2f~-P{hK_8)fr;!&g(60c6BlwQJ8e8D8g%i4ig8j=6DOCLxP+vXs+zin zrk07RnYo3fm9vYho4bdnS8zyZSa?KaRB}pcT6#uiR&hybS$RceRdY*gTYE=m*QCi) zrcRqaW9F9X@jO*zpr5PhGlv*fm^@Vd2=W@(XT*7|i7cPNJ%;etEe0ND zMquPI3o_U<{QTFYv4Ck557{u_|9_LAVfkJKVDeNgag8WRNi0dVN-jzTQoypz$Vk`F zK-bVX#L(Qz*x1U{RNKJ7%D^CT%Lh3~h5rIo zE>a*HQY$jktei4SiUU%Mf)jHKa#9&AbQC~H=&hYPP?aKFl?%`nA(^=#mtd5tJ1?1MZVT9N!KQ(lz|4=e(4M#K`5HN9?gURJ z1S5?2sfMqNzf&K9=3J>u6#do-X@Pa|%4sZPky}rA0e=C_qp5CvcMUIj6JNkCX1Zl| zY_P`b4sj_xb4xa7fuF_{4rH=^0ze|ntyl~R2*iv_f-*&8HX`Wg;8U@3mc$nbkSccy z6Kq5>;5e_jF~(^7vhr=l)dCPISqx}!Pyj0>MgCZFYg~`00006VoOIv0RI600RN!9 zrva0ZYaT-50~HA|HRD|7?*IS*AW1|)R0!8&V4w>455*_~80`P(+L*8zfh@>K&>{)| Y0HeML{o#NNJ^%m!07*qoM6N<$f`wIuh5!Hn diff --git a/mods/ITEMS/mcl_signs/textures/_gr.png b/mods/ITEMS/mcl_signs/textures/_gr.png index 3f806499abd107f9723b6be41a887676f8c88df6..92832f94e6f353eeab75d0b3c8fcca5051c93abb 100644 GIT binary patch literal 1836 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 LNkvXXu0mjfY88^+ diff --git a/mods/ITEMS/mcl_signs/textures/_guill_left.png b/mods/ITEMS/mcl_signs/textures/_guill_left.png index 32b90c3e214514f6bf2e78a1ef31adf9f32e94cc..a9cf7c7244dd5a8a07787d119810eb4a3b76aaeb 100644 GIT binary patch literal 1853 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}T$Vkt&eu$mGeTN=u)0kSoKYCw8H>I@l~7(n`f zo@FosvPFRO1R!1l#2jD<@&`yYjCS|*4Nx%BGc?e%U@$T;w6roXwlXqQFf_I@v9vNV zMRHpfNGH^7AR}OI;{vjop>ALUs$oN7iz2y=kqP2Q0gzrO+ZY^qFt`1`@&5sXfR~%6 z8_*(Jp%g%mRr3o|P#3(&ia zwLp0W7C}}aMMFn6;lM<8r9u&-#)%6#l$|yn6b-ugLB%+!sELzHOk6@zN>xo=LsQGd z)Xdz%(#qMz)y>_*(@(s#)lOnKGb1qa zm<1W^8Gioj(pbPWiid0%@c+NbaALz-6=3pIEpd$~Nl7e8wMs5Z1yaDW%*aUB&_LJF zIKpcbrPgg&ebxsLQ09L>Og8%>k delta 833 zcmV-H1HSyd4%h~e8Gi-<0063BcP#(_0@iv|SaechcOYw#%~=A?EFn-)Xe%q_4GG3O&wH} z>{wup#}(pGy62WG&H_J;DQw7OeFuO<7+WzJ5)gu+Y4&Ft}lu#Kyw#PO`{AP zY;ZWeve)@d`f?rqHNbbE??B&y=D&*3@n0?c2DbKhnuAmd(*OVf32;bRa{vG?BLDy{ zBawR!H{$~p3^6Wm^6lsV000$9L_t&t*JEIy8u*V!6Cpsp1T_EvItdB)m(oow00000 LNkvXXu0mjfJ=}#A diff --git a/mods/ITEMS/mcl_signs/textures/_guill_right.png b/mods/ITEMS/mcl_signs/textures/_guill_right.png index d372e6a8558f1c8e7684ccda0174989f30f95037..f4433eca423343155e2210e32f9c50cd74fa4114 100644 GIT binary patch literal 1855 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TW?%-=c|a`1$O=|d0%S`=*)>4622c%1FG!ssBNGEi zAJDrDMnJX*ke&dY(O<^NNiCgw=pt7{3rm@3uPOFqYvh`|2O_WU=Z+f z^K=7R1ac;j_=$VSiD#0X>vBPS;(4>yklFRz4=qKu*u$>9G120;#> zi?Wy*l^B==8JPtc{~uwH2fCA$5e$HS2LnbXW)@a9b`DN1ZlHp#0-%s$W@2GxWn}?+ zm$4Qo&%h$cDx_%W$R-?^$gWfnAuRebI{N?Mn?>~P20{M#(7^yIT)n9@@e=)JJFtf0O{Kd#r4#doYEUb!#Y(kEK z?1_cKN=A(wB2E(*Zam1TY#j7KG^yw!mzavlL)DKUuYr9=oX48T@)_J?2!GvT;9+J2 zMjo>ugFVB~e_a|2m`3rC4FmrFHyPe+3u^!-Pt_9Fh?11Vl2ohYqEsLSEX$0HbPWx3 z4UIz#&8>`$txQd|4GgRd3=+3|0F`724Y~O#nQ4`94F(n=Mg~?U##V-w5Dm-1e}QTj zDUc1R6`5&PPMIae0jWj7iMa(isSFl63Lqr()=nL$N)fKg1?Y;9%v_L5FiKU=O^K(0 ziiP2dJ#!P&Q+-nN(n~TJ42|k9FWm~17DSZ}&rAWzn#NCU(g#XP!X<43yzR8$?BF-3_nHNRw*csB{mT2pn0IQK!q4; z4@%Uj(x7wIjT)wy_+&%P+@SlkxfmC23rd=W1{*N+APzPS)C6X}&4t#uWsTR!F>)t( zG9ehD$A=PL8NX6)fyS7rOBDUm32A|O@yuyVW0IS9cz*!_jjgFJeOCz&c@rPNPG-7f zb}X>Q;|g&o-E&J8XMvx_6gFhCz5_rajIEdq2?)fDLxM6zV>Tk_=-^W^bC$#h2#_jw z3Il9JGT=DRvC+q9`Lgn5#?b;0Dp?F@uu%XjB}M*Na^z6ec^;{1R#VraHA_xebIz9M z8C6XznSWX~Gq+;Z#gnUNH+L^y3m3r=rX?2(#Y-u*V$h1v6}>AwYCZUnBOQ9=!wx^n zQ5({yrKT-6Yu-w$ox5~w|DL;r?!EMS(uq_$)2U}Z?ew#pbs*PT@5p^ljW)GOEG<8~Q-j&;Ed%nb000$9L_t&t*JEIy82m@0$&er{Knnl>N%;x)T;x0M00000 LNkvXXu0mjf$BupF diff --git a/mods/ITEMS/mcl_signs/textures/_h.png b/mods/ITEMS/mcl_signs/textures/_h.png index bd6f1891c030f1d24e8d159912c139d5ca4ca7a7..b4c9cf2cb2775aa3466c88989a55de6c03e36053 100644 GIT binary patch literal 1919 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz!2%>-$FVF0QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fIC2*WiSG=MS%1KAYKB*9AKyeR0>iJquo7y0~Cz(3=Q-w7>o=IEv*cUt&9v63=OPI z4Xlhzk=)h*)CF@J$OxF*xPWYCs2f1;XG3C(LfIfcFfu{>C;-w6Wfy~@4+tP``+wvA z0|o&vH%~X9MIdJaiT}45oEbRS*x1=vIoR3RIXOAFctm)4xVd>Gg@pMFmiHo@^JG=@bXF+Dat4skqrJH zU=ZX0x~PGfQHg;`kdaxC@&6G9d7wL48NmSJ6_7`nSy&0Dr^+rDGxu0w~996fgY#K}{aE?>EN?fQ+Iw;n!v z{N(Ag=PzEq`uOSdm#^Qx|M>X}xYE#}NLy z#lXYN2#h>tK?ZwgwG9lc3=9&te8@u4kei>9nN|tcU|!5rT|6kRX39btPGvuKC{QYj?RC&&up-+yNK zhC+!vBsI?^=ZKO@DqJz}cq_M_V%qJkvJfvx#8`LBqMyeue8lxVc=yp;>|#A~c@0IlQ^;>II&#uCx!m3G%ZljX`Q?R4 zO!2uq#cs~-bAOK8?rO@2R1RlTA6wZYC|(Gq>}eU*@KcO!*MjQUVgs=bnipydREQDH ziR|oDY0}tzqlP6W9&G5D8{)oXF2;r1hLTpL$p$<|->w!H4B zYGTRMvVWPm6{{|uTs^zFd+}Ph2(B6I_L{3=&% zNS~IPw%n|FE3J0!(sBHI?iRZD((9msR2pgM$is$@GU`OGO_^!x%+sdNGV7fhon!k# zjo!%pni?Hyi&)xv_Mir_*@p>Q*NHA>AjXM6+7a`)JPYc zPKy`_ra`Qe?(81qe#tFp`Ymq!Gjd^}`!C3ah3=61k=rNKdfi_X*?`t5TrrI@aj`*R zcxA8aoAk$h_*(;ChQ17a8TvmMnz%0T=Q4Z;mQt0#B$b6a00006VoOIv0RI600RN!9 zrva0ZYaUDE0~HA}8TzT&&j0`bDM>^@R2b7^U?2zlhhm(PD1Z@*1S2jT{}~t<7?^OG hjaTA7E(cHv004Vt2m#~)kK+IU002ovPDHLkV1l%OjfMaK diff --git a/mods/ITEMS/mcl_signs/textures/_h_.png b/mods/ITEMS/mcl_signs/textures/_h_.png index 08cb5d8b03f6088c103e53b6b41ff56e78e4350a..cdea246450df3cec305218ad4c0bbf92468e3d51 100644 GIT binary patch literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz!2%>-$FVF0QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fI)Bu8WK%P{_#B#W95AdT*~I7lQ%Mp`@4p_rKw5>*(W6u; zW+t9iu@#AzN=*Jlou2r$yow?03%lgJyOwT1-Kr(75hW>!C8<`)MX5lF!N|bKNY~In z*U&h`(A>({*viyY+rYrez#wtUhb$Bgx%nxXX_asd1{NVk2397rREdy#` N@O1TaS?83{1ON`?Q)&PJ delta 67 zcmZ3*6gEN9mW_dd!7==d9*~mtba4!+U`$@1_k;iFj2a$J6F#Qo;MQ=a{ZFqjGc;NV VzUN$977kR%;OXk;vd$@?2>^Ny6W{;< diff --git a/mods/ITEMS/mcl_signs/textures/_ha.png b/mods/ITEMS/mcl_signs/textures/_ha.png index 946ae4e5ec708d57b935db70d8547198e6ed4d3a..48323a28f3d243e7ff7e74d49ccd50d1e8cab96c 100644 GIT binary patch literal 283 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TSkg}(XV+hCfT>u3F+6QIe8al4_M)lnSI6j0}v7bPWx34UIz#&8>`$txQd|4GgRd v3=+3|$U@POo1c=IRteW&U=dB~g*?ZbE@*jX(md6ibwfkD10GA;uOTm;zcTm10pU zg0HHbK}AJtr=z8n);dt*>-1-Da_;?h&v)+q zzTITb%9P0o3Q|J?fPzi5Ou?%Vhg>4SGq~$^;aT8{Nsa-iDVKFPxFjzL+fbDWH6d2<73+9;i^7u+!lS>NR0Wt8bp{QdJOyZ zV$K7>>+$Hr)%M~7&M+Q5+Rz1b6?`Vev+?*KP9~nvWrzcbNF){sC1SByDwU9OwL&hF z$%m?Z2dal_{6`GeXtlcF@K9Y~Sddn$j~o?7(MF@uKQ#J>?>SXz-Asnvjv9 z`cb2e5zj|PMVsO**7$@(cGA?;m#3vopD}YzhBMPO*FA5s=k=W2yd_KDE?)jl$%>Vw zYuByc@ZQEvo8RBQV`ufQ-5>1v@RLvX*M9c-fiDgotv~klHx0*6oIHKz?78pHU$}Uw z@#kwz*Kgdsb^Di=yZ7$@(fa3uwsy`JfnRFh=yCRhFD3TH6A1VMG3Sfm<#NWA0$~6x zQpMQBjzzwK%rc2Oc1=~y5owTNO0!>jwwD|fY-|i^;jDE#dpcu9&*ZG%*dt$;K+Y%d z%i}A-3~gPd`fa>tigpBD>W%f^wGXbln{y4pY8wJFsqto~?5DPIix4#E`Ay`QD-$9* z#x?IN&L8F~th#N_IJhn)aYmOnY;&Bpc-1)NxrFPl44f!br+E>`-W>EG@>t;jW96)A z-oxGkbLEYs);;TTE>uU0NuQ;3$FDykXk_!pBdB@xo-xn-%g9+!>A__})thKK`h%ee}$>qQhG|chog)aU*E;D@R~WvQsI9-QJ->ur{u$ z@Nz@fde*K>JC8t6*Hm%K-r9noT9qQ+X0xh^W}(_Pam0~_Q3y`Noi+dF7ur=;dU)%; zO=g#Wn|^6YXVFds-kP*C_o1K8mHZ$7%`@;v7a?{<<(K%69^$c1_hdLcPSc!hCth$@ zV3@HqHI_D{(vc>E!4wfOhN4Uq<=EfM^@K+SSqn1UnM?W$sHjwiG8qjfI=ZJ|S6VyQ zdNte$&OCRfDc0>-oZ`%$>d0F7niHbJblg{UXF@1u1@yBlSVgKki&OHC{-k+#Hty5l z+fQb*94_aJ&iO9ST%ei4Gu5>?t^9jB&7Fa>5%vv5&*9|I{^ZmJnVwunwi6y}itH*& PGA03Qoov|~JGaB^>EX>4U6ba`-PAZ2)IW&i+q+U=KZaw91W zhW~SlJpz&tg5&U|s=dJ;e_!Yxdz^TuHmUhJjoq}>AS68!Bw_vYw}-!QQ7$PYwUTSj z5m&0Ia>GN3*LC$2)45-l-aWm_Lmc-DhDgxM^)s(~e1lw{6Mrn-^8P9hb}Qm?E24+u zbID$LKi}iZtw{Ki)BQWtdtOUFxpRMc+-h&-AAcu9Fs4GEaNs2*5%;oJ5m+Eq8hXK< zg?LLMo<-7;r}wc7xxEkGFoptM3Z&1O?lQ5DA$_O() zweU{(o%T@VzEhVdmMcz33)sawr(wn>x9=DQAmn#U^?$_owD42j#Gk+l2f}r!Ys4SwrC-hR$999vQ<`H&5>&^o?Jb@w0j(I9qDO4W1sF-x*hody9n1~<314s zQGXxOJvJ}N2K4|SP`WAtk$S6w+yXyelX%pcu)%^7rVvd{wp3Siq@EJ~Xqea1-4^BG z*o8+jk4sXW+BHw=P-9cP&IRqBTdiVw);g2LhSLKd8pwCVciirVcm96E-4gJP$8VMu zn-%RTJ0brD=nv7+#k>gla3LbTtYf4^a$G#BSwXI zE!EY|NM{WAv(kl600000 LNkvXXu0mjf8Gk^; diff --git a/mods/ITEMS/mcl_signs/textures/_i.png b/mods/ITEMS/mcl_signs/textures/_i.png index 9ba3e01a329af8d25272c896dda95d8f325cfdaf..4abe22825e871af661013273d362104e16f82e0c 100644 GIT binary patch literal 293 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TSkglhTV+hCf(zA|S3<^BV2Uq_8Uu+{H*!pZsi_S`mNIRY@ z)*jorO*5iSAN|Rclf%rxC$4yYB~YVkiEBhjN@7W>RdP`(kYX@0Ff!6LG|)9P4ly*h zGB&m{HPtpSure@6-0~p{MMG|WN@iLmT!Vo{h>?MniLsTTB}Bur@LwQ*GkCiCxvXS4<2`ud@AilGgPA PDq-++^>bP0l+XkK`D_to diff --git a/mods/ITEMS/mcl_signs/textures/_i_.png b/mods/ITEMS/mcl_signs/textures/_i_.png index ffe090aa8e0136eb5efd103ba306fa00874b02ff..e8e5e1b58f2dd75bdb3f967e8152f1f2e232227d 100644 GIT binary patch literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TSkcOv=V+hCf8&)DEmQ1_9P zKmE&i`=c1x9oYro>zjC2hRbPbI|49%^Kjjc>g zwG9lc3=9&te8@u4kei>9nN|tcU|zopr00hEJ Ah^XK>xj)n&TdL5a9sSFG!+j&37?sRkn PDq-++^>bP0l+XkKDqIr= diff --git a/mods/ITEMS/mcl_signs/textures/_i_acute.png b/mods/ITEMS/mcl_signs/textures/_i_acute.png index 20bdafb62980f1139aff953d1720a53bc505d1b2..b1ceff3436c89e6ad30d647b1a2405d0b50afa37 100644 GIT binary patch literal 1853 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}Tx$Os!Gv4{Z$rs`$-wJfOOKOB?ny0500|(F$ zAZBD?U<9&2j%I|id4OytMrHXx<^MmBoJCPpAb7&$pPdANBbczGp^6lD~RNCy88FbHx0 zU6jSlsKme|$jB_n`2PrlJkXu2j9>utBN#9;F|)9;v2$>8aRU`>6##`4GZPClD=Q1o zyNtC!c?K3iRv|@0M>gTWM0TY@5u?V53ptdXHXalWy7)oGIH{I3zSIJR&kGIVCkMJtH%#xTLhKyrQzIxuvzOy`!^h(&Q;q zr%j(RbJn88OO`HMzGCI7O`ErD-L`$l&RvHNA31vL_=%IJE?vHI_1g6tH*Y zWKS#c@69{;yl(wme1fGL-^|!0}nGJ zF!GoM8SEK;{_E0Mz%+`7Y#8wWzscaz`eQLLd8(GUMwFx^mZVxG7o`FzU|D8lq-$uP zYiJx|Xl`X}Y-MVyZD3$!V34@w1E?fJXvob^$xN$+YcQ|~F*2|+F}5^_z4oEEuPRuRHNoBCmQ2-&Kw|444Rf=#`EEmeP`LRW zs8|@T*fTdVJ=G^QFTEs#!O*Dw^3tt9X+c!!@XQpTtZDqzCVil!BwR8$Kdq!Zu_%=R WsVMjCaRJtQ3=E#GelF{r5}E)}xc$=r delta 843 zcmV-R1GN0T4&Mfl8Gi-<0063BcP#(_0@Hd_SaechcOY!RwJb#XUg)3@{zYgA`_Yu2Tk6hkE5n?_H`6EV0PWmC2hZ}yI5j{P>y%32h zzLuBR&DnjU5nN%Ic3c`TV7{W zHL+xB*?-L3id7d+uAbf8y?8BL1V@;bTr3nXrPK zq)$stTW;38l~y}<>Dc}~cMIKn>2=URDvdOBT=4sPsne{=9&bED{ zMjzyUO^pt?3XKr6m>vexoWCL2eaK$vr#K8uI z;g!9vZ_;nK;lCRAHuP=i+tB)}m>s`%;csp1cBK%7AC>?B010qNS#tmYE+YT{E+YYW zrICIMLE{4z4hk9Qd2_J<0019JL_t&t*JEHH0{kZ^fK%Ilyyh`slf^2?NVKiQ0|2j^ V1^{@C761SM002ovPDHLkV1jyAgEasE diff --git a/mods/ITEMS/mcl_signs/textures/_i_acute_.png b/mods/ITEMS/mcl_signs/textures/_i_acute_.png index 4cdc943d9c206194d9fe4cf81df8560f1010f7ac..d59d863985c5affb13b43574469367d9e9c1bedb 100644 GIT binary patch literal 1856 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TXudGpH{k_x%_9iq-903Gj=8sVAd>8ZuQ z0W=4Q8Ce(@fh>@_8KG<*Ae)JinSmKd=K--4BP&=<36L!fW!C`N8bCE5y-YxC$jHP1 z(g*Y}gAtG|0;DGZ@e&~B07D(1QjlsG?e6ItpkSnDXrO1oU}RuuX=Pw+Wn`#eXli9> zU}b8C$Q2?YD$~FeaAIxq4Z~TA2 zAmHWZ=?1h2Wic}PKf)jnbSEn#7y$hU28>M1EUawo9GqO-Km}U`Kq1A<#KO$V z$^!H*V=Yjgfklv2NYT)dO*k--U8zvSsBz*#4rQl}2StM}eo!$^Dr(~75)+q@lu}hw z*U;25F*P%{u(Wb^admU|@bn4}2@MO6h>S{3Nli=7$jmA(DJ?6nsH|#kX>Duo=Zc#u=sIOv0DQqe^&F%^@CsvkjK1N)3Pk2R6yGq}eP{<_7$ z!^{YbJZ3=#dxoF?x-=Frjp8922K@hTG8}(xwFj6yRZCnWN>UO_QmvAUQh^k(EHg6F zH8jvQG!8K|w=y=iGBwpUFt9Q(NZj%PRFWYy0h2e@la}(23eNyw%OEMS?jp{Ei-3pWzM3oNDOaaQ8#!qe12TDr9C4=+RO3D+9 ZQW=nna?c(YVAaRK;OXk;vd$@?2>`Xc{XqZ# delta 844 zcmV-S1GD_V4&nxo8Gi-<0063BcP#(_0@Zp{SaechcOY@z}uyo|tyFA!2 z#C{CX!|*P$Jg@Q5^J7T(meY9;<;<(;Wjp8LcFZ2*pYO>KjIOXJ9C!#xMC;3oU7|kRzy$FZ$F5{ z6kp3r?B?t~=YP0&S5ro$ayXm%v6Vf7;)PJko|aJ!k78`Q7F5R;8;Et#yii-9LX0?0 zO4O;+q_O)(4NFWs*w8aK#C^$Jj0?97C9O)64S0GG2b%_J0x>_DBnbFS1SihjolX@Pa|%4sZPky|aafPaAIiK*`R?iyb5Ccc1O%yfs@ zvB4Uz+r*{x%q`iR1$r7&IFQNuF@O-kw_-6QAP_SWn=(aXHX_8)!KY&7EQv1=AXV-Z zCfJB%z;Rx_F~?}@vhpp))dCPW9AZF&0|ZzpDe}jXBZsQ4`$$!@nz|OPS#rvnbGE$h zsA^)#)PJ&>xfQD}o?Jbde!o&ob+S8l7YN zMvXqm{hAsbYKvIfdiJCSvDpt3w5}6f%s`A2fq%Fy0!V0H%%W3DyvQwPu`mvWGN_R* zIGq+T5KMzuCq39b$^DXB(Dbjk@jsCZ3*G-gE-ZA1+|S&;pw{dDN0AL^ox&Bz_+1qL*IthSH1GWRb7k}TyhmLVaqX@cwx$7gR-xBTR0(|4QC#e0AEnukD_yQD^Vrg?g5F>nA4 z0b)iL21XzY| zJ4mb5!I1}Z+y5K?A20}b zxp}$)Edn_cNc_Le;LO0m#>URZ%E8Xg&dJHa#UsMY!_CbjDJ0AX!XqN1l2cOC(lau%ic3n%$}1|Xnp;}i+B-VCCQY6) zb=ve9GiNPYykzOJeA&aSFc^aar4&0M~|O8 zefIpt%U2&ieg5+G+xH(oe}VkP2#i!1!0InSpud<{SeRMZLH=T7DhFa_K^9g;LpCAD zK=#B!VI`wR4iTq`3pXC*R5lL!AevNkkxNX)?MniLsTTB}Bur@L!<1 zMG9m?YDH$6l~ZO(aX@NOaAIyjPAY?ijsge?y|q&Zs#1ijasj#`Br_M}5{y!{!e}R` zlop07_RLL8PxVR7OE1Y_Ff^*aymTv2S`bw_JTnC-YZ^bbNgpUF36~7cPb(=;EJ|fS WD#|^3T!8f+1B0ilpUXO@geCwK@BRG% delta 845 zcmV-T1G4@z}uyo|tyFA!2 z#C{CX!|*P$Jg@Q5^J7T(meY9;<;<(;Wjp8LcFZ2*pYO>KjIOXJ9C!#xMC;3oU7|kRzy$FZ$F5{ z6kp3r?B?t~=YP0&S5ro$ayXm%v6Vf7;)PJko|aJ!k78`Q7F5R;8;Et#yii-9LX0?0 zO4O;+q_O)(4NFWs*w8aK#C^$Jj0?97C9O)64S0GG2b%_J0x>_DBnbFS1SihjolX@Pa|%4sZPky|aafPaAIiK*`R?iyb5Ccc1O%yfs@ zvB4Uz+r*{x%q`iR1$r7&IFQNuF@O-kw_-6QAP_SWn=(aXHX_8)!KY&7EQv1=AXV-Z zCfFeF0mpgy#vG%q%gVPHR|`O>WHF$@0RpU)6!~MxkwaD2eWa>cO;v`dhsP!y7bDIU4E6T zHl$BWOivcj-9(J$DP;d+Bx1Kq`$ibmU>fM;Ub@*QU%gb>?Z)XPNaujn1)s zqedU(eoc)IwM8s#J$q7v*zAW1TGxp#W+29iK!4m80VFgpX3;4nUgQ?DSQv*w8PrG@ zoKA}v2&O@-lOF7zr*p>IR$t73M1+J(OXfVg(2G}V+q00009a7bBm001r{001r{ z0g-$SL*oM#4hkj577sQ6001FLL_t&t*JEHH0RH0=_|HI$*8h0TWWpwkRgjS=8%YBI Xc;E*ACs$hi00000NkvXXu0mjf5HpLP diff --git a/mods/ITEMS/mcl_signs/textures/_i_circumflex_.png b/mods/ITEMS/mcl_signs/textures/_i_circumflex_.png index dc46f3ff55b170ee73561da372b24f19169a3681..a15c15336d0f7dba0030f597278c0a0a0c142494 100644 GIT binary patch literal 1853 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}T_vt~h7F7yhcq}PW}PfMzpY~R&Tam?8Ll&M^Zl24bPMQmm(&Q)G*3@01`ePh zK+MR(zzAf49L)%2^8ndQjLZzoKspbIr5IVkYD$1?X(+n}$kqU=0qJD|VnaqI29Q3W zXBmuuY!M(m0f?6XF$Wmx0F{DN!)SL;-v9+8JwpRM3kD+tLrW_IV=E&=1w&ISLqi}N z$!%FcT`;$SjDWd~3&>`Mx`7R-h7E}=3T1=*z{mvgqX0-Rlx+--Jeb@5-}wK4LBPw+ z(+y}5$eBRm|7`|m1`akhb~aWHc6N47P7W>}5ndi{ZXQV?VSW)=DS0_rDH$0B6+LwY zB^_lM84Yty9RouX6BBuLOIr&g8$DwaBak7CoSd9I+&mJzyb?x=GKxkdgZ~E@1UY~% z%3@|zVqg+vWEN!ne}q9E=uTEfFaY`y3>cZ1Sy&0Dr^+rDGxu0w~996fgY#K}{aE?>EN?fQ+Iw;n!v{N(Ag z=PzEq`uOSdm#^Qx|M>X}8f2KE_o9%~}YXK;@p{B?_ghnW!= zdCYv$V{_x$}A}kNG%FZ%q_@CWw6ju03o5bcIrS?if~mfKv#rh=7L;;QL4^9S*Z$C zEDTrdnVXoN>XVw6UXsCJXjFfB=~ke$AgXkDW(rW&G=6H6K2TB;E*YGkR#Ki=l*)iq VlzaBL0P8&l22WQ%mvv4FO#qwk{UiVY delta 846 zcmV-U1F`(Q4&w%p8Gi-<0063BcP#(_0@Qj`SaechcOYYDh{PR5-lF=3ZgaZ#DiFo>oB3OYG zspthy7UHE*j0v*!U*|65`gQUiqmSIhdi3(1iV*WL$R9a6deRTQJi_qXis%{n?F(!n z#n<+dyE(hhIe+fm)s&H`9L}bGY-NvNcp;T{HZsKUQH*U%fjG9SLqT(zw?B$z`A(VG?uZ*ttYI2fPd!6sqXx42`_aMU%)PAy3_2~ zV2#)9;!=9nmTb-fJB=wE$YlLEK#CAsu^7~HqL@+Glqnjs5h0HbJ{2oxNqm6-sdA?< z!A2wlj`NC*IY!%-m2Wk!7JyL6VnBlf1Xw94>c^6!hN`anNL90%x)!Zja>|->w!H4B zYGTRMvVWPm6{{|uTs^zFd+}Ph2(B6I_L{3=&% zD4&*^w%n|FE3J0!(sBHI?iRZD((9msQW|OK$is$@GU`OFO_^!x%+sdNGV6mHon!k( zjXuczni?Hyi&)xr_M`^2*$)@At`l9%K#UWCxPL7IC}>{HqEkw|$Sr2EFb;(>sF5x> zofa_=OoLb_J=i_T{gPYI^sl(_KamRy-Ty%@EOdw5&)mMC*6aR7kqu~_!j;n~6Bio{ zhFA8wev^K?5C7G{x1(=I-;UP5irMkkF8mEqzjmTWK%PGU000SaNLh0L04^f{04^f| zc#(Y!MB@V$4hsa5WG*QH001IML_t&t*JEHnfd33=;6E-2IAFvpi!8~6O_q2;f)1GWRb7k}Tyx2PfatwdO~F?siFy@J#dc)MDTO8Ue(N zEDVf57RbqrP&N;c&BVyezzn4GfLMx=6|ANN$d-n(Yk+JGpc;@~CLlIsWMTm61A3Lg z2*?%z(i4Dq2@rFDp$GE^`$wK6oYGPFQ) zTNY3k%xxeeU~c0AvYDZ7U<0aQLt=|U*&shKGC}+(0MZL(8?yi=$VSiD#0X>vBPS;(4>yklFRz4=qKu*u$>9G120;#> zi?Wy*l^B==8JPtc{~uwH2fCA$5ey(+0eO^}g_Vt+gOiIJs9>uAD5RK~SeRK^S%BVU ztOd$5un4jWDH=Mm2?r*!D;0_uHBMZ}q3pErplHy=4=Tnkx|JhscGpMnOVgprDf$6l~v6xt!?ccon4bAPnkMx z`iz;g7A;<~blLJ1D_3pWyk+aQ?K^hvI&}ER(PPI?oIG{u@|COCuHU$M>*1rvPo6$| z{^I4UkDoq&`TFhqkDtFl{$d11Dhxn;hUPCppud<{SeRMZLH=T7DhGL7kcCyzkWI)j zkUgUvB{QuOuED?}#K^$P#MsKv5~5*Q_%Be+ zA_cM`wIVak$|%CzZiMM*)O{-rA`HRVl(%xd2@el9>x~2}Y^9cF(s? zpkiUTV$a;f^i-eJy!4U`21BFz%S*Qcr3F!?!!uKWvZnD@z}uyo|tyFA!2 z#C{CX!|*P$Jg@Q5^J7T(meY9;<;<(;Wjp8LcFZ2*pYO>KjIOXJ9C!#xMC;3oUsWs1gZM2Mq%ds@y3| zuo20CoU-PeEw4MO znpiTmY=35M#j1-ZSI=(lUc44Af-6i*E*6THQfh_M3ey#{D>Q1o_>wDKdgaS5zsgk` z(x;`SEjMf4N~@i_bR7SlyM^w(^g3uDl|~vm^048fj5?8PQ)Zev^R(%+%=(~4=h(hc zqYrYwrbdU_B9^wEJ*h!#_QM3N>qHkb5aUE3Zhwma5}FsY=#&yKa*J6kj6 V1^}z&hams}002ovPDHLkV1l@NkWl~t diff --git a/mods/ITEMS/mcl_signs/textures/_i_grave_.png b/mods/ITEMS/mcl_signs/textures/_i_grave_.png index 1e22126791698a919a29b070ea8dc01555a03930..7c68cb968c9f5d7b14111b6e632f2a7ac7032e11 100644 GIT binary patch literal 1857 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TnA40%ArM21XzY|J4mb5!4U{^+y5K? zA20}bxp}$)Edn_cNc_Le;LO0m#>URZ%E8Xg&dJHa#UsMY!_CbjDJ0AX!XqN1l2cOC(lau%ic3n%$}1|Xnp;}i+B-VC zCQY6)b=ve9GiNPYykzOJeA&aSFc^aar4&0 zM~|O8efIpt%U2&ieg5+G+xH(oe}VkP2#i!1!0InSpud<{SeRMZLH=T7DhFa_K^9g; zLpCADK=#B!VI`wR4iTq`3pXC*R5lL!AevNkkxNX)UvB{QuOuED?}#0XgO8Cw}zLNqK3 z{{^aFq(C;LR%E7GIc1g<2c#ASC*~I9q%v6OD1eaATRU~2Dn+;|7oaObGIK#L!6;Ri zpD~I8Di($-_RLL8PxVR7OE1Y_Ff^*aymTv2S`bw_JTnC-YZ^bbNgpUF36~7cPb(=; aEJ|fSD#|^3T!3{S1B0ilpUXO@geCx3JpPmb delta 849 zcmV-X1FrnR4(0}s8Gi-<0063BcP#(_0@Qj`SaechcOY@z}uyo|tyFA!2 z#C{CX!|*P$Jg@Q5^J7T(meY9;<;<(;Wjp8LcFZ2*pYO>KjIOXJ9C!#xMC;3oUv&pEvSwyHW2Hed7-vIg&1+1 zl&DjsNn`ho8kU%Nu%Tyei2IVc7#D6EN?MgB8}RfX4mJ(c1Y&-yg|^?a{WWrU?gULH z7$eO1sfMqFzf&KE=3J>u6#b49(gN$^mD5Y1GWRb7k}T ze|#CcB=frxBb8I{{e%5 zmz$>>&?1mCfyDpY49*N3Y;5dotQ_p@?3|n&Ts$JYJlxzol0w4#BC=BQaIzCa$}%z<=9)SNh9)K^^6Hkh7DhID#wJD}Ll`+ZIeEBwBzSoxj1*-QjYtOn4=@OF z09};D%&5e`B*@4t$oT&VgFMiktc+j)^dlHBGBLBTvaxe;a&ZF{Y!v{76f+YGGb<|# z(7TMaKzRlhK~^C}Lq|5@z(jVXLJ_0Ji3>TDoi-j64Z8S2#W<;`iIYoATtZSxRZU$( zQ_IBE%-q7#%Gt%$&E3P(D>x)HEIcAIDmf)JEj=SMtGJ}Jth}PKs=1}Lt-YhOYtrN? zQ>RUzF>}_U#Y>hhTfSoDs!f}>Y~8kf$Ie}c4j(ys?D&b3r!HN-a`oEv8#iw~eDwIq z(`V0LynOZX)8{W=zkUDl^B2fpjKD~R0j&NK1p14Kg@u`g9po=Yrg9)=7Gz;nG-MNU z3}jC%6jm~7?MniLsTTB}Bur@L!8U=cdFdq?42DMamzQn@N(-V&hi9e$WliI!Ht7Q;CE=36`DrEPiAAXl XNJY74j|;HkV_@)f^>bP0l+XkKlfL`H delta 844 zcmV-S1GD_T4)F$%8Gi-<0063BcP#(_0@8X^SaechcOYy&72Pd8%R_AY1w$lg<$BCx>wj0s^*+GTmLJdZVA~M; zHbghWXOZQ3^|zjHL&BGw_H!tETul$l*%!BMb{l_vPKID~g+1ZGLr5a-zPt!#AVn%# z!JUP8Nh11+cF8}8UC8zQ;N5yJv5R%fVIm=h*S=HQGb?l_MmtmlyVNssD?|?x3d;h#}XTebU5nN%Ic3c`TV7{W zHL+xB*?-L3id7d+uAbf8y?8BL1V@;bTr3nXrPKDc}~cMIKn>2=URDvdOBT=4sPsne|4E_O^YZ zMla+(r$(FFB9=})yHkVM?2idr$B8axAjXM6+y{D4^ z0FiARLgND!2{QnP*+5PJ001CKL_t&t*JEHH2mHq?%ZR3e5vO)0Y}zRlgjw*Ppf3PC W6$J(y#D*XM00001GWRb7k}TSkhZ6bV+hCfUO_QmvAUQh^kMk%5tsuAzahp>c?zxs|c8 zm8q$=fq|8QLE@GVStuHE^HVa@D&ZOoEJBP7tW1op3@srVmWBTU`I^Dg)z4*}Q$iB} DMfXfm delta 64 zcmZ3?6g)xFij9GRVO2u8E|8M)ba4!+U`$@X_oKhdP}Q*XfFuj6q3$9+1_mBi?yn1f S#h3wAF?hQAxvX1GWRb7k}TSkb$R*V+hCf3pXlQ@LxX$Dzy3ATCUR;W z;}A}5(P)tTGheV>w19!3^#i9!#0evi!&FOLBT7;dOH!?pi&B9UgOP!ek*=YEuAy;= zp}Cc@v6ZQ*wt<0_fkEPy4_PQ0a`RI%(<FVdQ I&MBb@0463-TL1t6 delta 69 zcmZ3%6fr^4o{fQlVO2u8E|8M$zklT5}gq<_A{wL4ylw@Fd XRKx$VcIjUcpi%};S3j3^P61GWRb7k}T`sfGcI01HI`f#8B3s$k*AAe2*>r- zvyNN`90ZsS7Tx$?e^X{tG53+lX1vSH9

joidU8GuPD8^$Eu{xPI=gU`RgADfa1b z=t7{ITv8)E(>y)37&w4N0Wl*B10#?Hat!gJF)}kS1L-^hz%K;7(n`3fY=Dg76H-|fOrWIbAX`^P$@_?jCS|*4Nx%BGc?e%U@$T; zw6roXwlXqQFf_0-HMBA`LvmXdP#4T?AR}OI;{vjop>ALUs$oN7i$d8TKQJ;u{3rm@ z3uPOFqXp)+|2O_WU=Z+f^K=7R1ac;j_=$VSiD#0X>vBPS;(4>ykl zFRz4=qKu*u$>9G120;#>i?Wy*l^B==8JPtc{~uwH2fCA$5e$HS1OrAUW)@a9b`DN1 zZlHp#0-%s$W@2GxWn}?+m$4Qo&%h$cDx_%W$R-?^$gWfnAuRebI{N?Mn?>~P20{M#(7^yIT)n9@@e=)JJFtf0O z{Kd#r4#doYEUb!#Y(kEK?1_cKN=A(wB2E(*Zam1TY#j7KG^yw!mzavlL)DKUuYr9= zoX48T@)_J?2!GvT;9+J2Mjo>ugFVB~e_a|2m`3rC4FmrFHyL)n+_N5-JXK3vBT7;d zOH!?pi&B9Uuq-n&(ls>DH8c(}G`BJ~wlX! delta 824 zcmV-81IPTA4)+F-BYy(adQ@0+Qek%>aB^>EX>4U6ba`-PAZ2)IW&i+q+U=HGvgIZW zMgJK^hJYl5#BeZ=s>~q6&j!=y)i+(0PChS`4VHxjS^_(azy6%z4-^tjA*p#TIY*RK zQsIh@$GhAu#kB8t(bLkqJj8ZhFhqh@?#DcieuZ4011uf+^?xo8b_}r}L-a7bi!9Hp zfAstq629eho?m_WFC}j`JsD?|?w_OXWV~GvKI%r;~El?pwG$$qMRB6)KZKH-M zCLU~PnH%E1WG=>q+lG=>rO5_7J&1!%12ut|A9JDYw`_ln9G*KtlL^KMBYvvkE8*|d zhoL!F>Jml28dErs$@(#X5W%-%G9(}nGY$#L6ph)45Jv}}ikY({zCeIfxl@>6Ba#8fdHKc| zqpi!zw-`qYK&WIfpuq+Ltdtb_W66<2Ro8i>s##54i`FbTWz9KTUT0J_v1Dr5%-o7q z7f-I9-GAJ@cr9E6N0^peEEF%L)C#8+rYlBQXw-V~C0Dxi%9mY!m8&+SPfJZ(Zq~e& zRy%j;*#13t3*CF^bbjSjU% zENwk|QiIs+hY4E8i7sX!#)&}O76BwQFJ{pxC1YOX7PD9wn?f1XNEe(=ix>!|L9CM= z?4IO)$t`I5SKRoY$c2UO{~#9@xrn zzZ&>9^lj+d(E6*G9lv(rZ*A0erSG1c%#krHO5+0+2{RCyZcr)!001aSL_t&t*JEHH z02mqm!$}4PhW}8^z`*by#y}HgU|?YQ&x9;S0000Mu?zXvflZqL00001GWRb7k}TSkdmj1V+hCf3pXlSZhU1GWRb7k}TSkfx`LV+hCfm@vQ#X z|AJ;o&PYavo}Fx>2~Xz#25M3*ag8WRNi0dVN-jzTQVd20Mn<}Z2D*mEA%^Bw#>Q5r zrrHJuRt5%%TRvo=Xvob^$xN$+YcQ|~F*2|+F}5h^T$2Ghm-9U$G>zI?f`KHhC|0Vey){t RxCT_j;OXk;vd$@?2>>Q25`h2! diff --git a/mods/ITEMS/mcl_signs/textures/_lt.png b/mods/ITEMS/mcl_signs/textures/_lt.png index 54295121ea5a25b72bbb81978df98aee5649543f..a1b9d2ff8e93d895a6ee838e28f10e73ee763ff3 100644 GIT binary patch literal 1808 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}T`sfGcI01HI`f#8B3s$wx^3@2*>r_ zGaGps6a)@C%>G+$##(hzF(@|i=nUPs90|ELVUO)o58RJWU>2FnF2c+)^90Z_E~yco zX`Y^13>-i+fS8emff2|8xq}hP<^i&q7?~NEfpi`aOEI#7)sz6)(ol8{kgWk!1JcU` z#D_WTR(nVgxdTk&}~?hnq)&msi3_QAW{- zWbpq0gCGacMOn;@N(@YbjLd?J|Bo=p1Kr8W2nIkuf&n8FGYcylI|nBhH&DS=0Z>RW zGqEtUva$fZ%UBDPXJ8Rz6;d>GWD^cdWLGK_F>0K+kVDyN<3Z7&iyu^slZu)+xx~aJ zB&Af<)HO7Muc{znEB9m|56C{$gY*2V!PH z7FI<=HX+AA_QXPAC8I_T5vPd@Hy-3vHV*nAnpAX=OH9S&q3TDF*T6m_&SOnv`3&wc zguiYv@Gvt1Bac~-!Jgsgzb=ghOrv2Nn z%Q7P)T|)z1L*o!bb1P$GD^pW#0|P4qgTyT#KqVPMLvDUbW?Cg&gMmeek%5(ov6Z1E zM8mT1U!dwj3S>iSMP{0nQ)WqVKx$ENVs1fBDuacN0tgAcwNnSGQiQ8=0lFe2GZ*9% zj8c_TE9@pvu`pb*XKrG8s!wWOdPxR@p;7(irCWj0f~eBrnJGY7)A*@P`anrZxMXmC dT1k0gQ7QvcQSRB};tN#7;OXk;vd$@?2>`X2?{feE delta 802 zcmV+-1Ks?P4&ernBYy(adQ@0+Qek%>aB^>EX>4U6ba`-PAZ2)IW&i+q+U=HGvgIZW zMgJK^hJYl5#BeZ=s>~q6&j!=y)i+(0PChS`4VHxjS^_(azy6%z4-^tjA*p#TIY*RK zQsIh@$GhAu#kB8t(bLkqJj8ZhFhqh@?#DcieuZ4011uf+^?xo8b_}r}L-a7bi!9Hp zfAstq629ehoG|!2NKEmyyu@zK?sJZN zbv0!~Du=VEAAd{PJt$rXrR-rD)o>~LwrfFkEU|%D2h9t$1uDdd=A=ZODoq-@ZPYNu z#Dfhjb3@#h%*D8H+fdS~G}(Zs2XT;Spe7LWV=lD)mhG>R!*eHSGQk*O#7{MRCH$TG zFf`{%U83lBoRAin7q6VgG#0sahZYdfJTcWB-(AB?-hadwu#1`QFgq4l<8_<3l%BaI zo3lVqV+sc{Sw994BKTHJh6Ds+#vwtOqA?p0;^^R0F>{v07YL9lcM211L^9wwFW(qr zv~^ke7UO6E2$d`bG}u6Zm69TVEID$h>N<~9HLIy>(V8WvtT|`P>x`-p#sn}53(uZ4@?2-A{_h2o`@TH&<9bj9cjjao0hB; zYUeH;+rQ^-p?fdA4jM?Mk%o>uZ1^anPUPB@nWoM>ZTc*;KB&>zwr|wvgWRvF(V@18 zrLAXAY7m?KFhT1$(ZvkJI1z~3B7lVE#Vk6d#AA!xVipTyQz(NP>4MW~5d*M0g*8*G~)vm2{RiFyosU!000t6L_t&t*JEHH g68y)_z|SEJ0AMl%{LIQM{Qv*}07*qoM6N<$f@XJwG5`Po diff --git a/mods/ITEMS/mcl_signs/textures/_m.png b/mods/ITEMS/mcl_signs/textures/_m.png index e4110bbb03996ea54ae61aa66cebd6e9e0c84b96..9c9c691d8f02532816bbc62ac50540b80302bec5 100644 GIT binary patch literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz!2%>-$FVF0QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fI)Bu8WK%P)NDH8c(}G`BJ~wlX!< zHZZU!?N&S%YYgfJYD@<);T3K0RVM; BPFVl| delta 65 zcmbQo6f!~5nvH>h!7==d9*~muba4!+U`$Rqz_>!^qkQjKj^_!BSE@Ls)-y1qt>)v& TIOe7bRL0=x>gTe~DWM4fW^@yW diff --git a/mods/ITEMS/mcl_signs/textures/_m_.png b/mods/ITEMS/mcl_signs/textures/_m_.png index ac516a053cd726a5905ed8c4585132069f1fa849..c7e9fa0443f0067127b7e752a1b6930aa2bc5520 100644 GIT binary patch literal 292 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TSkdCK|V+hCf)?Py{1_z!)i~j%LY`!J0Rk(#mP*kcoxmV)E zl?D#0G_7^3?;mBJafegTF@4cYpgz?S*NBpo#FA92CkWnhrFhVO2u8E|8M;ba4!+U`$>h^XK@n|NKWe%%(UjoT*_l*@%I`MuG23 TLxHR~P#J@#tDnm{r-UW|diE2g diff --git a/mods/ITEMS/mcl_signs/textures/_macron.png b/mods/ITEMS/mcl_signs/textures/_macron.png index ffb9dfd77c16545a593c7054314a9164f4b54932..738a4374eada562157956e792dc82b85a9f59c58 100644 GIT binary patch literal 1832 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TWic}PKf)jnbSEn#7y$ha z28>M1EUawo9GqO-Km}U`Kq1A<#KO$V$^!H*V=Yjgfklv2NYT)dO*k--U8zvSsBz*# z4rQl}2StM}eo!$^Dr(~75)+q@lu}hw*U;25F*P%{u(Wb^admU|@bn4}2@MO6h>S{3 zNli=7$jmA(DJ?6nsH|#kX>Duo=Zc#u=sIOv0DQqe^& zF%^@CsvkjK1N)3Pk2R6yGq}eP{<_7$!^{YbJZ3=#dxoF?x-=Frjp8922K@hTGTblO zmxgeKdl&TX~CoKdj7KSVK%uP&B^-0Z3FUepqG^)S6bSqF= x5LG%nGX*GX8b7s3A1EmamkiEND=AMbN@YMQ$~}8rfK?m=gQu&X%Q~loCIDv$^bi05 delta 832 zcmV-G1Hb&J4%Y^d8Gi-<0063BcP#(_0@iv|SaechcOYJ)3ZFpwqGzrf?lr2Jb$)+gHa=hLalLx~oD9L}3VXtVhmb_HzPt!l zAVn&ALCZqCBne{?Lz~23$1ddhI(WCyyV%9L5`Z#n%na(M0p zO(qy4%=l2lE8$n_&Cr}Hb%~;1aY9;PUA%G{%UI-A3x6#jpt)nJXME2Z9`YtWfL+Y= z46|c{H6E9VL+PGda&i{vX-r{5ChOY(LImH6#gKqN%(x^dQ#58HLL41@Dpt;t_y7S? zkoY=4fR&OWe=Iq2sOq|pR5h!qYtfn|r>r?= z%j=G+CV!SpEt{EJvFhT<)w7$s7q5kj;0n`{i-qE)lv?4m!gRXNJ1KIBM;9{I4t zk8;$8^l7PS%gvg%(rV`}9ml`tZlQZGy$%{krICh?JZ$(VqfX@7l$oZ^JZ<_cv)-uD zKDJNP=pDJwsnMpkh^14{?$jVQdow}nI?=@p#D6#uh}$B7gyzL8I;F&m++r3B<4`Dr z8tH=5X%Pd#G>CQ5joqExr`&?3zv9M!A{Q3A|3NM+ber5qZZD|ydVW#l1hh`!ifNRI ziwz3HD|=nvq%Zg3Uk!X4`Zn}!X#K009skwBZ@^P`n`ftCi2wiq32;bRa{vG?BLDy{ zBawR!Hsb>o4J9$nmR)}U000z8L_t&t*JEJ70vH(>82&R1djJ6B009B}ib2@`0000< KMNUMnLSTXk^M?EY diff --git a/mods/ITEMS/mcl_signs/textures/_mn.png b/mods/ITEMS/mcl_signs/textures/_mn.png index 2230e10653a4fa79ac8c4f82e661fbe6f52c4893..63a9e67baef733490046c575f5b05432510b6db9 100644 GIT binary patch literal 1836 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TH%U#76wKj3*<&dD4Pe!W@2P! zU35+00Nk zumRPuA+bfFY>*!qnIL`?0O^IYjlppRbKCzL{~s_2c)5AH0WAVK6G;5O&EU+y!N$hU z#>&CY&d$ln!NnuO%frphBPk@zFCr@?FDEM{Bcq_Ar>>x+qbwt%VXmoTU}$1uBCl>~ zYhh%gXKZ2wGK7(nlaq&=M}n7E!bnj@(THU5{{Vv^2hc@X%#2D5OoEKef{g!L#8U=cdFdq?42DMa zmzQn@N(-V&hi9e$WliI!Ht7Q;CE=36`DrEPiAAXlNJY74j|;GxV_@)f^>bP0l+XkK Dwh!=l delta 835 zcmV-J1HAmK4(SGv8Gi-<0063BcP#(_0@Zp{SaechcOY!RwJb#XUgI0%Hb^P$5M6=iWfpDdss#_T#CN!T2LKJY#`P_^FnQb3NfNN zDN(0Nlg4fvHB2$_U_;B?5cef>F)rLTl(Z^MHsI+&9Bdk>3B>%E3vIt;`)lOz+zFaY zFh&^hQw?7Uf2TeS&AC#SDEb{Iqy^^1E2lAyMQ+`p1%CuIPfT^kch~TeH}M7RVx~LH zjs@0u-6k%jXKu;nEYQ=K!huZIj{$@Tz7>-p0fCrtNKmF|%tnMbI`~w~oF(xE0;I~F z!UP+U3^>lqH^vxkT~@xuI9dQgC5r(KHV|N?q{tsjjvT7G&LdULYU*0FX2~gQ&e`%h zqpFD|Q-8~5=2on_cyjgZ=I+I7;UYM~wB%x;cqye;IIS>UF}gyd){8H>(xq3v?DDHz zwIO|4YT9zM=B>2axl70P@3~v(-b=5822yFHp(76)KFX*Qxi)2{sWVTTKFh2RYIL^k z8#VeM_iJi&s4Ze?>)DeU#AZKC&^k_ZF#|D91b^bT2q2+(F^f(q@gldF#lqMW%AiKN z;B;EVKrjtro%CS$B=<{hLDRqD#{WbvEOh?|xv&H zC=9Rcb$ye5yAA)-$FVF0QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fI8ZuQ0W<=L z8Ce(@fh>@J7@=$)Ae)JinSmKd=K--4BP&=<36L!fW!C`N8bCE5y-YxC$jHP1(g*Y^ zgAtG|0;DGZ@e&~B07D(1QjlsG?e6ItpkSnDXrO1oU}RuuX=Pw+Wn`#eXkukxWMyiE z_WTR(nVgxdTk&}~?hnq)&msi3_QAW{-Wbpq0gCGac zMGef1N(@YbjLd?J|Bo=p1Kr8W2nGwh=DOELf4NWZ* zQ!{f5ODks=S2uSLPp{yR(6I1`$f)F$)U@=B%&g*)(z5c3%Btp;*0%PJ&aO$5r%atT zea6gLixw|gx@`H1m8&*w-m-Pu_8mKS9XfpE=&|D`PM*4S`O4L6*Kgds_3+W-Cr_U} zfAR9w$4{TXeEs(Q$Io9Ne=!0h6$T(aL-Us)&|gd}EX*wIAb&A3m4iGk$ik{<$R^|% z$evgztYp;4A>uS~;l_iU%Emz-M3agxa*3&!JXHM%@*3D@#CfcVET6$WhVa)d1|DWc zVB|3iGT1Zx{MV(ifN2zu*f8M#f0Kd#?!r)D@>VTzjVMV;EJ?LWE=mPbz_QTDNY~In z*U&h`(A>({*viyY+rYrez#wtUhb$Bgx%nxXX_asd1{NVk2397rREdy$h z0@;vSk(p-Ylvz?7kXjU+m|KvO%3z_R0761J delta 848 zcmV-W1F!u14&?@r8Gi-<002Q(%q{=`0@Qj`SaechcOY4nJ= zkH_*5yD^%N(SNVqm6#Bz6!xaxwz5W0JP}G+(-NxTrx@F+8P&1H3Std3Pt+PH6C>IK z+1aSjpuYM_6-$iV+0Zjr#C^(Kj5Alc5TMdv1D+PdL8F42K+Lzb(DIv?ze*0zjiAW{ zV}u#+YWPU_C-r7%jG4MbhhK5>1(;{nU>TF#Y@r1NG=FwXb;Wnp@Q^ph1K7z-SC}0e zEXR47IF;_XC5y8_PmdTjWU{smAVl!3SPTgW9En6J(P7L+gg83*6s(*j@(BW@%8kMR z8<7M!&eJ#M7%g2^zQnj%074~+0SyiiV8y7&AB&D0Dk>U-swOpc&03PAm^7tiY2H!A z#G?Ly+Tw$71wvavNTnd~Pm@b%Ipi#=nr=0QBGo5z&na@&@ zJ~dXYsao}#YiZo1;rO@IEHrPql};V0)MMA4x^?flmw{XxGUCvYh7BKilp8hL$M%UD zy^#By8f|KmSX_E`rv|avn+clNiB4u9#*skWCVv4WG*4!SQ;a;xO=d@C913MnBb{&> zO=2JzJFyPBvAdJ|lv~jFTip0px24u|c7G zVK4KW^v8YpTLWK)z6^aC`X3ApTo?Fr8GZtwQ(uANY^XX2PYCbO}Z*b}%CI{}XK#R@Dp) a3=9Bwas~yNChPYA0000-$FVF0QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fI)Bu8WK%P)Oa=#W95AdhgkVf((WXEeH0#-=D6eY;VDGxag;im&b+^ z6aJcCxVMbG`~)}eZH-zfpcd5<*NBpo#FA92CkWnhrF CEKaom delta 65 zcmbQw6f!~5nvH>h!7==d9*~muba4!+U`$>h{G;FH|M3YfX_HkO4Wtk2y<%h#s^$G$ TWoG>!sEonW)z4*}Q$iB}gvu1u diff --git a/mods/ITEMS/mcl_signs/textures/_n_.png b/mods/ITEMS/mcl_signs/textures/_n_.png index b96f27c626b54e45bf4dbc8144990c4270848556..430227892f830b83cf072c0751b42004f345c4d9 100644 GIT binary patch literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz!2%>-$FVF0QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fI)Bu8WK%P{_#B#W95Adhc07E(Qew=7XI-{_D?gEx5(8jQi#WP4&a8 zeOg!SWnsA)ad-YPle8T!KPT&z6|zfI1Q*grjVMV;EJ?LWE=mPb3`Pb*|0 delta 72 zcmZ3*6g@%GiH(7Q!7==d9*|PQ{7( aWng%7M)3VJsgj#O)eN4lelF{r5}E)}`WXHI diff --git a/mods/ITEMS/mcl_signs/textures/_n_tilde.png b/mods/ITEMS/mcl_signs/textures/_n_tilde.png index 47166911691819df67bcb65375f3992fddf7c767..cfc1c626c9e3bb7c758f228ffa7fb9799738fcad 100644 GIT binary patch literal 1925 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 delta 856 zcmV-e1E>6n5AOz$8Gi-<002Q(%q{=`0@iv|SaechcOY!5rT|6kRX39btPGvuG5RP)Z?zK0#F&|Nb+> zH#AD*A*p#TIY+cqQsIh$$6LGg6w`j*T0T9!>O*Yj1w$q1<$u_ZV_%`y#{^49f4%C1 z9Y^fP5#1f{CM)t9A3Hyegl~E}-$Oa`YI@qv`EWaKkMsBM$&ie$@FyI22uZ}#R}{et zq)0_Cc(M>LjbcoYrLoU*7e4a(p1k|$EqAdVy}YI(+$rR@934IBn_li=_+>@(i2U-x zB&PV>o^m&5_kTIZZFerOBb1^R5Hk7o4CL8edAPy1@)C6k2uZ4Epvg0*!MD7Gj zCO9L^_(8&F%0H32qd8aU5=Fn|$v0qLHH~E~a_b2zAb+5Fa;iJOTf$S_#3!(eneH?@ zHdy0zb8#s>YD+d}ft|(_4rH=^93VxAtym0dIZ@0gY|0dk*@%!w2cL?Svn0MifK<6t zm|!E40mpg8#vG$<%gQ%3t`>k$$zni*0|ZzpDeA|PqlT)Arl6`>O;9$dhsP!y7bDIU4E6T zHk40GOivcj-9(J$DP;d+Bx1Kq-whbmU>fM;UdZ)~3ufb>?Z)XPNa*jn1)s zp+;}yeoc)IwM8s#J9|)r+U&yxt?NV=GZ5oMAb)O)01BEHv*?r(FLH}nEQ~{;3~Hnc zPNzi-1k)haNq2S+a=+vjH2oGg{u#Nj(ES(W!a{e*{mAVTYQ64X6xo2*DO@>?GI6oN zV0dM(>o@6-`|!68z8rly`f~Jta5QmU;Lm0F4!#hT#I12$CIA2c32;bRa{vG?BLDy{ zBawR!PU8a=4htNC2)2I!001mWL_t&-(_>&jfd6PTZb7Vo5lIyzHXZ-b*-SVjQ6x}| iV!~o4T!OF@DFXoTtP2A824Ua;0000sQ9d%*3n9>wqtx-oL01=B95a7Qf%uK1TDmv?YX?9?T=c2u*umy_nzbjuvfYokccGU@JI>LqHbro zd^c+dO>AqeDo5=YHB4~QExRx>rDD`+tnT2f)V?rSYhrF-^n0kxS-$P`f&pT^NpeVJ z43fJR{=viOTI72e+1xN{Z_qaG{a%LACa@Pj&SMo z!du5Gbj@{j2A>Mu#?|Rzg_*OPywAkgJ7jHFCn+%6y{!x*YYRqA##L9fPm`aCUvOxQ z_NE;<*h;pDyRu~7)@xH?c3X$F{jj!i=L!=>x^ZGBMn7S6>5Ip9`D?;ZRk^(1$Ol4s z)#{0BpXXszS$4=;Kj!V1BfM5>=ZlJRFKTK_mimNuPN+RLkCv3~xPfb$ z(~~hOz1uE!u9G<`Pk>;H_1u##$cYm>>33m2Pa(Uryqk0m&%L0vdt0AQxsOrBb&On2 zJe0i@X}g1SL2xVin?1By+%=Cmf>zjznoz4V@{M`L4E0qU%4`2$Yl-ol@cT96;Ug1l ziBGj;m@H;ZdcGM3s7MqwPN^8DR2h|#8kI^D5fQ3TKwUB&Z)57wtAw1~jO@(i0||;K zBc;%&RT^bt1{Gv_qdo~hh>oAG|0;Gt@n8P;@%sP( delta 1256 zcmVaB^>EX>4U6ba`-PAZ2)IW&i+q+U-_bk|n1O z{AU$j0zwFhd})6-{rh~s&XU}E%qZ_9e-H`wL<1%J(ty??d`eH({mr{^Ippzmh=4kNawNi`{?U^RwQEz{Ba6tF>%Dzb`%BzuH4Ww zu8ApaOU9U4kNqdP3#EOZyw~VU?qYlF{5cgNmS;lwlB35?@_p`3hCU*q_sE|fczY53 zWA1#K`?{-Zxql#2B|M9ITgn+>BGQ@pyjIW@|AMieR?!Sg9AIpM&5kw#RZ7UVQ>ICc zoYv_F4M5CkB}JdoK;E~_SW``dF9m4iNkPvHY~W^qHHJC8u+WKHPrQLGFykc5Oay0y zH-2d0JL9jkmm~KrU7~0=Pml$0rLAee*v#!KW`Pj$Cx54M@_SnNpqu!CSO$Y~(rj2@ zi~YLjLhst*!!u)^#2n(?8l>}afD|FN01Po0h=o|FP}G!^2zfN{(||m2P8|%8NSYKJ z+%OlAV`<06J4$D6l61`|Eg(X;V3XM1Kp-n;fqpa_G}MG82N5ZvVp63QF1bi4Ma!;H zOjyBWeiS0kj)G%$<*%mEGY2_uWEM2zhY7VVAdv@{S>gLtki#2+-?I+gg z3v++Y8a=FS#`2k`@2tVB`sRXmIg!m77)zPJxPNX2An3F?i$*!8&D`cJ)`U$V39ON9 zawcuYz+hgK#OcM|J9B@^Taf&hcuPNHE^O-l3FgA4?qTjn-o9aNwsWHJA!zTyozuvU z!iEXUTC%p!q+jmC-*xbRcI5rFO6VF@XEuf@*Hx1GWRb7k}T<5a4#AfZ8IOU^c1ex!O!M^AV&DLp0K|+e z42(b)$i<9MHV=@^#K_FR45agbSc;JqtfmCWmWHxxfNTw*8jxNlAU0%VVgTs_`jo*4 z$QA+86M%RL5OaW`4p1pbHH>!m^bJrj(la#BvtTeXFtoHXFt#!>R4_EKGBva^HAZq< z7El+=Z6G6HZsP*7nW1iA1FB&|Vv9oAAU`lNLHsBH(hFr9gJTZnw*NQ&KVT5>a`SWp zS_E^(PF6}rMnOeST|r4l zSw=>~TvNxu(8R<5A1R0qH8UG()kO#Vxl@Sbpegp$XCT12^Hg*n9E^eTLtpcEsVrF7tW@TjodY7>l zD9^wm$SS00=*T7bFC}Pw&aUqAY)5e3MK^H%$7$+4qadL@?OGrwos;O&eYMGdt znOj&|IlH*JxqEne1&4%&g-1k2C8wmOrDtSj6_=Ejl~+_&HMg|3wRd!OO`1Gq>a^)I zX3ko)c*)Xb%U7&iwQ2K~t=qQm*tzS_;UhlG{sQ@n5g4g3fYo1uKz}i@urRZ*gZ#zFR1U<>N T;{vSo7#KWV{an^LB{Ts5lNtGT delta 839 zcmV-N1GxOU4(>6(3_M=t>M5qPy^8Lhp5-C7{R2ZJ=;eCNV}I*c$n`$K(v~03@?hH# z`!+;3!)KA@d5yQ8Z$rYDoc4PtdtOZs+u0AdZFU=feNTp9bcH?Pz(YtPT3=oSE07`; zy`W_wUXqBhqF=3i9J`R~$HBXeUSb#PmdkS}Ld;tszr<+ENnhl0bHh(7qPyp(AFzcK zAIn4R=IlP_xPNw6Q%0n6*qeIW$~l7Kflyx2$f$-#F}AZ7RL2$@h;`6BP+OovjA%|u z)Tz>>arTWGmY8_3p=WN0`;xgB7j7q%v?@(D;ORjeY#OKu#C%%|oqo&duaU!ZCulOk z7-7b{8a@(!rQQt9xl)%X`V}Xn1=htYr?HGhZne+?0)Lu2rh3Nrtl=SV;se;lOwTYo zHdy0vnK+d0xg{rOfu6<`He|BC4Io7Dtyl~R2*iv_f-*&8HX_8)!KY&7EQt>gAXV-Z zCfJB%z;Rx_F~{iCW#vnZs|6rbvKY|d00CA?iu|$U$f2t1K2p`JrmjV6mYlNYoGq_A zs+w3bwSR18ZpEsLCs)sI?q0kWE`lpeOD-0Qmr`nl(+blSvnw=eJ@}9#9eU)$4nN9K z8`7txrY$#X-b$;TyL24?p1Xzaz4SV0AeBZMI`XjLql`L{Yg1;LI`g#Yv&?#z(L3XApwSRH|000JJOGiWi{{a60|De66 zlaXs4J>vrv2{Sd(YJ_b7000|FL_t&t*JEIy9rzE$C;}*KCT!Z6NHUWG0080!1^=-o RiTwZo002ovPDHLkV1h{rijV*R diff --git a/mods/ITEMS/mcl_signs/textures/_o_.png b/mods/ITEMS/mcl_signs/textures/_o_.png index 44ac3cbcaf725b13c606e472bc7a1b638e8b7f04..967c240b2f3da2b84b3d2bb56fb4caf4e606c5ec 100644 GIT binary patch literal 1849 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TXk{aQe=IN=$zyUM>h#6TJ z7=bL1gBhW09w3{Ek(q%RNaq2u6eBBGO$m@K4Q1B=*&0AKAiYdLY{>Qk2+&~3e1wbLi%*4XX%E|)tE@LfF zo`FS>RY=j$kxe)-kzJ`!#HexNLJno8jR!@8E`CrkPAY2R|V^&07y2J$~}^+4C1K zUw!=a`ODXD-+%o41@adoFj8RvtG@(+{$gTbVP;_m`HPXM9Eh0(Sy&Yf*@PSe*%J$e zm5drWM4Tor+<1^v**NHfXj0KdE-@98hpHbzUIY7#IFB`vDH8c(} zG`BJ~wlX!}03!+MgXQlvUP2;CF=>sJt;gZ4mX(i=}MX3x(MY(5> S3$V^(VDNPHb6Mw<&;$VaX8Rfd delta 840 zcmV-O1GoIS4(y&72Pd8%R_AY1w$lg<$BCx>wj0s^*+GTmLJdZVA~M; zHbghWXOZQ3^|zjHL&BGw_H!tETul$l*%!BMb{l_vPKID~g+1ZGLr5a-zPt!#AVn%# z!JUP8Nh11+rzQU&b|KgIgLmt_#4gq?m*-G~n72ZHiP4smzR2a~hM#6cch65RL}H4M z$9EdZgC#efDI2(VI8mWn=;eXnWs&kW!4)t+S~St z8oiMFoEmLviK>`o10vp*(i9Vfb&ffy$OaerF`kkGuCMW>W_kz34SVQdOzP$OM% zIxS)#mH`;=SI^jF;YBXVJ(`yb@OLbu7i<@OG>Ue7OzoPgFYTrrI@aj-#Q zcxA8aoAl*2{HuX)L*ItJ4XwY5+3{-^egidncAxsyFTVf)00v@9M??Vs0RI60puMM) z0Fi7RKH~!w2{Zu6nAV8^0010GL_t&t*JEIy3iuDjC;}*KCT!Y>7sP211pojx=LP|V Sj5A&U00001GWRb7k}Tb6Doz z|C>BZokUYQ+0`eWv&vn}V#K;Jz-gVe+=`hWDk}<^vz~DCshP^l10C;@8sVAd>8ZuQ z0W=4Q8Ce(@fh>@_8KG<*Ae)JinSmKd=K--4BP&=<36L!fW!C`N8bCE5y&!dlj7$t5 zeL(**7y;QLKzafYF9Bi>Fa&u8q#8!Md-?__80i@r=vgor85mkx85mm`87df>S{WKz znV2HEEeoU*>Nb!OFt>35+00NkumRPuA+be~+{VZR@uL7pFO+Qzjz5^&{@?ijfI+~^ z&C?BN5y+W9;{R<1X9f;7Hg+~v4t92SPEHOk9uZz1Zf+h)Az^+ISt)rrSt%JA1rutI~XuBF|)9;v2$>8aRU`>6##`4GZPClD=Q1o zyNtC!c?K3iRv|@0M>gTWM0TY@5u?V53ptdXHXalWy7)oGIH{I3zSIJR&kGIVCkMJtH%#xTLhKyrQzIxuvzOy`!^h(&Q;q zr%j(RbJn88OO`HMzGCI7O`ErD-L`$l&RvHNA31vL_=%IJE?vHI_1g6tH*Y zWKS#c@69{;yl(wme1fGL-^|!0}nGJ zF!GoM8SEK;{_E0Mz%+`7Y#8wWzsc}A_3&9>@>DHxjVMV;EJ?LWE=mPbz_QH9NY~In z*U&h`(A>({*viyY+rYrez#wtU2T)0d(2$#-l9^Ts*I-}~Vq{=tVr*q-3DK}D{1>Qt zkpkI}T9KJ%<&;@c9FSTRoS0jXlgePBqX0reZ|&59suba>T!5|!$;<`01fx_HJ0=M# znT6qsJ#!P&Q+-nN(n~TJ42|k9FWm~17DSZ}&rAWzn#NCU(g#XP!X<ud3Dt#{hRy6y5TMTmJjP8JyOnkDTW^T}Z+FXnaw*@85LW2!>dJqSj25JH`-{wMV+_J`N4dbvym;m`rZLIQJAb@@fX3ETm%ginhrEdoU?($O zGCLMn<8g&JlFL55ynth-AQVo@1kr(eh>G%Z#ICZVky|K!XhgSScy;$C4w5s?PIBRkND97Oh!w%9?Yw zJkO|VVt>ihvYELRt1g~gJ-fMk@mjbDjxa5`SSVgfsTG4(gs$ja;Zf_shaBn9BOiA7 zQI6V>J}otExmoj8TJ7AWWBd2qEp+dt*ON}9(wR;@^J%A_<*Wm_He{rsBM%!s%BVML zw72aOHF`(xb857yO=4;J*_|59W^W;A9w$1Pfqxh$0&$xJkkCAtMW>W_lAFw8VQdOz zP$QjiI!$6Am`-9HbYpiX_bIoa>94r)pU8!Y?thRA6Wu2Fk=qMuy{<2cEI@M?PEDf> z9Bgnny|UN&P5N>j{x!gNpzlE6f#$!8(eYm`{03qN*0x0e001IML_t&t*JEHH0{kZ^fK%IlT-yFKFfcGMVbjJ$l9?0$ Y0DXrC{c&W3p8x;=07*qoM6N<$f`GD%Pyhe` diff --git a/mods/ITEMS/mcl_signs/textures/_o_acute_.png b/mods/ITEMS/mcl_signs/textures/_o_acute_.png index e25a3a7f4bc6539faa439be3823ee92cd263c5f7..9279670faf48cd148ffae3d773555842d5d4d7ec 100644 GIT binary patch literal 1855 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}T92+uT6Pb~%x zpfNzq$ilz~WPzN`2xapC*-VVg49q|}4~V50S;1;bfNW_fy9UVC0IC7$1*tP+WMTm6 z1A3Ri2*?%z(i4Dq2@rFDA;>2n)iB!K(>FlDNYBtf&w|0oz|hjlz}U*jP{GjD%FxKl z&;-eCSsKGWBn3%|`TiRL}+2|RY7=a97!MAjko9 zQ5G|!5(ASUBeNjm|04|YKzFh-f&tL)V8F=4%)-jX&cVsW4OFmI02ETpOf1Z-tSmt9 zGS&j+8CV2ag%k}P*@OcV*_8@Kj2b5{ECr+Nabot8FYu9hwy!G(W<0ns_ zJ%91?)yGetzkL1n{m0K=Ab&9eBNYa)`b!Y#FD4ciW)^mkzZjXyftXp4g;mjzO~^5j zJ+V+&$*7S-#A)KfjR!fEje|ajCKX-e5>qjGsQMA)HL%Z!^H>vEK7)G<;jdc^Jj{&1 z$YT~{uxI%BuS;VA(c?zxs|c8m8q$=fq|8QLE@GVppp!sAvZrIGp!P?!N4NK$iT|P*vilnqG4J1FHr3w z1+pQvA~Vg(DYK+FAhjqsF}ENmmBB(s0fdC!+NlFoDZ*8`09_H1nG13WMybljT%-w9 zEDTrdnVXoN>XVw6UXsCJXjFfB=~ke$AgXkDW(rW&G=6H6K2TB;E*YGkR#Ki=l*)iq VlzaBL0Bb%522WQ%mvv4FO#nhJ{-OW? delta 845 zcmV-T1G424(@vLIOPkZ#aMb9N`BF ziKdX$JeQm!N-C*v#lYiLuAX9A?NxO5^ehjt?H3G@pqJ}0pMP7wLaz4-mbUzOmIvF0 z*telK&)c9(&y2y=^KD4@lGA<;WzVbWVLSUb8n4%ST(90gCqpp0!k%#8Q%E9OpI!tj zkRlbmpk*PR62+MCG~4t#b|Kf-!Mly##V*z@m*-G~n72ZH7o#mFeI2_Mp~n@`-Sg86 zk(lCRd5qoYK7Yn}?XISbNae6M^|qBYf+E71WKGMchM!_=s}@wp78{6l&^%CEphApj z4@%Uj(x7wojT)Ai_+&%R+z|IEb1^R57L+tA4L0EEK^!z1s0qY;TMI3}W%+C5@Z1TS zOfWY2eW>A;@GJFZXpEVlyH|7{ET~@xtxLN>0C5r(K4iI3aq{tsjjvT5w?;};sYU*0FX2~gQ&e`(3 zqpFD|Q-8~5=2on_cyjgZ=I+I7;Uc)gwB%x;cqye;IIS>UF}p&e)`Jf@(xFE_?C_%; zwIO|4YT9zM=B>2axl70K@3~v(-b=41ok*oKoqFcePCv_82Xbx5NJB>+Hhh#(Z`5cX z+b3%Dj@;+eXj7ZS($cd#HHgjLOwhbebTR`mPJaaAHVGi1c`}PmDe)vXnZ?356w07R zI^lGh#6U2e#5(B4?oRGgZb8#uapOOc3lrV{AQvXOP3|MN7u0%PUldt@<|&*pjWTet zLE-euUgtOI%YFD)1K)1GWRb7k}T4mb5!SM%k+y5K?A20}b zxp}$)Edn_cNc_Le;LO0m#>URZ%E8Xg&dJHa#UsMY!_CbjDJ0AlI6Eh1d8#@Ol7dKGBRsm2*F*C6+v$C=P zy~|h&lxJWOWEE00bYv3_Ok`Io6ftU?xR68HY2!iBpoX!XqN1l2cOC(lau%ic3n%$}1|Xnp;}i+B-VCCQY6) zb=ve9GiNPYykzOJeA&aSFc^aar4&0M~|O8 zefIpt%U2&ieg5+G+xH(oe}VkP2#i!1!0InSpud<{SeRMZLH=T7DhFa_K^9g;LpCAD zK=#B!VI`wR4iTq`3pXC*R5lL!AevNkkxNX)?MniLsTTB}Bur@L!8U=cdFdq?42DMamzQn@N(-V&hi9e$WliI!Ht7Q;CE=36`DrEPiAAXl XNJY74j|;HsV_@)f^>bP0l+XkKcPaqA delta 848 zcmV-W1F!tR4(JAu8Gi-<0063BcP#(_0@r#}SaechcOYz#J7Zo5275n|pB`JG1FPWoEArO@My=sxn( z3z3-O3Uv6Q69TnHzMUHW%Zl?>fttX~x4F<7x2*9RIY#aT zPbLH-^!QN1E8|znEzlSq#e4=}f1d`Lxr|a@K)d8#2<+k%tW*Wz-ur z+S~St8oeX;IW^kUCb6{q>`o14v$qg5j}x8DK!1!Afw)ZqNNAqSqEkvd$xUXlFgArU zsF6-MohC65Oee7py0N>H`;=SI^jF;YPvpWx_dm#miEfko$n6ESUe^~z7NEHcr>0Q` z4mLQPUfJvXCVjaM{~F*s(08EkK=WV4==iS|egky{ca!Yx_#6NL010qNS#tmYE+YT{ zE|Gc|?z`%q}8xu)p aQUCx(%n1AnUTBz diff --git a/mods/ITEMS/mcl_signs/textures/_o_circumflex_.png b/mods/ITEMS/mcl_signs/textures/_o_circumflex_.png index 5e4c6be6a65885ae0fb7db04e18482b2e3e9d79b..8acca66c97562b301187863b928ff48f2cca0e24 100644 GIT binary patch literal 1856 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TBlkAsr7R}Q2esD8;qJCo8R!!+;q-NU*{+f-$hoo&p^k!q(*qAd3tIw zZ~)B#Vn!AQMj#91Zbm4Z2gqh(WM*In(s@8E#mEX)Qvzg5L)kSzwgylQNH0j8AtMt5 zNFUI@3`Rh<2#}rt#7lsf0}Mf40jY-3?w-B@3PyT{26`3@Mh1qKRtCmaMurN8rdEbV zRz?;`Zp#Acgt`r61k7z*KsGbf4QxO)Y)EWTB)2g#LHsBH(hFr9gX0h8w*NQ&KVT5> za`SWpS_E^(PF6}rMnOeS zT|r4lSw=>~TvNxu(8R<5A1R0qH8UG()kO#Vxl@Sbpeg^|aCT12^Hg*n9E^eTLtpcEsVrF7tW@Tjo zdY7>lD9^wm$SS00=*T7bFC}Pw&aUqAY)5e3MK^H%$7$+4qadL@?OGrwos;O&e zYMGdtnOj&|IlH*JxqEne1&4%&g-1k2C8wmOrDtSj6_=Ejl~+_&HMg|3wRd!OO`1Gq z>a^)IX3ko)c*)Xb%U7&iwQ2K~t=qQm*tzS_;UhlG{sQ@n5g4g3fYo1uKz}i@urRZ*gZ#zFR1U<gwG9lc3=9&td;pbX2o1UUDVb@Na190)Aw~vPCdO8VmJkig!heCP z7b%bpsTG-NR!*5E#Q~{B!HKyAIjIa5Itm~p^wv%ts7ev8$_40(kjz|=OE5}Rof)|Y zfr^FUiam1^(^Gv?^U_N)7z~Z-FE8B+lomvl4$n*h%9_ScZPEuyO2Q?B^V3So6N^$A Xkcx889v5KM$H3s}>gTe~DWM4fV}=2_ delta 853 zcmV-b1FHPM4(kSx8Gi-<0063BcP#(_0@Zp{SaechcOYZMLC!_`D#WSZdjY)3a;eQ1LG`6O?^j#%9Tk_=-^W^bC$#h2#_jw z3Il9JGT=DRvC+q9`Lgn5#?b;0Dp?F@uz>(8B}M*Na^z6ec^;{1R#VraHA_xebIz9M z8C6XznSWX~Gq+;Z#gnUNH+L^y3m3r=rX?2(#Y-u*V$h1v6}>AwYCZUnBOQ9=!wx^n zQ5({yrKT-6Yu-w$ox5~w|DL;r?!EMS(uq_$)2U}Z?ew#pbs*PT@5p^ljW)GOEG<8~Q-j&;Ed~mZZahv00009a7bBm001r{001r{ z0g-$SOXC9-4h$U5Ng%iY001dTL_t&t*JEHnfd33=;6E-225c(-GvF}mKLY~;0~0oF f#0%oIhynlr+FuC%4+V)B00000NkvXXu0mjf(+GcQ diff --git a/mods/ITEMS/mcl_signs/textures/_o_dash.png b/mods/ITEMS/mcl_signs/textures/_o_dash.png index 9e5de53d13e2b0d8818c647647cd49f1c18afdfd..0f0d638ffa4a390c840cd033694e931e98f77915 100644 GIT binary patch literal 1921 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz!2%>-$FVF0QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fIw1U~Nf_@J#dc z)MDTO8U)0QEDVf57RXnOP&N;c&BVyezzn4GfLMx=6|ANN$d-n(Yk+JGpc;@~kUB#~ zCI*l`pobZZfNT*UJpqW905Jy`g8Twf4Wr#XeFGGX^b8I3EEtRo3@xn;jIE3e6%0** zq?M65lG_?UI-za@83A(}7m&>ibpy!#Y)EWTB)2g#LHsBH(hFr5gCYoIr{vTiv zfk}{&S&;Gn5e9jnJ6RdQ0OA!OpNW};m5rT)lZzXuV5L?6mQqXwbzED#l4gO`Kd};u4Zls%q*Q znp!5NX66=_R?aT2ZtfnQUcn)uVc`*xQOPN(Y3Ui6S;Zx#W#tu>Rn0A}ZS5VMU6UqH znL2IyjG40*Enc#8+42=DS8dw7W$U)>J9h3mboj{8W5-XNJay^vm8;jT-?(|};iJb- zo<4j2;^nK4pFV&2`tAFVpT9uqjGsQMA)HL%Z!^H>vEK7)G<;jdc^ zJj{&1$YT~{uxI%BuS;VA(c?zxs|c8m8q$=fq|8QLE@GVStuHE^HVa@D&ZOoEJBP7tW1op3@srVmWBUX z2Gk%0vLUr1GtJ5=v!pm6wJ10-w;(5#!9qs?goNJOsRLCh!d1BdT@jL*3vvlYsr=Gt zDX2yehAZ~WO-xVqNzF?y$zU)vs=vH+D^OYxRXRK~1t@EFY|iDWKuJlsWN?03NqJ&X ZDg#ng;MwB>tUDPPJYD@<);T3K0RW5-6@>r* delta 852 zcmV-a1FQUj59$Vx8Gi-<002Q(%q{=`0@Zp{SaechcOY`Q( z9*X24s(H#O9e84nnF~68T+h|g5m$XZX}9!j4@ccE7$!k0+kd}r{{p+-2Uy(p^VuG3 z2V&oW-e%qbWzNj#Y(L+DgfBbo?;-DTB|dCte@5l?TF>j%>-T67qbcGE2kt_0p!PY7 zU|I$A9S8?n+EhDuunNx2>!m93f|vH7ubRK8n7rl2II6tRU7v^F*nEGBMO1 z$j(NE2KCies#s#=&W4t`LhEUBG0t2UlsF3wHsEPN93(2J3Cw(33$1zcny->$=0@;j zLNLOJcO`se{F8DEG{#I_qQftpd;#W}(^$qNH*0tS0e_9HsV;q22@iR5Jb<0dbjj@4 zU^&h!#Hn=8Em@oeetN{PA(OQo01{zt#bQW6;7CYpN^}^r5kW@>pMsUML_R@)RJlIhTS-3qlu+F7PPjX}YE{mf^n zNS_+3)>N%}&9yXc(s2A+Y8INe+)Ag8RO+#7Pu;rr+{-|&4H@5V%>qI9r5aUQ7Zhw;i5}GHo!zo6d(uIrz_r%t2x^G9d{fD`H?m)4_;Mf)T?a eB>F!MJOTj5Ee8c%%d#r~0000-$FVF0QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fI@Em&d z;{X0RvZr47CCjmxCZuesU>DrL;Q9ODo{c^p=UZ8JpSb^$?GyvInB}LXq6`eIEvXTn zX`Y^13>-kCfS8emff2|8`HK zp(&8GGO$E)TLVZZ)NLRmU~c0AvYDZ70J)zHi7krcHby3h9|b^qq3mK%6aoRnZU1ll zf50H%<>u)IvvcDq>wPbh^&;noUD|L zjDm`ux`L99vW$#|xu%YRp^1r!yt<{Wg^`V(v567L5JpZ;P9AO^30__aBSjfSBa*@Y z0}O&3Ko>PIGb%AK2{JMZGX6ipAP;mWD{yaMDiF|)9;v2$>8aRU`>6##`4GZPCl zD=Q1oyNtC!c?K3iRv|@0M>gTWM0TY@5u?V53ptdXHXalWy7)oGIH{I3zSIJR&kGIVCkMJtH%#xTLhKyrQzIxuvzOy`!^h z(&Q;qr%j(RbJn88OO`HMzGCI7O`ErD-L`$l&RvHNA31vL_=%IJE?vHI_1g6tH*YbPj7;Sqj|;M} zDjKp0IR>&P778mFHFAhJO?MniLsTTB}Bur z@L$V-8l*rrq*i36Svh5v6bGah1t;bf6h5AFt#8Gi-<002Q(%q{=`0@Zp{SaechcOY`Q( z3Pth|)jZ{t4wRT<=7NqNSGig`;(A^s?UtVH;i&rs!z5^B`+xWCUtrh!0E^pxKHG!s zK)&E#E0$dg!>v_F;{T>ZsG(|k&z+FfVJblh0 zSb=0IXa!Fe;%U*VzwG&A?ZTU`uj1W$FWMbt+vQn`aHEi3G}?C3kF{G0J+6rEGe5mB zIpXnH9<>|I$A9S8?n+EhDuunNx2>!m93f|vH7ubTK8n7rno%8FtRU7v^F*zIGBMO1 z$j(NE2KCies#s#=&W4t`LhEUBG0t2UlsGF5HsEPN96Tzh3Cw(33$1zcny->$=0@;j zLNLOJcQt%u{F8bMG{#I_qQftpd;#W}(^$qNH=pnV0)HA?Q(gM58XofIcmO+@>5|#8 z!E&5eh*RmFTe3I{{Pc)nLndoG03^cPip7wCz>$#Hl;|*KBZ7_&J_RdhiF|?psdA$* zz(ynij`N%wV~mzBD_>?@EdZgC#DE3|2(V&Q%b1nsw7KAPsUEop5$)}w0)H9uS`kBvC zkv=t6t*Kh|nrms?q~Z9t)GRb_xs^^GsnlcFp1O7KxtD=l8#3b1k%kQ)d6XM9+Q;^Z z8oiMFoEmLvlUQ7ScBclj*;@#j*NIMMAjXkE+H`;=SI_*>lgSLDJ(_b(u3HT4i3`jJB0b?^^(Zzr+@t=W#ff1Vo iBLfcY|IzHC761Sj=?VXtm+e;o00001GWRb7k}T zK<_db0ofuzdIAtH0b&j?1o;G{8b-T&`UWT%=@}a6SuhwG7+P8x7+V<`Dj1qt85&xd zSR%PC3#1e3Hjoi8w{Zd4%uqM50oAY}u|<*G#>fQmqX0-Rlx+--KA7A7-}wK4LBPw+ z(+y}5$eBRm|7`|m1`akhb~aWHc6N47P7W>}5ndi{ZXQV?VSW)=DS0_rDH$0B6+LwY zB^_lM84Yty9RouX6BBuLOIr&g8$DwaBak7CoSd9I+&mJzyb?x=GKxkdgZ~E@1UY~% z%3@|zVqg+vWEN!ne}q9E=uTEfFaY`;3>cZ1Sy&0Dr^+rDGxu0w~996fgY#K}{aE?>EN?fQ+Iw;n!v{N(Ag z=PzEq`uOSdm#^Qx|M>X}8f2KE_o9%~}YXK;@p{B?_ghnW!= zdCYxgeKdl&bOtq4q$< z!f?f&xryniKB;->B^eBcM)jAMZUssUqDqHnrT}G4!5j{v_ORz zY7a`(snVcx)r}ganD}Hv&D@~-w7D1;ZVO79g$5h&^dJs44b%i?zRiW!xMhvk$T4y! zcrqavp~r_3UKzhqZh^*_sY?|7(g|sSdGX9?Okq#e4=}f1d`Lxr|a@K)d8#2<+k%tW*Wz-ur z+S~St8oeX;IW^kUCb6{q>`o14v$qg5j}x8DK!1!Afw)ZqNNAqSqEkvd$xUXlFgArU zsF6-MohC65Oee7py0N>H`;=SI^jF;YPvpWx_dm#miEfko$n6ESUe^~z7NEHcr>0Q` z4mLQPUfJvXCVjaM{~F*s(08EkK=WV4==g&beglWica;DPB3u9f010qNS#tmYE+YT{ zE|Gc001IML_t&t*JEJ71OAgNfuZU@E^YrA7#J9suxVo=$xI3W Y0EK@C{a1GWRb7k}Tldi zK>C0lW-tP>MS%1KAYKB*9AF6Y3rIDLcK7rRP%zRnG|;nPFfuT-v@$TZGBQ*!G_^7` zvNAG2a$6QiC)8~qBVcah0>&?1mCfyDpY49*N3Y;5dotQ_p@?3|n&Ts$JYJlxzol0w4#BC=BQaIzCa$}%z<=9)SNh9)K^^6Hkh7DhID#wJD}Ll`+ZIeEBwBzSoxj1*-QjYtOn4=@OF z09};D%&5e`B*@4t$oT&VgFMiktc+j)^g9?ZGBLBTvaxe;a&ZF{Y!v{76f+YGGb<|# z(7TMaKzRlhK~^C}Lq|5@z(jVXLJ_0Ji3>TDoi-j64Z8S2#W<;`iIYoATtZSxRZU$( zQ_IBE%-q7#%Gt%$&E3P(D>x)HEIcAIDmf)JEj=SMtGJ}Jth}PKs=1}Lt-YhOYtrN? zQ>RUzF>}_U#Y>hhTfSoDs!f}>Y~8kf$Ie}c4j(ys?D&b3r!HN-a`oEv8#iw~eDwIq z(`V0LynOZX)8{W=zkUDl^B2fpjKD~R0j&NK1p14Kg@u`g9po=Yrg9)=7Gz;nG-MNU z3}jC%6jm~7CkWnhrFNUg|BvvSHTDGo?23Qo)|$Vp|e&`|&(p|^JGKvjxxRW3kRgk z3{)%(SL~Uan4apBnwMUZ!C+`qe|hOvptK;Wba-Y8P}VelYLh-tQW7p1oS#-wo>-L1 XfK-%w_P7A+J_ZI)S3j3^P6*^(gIWGuFqMz$>W=81`79G@uq*`JBXEZC&)+lr zg^NT}NNS!-&JkBCsc=QZ<9*#V#kBADrKhHMdx-74V3-88+<%XG9RCWtK08=C_Uqjq z>;z&zfj&k)0cDNMXdFL3frM{6o##+aznWf_bAGe&ey!L2>hp6lh|v}CgaZ#DiMab3 zMKA*?Qc(-;EX2#AXcL~6vamyaBkz?de z@MJ=;#qWm_zB2wvc?6nsr7ltQTPLIi=EWGPy7k>9yyQ)M0lS## zmf5ku8m~LVrS!}#*_;J_8dErs$@&QZi7>WeG9(}nGZLFJMPoK1=;+{6F>{v07YL9l zcM211L^9wwud&g`X#2AAZN||85Gq*=Xt03*Do z*BMn!EPt6=HZ!+k)y0#mXE%2*UJDn&5vC;<3&l$*wPMhU&=tKaJZio8k}F+$<;yO= z%2gZEr=_MXH*4NXtDU=aZ2z9Sh3>udI%pu3MjATuu;HVOI+1HrW|}(lwCS_V`k+Q< z+rCkwPvm}0jSjU%ENwq~QiIv-BLuDEL>Ds<<9|dTZi@gCnisR^loBs;i&-p;O`!~G zqzg``MGOSfAl69_c29D@;M1&07*qoM6N<$f-?7tPyhe` diff --git a/mods/ITEMS/mcl_signs/textures/_o_sup.png b/mods/ITEMS/mcl_signs/textures/_o_sup.png index eeff0a2959aace16dc63543f2b8dbd3bb98080d8..bbabcf8c085475cec30e28ada3ec9d0e65f8d849 100644 GIT binary patch literal 1848 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TV;;P8ew z|NcLJ$k4b*Ymug_glOQgcS+}F?`!kdd-k7Qc+1MdJfNdpQX@RmJUz7-IDqZG(8t7Rt7#SE^S{WEy85t@Vnpl|{TN#)kxh)H% z6Y4gQ5iqxL0olw@H?RTKupzNUk=(|}1o5K)NH3Ia430OL+y3A9|A0Zj%gxgbXc5Sn zK;r*x24@BiHa2!PRt|P{c1}(XE*=qH9&TU_ zb4?usLlYAdd38%$3nLpnV-q8gA&i`yoIKn-61=<;Mv5|uMkIs(2N(o7fG)~nW>jKe z5@ci+Wc+`GK_2K%Rz@%Y`W*}ynV4Bv+1NQaxwwG}whDkkikXRpnU$3V=v~HIpgaSM zAghp~p(C4cU?RIxp@>oA#DyHnP8$!323`E1Vw_ae#K|QlE+HwUs-~`?sbyknW^Q3= z=I-I?6&w;879J59m7J2AmY$KBRa{b9R$ftA)!fqB*51+CHEHscsne#9glAUcUPH z>GPMb-@gC&`3vMPMqs4E09Jnq0{z9r!otkL4)PZxQ#lYb3$m~(8nOvF2C^p>3M&~k za)>xhT)6Qdr?PR-2hpUWi(FzVCJ$9Vg1iRy8F3zKBFkrRk0JbZi-Cuk5g2*Qf(-Ty zKmT=UEMOYNLpBWf|KDVo5%2yVm^@WWTq89x6?^6; zrlHWymsmNi}@$H<-F z$%J5p9v@10W&BFH1sY?fE>ZMLC!_`D#WSZdjY)3a;eQ1LG`6O?^j#%9joFBxqk~Vy%vlm2AV8|z zDGaa?$$;ZL$3`Ec<;%*K8Al61sAMsq!3F}Xloa`6$&o`<=Xs>6SxsGw)+{+?%{g11 zXH+$@WPfVe%-o7q7f-I9-Q2x+EnEagn3h~D6fdRJia{$vSM;v%sP*7Oj&$ge4?FxQ zM{P)-mYTNQta&S~cJ9)#{d?{fy7$uSNheb2OsAgtwA0UW)`46bGSbkIhYcTP)EhP0 z+xCeXy(9NIHQLlBv9$c`P7P+Ww-7Xs6P?UJjDHh>xJ?2`Xr9cXQ%XF^O=ht$Hia^% zkxn?BCNU69C$SE?vAdJ|lv~jBSKRndFOZ>0016IL_t&t*JEISfd5bo2mjI8Obl26RzU__W)3m{0NH#6 U|BDQF>i_@%07*qoM6N<$g6gq`n*aa+ diff --git a/mods/ITEMS/mcl_signs/textures/_o_tilde.png b/mods/ITEMS/mcl_signs/textures/_o_tilde.png index 6cbd7cec0b3957394fef658eef240d1e1d27d560..3c95094bb71ecbc8bfcf0ac4767941e93d5df028 100644 GIT binary patch literal 1856 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}T7PJ z2hbcKW@KSt1hPQxW`weNfNUm4W(H;;od?8HjI3ZaB|x?`lwAX4YXH@N^n%nGGBPoM z^a1_LU<71~0O<)pyab3jz!2mWkZKt1?&%w#V5Dbgpl88gWMF7%WngS&WT;?hYGr5y zWFxsP3#1e3Hjoi8w{Zd4%uqM50oAY}u|<*G#>fQmqX0-Rlx+--KbYJ8-}wK4LBPw+ z(+y}5$eBRm|7`|m1`akhb~aWHc6N47P7W>}5ndi{ZXQV?VSW)=DS0_rDH$0B6+LwY zB^_lM84Yty9RouX6BBuLOIr&g8$DwaBak7CoSd9I+&mJzyb?x=GKxkdgZ~E@1UY~% z%3@|zVqg+vWEN!ne}q9E=uTEfFaY`;3>cZ1Sy&0Dr^+rDGxu0w~996fgY#K}{aE?>EN?fQ+Iw;n!v{N(Ag z=PzEq`uOSdm#^Qx|M>X}8f2KE_o9%~}YXK;@p{B?_ghnW!= zdCYRs+PD$l%ynv$V{_x$}A}kNG%FZ%q_@CWw6ju03o5bcIrS?if~mfKv#rh=7L;;QL1*XVw6UXsCJXjFfB=~ke$AgXkDW(rW&G=6H6K2TB;E*YGkR#Ki=l*)iq VlzaBL0INO*22WQ%mvv4FO#oDp|H}XX delta 845 zcmV-T1G4;T3L6)BjX8JMHnW{|kIZ$n|EDN|t;12!Q&k=s0 zkZ251%~MY4K#4hKF6j7im8+#AuIp8FxAbfeN8Jw?CP6FLZGY<9zre2d7c6f3`D_oi z1F`QwZzJ!3GDl`~wx91n!k3-)eaQR05+9bcf1~nxtmpOU{e3iu(G>B719u@gaP>Kg zU$!jZN^dZ*F0lfKq&DfBoax{v(y z085C+V|mnWG=CqXU#lxIL8%n>qTZIWdT@lC@lqq98h(ntt(s9CORON)K=VYcfif}F z9u%ojp+SAMl`5tfxwD~VuF!qjT#Pf<1trc(gAI6E5C@G4Y63Ig=0a=SyvD2K7`YKV znGkI9`%uFx<5%h}&=@myi4MPXLRw&6JaZb;nB?XaUVlJ9V{58Q-&Mmy-W(5LCo^3# zI~G`u^9pe)-E&J8XMvv{F>J_WZ3lov7+WzJ5)e2N5}Oho#%x5;(ZQ!+<}8s<5Fk}< z6b9IcB*1Z=W8)p8<;%*K8Al61s3b96Nljg|mLw@AO(|KL zXH+q-HCC;uTJ@T1Y22h?`?u6AG;g_;P93S#W7nR#b?>>Cfm|Ch;?R+X4Ig=w8#UV7 z_K6z3BlkHq+SDeoxcux+4Q8{q5Hybyoy*bFN!Qca~Doc4;eVv z;LyFWm-$WlavT0Nz;~eUK;MDpzlzcDUoHFwGd_2WvV#eo00009a7bBm001r{001r{ z0g-$SL*oM#4h#cBK`l)H001FLL_t&t*JEJ71OB7Ym;wxhwExFu9-PgDO&b$QW>NqE XDEJBca<~b>00000NkvXXu0mjfRt1GWRb7k}T(nlV(#-+3YdYqAlk{0O<^0VjZ0n79`Hz2<`weuwOKOB?ny050 z0|(F?AZBD?U<9&2?q-Ctd4OytMrH zWMyoL^JM!?+01!OZr-M|J^!-m8bMRFS>6U2`KAiYqwF*yEUZu@`Z{{sdA zFE>v&phX~O0*U{(8Jrn7*x1Nsy6Qkn#T!26>=6SsB3q=yxz+WMXDvWn<^y!`f zpm!N-f$|J2f~-P{hK_8)fr;!&g(60c6BlwQJ8e8D8g%i4ig8j=6DOCLxP+vXs+zin zrk07RnYo3fm9vYho4bdnS8zyZSa?KaRB}pcT6#uiR&hybS$RceRdY*gTYE=m*QCi) zrcRqaW9F9X@jO*zpr5PhGlv*fm^@Vd2=W@(XT*7|i7cPNJ%;etEe0ND zMquPI3o_U<{QTFYv4Ck557{u_|9_LAkMoZ-FnOw$xJHzuB$lLFB^RXvDPUPCkWnhrF delta 846 zcmV-U1F`(T4&?@r8Gi-<0063BcP#(_0@iv|SaechcOY!5j{v_ORz zY7a`(snVcx)r}ganD}Hv&D@~-w7D1;ZVO79g$5h&^dJrz4b%i?zRiW!xMhvk$T4y! zcrqc_Jml2bV6ESUOaOe)0pJu9e-XxKx1pFOW#$(L*B#(u#=fC znH>wP@wh@9O84B7#aZB|F@+78tnUDj2xBWILjnRZBe5w{G-e}$jt)K*GiOPBfB>m- zr!c@qBm<7~92A4rl7FdXGjl6eT|BvZc60aQwQvy}VOnyrP`s2A6?~tbT$( diff --git a/mods/ITEMS/mcl_signs/textures/_oe.png b/mods/ITEMS/mcl_signs/textures/_oe.png index 9b68921555abe765aa5925be6be41fae7e41e1ba..693838ce7d421498c25b816150d3f57ca899cf45 100644 GIT binary patch literal 1853 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TNC~7?0^l1fe-P%y+j^wffb_R0G@)Fy*dDs1`z6Er-OKOB?ny0500|(F$ zAZBD?U<9&2j%I|id4OytMrH^JM!?+01!OZr-M|J^!-m8bMRFS>6U2`KAiYqwF*x#IZu@`Z{{sdAFE>v& zphX~O0*U{(8Jrn7*x1Nsy6Qkn#T!26>=6SsB3q=yxz+WMXDvWn<^y!`fpm!N- zf$|J2f~-P{hK_8)fr;!&g(60c6BlwQJ8e8D8g%i4ig8j=6DOCLxP+vXs+zinrk07R znYo3fm9vYho4bdnS8zyZSa?KaRB}pcT6#uiR&hybS$RceRdY*gTYE=m*QCi)rcRqa zW9F9X@jO*zpr5PhGlv*fm^@Vd2=W@(XT*7|i7cPNJ%;etEe0NDMquPI z3o_U<{QTFYv4Ck557{u_|9_L=ZVwNzL}ySfag8WRNi0dVN-jzTQoypz$Vk`FK-bVX z#L(Qz*x1U{RNKJ7%D^CT%LhN*B zT(M_vVtT4iYF>It27{qd{pF=wfzpDg(&3pYKv~oHsZIJoNlCb5aDG}zd16s215#1$ U+2aDN_ZS#FUHx3vIVCg!0P7(D5&!@I delta 842 zcmV-Q1GW6U4&ern8Gi-<0063BcP#(_0@iv|SaechcOY<;=uIbqxV%r}WCP6LNYkxkse}!G|9V~78@oW#a z1F`QwZzJ!3GDl`Kwx91n!k3-)dnmhKO%Kc2_h`I6>v4U0|DFtDbVWSjz^9NzJbjKL zn1K|js0B|J;%S*}L0xgD*V=_#UyFBZz0)q%ZI@>$Ld@GCztd>jNndNX6ndNy-A8`< zAQDr2ydJe1-G9e8uhrF*p;QigQEy9GEjU8XB&%CSG2Du_tx`}NOKc$4LGwUqfeJCy z9+aq4r9tPa8#PQZ@yUjoxk2}7b1^R57L+s#4L0EEK^$xvs0qw`n+vUR%NnndW8_Zo zWI`}Pj}IlhGJd7p0*x_KmnizB6Vd|n;+fN!#w0hN@P7gV8e3Cc`mPcl@+Lljoy>H} z>{wup#}(pGy62WG&H_J;DQw7OeFuO<7+WzJ5)g_P#haG;D zqc)^ZOHEsD*1VNgJ9p{W{yldK-FxZvq!X!hrc=*++UaLG>p-pz8ENRq!-kJC>Wv!h zZTm!x-jVy98f|KmSXzE|rv|gxTL_xRiB4u9#(#-G+$I4eG*4#HDJ7odCbL)=n?f1X zNGF_5lNbo5lUN7c*xku}$}MR6D{lNJa$%zTALPPBx5<6v_JUfk>lZ~9pt%dDrcnkC zHaMJK+3WmG`f?rqHNbbE??B&y=D&*3@n0?c20WK{jkkq@JOBUy32;bRa{vG?BLDy{ zBawR!K;r`y3?B|(o5TzN0016IL_t&t*JEHH75qn|@vHogO)H$ugiRY0NoG<20Bo2C U{b>C~=Kufz07*qoM6N<$g6EloWdHyG diff --git a/mods/ITEMS/mcl_signs/textures/_oe_.png b/mods/ITEMS/mcl_signs/textures/_oe_.png index 73b4da80ed711d15fa30bcc5b4b58d64030d7ac6..c66b72ba2437e291f7dc9eaf7a823308233e390a 100644 GIT binary patch literal 1854 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}Tv^ubN_mv(_K;{JkvZqwHP>n zrT{S`3j-sN1#&ebl+6QVGchtVFazm4AeLfe1*<6mvZbNy8X#K(s0O4Lq|T6$i2y92Xov18~-0L2za@9 zx&bW$ITJ|yzs=yxz`@4G&c@2Y&d$!s$-%`V!pp9XZ3R<7E#dCS&q+js2Tb?ESsqsNY)IC<*Quqec!9r-=(U9^_Ou4*DRPRCJL`OvU7(>PL{*z&<0+V@+iF4DK<6ziu(`Ff#%p zk6Dnxp5f=eE{z3Dqj<=M0ssG-4E;AXK!uxXiEBhjN@7W>RdP`(kOG!vMn<}Z2D*mE zA%^Bw#>Q5rrrHJuRt5%%TRwnFGK7ZQ{FKbJO1K6Cix49ND-&ZYLraK;W#PX-m5UU} zhSZA8G%KgflH!2WqTs~bf}B(a3mpXz5_)T=4pgNGSLFh9MM!2Y$R!x1>Zi@GKL8aA z!xekxCZ?zQq~@iUWH1;S)n8t^6(}u;DjlAg0+cn4pW37kl$3-^2Ir@hlqVLYG9VS@ Uo;@zWijRT8)78&qol`;+03OBx@c;k- delta 843 zcmV-R1GN0U4&nxo8Gi-<0063BcP#(_0@iv|SaechcOYw#%~=A?EFn-)Xe%q_4GG3O&wH} z>{wup#}(pGy62WG&H_J;DQw7OeFuO<7+WzJ5)g_P#haG;D zqc)^ZOHEsD*1VNgJ9p{W{yldK-FxZvq!X!hrc=*++UaLG>p-pz8ENRq!-kJC>Wv!h zZTm!x-jVy98f|KmSXzE|rv|gxTL_xRiB4u9#(#-G+$I4eG*4#HDJ7odCbL)=n?f1X zNGF_5lNbo5lUN7c*xku}$}MR6D{lNJa$%zTALPPBx5<6v_JUfk>x&`_(A~(&VzFdcY4e%Z4JJ5Ha`LAMh{8tOV0Y&1GWRb7k}TSkiMsjV+hCf*0Y9O3?Qdbi%yYqT}2f9&rmDSTyMyP^)T*YeY#(Vo9o1a#1RfVlXl=GSW3P&^0s; zF*LU_HnuV~)iyA&GB8No@*xXFLvDUbW?Cg&gMmeek%5(ov6Z1EM8mT1Um%||c)I$z JtaD0e0svpnQ%?W@ delta 66 zcmZ3^6golDhK+%NVO2u8E|8M(ba4!+U`$>h_@m$Dzx!l|4JQRu64aa+8Vea2nEVAk U^i{{!0o5^hy85}Sb4q9e0Dhzs)&Kwi diff --git a/mods/ITEMS/mcl_signs/textures/_p_.png b/mods/ITEMS/mcl_signs/textures/_p_.png index 2ff300509d79e16a5434102035d4986f2f7e0665..964387e6421e6608f271dcdc0c87e295895f4fbf 100644 GIT binary patch literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TSkddd0V+hCf*0YXW2Mk1*E~dZuyFN$kWV{Ghsp*LYD^GrE z?Khkh`$txQd|4GgRd3=+3|$U@POo1c=IRteW&U=dh^T+)#2WN^|o@3K3!_Yu>28MYD_&&MF SW;_R~V(@hJb6Mw<&;$TNmJ-$FVF0QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fI~kXKm&o8k%fT~$O8F}5z6KPvY8l}8JK}|9uP}0vVzr=0NK(|b`6lN z0aOFh3sPsu$ix8B2lP0D5s)ncq$dFJ5+LRPLy(_9s$sOdr*D9Qk)EM}o&|%EfuW_9 zfw7g5p@N~Ym8qGPkr|TP8bCUsZUY$sa~l_s%?xz|$o*_cY*8e)F)~5?C;-w6Wfy}Y z5(pq}`+wvA0|o&vH%~X9MIdJaiT}45oEbRS*x1=vIoR3RIXOAFctm)4xVd>Gg@pM< zWToWgWTj+e6jb!o6_j+8Wn?tWHFXROO-xMW)h%r;jBNCbO^iT>FmiHo@^JG=@bXF+ zDat4skqrJHU=ZX0x~PGfQHg;`kdaxC@&6G9d7wL48NmSJ6(FC9nT3^&or9B$8>nEb z04SuGnOK-vSy_PIWvm6tGq4D<3Mm>ovIz$!vMUve7&T5@$f4}C@t|nX#SbdRNkvVZ zTw>x9l2WQ_>Kd9_CZ=ZQ7M51dF0O9w9-dyoA)#U65s^{JDXD4c8JStdC8cHM6_r)Z zEv;?s9i3g1CQq3GGAU z*RJ2VdF$b$$4{OPfBE|D`;VW$K>lI`Mk)+Ie1_&PL7=~wSXh`@*g^hc zWGV-FT#$uT(U48ZF_1m6P*};Rkwe63;=+vwIhBorK8Pk2UE~r|F?p!^5#%+n&xrF_ z6Inikdko>PTMRtRjKIia7G$tz`1!9(V*%4B9WTb0oplfIxVrXt<3@i>!wG9lc3=9&te8@u4kei>9nN|tcU|}03!+MgXQlvU&5q5vJQXM@ i36~7cPb(=;EJ|fSstP=NT!3{b1B0ilpUXO@geCy<1{r?< delta 848 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 JtaD0e0su~D^`HO% delta 837 zcmV-L1G@aN4%!Bg8Gi-<0063BcP#(_0@Qj`SaechcOYy3P|603{>(}BvdLP=wdhGHpMTq%0drHN50ad;z6Y2C z!5XhS#HIAiE!ms}ei~CakjeT90EsZSVlgBj5Hl_b$`p;+h@hi`PsPev5?>%ds@y3| zuo20CU5nN%Ic3c`TV8im zHL+xB*?-L3id7d+uAbf8y?8BL1Xq}rTr3nXrPPW^D?(R{uJEY!;!Cb{>6I_L{3=&% zNS~IPw%n|FE3J0!(sBHI?iRZD((9msR2pgM$is$@GU`OGO_^!x%+sdNGV6mHon!k( zjXuczni?Hyi&)xz_M`^0*^dykt`l9%K#UWCxPL7INN8TnqEkw|$Sr2EFb;(>sF5x> zofa_=OoLb_J=i_T{gPYI^sl(_KamRy-Ty%@EOdw5&)mMC*6aR7kqu~_!lh}HiHi*m z!z+7Tze&H{hW{GiJJ5Ha??CHc#q9WN7ybshPoq?PLG|1R(?i0qcN! P00000NkvXXu0mjfWlD$# diff --git a/mods/ITEMS/mcl_signs/textures/_pound.png b/mods/ITEMS/mcl_signs/textures/_pound.png index 31d38d392878a7f52cc31750687a8b4c660ee09c..04a02d462622961d652d32899161aff2e2f06914 100644 GIT binary patch literal 1859 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}Tx;Tb#T+cmg$aTO#( z7kya%3`_;_`3Pm{;4ZSfKpmx!7NW6N28>71h;@_hxbl^{jmH59ofE)CkWs zPfsld4xmv$%*evP2xNhr&Io1m0NG58%nZyxIuD4Y7+Jw;N`P!>D7yy8)&Qyj=>@4X zWMpCh=>vM1!3f9}0n!tIcnJ`5fFZ~?Ak{G1-P1Qf!AQ^0K+l4~$iUFj%D~vl$WX!1 z*viz{%FqDGZCN0lP`81MfVqte$YzGRfeomJ4T&v^AI5Tjtv9YtUaQU@rdy9aC7rW3JLRz$V$n}$x6w{ zD5&VED=6tG%gAV$Yw8#nnwXf#t6SPy7}@9R;@QBE$5`HGdRHf`Rrb=&qGJ9iyAeB|h{<0np@x^(%<)oa&p+`RSh z(c>pipFMx^^3}&rpTB(l_Wj4tUm$-m0wWa$u=-07=r1M~7G@T9kiQt2%7K_!kcCyz zkWI)jkUgDHxjVMV;EJ?LWE=mPbz_QH9 zNY~In*U&h`(A>%xSe%(^8yHv_7$k1_04m848glbfGSe#I8VoE#j0~(yfQ6qWM8mT1 zU!WRB3S>iSMP{0nQ)WqVKx$ENVs1fBDuacN0tgAcwNnSGQiQ8=0lFe2GZ*9%j8av- z$!R@Mu`pb*XKrG8s!wWOdPxR@p;7(irCWj0f~eBrnJGY7)A*@P`anrZxMXmCT1k0g aQ7QvcQSRB}0<8TQ7(8A5T-G@yGywqq1_RXq delta 846 zcmV-U1F`(W4&(-q8Gi-<0063BcP#(_0@Zp{SaechcOYNg^m8nkS5Z{+{74 z6cSA#sd+9rN0d}j;fjIByWBm+wA;Jr>FHe_VmmJwB0(?rV}Bk;ze29h36_rhdY1<~ zhS-mx56{P-EYFO=(eq18|THyiKQdfl%+KPN*ly274t;2|UttuHTv z6-beaUeK}-FUcC~Zb^O;yO8VG!F!B8#V*z(m-kSFn2$pK6r&?2{W^9#La!^Lr{}j9 zA~D6+@*2C@eSgkz@2;kdNab)g^|6&bf+E71WKYYehM!_=yB1W(78{6l(7aGvphAoY zPD<3N(xkEbMh#0$JlN1PH^hC(T#O614JEBglMQ%!5C@wEY63Ao)X7 z6O0jN{7}PJ!au1GLvyawC5nE>32A|K@ycl|W06}ew10qr=8389`0g5B@+Q83UCeZc z*|EVIuiM0>^vo^UoCSIsQ#g>x`Z0hI!M9>DBp?toE(yvMjoFA0M+cvZm9r$iK!8-a zQp5%VXEok~JZu~QHVWIm!$c2UOko%F_7u0&)UliGZ)+t;ujWThu zL1B1huj`xi$9?#(2EGk_8~Qf1{#DG5|7zi1JhOL=Hh&uh00009a7bBm001r{001r{ z0g-$SMB@V$3^fWjoy1GWRb7k}T1M`nSQi>>%-sCGTR!iKBA@X3D8F4mFSw*e zc&2%JYB6vCO#@;^76wKj3*>r6D4Pe!W@2P!U35+00NkumRPuA+bfFY>*!qnIL`?0O^IYjlr=9 zbKCzL{~s_2c)5AH0WAVK6G;5O&EU+y!N$hU#>&CY&d$ln!NnuO%frphBPk@zFCr@? zFDEM{Bcq_Ar>>x+qbwt%VXmoTU}$1uBCl>~Yhh%gXKZ2wGK7(nlaq&=M}n7E!bnj@ z(THU5{{Vv^2hc@X%#2D5OoEKef{g!L#RdP`( zkOG!vMn<}Z2D*mEA%^Bw#>Q5rrrHJuRt5%%TRwnFGK7ZQ{FKbJO1K6Cix49ND-&ZY zLraK;W#PX-m5da~hSZA8G%KgflH!2WqTs~bf}B(a3mpXz5_)T=4pgNGSLFh9MM!2Y z$R!x1>g9!}g@B5M;fg(T6Vp?DQuESFG8hbv>Mt+d3X~Q^l@8BL0m_=jPi@i%N=m{d ggY(l$$`gxH8IX!{&mI?G1<1hQ>FVdQ&MBb@0GK%fa{vGU delta 857 zcmV-f1E&1O4*v#_8Gi-<0063BcP#(_0@Hd_SaechcOYy&72Pd8%R_AY1w$lg<$BCx>wj0s^*+GTmLJdZVA~M; zHbghWXOZQ3^|zjHL&BGw_H!tETul$l*%!BMb{l_vPKID~g+1ZGLr5a-zPt!#AVn%# z!JUP8Nh11+rz%N4h+W9_{ovhtFR_bt%jG!~A?B@+Ut+Z7q%U&0x#6c7(cSaY3z3-O zV|j?(oZaUf*MI72%7|1Bdr^Oua`vEjAe3?r%czD+(YLb}RL2q>akh;brkHrJp=EA}`;xgB7j7q%v?@(D;ORjeG#aQ0#C)3zoqo&duaU!ZCulOk z7-7Vl8r~CrrQQt9xl)%X`V}Xn1?I&or!kF1Zrz~;1b;MlO!bWKS;Ir##0Rj8nVw;G zEU?DoGI1!~b4yOn0zHi>Y{+DN8$gKQTQM0D5QrIv1Z9fGY($8ogHOfGSrQ*0K&sp+ zOt2BjfaAP;V~o+M%gUD+M+-oxWHF$@1_G><6!~MxkwaD2d8DdYOivcj?&vJ$DP;d+Bx1Kq`$ibmU>fM;Ub@*QU%gb>?Z)XPNazjrO*E zqDC*|KBq>T+9H-tJ-btb*zAu9TE~elW+29iK!4m80VFgpX3;4nUgQ?DSQwi^8PrG@ zoKA}v2&O@-lWy$p7+}u+VLCZ@Ilgt=IF5A}64=3s+2|OdM=b z7+%@y`X+t34gYH3+t9b6Z$s;^Vs`x6h2L8icB554t}y@r00v@9M??Vs0RI60puMM) z0Fi7RPvZj>2{b7EEq-$V001pXL_t&t*JEHH7BDg}F#Jd3GcX}@px{4@_>U~WfUW|Y jz<*@zC^REJ?PLM~h2{+U9?>?#00000NkvXXu0mjf##E2j diff --git a/mods/ITEMS/mcl_signs/textures/_ps.png b/mods/ITEMS/mcl_signs/textures/_ps.png index 74b1f5b8e03b92593cbc7acab1dbe00ee1838534..37527155ffb251278950c2836fa9797619727428 100644 GIT binary patch literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TSkgBJPV+hCfh_rpKngFTztnz?NZ47)2ien{NpdjwR# N;OXk;vd$@?2>|nq5*Yvh diff --git a/mods/ITEMS/mcl_signs/textures/_q.png b/mods/ITEMS/mcl_signs/textures/_q.png index b5fbcc27d4921c19f71a7e922a527aa7bbd4f543..a48222e28c1c7c726396d36a18b07b4cf621d2e0 100644 GIT binary patch literal 295 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TSkiMsjV+hCf-m`{W3|&hGpTuKt5;iboFyt I=akR{0Kh~~#{d8T delta 68 zcmZ3^6h1-Hj*WqVVO2u8E|8M*ba4!+U`$@1_=EothglPI`ec<317TNzSk;TGBpGgG W@qb*FFl8rDC4;A{pUXO@geCx%4;0`4 diff --git a/mods/ITEMS/mcl_signs/textures/_q_.png b/mods/ITEMS/mcl_signs/textures/_q_.png index 67479941363fa703edd3fa35b2673a4d9b37c011..50f00af20f0881a17f682d2ef0a1166314509592 100644 GIT binary patch literal 1852 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}T3VTP8lqKjU)=g}a}gZHaD6efhPy>*{A>kFqqX7wIJpu=5KBRtbQJ+&A(fMx(O zBMSo~kOguxBb3bpWHT``GcW_`JRp{0WCg1!0kWl`>>40j1E>b1mkEds8JQSB`hb3A zFaokgfb;|)UIN4%V5kFB3Q`TD-93E+6pZu?4fHG+j0_AdtqhEoCzfU-)3-T;9z58XJh4HXJ_Z+I1E3$lfRTxrg_Vt+gOiIJs9>uAD5RK~SeRK^S%BVU ztOd$5un4jWDH=Mm2?r*!D;0_uHBMZ}q3pErplHy=4=Tnkx|JhscGpMnOVgprDf$6l~v6xt!?ccon4bAPnkMx z`iz;g7A;<~blLJ1D_3pWyk+aQ?K^hvI&}ER(PPI?oIG{u@|COCuHU$M>*1rvPo6$| z{^I4UkDoq&`TFhqkDtFl{$d11Dhy!tmmttzOe`$SEbJhEF*20{F|!~GtD+&BkYgZw zVxh2-Q6qGeQ z$1KQT&+zkKm&O97Q9NYBfdBtZh9k-)GQi}iTH+c}l9E`GYL#4+3Z#H#nURsMp@FWU zafqS0m9epvsj0Ssft7(l;+7Afk_@3CH$NpatrD)mz#_!Rz{PikIzNd|+VQT^qmTY=JosM6t?DL`4%_^D0$KuJlsWN?03NqJ&XDg#nc V?%Cr4to9ffJYD@<);T3K0RRej`*r{T delta 845 zcmV-T1G4!RwJb#XUgsJ$fIpi}lFmJrp74qmVyhbmXKTa(TGnw;9pX^VT1e}R1RlRKbEq4P`nUI*~2ob;ZpQ%*MjO;Vgs=bnipydREQDH zNr^gDnlyIXs9}nU2OC=EhPW@8i*ez$p`=x5vH?#I;-Jw$O(5pSTxk0(+g~Gx=T6XM zf-%B~pKAC@_&fDsXwH?oMA7d!AuTX3UOA0vEOP4(Eq@@Od19(NzPpB(yooPh7c<>q zb}X>Q>o##IJ#$MoXMvu^6b@vveheT)@U55(2?)fDLxM6zV>Tkh(ZQ!;<}8UX5Fl0V z6eie+WWaG=zA?sV>$37K#?b;0Dp?F@uz>(8B}M*Na^z6ebsni|R#VraHA_xebIz96 z8C6XznSWX~Gq+;Z#gnUNH+L^y3m3r=rX?2(#Y-u*!fA!+iqRDswO)M5l`g&VWtU&& zstxJWQqz{3HE*TW&RsgTf6v`Q_g;D(G>}Ro4IO#d@KHvc$h9dmO`Un#^jT(oP@}VL z->A_CxnEPGLv0aDThE@!b&}C%Ip83!45FH~uGbVWIm!$c2UOko%e27u0&)UliGZ)-GHzjWTht zL1B1huj`xi+im!-2EGk_8~Qf1{wik24_5daucLOX2S4;o00006VoOIv0RI600RN!9 zrva0ZYaT)40~HB0F_}izvj6}9A4x<(R0!8&V4w>455*_~C~PKd+K3m#Y7r9_NfH16 XW;O=`rHj)N00000NkvXXu0mjf>;8a> diff --git a/mods/ITEMS/mcl_signs/textures/_qo.png b/mods/ITEMS/mcl_signs/textures/_qo.png index c7b87be683ec2176864799569e095e54e935b823..9eaca2bd70febfa108a0124a3dba2932e0ef6212 100644 GIT binary patch literal 1837 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}T7PJ2apHEj4TX{AaNjOgtB>nY$ir# z24*0g2gFj0tY9@IK(;iLT?1rm0M&r>G6At6BNGEiAJB6QMnJX*ke&dVVU~U5$0dpG{kj)Hr z0~=5c8xmU-$_Dv?kqP2Q0gzrO+ZY^KFt`1`@&5sXfR~%68_*(Jp%g%mRr3o|P#3(&iawLp0W7C}}aMMFn6;lM<8 zr9u&-#)%6#l$|yn6b-ugLB%+!sELzHOk6@zN>xo=LsQGd)Xdz%(#qMz)y>_*(@(s#)lOnKGb1qam<1W^8Gioj(pbPWiid0% z@c+NbaBY=9ATW8VmbgZgq$HN4S|t~y0x4iwW@MymXrOCo9Aap0Wo&F^YN~BuU}a#C zxa9+=BtvM(%}>cptAuMXum~|Sure{WGPHzfSQh>ZRF_DBY)GxhOtW&zEGZ61EecM| zEyzh_u+UKeA)&W+>OfVBa8)iqSA=Bdf?R@8svb!!N(3qvhAZ~WO-xVqNzF?y$zU)v zs=vH+D^OYxRXRK~1t@D8Keb68C@Be-49-t0DNig)Wk4#*J$qb$^&A6(r>mdKI;Vst E0HTldkpKVy delta 834 zcmV-I1HJsM4(SGv8Gi-<0063BcP#(_0@Qj`SaechcOY@z}uyo|tyFA!2 z#C{CX!|*P$Jg@Q5^J7T(meY9;<;<(;Wjp8LcFZ2*pYO>KjIOXJ9C!#xMC;3oURdAQ-X717i4+Ycf! z#n|24WpFFVq&O5F?tC z5_PIHY3#mH!x9q@HuTI5abGeQtUAb+5FVyZj7yM~v%i7#LmGu>f! zY_P`bHgPFEb4xa7fu6<`4rH=^3?M}Ctyl~R2*iv_f-*&8HX_8)!KY&7EQv1=AXV-Z zCfJB%z;Rx_F~?}@vhpp))dCPISqx}!fB-8cMgCZF81FT{@0`&)q`zUV0rgkV+#B9eLRBQAVA}wJ9@Aoq5{yS!R7uqjPNE zsL=qQ@COpW#VFk z!tlyo*MHJ)_u;=9_%`%y=-bfxs+b+0cHwWYrFN|9d(Wo;000JJOGiWi{{a60|De66 zlaXs4IO78q2{bwmln*-q000(AL_t&t*JEHH75qo0nXsu~Vi+0#0FFrl1B%7lcmMzZ M07*qoM6N<$g1ktG{r~^~ diff --git a/mods/ITEMS/mcl_signs/textures/_qu.png b/mods/ITEMS/mcl_signs/textures/_qu.png index 1458c7e104af8c9b9a0e996d310ecde3b4383080..51dff64f374451f15bbc617e2bb8a6d9492c6b8d 100644 GIT binary patch literal 1855 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TnY$ir#24*0g2gFj0tY9@IK(;iLT?1rm0M&r>G6At6BNGEi zAJDrDMnJX*ke&dVVU~U5$0dpG{kj)Hr0~=5c8xmU-$_Dv?kqP2Q0gzrO+ZY^uFt`1`@&5sX zfR~%68_*(Jp%g%mRr3o|P# z3(&iawLp0W7C}}aMMFn6;lM<8r9u&-#)%6#l$|yn6b-ugLB%+!sELzHOk6@zN>xo= zLsQGd)Xdz%(#qMz)y>_*(@(s#)lOnK zGb1qam<1W^8Gioj(pbPWiid0%@c+Nb@b?QBsE|`Fag8WRNi0dVN-jzTQoypz$Vk`F zK-bVX#L(Qz*x1U{RNKJ7%D^CT%LhIt27{qd{pF=wfzpDg(&3pYKv~oHsZIJoNlCb5aDG}zd16s2 Y15#1$+2aDN`4|{HUHx3vIVCg!063HVqyPW_ delta 837 zcmV-L1G@ab4(tYy8Gi-<0063BcP#(_0@Qj`SaechcOY!RwJb#XUgY~HDyF9hqI_3OW8drUI?Y^VHwqMDf+f+L3J##fmjF43$+C*#E9mk zM4c*48oO=OFvY}!4J~s++?UM7xNzH0(yBDsfTss>uxX$s5c6X$wEdRtuaU!ZCulOk z7-7UuHGC!fo%%2|=Sp3o=y#lu7MK^WoW?X3xpjvY5P#4-G1VR4UBgS>#22uOneH$< z7FgqTo4Ayoxh0#kKu==|2Qpbd1`s0nR!oKj1Y*V^L7Ad48xi8@;8QVkmc$nbkSccy z6Kq5>;5aYe7-O_`S@{;@XaNY7ECw{#K!BB!B7ZD7a;WM$k5o0QscX@iC8w-8XUpr1 zswS39Eq|MtTe0fm$;l8c4nrIcFXw8C`7=n9QmFTUhTmtOg@%dc|P zhV*HvY0J%;x6*3oE*;yy=Wd~UFTD;LNTrd6jy!DmD5Fl~+LW25&OB}UEVDkS(b=|d z)aZlUuc^_Ywuq&zXHRMnoBc3B>p0QH48%AQh=1E6fQ077EIOsci`-%s3u99#gBt0A z(`gX{!8C|<(u3WT+%LHWP5+7;{}Z{e(ET6e!a{e*{mktPYQ63+iflk@7p|B_nK;;> zFubzY^-cQiHvCru--f;oeH&VT6|>{lF8mFEsCK6c4F=u-000JJOGiWi{{a60|De66 zlaXs4JL3Zt2{i{#=W=TR000?DL_t&t*JEIy3iuDjC<55nL<-=wh*|&u=spJe=xkbP P00000NkvXXu0mjf+nA5L diff --git a/mods/ITEMS/mcl_signs/textures/_qu_inv.png b/mods/ITEMS/mcl_signs/textures/_qu_inv.png index 757bd06db7251fe0f4abd65c2054d932d12d695b..b2fa4275e68c425229da9b7af4555e18b98242e3 100644 GIT binary patch literal 1853 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TMo$mT~Z@F(>y)37&w52 z05KyA10#?Hax^29%>!gJF)}kS1L-^IOET8a5=hD3aS4nIL`?0O^IYjlq!zbKCzL{~s_2c)5AH z0WAVK6G;5O&EU+y!N$hU#>&CY&d$ln!NnuO%frphBPk@zFCr@?FDEM{Bcq_Ar>>x+ zqbwt%VXmoTU}$1uBCl>~Yhh%gXKZ2wGK7(nlaq&=M}n7E!bnj@(THU5{{Vv^2hc@X z%#2D5OoEKef{g!L#F~@HpsZ>9)FyqPq$FH2I6tkVJh3R10jVhW T>~R6sdkhSou6{1-oD!M<$AA7{ delta 836 zcmV-K1H1ga4%!Bg8Gi-<0063BcP#(_0@Zp{SaechcOY;T3L6)BjX8JMHnW{|kIi}iRSqQjC;12!Q&k=s$ zBGDM4nx~x7fh*>ixuD_4bzLX}+b+*igd=T-^iHE~Cw;BmQs{9;bRYTY z1(pzx$LmqM(SLl5eyy&=1f^2gi+WqiYQYh5#!HQaV)!ZAwn|2EEU|)E1I-hq2Fk=x zdr+iCg$DIiSE`s|)4K`qCK^$xC}-*J$CJ>Tlb!O8OXIEBMu#D*zl1@xlyCN zZJ(&oJ93{>qfKoRi_6dM)L=Gy3qkWZ(a8+NIDZm|+a!R5=E>}EijgO|$?V9CO`!~G zq!Uh~Nel#IC)PnXc6V~0atj*&iW~olT$t$o2e~lOZE_#Ey`a|0`l84JG1GWRb7k}TSkfx`LV+hCf*4~Z03d(U=z4>s{^a%_+ zhxTU+UwiwA(W-z$Nb@J#YoI3864!{5l*E!$tK_0oAjM#0U}U6gXrOCo9Aap0Wo&F^ zYN~BuU}a#CxaC6@iiX_$l+3hBxCR4@5F-OC6JskwONfSL;lDtBX7F_Nb6Mw<&;$Ub CIZfLD delta 63 zcmZ3;6f{B7l8u3ZVO2u8E|8M+ba4!+U`$>h_=A7(LkYzOh9#W;+z(D+X87d9^=1GWRb7k}T( z6Mo0vl>KEa!u3(5$6@8>r~KQKRhBl@v1ojH#4$HKuakXGK9|^}X!AWl=ewjvc&2%J zYB6vCO#)&@76wKj3*>S}D4Pe!W@2P!U=iKs9VgY*8p1AI5Tjtv9YtUaQU@rdy9aC7rW3JLRz$V$n}$x6w{ zD5&VED=6tG%gAV$Yw8#nnwXf#t6SPy7}@9R;@QBE$5`HGdRHf`Rrb=&qGJ9iyAeB|h{<0np@x^(%<)oa&p+`RSh z(c>pipFMx^^3}&rpTB(l_Wj4tUm$-m0wWa$u=-07=r1M~7G@T9kiQt2%7K_!kcCyz zkWI)jkUg?MniLsTTB}Bur z@L!+`Mhav@YDH$6l~ZO(aX@NOaAIyjPAY?ijsge?y|q&Zs#1ijasj#`Br_M}5{y#S zSNDG%P_Zyvv1e{#da6%qUV2FegP~FV<)vGJ(t@bc;h8BwS=0EbP5MAdNw{Qiep*R+ bVo@psQc>>N;{vSw7#KWV{an^LB{Ts5JYWIS delta 849 zcmV-X1FrnS4)+F-8Gi-<0063BcP#(_0@Hd_SaechcOY!RwJb#XUg}>4#h%Zuo6R^z{7pLL{d6 zT3%u|XZJbBy??rzG9s13S=5iE>>d;^gi`jfjB2W=TO;U#b43)sa>cbFXu ztns={TuRT}lFeD5r!j>CnXDfJ2oZcMCPM-OG2@V+OwpK)2yt}qshBxS;tK>wl{e1GWRb7k}T-kifS8emff2|8Ii3;9<^i&q7?~NEfpi`aOEI#7)sz6)(ol8{kgWk!1JVmp zXUNFJ0MZBaG=mY4Edrz`0Pzwa<^V&Ge?Y2Xw7aKofP#^pp@E(SgOP!urImrPm64%> zp`n$bnU#?dlH0OCI-za@83A(}7m&>ibpsnv4I2_$6v=IjOb|Z`fb>Gy#^6YVx$Xar z{|^`hyxct9fEIzA2_*jCW^iWUU}IxvW949HXXoVP;NlVC<>BV$krWc<7m<~cmy?x} zkx@|5Q&&*ZQI?U>FxS*EFf=hSkyp30wJ@^LGd3{-8N$fP$;rdbBf-lnVWcRdXhbsj ze}F-d1L&eGW=16jCP7AKLB{__803NOWMu>cpx?oOk%^gwm5rT)lZzXuV5L?6mQqXwbzED#l4gO`Kd};u4Zl zs%q*Qnp!5NX66=_R?aT2ZtfnQUcn)uVc`*xQOPN(Y3Ui6S;Zx#W#tu>Rn0A}ZS5VM zU6UqHnL2IyjG40*Enc#8+42=DS8dw7W$U)>J9h3mboj{8W5-XNJay^vm8;jT-?(|} z;iJb-o<4j2;^nK4pFV&2`tAFVpT9u>z(JGL-`{vmgtr zq9L1*V<3BCp|FxsBZr97#DyCVaw;1KeGpA5y2vG_V)9V+BgkuDpAqM=CbE16_ZY%o zw-|Vs8G(_Uw|Nl*fSZ${OVDeNgag8WRNi0dVN-jzTQoypz z$Vk`FK-bVX#L(Qz*x1U{RNKJ7%D^CT%LhmF~@HpsZ>9)FyqPq$FH2I6tkV bJh3R10jVhW>~R6se+&$su6{1-oD!MDeA)+bf(0$rmj0?8~CCx&E4S0GG2Z;u10yE#{LTlWz#%tslxf48@ z5R4|f*Am_t|EAmmjWJV~DEg%n(gO41nKhWkBscHy0)GM;TT@;7t`Z*dCO&|j%yh}@ zSYVCE72;63=awwa0zZu@Y{+DN2Y^HvTQM1AbfTDXNKmF|%tizq9egTg&XV{50aE2o zVStTD1{~)(Hu@MXUsk@%I9dQgu|*7Muz>(8B}M*Na^z6ec^;{1R#VraHA_xebIz9M z8C6XznSWX~Gq+;Z#gnUNH+L^y3m3r=rX?2(#Y-u*V$h1v6}>AwYCZUnBOQ9=!wx^n zQ5({yrKT-6Yu-w$ox5~w|DL;r?!EMS(uq_$)2U}Z?ew#pbs*PTFXTR_Mw{9smX@F0sljaa5rXD%qLUejaepEZw@CmA&68PlN{J`A$t)Jerceeo z(g~;2BnE=%B-TMUc6V~0atoUNh#UWoT$t$o2e~lOZF0YIdqb_)^+k~dXzs$PX_SG3 z4GyPQ_By{we_e-v4e%A{E6`V<`LAMh{8tM<0X&a)jp1Vo0ssI224YJ`L;(K){{a7> zy#l9`k!v1P;{z265EjqkJSPAE05M5KK~xCWV_+Z${D(0Z(FGV77#JCm1d!Qq2ApQX qqMd;W*({hOBf2VVDsejrtK$Ke%M1jchgUfO0000LGI diff --git a/mods/ITEMS/mcl_signs/textures/_re.png b/mods/ITEMS/mcl_signs/textures/_re.png index 8fdaf4d2441c2fc2407ddf2bad1447fe13844fcd..3f7dda14da1a71b3bfbd5e62c4d965e92655bbea 100644 GIT binary patch literal 291 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TSkhZ6bV+hCf}bzJ)2G#(Bfzg!QkcUtw3$6C9V-ADTyViR>?)FK#IZ0z{p6~&_LJFIKd}PVO2u8E|3!Pba4!+U`#&1`Y%~j#%UENGsEFRjvwA-&If_A44$rj JF6*2UngE~L56S=l diff --git a/mods/ITEMS/mcl_signs/textures/_registered.png b/mods/ITEMS/mcl_signs/textures/_registered.png index 9a78dda3c273acd778edc3de7730f0d5b8235921..0e510a2a725a3e1759aa7449ff83a89783b58a4b 100644 GIT binary patch literal 1861 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}T|P)KbXtD@rZfNp4$fWflF$H zXPT#{76S*+Fd$}RVPFKZK#pgGvUz}PCProkW+0sh#8Ql`U^OK`wltJo17vFe)qwPZ z)EP1|F@W>|J zoIr z{vTiv4D%dIj3MpnL z7G_pf7NB<-Yk~3%EP|{;iiVDC!hwnGN`)dujT0AgC_8ODC>nI}gNkudQ4=SZn7D+b zl&YG#hNhN@shPQjrIoXbtDC!rr&n-DXjpheWK?oWYFc_mW>#@YX<2ziWmR)aYg>Cq zXV;|3Q>IRvK4a#rMT?g#UABD1%2k^-Z`rzS`;MKv4jn#n^w{weCr@3veC6u3>o;!R zdidz^lc&#~zj*oTbPj7;S~%q+;l zs%Xe2mdKI;Vst0F{sfsQ>@~ delta 860 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 V1Pdqj;?Mv9002ovPDHLkV1fxzjhp}g diff --git a/mods/ITEMS/mcl_signs/textures/_sm.png b/mods/ITEMS/mcl_signs/textures/_sm.png index 460c5d6ddadc8c8b027ff53e5669b7bda91d06cb..2d7dc7310e6e6bd07245b4d5b8633877edf4b4a3 100644 GIT binary patch literal 1798 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}T`sfGcI01HI`f#8B3s$qNj^v2*>s0 zKj#^keRy`v{D09!^1tx>&?1mC zfyDpY49*N3Y;5dotQ_p@?3|n&Ts$JYJlxzol0w4#BC=BQaIzCa$}%z< z=9)SNh9)K^^6Hkh7DhID#wJD}Ll`+ZIeEBwBzSoxj1*-QjYtOn4=@OF09};D%&5e` zB*@4t$oT&VgFMiktc+j)^g9?ZGBLBTvaxe;a&ZF{Y!v{76f+YGGb<|#(7TMaKzRlh zK~^C}Lq|5@z(jVXLJ_0Ji3>TDoi-j64Z8S2#W<;`iIYoATtZSxRZU$(Q_IBE%-q7# z%Gt%$&E3P(D>x)HEIcAIDmf)JEj=SMtGJ}Jth}PKs=1}Lt-YhOYtrN?Q>RUzF>}_U z#Y>hhTfSoDs!f}>Y~8kf$Ie}c4j(ys?D&b3r!HN-a`oEv8#iw~eDwIq(`V0LynOZX z)8{W=zkUDl^B2fpjKD~R0j&NK1p14Kg@u`g9po=Yrg9)=7Gz;nG-MNU3}jC%6jm~7 zCkWnhrFaB^>EX>4U6ba`-PAZ2)IW&i+q+U=HGlH4E+ zMgLhvmVhLL#Bwl?s_Y=k&&6i?G1Hl(X7*vpvMNUocF9TCT@Dwtt0P?;R{{`+xCl54Hob??7)O?|`yK zW;C{+??A$ro%VAmyI)NY%h|u#_~;rJOA|Le6xlkx>jkMcd9&P#jBaAl5*o#U2syhe_ZJHe9)!3aG*l<>;< zm2wL-=Sp3o=$B4N3(SjGPGcI2+`7XH2xx9i_0;z);eR1-;se;lOi!5|3#{?DLL5r> z+>(>Cz)xce8!}nn0U!~^R!oKj1Y*V^L7Ad48xeGL@Tr(NOX33rNR>N<2{s}baGclJ z=wo#Hvhrod(E<=ESqx~ffdDHdMgCZFIwJ@}9#9eU)$4nN9K8`7txrY$#X z-b$;TyL4>-p1Xzaz4SV0AeBZMI`XjLql`L{Yg1;LI`g#Yv&?#nQKNU{KBq>T z+9H-tKf6Z)&GZ5oMAa08Q5}FsY=wy@7+}u+VLCAGy7t*6aC2krU9`g-g>Y69*d{hFA8wzDZxM z!@maj4)h)9JJ9-9F+2XNh2K1rca4(E%(Rg)EIH!?6$v&2W2fb@0000NNklR0&;R6D%SkC$Y00001GWRb7k}T`sfGcI01HI`f#8B3s$pr?yt2*>s0 zKj#^keR!CUurPEQGK%ZIX#5Ve(j_&*GtJXei-7~E5{MaD7#M*pkZp`mHV=@^#K_FR z45agbSc;JqtfmCWmWHxxfNTw*8jxO)IzvV#29UlMAT|QBMS%1KAYKB*9AF4?EJ!ts zcK7rRP%zRnG|;nPFfuT-v@$TZGBQ*!G_W!?u`)D3a$6QiC)8~qBVcah0>&?1mCfyDpY49*N3Y;5dotQ_p@ z?3|n&Ts$JYJlxzol0w4#BC=BQaIzCa$}%z<=9)SNh9)K^^6Hkh7DhID z#wJD}Ll`+ZIeEBwBzSoxj1*-QjYtOn4=@OF09};D%&5e`B*@4t$oT&VgFMiktc+j) z^g9?ZGBLBTvaxe;a&ZF{Y!v{76f+YGGb<|#(7TMaKzRlhK~^C}Lq|5@z(jVXLJ_0J zi3>TDoi-j64Z8S2#W<;`iIYoATtZSxRZU$(Q_IBE%-q7#%Gt%$&E3P(D>x)HEIcAI zDmf)JEj=SMtGJ}Jth}PKs=1}Lt-YhOYtrN?Q>RUzF>}_U#Y>hhTfSoDs!f}>Y~8kf z$Ie}c4j(ys?D&b3r!HN-a`oEv8#iw~eDwIq(`V0LynOZX)8{W=zkUDl^B2fpjKD~R z0j&NK1p14Kg@u`g9po=Yrg9)=7Gz;nG-MNU3}jC%6jm~7}~F delta 799 zcmV+)1K|Aj4c-QjBYy(ddQ@0+Qek%>aB^>EX>4U6ba`-PAZ2)IW&i+q+U=HGk|ik! zhTmPqEI~j7mt%T~m>taW=hw8(rMkK!x@R6stO(CgyE;&b( zR8rxJfycYtJ;k)!yXfiZT^?dPFBl?0FZW{}N54X@&k2@}{C|3v2Rnw?kD(9G$Dl0F zjKR_KV@UXx(|Hc%%&X~TJLfkW@7H?WuRcE~Lom9+o^aqHBoVDIFM<_Fk&0f>vJfvx z#8@SvCHYD0Latv2?=kumyI7B0-a`>$J_`9$jE)7oGy{?F!p5I=G#1vo4YwTwC zImf-bnld7l!++V-$5!?TiU?F)rLTl(Z^MHsI+&9Bdk>3B>$Z3vIt;`)lOz+zFaYFh-d1Lk(XE z|D-+)&AC#SDEb{Iqy^T+E2puHMQ*jw0s@*Rrn=+1YkzpjoA?5DG1DDp#|CS>ZWEW% zGq+@O7U*eA;Xo$q#{fbE--^YMfI!T+Bq&ofW+Orz9egTQ&XV{70aE2oVS%M-Ek8_mQe*HFYgov*eUD=WKc1QPsqfsbw>B zD^^`Rxqo_gbNAx4a1mT#T5_>ayp&QaoK~2wm|dY!>&2H`>C!7-cKKDV+K@giHEp?B z^Hy5z+@<6A_uMUX@1@s41F1C9(2<7?A7#{uT$?h})S0JEpJmnuH9E)kjT(I-_iJi& zs4Ze?>)DeU#AY8RXk90|n1L840&!aekkGuCMP{dzc#&JoVqqK#Wl$qsa5^nwAeaWR zPI|C=lKUmMpy{``@z2PGh3@|#7Z$oh?niE4Q0sMnQDg&Jr*OqI%EZM6h2fRGu5Z#G z_u;=9_%`%y=-bfxS1~*OtA&37Da&_@@!HSxkufYT;{z25HVPVhT@?TT01Qb)K~xCW dV_+C~0001l00HfVWCj2L002ovPDHLkV1g)~cLe|d diff --git a/mods/ITEMS/mcl_signs/textures/_sr.png b/mods/ITEMS/mcl_signs/textures/_sr.png index afefa91b214957091a690c366a991c17c8a6bb89..b40144656c51479987dc3c618e7089ac3c9452c9 100644 GIT binary patch literal 1841 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}Ty)CkWsPfsld4xmOLW@KSt1hPO5WrVVM zfNUm4W(H;;od?8HjI3ZaB|x?`lwAX4YXH@N^fCdlAtMt5NFUIH3`Rh<2#}rt#7lsf z0}OS5Np@EgDiItH7lH0O?x?pYt83A(} z7m&>ibpsnv4I2_$6v_tqfsqN~M*)ytDBBnuVKBG-zw!S8gMgQtryI~BkTZeA|Jw}C z3><81>};$Y?Ck8EoE%&{BD_4@+&q#(!u%q#Qu1=LQZh0MDthV)N;=9iG8*QZItGR& zCMNRgmbMl~HhRV;Mj%5NIXO9bxOpUac_oY#WfYA_2LBH*2yy^jl*P=b#K0uT$SlbC z{|JLT(4DM|U;y+Z7%(z1v#_$Ub8vET0~Kr)0EHAY6ALpdD+|!OjI}^{1{Oh9Aw@$+ zHsQcTcBMiQqsEB~Ih36?9uy6__(8=usi=vQOH5osQc6`#T|-mL#MI2(!qUpw#nsK- z!_zA`Bs45MA~GsDB{eNQBQvYGq_nKOqOz*FrM0cSqqA$$Pb?HxGHT=yahkYr z<3UbkKb$@|Xn~>=}Ok>(W@j zG>V6881VnU$#AYz<_$1;s+PD$l%ynv$V{_x$}A}k zNG%FZ%q_@CWw6ju03o5bcIrS?if~mfKv#rh=7L;;QK~MOVC(@@EDTrdnVXoN>XVw6 zUXsCJXjFfB=~ke$AgXkDW(rW&G=6H6K2TB;E*YGkR#Ki=l*)iqlzaBL0P8vi22WQ% Jmvv4FO#n_#_DBE# delta 842 zcmV-Q1GW6I4(|q#8Gi-<0063BcP#(_0@8X^SaechcOYwj0s^*+GTmLJdZVA~M; zHbghWtH|^``&-YqA>m6-`#F?7uBM0O?2FqryN$m-Cqpp0!k%#8Q%EB2KD`KLAVn%# z!JUP8N+S9yX-PhaUC8zQ;N5yJv5R%fKw*@85N`nn}dJqSR25JH^-{wNgZ(05tIXriQCKHSi zM!c!vJ>ggC&CnP#b%~;1aY9;PUOaOe)0pJu9a=y@V}Hj~SA16u4|x+Gz)ohm!t7XJ zjmKr;P`c-qEY1QwjVWx%WPKYzh~Qf>84?hP8HWUAipFe2h@*o~#mrd}A0R-g+$jvO z5y^n#Jbhz~(b8q*ON^rhAXKs#&|m`rR!WNevE<01s`ETj)vTtjMQfIvvgVvE&oio; zSTeP2W`AzQs*5LA&u;EsycRBkBTP#!7K)crYK7AZ(-osDG-^HgkRu&>%26BA zr=_MXH*4NXtDU=aZ2z9Sh3>uddeVthI@76VKJE0goOK}AhKw|HL!J=-be@q4`%aI)3fKZ(AOAqxxy{D4^ z0FiARK;r`y2{shqbYOM>0016IL_t&t*JEHH75s-{tP%_i3=9lR*ktK0_@AIp0B3as U3+WKiwEzGB07*qoM6N<$f@*4s@c;k- diff --git a/mods/ITEMS/mcl_signs/textures/_sz.png b/mods/ITEMS/mcl_signs/textures/_sz.png index 56d2847a1517a7346a218bf19d413c17be8525e3..6e323629a848fc00c331667650e5800b6bbf1741 100644 GIT binary patch literal 1857 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TK+MR(zzAf49L@-3^8ndQjLZzoKspbIr5IVkYD$1?X(+n}$kqU=0qF&)Gh}39 z0O`Mx`7R-h7E}=isUv%CWs#eKzgBUV{in*-1h&*{|5{L zUT&UlK#M@m1QP#mGdMGFu(7eTv2w7pvvYECaPf%n@^EwWND2w_i^xjJ%gIW~$SA1j zsVgYyD9gxbm}}}77@C-v$g5l0S{T{r8Jie^3}NKtKT(FjACJG$I-NKfoZ! z0d!FoGoum%lOQ9rAmjfd4DvvCvND1J(C=Wt$i&RT%Er#Y$;Ay+uvGvQQp`*&%&e>| zK<_fv0_7Q41X+a?4ISBp0~6Vm3Pp?>CobercG`GQH0a_772~9$CQdFfaS2H&RW)@D zO)V2sGjj_|D`yv1H+K(Dui%i-u<(e;sN|H?wDgS3tm2Z=vhs?`s^*r~w)T$Bu1S-p zOr17;#>`oZ7B5-4Z25|nt2S-kvUS_`9Xod&I(+2lvEwIBp1O4T%GGPvZ`{1~@X_NZ zPoF)1@$%KjPoKYh{r3IG&tD*aF#;nM2C(`|5a=%^78Yg}c96dqnaY8fS&)TQ(U48Z zF_1m6P*};Rkwe63;=+vwIhBorK8Pk2UE~r|F?p!^5#%+n&xrF_6Inikdko>PTMRtR zjKIia7G$tz`1!9(V*%4B9RdP`(kOG!vMn<}Z z2D*mEA%^Bw#>Q5rrrHJuRt5%%TRwnFGK7ZQ{FKbJO1K6Cix49ND-&ZYLraK;W#PX- z^@|k9hSZA8G%KgflH!2WqTs~bf}B(a3mpXz5_)T=4pgNGSLFh9MM!2Y$R!x1YSqcP zF+jz_aK)aviRr06sd?!o84QL-^_Q1!1xgE|N{45r0A)?%r#9&WB_-jK!TD(=<%vb9 Y3`j+}XO9c8?qgu^boFyt=akR{0AO4IJOBUy delta 851 zcmV-Z1FZbP4(bMw8Gi-<0063BcP#(_0@iv|SaechcOYud3Dt#{hRy6y5TMTmJjP8JyOnkDTW^T}Z+FXnaw*@85LW2!>dJqSV25JH`-{wMV+_J`N4dbvym;m`rZLIQJAb@@fX3ETm%ginhrEdoU?($O zGCLMn<8g&JlFL55ynO7BBHLIy>(V8WvtT|`P z^Ngw{mVZnwo0(g&>f*`OvzxmYuZ4@?2-A{_h2o`@S}|xv=!)JI9BBx)y`cywtvsvLib*JJ?TU$o$1swpLY6L&N`55Lq-}p^048fjC!L+ zd)q!yqj%&!r$(FFB$k$+-KoKB_7;NXaiWtMh<|Y+5VuJH3C)vPbV`XQxydXR#->mP zHPQ*E(-wU|0yKBw)HKS# z!3KxZD|?;aq%YUuUjuvx`VRCRX#T4h9skwBZ;>*0mQgp&od5s;32;bRa{vG?BLDy{ zBawR!N#g?*3?MsE_9_zq001XRL_t&t*JEHH7BDg}F#Jd3GcceD{zqrP1(zH&k`@2}002ovPDHLkV1o3kj(Y$A diff --git a/mods/ITEMS/mcl_signs/textures/_t.png b/mods/ITEMS/mcl_signs/textures/_t.png index e750dd98e690a2402e87fa38f57d569521494be8..e175268c3489430f977a955409f9ede9735eef69 100644 GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TSke;WDV+hCf(q2nG1_hqON&o(*8(-iPeW2M@lrU?m;@+4y z1~Vk&wl>eW)$rbRBjbfrT)cZ)8&rTgRZCnWN>UO_QmvAUQh^kMk%5tsuAzahp>c?z zxs|c8m8q$=fq|8QLE@GVStuHE^HVa@D&ZOoEJBP7tW1op3@srVmWBTUd7Q!1)z4*} HQ$iB}L_bl2 delta 64 zcmZ3+6g)xFij9GRVO2u8E|8M)ba4!+U`$q!{G;ym!CuPEV?ye)dY{dj>1GWRb7k}TSkd~*5V+hCfh^XK@10H(=q&nM`0Y-lNBU?_OU`}yj- R$n8Ky44$rjF6*2UngD+~76bqQ diff --git a/mods/ITEMS/mcl_signs/textures/_thorn.png b/mods/ITEMS/mcl_signs/textures/_thorn.png index e44f23d85c2fa28674b065a72d3b16979249b15b..3d3b4359d12abd3fd094181184c568a16f25316b 100644 GIT binary patch literal 3803 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 delta 2455 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 V6$Q-3F(m*1002ovPDHLkV1lBR-QfTL diff --git a/mods/ITEMS/mcl_signs/textures/_thorn_.png b/mods/ITEMS/mcl_signs/textures/_thorn_.png index 1b6d2558b2890962c89006ef4365a45ea3cfd3ab..add982bc1be6af1556df77f6dea950036bdd12df 100644 GIT binary patch literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e#0(^_^UdD}q*&4&eH|GXHuiJ>Nd!qMBzpw; zGB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpaf@tPl)S(AYfns60@{b znt_5$B|(0{3=CzH&sqR^j7i?^E({&4vK}Dy1s;*b3=De8Ak0{?)V>TT$X?><>&pI& zi&s#MCD%p95-6nN>Eal|aXmR9A%P<`VaBNg8@d`7E@W(R;9+BPV`B?6;7Vm+$ok1@ zzkY>W6;QouiEBhjN@7W>RdP`(kYX@0Ff!6LG|)9P4ly*hGB&m{HPtpSure@6-0~p{ rMMG|WN@iLmT!Vo{h>?MniLsTTB}Bur@L$V-8W=oX{an^LB{Ts5DiK%o delta 110 zcmcc2G?Q_H1Sba@0|UdVgmT@9y>d~HnML^o#V&qWx(g_1;pyTS!g0N~-;j^NfP;zu z^8fmoe7=+2Bu^dF6jJoK(c9tl=?)9K*#d3x+GD@B8pp5S+2v|#$7I&q&&RPMF)0{m O27{-opUXO@geCygrX_R$ diff --git a/mods/ITEMS/mcl_signs/textures/_times_cross.png b/mods/ITEMS/mcl_signs/textures/_times_cross.png index 25af91b680ac4f48163cdbaa80c50d692d8f81db..f6c6cd310257d3a84da0366873f14cd27ace5b61 100644 GIT binary patch literal 1854 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}T4z z|M@bG>nj7)6(^lA+EdEiuAtBva_g3=*R5y&t1UO(;^hs~yXpXRx=U(=XPT#{76S*+ z6d-0~VPFKZK(1zlvUz}PCProkW+0sh#8Ql`U^OK`wltJo17vFe)qwPZ)EP1|F@W>| zeam13WQzdl2|&CAh&jLzoIr{vTiv4D%dIj3MpnL7G_pf7NB<- zYk~3%EP|{;iiVDC!hwnGN`)dujT0AgC_8ODC>nI}gNkudQ4=SZn7D+bl&YG#hNhN@ zshPQjrIoXbtDC!rr&n-DXjpheWK?oWYFc_mW>#@YX<2ziWmR)aYg>CqXV;|3Q>IRv zK4a#rMT?g#UABD1%2k^-Z`rzS`;MKv4jn#n^w{weCr@3veC6u3>o;!Rdidz^lc&#~ zzj*oTbPj7;S~%q+;ls%Xe2cptAuMXum~|Sure{WGPHzfSQh>ZRJllj zY)GxhOtW&zEGZ61EecM|Eyzh_u+UKeA)&W+>OfVBa8)iqSA=Bdf?R@8stUYYlm=8R z3|H)#o0y*JlbV-alEGkTRDXHtR-m*Xs&sf}3Q*QGerl6GP*M^u8JwS1Ql40p%79dq Ud-k{hD?SDWPgg&ebxsLQ00D3Qr~m)} delta 838 zcmV-M1G)UZ4%`Ni8Gi-<0063BcP#(_0@Zp{SaechcOYib?REVMW zphTT24LVods9}nUPd3!d4Z2U8i*ey57XlO-Y{1ilI7l>56PWon7h2<%HC`jf$erNH zgkXdoA4+&-{7Sh68e^s|QS?hEqy^^1Gp8|)Np9ZZ1%CuIwx+uDT_rr^O?&`5ndy?* zvA`OSE5xC6&n;P;1%4V+*pSKk4giTTwqi0QAP_SS3Ca|W*@&Q{gHOfGSrQ*0K&sp+ z46qT&fa5&JMjxZ)%gUD-M+-oxWNZ?j8wjvcQsj>%M-Ek;=aH&rHFYgov*eUD=WKbN zQPsqfseffNb1PO|Jh^&ybNAx4a1k6~T5_>ayp&Qa2CWEP(YwN<)`Jf@(xFE_?C_%; zwIO|4YT9zM=B>2axl70P@3~v(-b=41ok*oKoqFcePCv_82Xbx5NJB>+Hhh#(Z`5dS z+b3%Dj@;+eXj7ZS((v(0K0hz_?*=n QW&i*H07*qoM6N<$f>)!3D*ylh diff --git a/mods/ITEMS/mcl_signs/textures/_times_dot.png b/mods/ITEMS/mcl_signs/textures/_times_dot.png index 42dac52bc914c5f80d60c198f3c247f43aba869b..92b5dae140241b6b9ce94af9f38885b8d388e895 100644 GIT binary patch literal 1839 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TnC20Wl*B10#?Hawa2`%>!gJF)}kS z1L-^hz%K;7(n`f-eWKVvPFRO1R!1l#2jF#15^r9 z4Wr#XeFGGX^b8I3EEtRo3@xn;jIE3e6%0+R49u)dO_1D{1=Iy|8^{Ql+qi&iW~dw3 zfNI!~*rHH2$PbK65I+il^g`Lj;OK(6?f;Gc4;Tcz+&tZY7J-}zB>vxKaAx3OV`FDy z$}_MCvI;30I#U-U>$dGXcJ4ZK_{h;?$4{I*b?NeztJkjIxOwa0qsLF4K70P+<*SdMK7aZ8?fZ|Pzd-(C z1V$;%eAPcLaA)An6AbVn=u#!j7{Xt-7UvB{QuOuED?}#K^$P#MsKv5~5*Q_%BdxA_cM`wIVak$|% zCzZiMM*)O{-rA`HRVl(%xd2@el9>x~2}Y?}C&dJEv@l$;XKrG8s!wWOdPxR@p;7(i zrCWj0f~eBrnJGY7)A*@P`anrZxMXmCT1k0gQ7QvcQSRB}0<7s67(8A5T-G@yGywpq C7VtR$ delta 828 zcmV-C1H=5U4$%gX8Gi-<0063BcP#(_0@Qj`SaechcOY@z}uyo|tyFA!2 z#C{CX!|*P$Jg@Q5^J7T(meY9;<;<(;Wjp8LcFZ2*pYO>KjIOXJ9C!#xMC;3oU(9@X0flStq0fY#?6^kJOftYbgP^M_iMua#z_*AT%CGiCUq{^Mb z1RIeIIL^yA<``{VR=&l!S^z?EL=0$ffB-8cMgCZF81FT{@0`&)q`zUV0rgkV+#B9eLRBQAVA}wJ9@Aoq5{yS!R7uqjPNE zsL=qQ@COpW#VFk z!tlyo*MHJ)_u;=9_%`%y=-bfxs+b+0cHwWPV0Nox$)@!H000SaNLh0L04^f{04^f| zc#(Y!GUEdk4F)%wT#qXN000n4L_t&t*JEH90Pvq-PyhgjbpZg^Js6At00001GWRb7k}T{1;^tu48oH2XwJZYJ_K+r>7PJ2T(H*GqNx+0$Cu( zGD6urKsFO2GXpb_&I4j8Mpm$z5+GX|%B}&jHGpbBdYOROkdcW2qz~vx1|uL_1V~Q+ z;w3=L0fst2r6AQX+TGJPK*31Q&_K_E!N|bS(#pWt%E(Z`(7?*n#LCzN$!%FcT`;$S zjDWd~3&>`Mx`7R-h7E}=3T1=*z{mvgqX0-Rlx+--G??4|-}wK4LBPw+(+y}5$eBRm z|7`|m1`akhb~aWHc6N47P7W>}5ndi{ZXQV?VSW)=DS0_rDH$0B6+LwYB^_lM84Yty z9RouX6BBuLOIr&g8$DwaBak7CoSd9I+&mJzyb?x=GKxkdgZ~E@1UY~%%3@|zVqg+v zWEN!ne}q9E=uTEfFaY`y3>cZ1Sy&0Dr^+rDGxu0w~996fgY#K}{aE?>EN?fQ+Iw;n!v{N(Ag=PzEq`uOSd zm#^Qx|M>X}8f2KE_o9%~}YXK;@p{B?_ghnW!=dCYv$V{_x z$}A}kNG%FZ%q_@CWw6ju03o5bcIrS?if~mfKv#rh=7L;;QL65Hc1!@MSQxI@GdD3k z)h9JCy(ELd(5U|M(yc&gK~(AR%oL!kY5deCeW0WyTrxO6t)x7$D3t-JDEI7f0oHd6 N44$rjF6*2UngApk_geq} delta 833 zcmV-H1HSyV4(A4t8Gi-<0063BcP#(_0@Zp{SaechcOY@z}uyo|tyFA!2 z#C{CX!|*P$Jg@Q5^J7T(meY9;<;<(;Wjp8LcFZ2*pYO>KjIOXJ9C!#xMC;3oUA?{1&VqCawC}~xiY{1ilIM_5$0}tWHT4?(%+g~Gx=T6XM zf-%C3pKAC@_&fDsXwH?oMA7d!AuX^jUOA0rEOM)b7Jm@XJTcWB-(AB?-ozKMi<#~) zJ2qJ3b(^@9p1CEPvp`Q{3I{S-KL!vY_*N{21O#HnB|({@F&h!$=-^Yaa+bsw2#_jw z3KMKZGT=Bb-KIcLl3 zj;bb>On)t#nOm{y;>p#so4XgUg^S<{(~^sY;-!>Y;k3eZ#q0`=S}(rjN|#>wvdgb> z)rRzGscFm2nzzzw=Pn(`zvphDdoR5X8c3y)hK@XJ_$Z@J-$FVF0QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fI)Bu8WK%P)Ntq#W95AdhgkdoD2p6hYu8gyMI%2pND9LD3j>1mB%;s zXgyXo_?I7~vFPU9xa*ra1%A#p)B);KEpd$~Nl7e8wMs5Z1yT$~21Z7@h6cKZ#vz90 zR>sCwrl#5k237_JiCaEop=ij>PsvQHgljOc2r)9SGBLI?w1j9_7XE7)Py>UftDnm{ Hr-UW|K`~Ls delta 63 zcmZ3&6f{B7l8u3Z!7==d9*~msba4!+U`$>h{Dc1}hZ&QC#T4&^TduYY3_`U$U-)Al RSOOI>c)I$ztaD0e0ssep5kUX| diff --git a/mods/ITEMS/mcl_signs/textures/_u_.png b/mods/ITEMS/mcl_signs/textures/_u_.png index d04ff5481972caaeb76ba61abb5cc2f57ce1b338..06bac7dd9742ee77d0846fb062e615cbe3e3a0fe 100644 GIT binary patch literal 295 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz!2%>-$FVF0QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fI)Bu8WK%P)Og?#W95Adh2ONE(QgG!v|76{*PbB9{6#?joSf9JG8BM zm^fIt&L`ftF<2vEzV9px`xiDbZ#8}?pjOoq*NBpo#FA92CkWnhrF>cS62<@k diff --git a/mods/ITEMS/mcl_signs/textures/_u_acute.png b/mods/ITEMS/mcl_signs/textures/_u_acute.png index 580f61042dfd10bfa2d861a7707511d7bed9cab6..04fe159d8b442569aa4953ec3de7586c905910c4 100644 GIT binary patch literal 1924 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz!2%>-$FVF0QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fI$^uEkI8VbJob++VDOFS;T3-=>c+sp+L9XK znda%K#lQhH3y2w67#M*pkjEIIY#tz+iIJIs8A#^=u@oaKSWO9#Ee&PY0NENqH6XoA zKy1j!!~oI<^fQAIkSzkFCjjvhAm#u=9iUQ>Y8dVA=^LP6q-SWLXTe}(U}$M&U~FY% zs9&CY&d$ln!NnuO%frphBPk@zFCr@? zFDEM{Bcq_Ar>>x+qbwt%VXmoTU}$1uBCl>~Yhh%gXKZ2wGK7(nlaq&=M}n7E!bnj@ z(THU5{{Vv^2hc?g%#2D5OoEKef{g!R;@QBE$5`HGdRHf`Rrb=&qGJ9iyAeB|h{<0np@x^(%<)oa&p z+`RSh(c>pipFMx^^3}&rpTB(l_Wj4tUm$-m0wWa$AU;F$mmttzOe`$SEbJhEF*22d zJTAz>s%Xe2NbB$Ypx9bvl%Jt&BL@RUNpJ%Y?I{{3f$ zZzz<=LsIixa*imeq{0;)kGFDbDW?6rm3&%ywTIZw7Yvi2m4D+uj(>$+9|J5M`}JxM zb^@`VKy(khi>#Sf|M>X{Bz&{ec@O1`tLbSw=fmxUJ;C4KlR=EGh$kF)2uZ}#*DQh+ zNRf(G@MIxg7Db=%R?*YXwF@7*zKeJ7y=fQgvCFFz;Z7mHX>{zQZ+5v)!!IkM$ILHZ zn8XyH%ae9hVTfttX~_qEWTx9s^EIcDwz zPbLIg{C=q6GvlAsd!RX2>Jml2>Es(Qubjp*7P<9=7k?1YJeum(ch~TgH}MJVVy0VW z#|CS>ZXqtEM{ddHEb!Bq!huZIPXI`SxfP2c0fCs2*pw+6vk^f@2cL?Svn0MifK<6t zm|!E40mpgGjWI^smz8g3TrB{hlEr`q2MDlIQsj>%M-Ek-n-o+vtEp?znkA>KIcLl3 zj;bb>On)t#nOm{y;>p#so4XgUg^S<{(~^sY;-!>YF=<8UiqRDwwO)M5l`g&VWtU&& zstxJWQqz{3HE*TW&Rsf=f6v`Q_g;D(G>}Ro4IO#d@KHvc$h9dmO`Un#^jT)TQ=@Zi zU#QU=xnEPGLv0aD+s_`*LF+ov#SFwa5r2r=B7lVE#Vk6d#EaZw77OE0D1#d5 zg41ac1Hm+ib<&;PgWNB<1x>%jjekZiEOh?`xv&D68tAx5U2M4SlAfG{AXZbU|_;!3==ta bQ40V77oZCIR}YC~00000NkvXXu0mjfxuJ{b diff --git a/mods/ITEMS/mcl_signs/textures/_u_acute_.png b/mods/ITEMS/mcl_signs/textures/_u_acute_.png index 9237d3caff35c6f167cfd02a9a543c57dd48b812..26673198180c595b6e5fbc1ef94312398b1efe7e 100644 GIT binary patch literal 1924 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz!2%>-$FVF0QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fI|m%&9Jijlm6*#s{OzI&s_3{QzZE6YHbDv)|S)= z&ooa@Ed~ytSwPIl!oUb*fjq_tW%B^pOpMG7%s@I1h@}`=!D>o?Y-uRF2FTU`ssZU` z0%Ai(CI*l`pr09xfNT*UJpqW905Jy`>Hw93RKsX@Pu~CqBRxX{JqrdS14BzI17j;A zLj^-qD??)|V?!jjH2`(N+y*iN<~A-Mn;Gf`ko(z?*rHH2$PbK65I+il^g`Lipg05q zh}-_(`2T=Gz{}0k4QLU_nLy(IZ3brs4mLJ+HdYRHc6Lrq4lW)MULJ049!Vi#ei2zI zc{y1r85so?J#_^o9c39A4RcK$149!N6M1z@TMHu_J!2CikRgnmoSZz|JQBRT5=M$L zibf=Z{|6WZIe;!|U}jWeU=n0x7G(T?gh3wYPF6-RfOrMuQDzoaHg*n9E^eTLtpcEs zVrF7tW@TjodY7>lD9^wm$SS00=*T7bFC}Pw&aUqAY)5e3MK^H%$7$+4qadL@? zOGrwos;O&eYMGdtnOj&|IlH*JxqEne1&4%&g-1k2C8wmOrDtSj6_=Ejl~+_&HMg|3 zwRd!OO`1Gq>a^)IX3ko)c*)Xb%U7&iwQ2K~t=qQm*tzS_;UhlG{sQ@n5g4g30Pz``zXXB)Vq#%oW?={Ui;<}u zuqec!9r-=(U9^_Ou4*DRPRCJL`OvU7(>PL{*z&<0+V@+iF z4DK<6ziu(`Ff#%pk6Dnxp5f=eE{z3DqjsCwrl#5k237_JiCaEop=ij>PsvQHgljOc2r)9SGBLI? zw1j9_7XE7)P=gf6hSZA8G%KgflH!2WqTs~bf}B(a3mpXz5_)T=4pgNGSLFh9MM!2Y z$R!x1@|VZWjzGo2aK)aviRr06sd?!o84QL-^_Q1!1xgE|N{45r0AmdKI;Vst0K9J*D*ylh delta 853 zcmV-b1FHOl59|hz8Gi-<002Q(%q{=`0@iv|SaechcOYNbB$Ypx9bvl%Jt&BLka|MEJ%Y?I{{3f$ zZzz<=LsIixa*imeq{0;)kGFDbDW?6rm3&%ywTIZw3x-M1%75`6$G^g^j{%mB{d%tFGPuk7deSgkz+g(i=O671i^|6)RgX0A$We>}!hL56eyB1W(78{6l(7aGvph66_ zC$h6srAcGAjT)Aic(9>mZqR+%T#O614JEBglMQ%!5C@wEY63Ig*Ft;Vvgd2$n7I=? znGlRH;)fbOGyX}v2by!GE>ZNGPQC&2%4sZPky}rA0e=C_qp5CvcMVT@6Q95?X1Zl| zY_P`b7UEKRN< z2{s}baGclN7-O`3S@~wh)dCPISqx}!fB-8cMgCZF81FT{@0`&)q`zUV0rgkV+#B9eLRBQAVA}wJ9@Aoq5{yS!TUcqjPLu zsL>m_UsIz)Z4pb`&mPoZHv0%c>pIcJ48%AQh=1E6fQ077EIOsci`-%s3*%5IgBt0A z(`gX{!8C|<(w*Id+%LHWO~1vBe?~4WbpHjpu+SZHKXUtoTCe*TMK+*y3YVr)CN4HO z46p2U{U-f!8~!%HSD>#zUxEG)fhMjC{J9L@0ibD>!9Hxm9smFU32;bRa{vG?BLDy{ zBawR!OXC9-4h&j1^*ea0IY%-fDuV0BQ~A?(b-J6j3QkE f-5%ncOd0?H?ZgNHExW_Z00000NkvXXu0mjfj^Kb= diff --git a/mods/ITEMS/mcl_signs/textures/_u_circumflex.png b/mods/ITEMS/mcl_signs/textures/_u_circumflex.png index 2b238be12fdcc71e59c6e7067bd08c755e20832d..b402d9083c28f560ac68bb5ff8b12f11ce8bb509 100644 GIT binary patch literal 1926 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz!2%>-$FVF0QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fIxoXL#S--}Tot#=yYZ zk{aQe=IN=$zyUN3h#6TJ7=bL1*BGH}9w3{Ek(q%RNaq2u6eBBGO$m@K4Q1B=*&0AK zAiYdLY{h5Edrz`0Pzwa<^V$-pi+=(813%q8=zpMXK0{j!C+)yXlZ3& zY-MDqU}$P(Xl!L*f#kLZpe~r(Kt{ma#sy?EL)`#!KN}KT6v_tqfsqN~M*)ytD7zRG zi$DNz+y5K?A20}bxp}$)Edn_cNc_Le;LO0m#>URZ%E8Xg&dJHa#UsMY!_CbjDJ0A< zA}b{?Co3f*qoAUvuAro&EF+^~uBl^SXkua_uWo5;VPvCcY+?j5gprezlZTr}f|pmq zNKr=7h-C2p0D~Y0&_xZ*j7khlf{e_9jQ@`?$OGNU$_NG!uYf$t%)-jX&cVsW4OFmI z02ETpOf1Z-tSmt9GS&j+8CV2ag%k}P*@OcV*_8@Kj2b5{ECr+Nabot8F zYu9hwy!G(W<0ns_J%91?)yGetzkL1n{m0K=Ab&9eBNYZ9K11`DAkbe-EG*0{>>z(J zGL?foF37^FXviky7|5PjD6C}E$RXl1apA^;oXW;QA4HRiE^>*fm^@Vd2=W@(XT*7| zi7cPNJ%;etEe0NDMquPI3o_U<{QTFYv4Ck5kJvEa|9_Jq_kZjLVDeTiag8WRNi0dV zN-jzTQoyp%$Vk`FK-bVX#L(Qz*x1U{RNKJ7%D^CT%ZDr!4Y~O#nQ4`94F(n=Mg~?U z##V-w5Dm-1e=P%QkOJ9|T9KJ%<&;@c9FSTRoS0jXlgePBqX0reZ|&59suba>T!5|! z$;<`01fx`5CX@lJ+Zcr5iam1^(^Gv?^U_N)7z~Z-FE8B+lomvl4$n*h%9-L1fK(ND_P78mPzDB1S3j3^P6NbB$Ypx9bvl%Jt&BLka|MEJ%Y?I{{3f$ zZzz<=LsIixa*imeq{0;)kGFDbDW?6rm3&%ywTIZw3x-M1%75`6$G^g^j{%mB{d%44g zB&PUWp0t~@`+uC{w!4}#l*-|3>SHUr2geIi${v@z) zG9egY#1A!mX8eadWU83kWoqPl4mD5^*Ow_-6QAP_SWn=(aXHX`Wg;8U@3mc$nbkSccy z6Kq5>;5e_jF~(^7vhvN0s|6rbvKY|d00CA?iu|$U$f2sDDX3~zQ`e$3OHNsH&X(65 zRZT3JT7Nb(w_?@BldESpcQ0NG7r_;#B^L|DODVNt(u&X(qbodWz4($VU3%rqF2BlE z8`7txrY$#X-b$;TyL24?p1Xzaz4SV0AeBZMI`XjLql`L{Yg1;LI`g#Yv&?#@M(5bR zP@^|;zotfq+9H;=pFOC-Z1xd?)^(zb8HjNr5P!Et013^DS#(N?7rDhO7RI4a1~t+J zr_&+^f@u)zq&vF@xnFV%ntqEL|BPH%=>7|GVWB(Ze&qHEwO;oxiflmZ6fRApOk8Ym z7+%@y`c3-dHvDaXuRvdcz5@Lp0!>^O_;VS)1IPcB#qNG(vj6}932;bRa{vG?BLDy{ zBawR!N#g?*4h;y+h{c2e001XRL_t&-(_>&D0{q7(_@9ATBmQGyV;J$Dfq{X6370WU d-$FVF0QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fIuo=AmDWI z`Gw!{H}#}4IF3v`6dt_dfKIf>-zpKunf+`tdyDuZ?VrrpS01O|!X>OLni0#uz}k`; z;hE;?sl~tnGz^FtSr{0BERfF_p==%?n~9N`ff-2W0kIS#D_BhlkSz^m*8tfXKs6w} zOh9bN$ix8B2lO<95s)ncq$dFJ5+LRPLmi+}kZKt1?&%w#V5Dbgpl88gWMF7%WngS& zWT;?hYGr6_Wo(J$wg#XsnA<=`z}&_KWHUqE0CGPY5?d6?2Kj-J3F1cqkX|Ue7!-*> z0CC&@8~-0L2za@9x&bW$ITJ|yzs=yxz`@4G&c@2Y&d$!s$-%`V!pp|K<_fv0_7Q41X+a?4ISBp0~6Vm3Pp?>CobercG`GQH0a_772~9$CQdFf zaS2H&RW)@DO)V2sGjj_|D`yv1H+K(Dui%i-u<(e;sN|H?wDgS3tm2Z=vhs?`s^*r~ zw)T$Bu1S-pOr17;#>`oZ7B5-4Z25|nt2S-kvUS_`9Xod&I(+2lvEwIBp1O4T%GGPv zZ`{1~@X_NZPoF)1@$%KjPoKYh{r3IG&tD*aF#;nM1|U8|^OqpdUra14%q;96e=#zZ zgFG(C!m4P(ZXWYowZ;xuvL#)F*7#z7xMlZq~KiK&=8RQ(9@8rWyVd8~;n zpTRwb@YgK{9%e>hzt delta 853 zcmV-b1FHOm59|hz8Gi-<002Q(%q{=`0@iv|SaechcOYNbB$Ypx9bvl%Jt&BLka|MEJ%Y?I{{3f$ zZzz<=LsIixa*imeq{0;)kGFDbDW?6rm3&%ywTIZw3x-M1%75`6$G^g^j{%mB{d%44g zB&PUWp0t~@`+uC{w!4}#l*-|3>SHUr2geIi${v@z) zG9egY#1A!mX8eadWU83kWoqPl4mD5^*Ow_-6QAP_SWn=(aXHX`Wg;8U@3mc$nbkSccy z6Kq5>;5e_jF~(^7vhvN0s|6rbvKY|d00CA?iu|$U$f2sDDX3~zQ`e$3OHNsH&X(65 zRZT3JT7Nb(w_?@BldESpcQ0NG7r_;#B^L|DODVNt(u&X(qbodWz4($VU3%rqF2BlE z8`7txrY$#X-b$;TyL24?p1Xzaz4SV0AeBZMI`XjLql`L{Yg1;LI`g#Yv&?#@M(5bR zP@^|;zotfq+9H;=pFOC-Z1xd?)^(zb8HjNr5P!Et013^DS#(N?7rDhO7RI4a1~t+J zr_&+^f@u)zq&vF@xnFV%ntqEL|BPH%=>7|GVWB(Ze&qHEwO;oxiflmZ6fRApOk8Ym z7+%@y`c3-dHvDaXuRvdcz5@Lp0!>^O_=^|51Mi`g$uL=tzW@LL32;bRa{vG?BLDy{ zBawR!OXC9-4h<(}S@_)m001dTL_t&-(_>&jfd33wz<+#_D1Z@36(crX|Iyh@xQrrQ f0^Oef4Achz_s9tV6Dpcr00000NkvXXu0mjfX!?va diff --git a/mods/ITEMS/mcl_signs/textures/_u_grave.png b/mods/ITEMS/mcl_signs/textures/_u_grave.png index 0512804284990f15fe4abceb07db1a97a607be2d..51fff9c2ee02421ff801eb9f0352039f367996c3 100644 GIT binary patch literal 1924 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz!2%>-$FVF0QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fIpao{43wbL_n}%kYU<*G2o)X5I%fPub@lWDJbw;r$YD>pcSlYfEZ` zXPT#{76S*+EFflNVPFKZKpta+vUz}PCProkW+0sh#8Ql`U^OK`wltJo17vFe)qwOe z0kI(?69Y&e(9aA;K(+{wo&dy4fS3aeb%07is$sOdr*D9Qk)EM}o&|%EfuW_9fw7g5 zp@N~Qm7%effdP`+8i2ZBZUY$sa~l_s%?xz|$o*_cY*8p1X!XqN1l2cOC(lau%ic3n%$}1|Xnp;}i z+B-VCCQY6)b=ve9GiNPYykzOJeA&aSFc^a zar4&0M~|O8efIpt%U2&ieg5+G+xH(oe}VkP2#i!1fcOl}UxGk?F|n{Pv#^8w#mH0+ z^0*)itD+&BkYgZwVxh2-Q6qGeQ$1KQT&+zkKm&O97Q9NS9fdBtZ2FI75O@PT;wZt`|BqgyV)hf9t z6-WWgLL(zxLjzqy;}Ao0D`R6TQ&VjN17L}mxaC6@iiX_$l+3hBxCR4@5F-OC6Jskw zONfSL;lGvvHAsPMNUg|BvvSHTDGo?23Qo)|$Vp|e&`|&(p|^JGKvjxxRW3kRgkStRI&@h6?^6;rl~R5Bp9~D1u6{1-oD!M<3`7{n delta 848 zcmV-W1F!sq59S7t8Gi-<002Q(%q{=`0@Zp{SaechcOY`Q( z3Pth|)jZ{t4wRT<=7NqNSGig`;(A^s?UtVH;i&rs!z5^B`+xWCUtrh!0E^pxKHG!s zK& zj(9wl2kpjaK7U5Pc2{D8QYq|By=`Un;CMnxS;G>l;iKr=su|U>#R_5#G*8qTC=)~N zf$VHlXi#5mrHUm+?rdn8D|DYW7vs!zL5Z`{U;~~O#KES5n!wDrwa}V3ulXuDW^M#e zCIlmlcvr(m#y_dIKx53*B|7}l$roUrIgMpZa`Oos^KATjt8)lnJ$?f z8!X3pg*cV&xh0FUz)z1DHe|B413)6otyl~R2pkECO^FU;HX`Wg;8U=2mdGavkSaF{ z18hVR;5g5@F~(^5vhrod)dCPINepOkfB-8-MgCZHscY7fB*mmDB}?;; zDkc_9Eq|GrTejlj(bbciyJs(%v)~HToU(=NIp{vqkU|j zsL>0#&#BR-Hi^aMXLo8ao4tjgd7bEF24Wlu#D8rPKtl6mb~wezliXx>WX7RT1~t+N zr_m$^g0U0ppc}h8xlg$Tjlac>e?=}#bpL`}nCLdS_uM|9*2?-tkp*a;!l~&Y0~Z?{ zx)=5`f0O>W4SyTpE6`VZGe=fsMc*m8!aljDO00009a7bBm001r{001r{ z0g-$SM&kn&4h;dcRDB=-001OOL_t&-(_>&D0REFLiJ|g87B+@4{}~t<7?^Mw!$gi< a)B*q>mclt diff --git a/mods/ITEMS/mcl_signs/textures/_u_grave_.png b/mods/ITEMS/mcl_signs/textures/_u_grave_.png index 6686857933c5b2e7741c29f45afa4a3491eb5361..2605b3ecaa0b3a6dfa9f5265667bac7dc1031ebb 100644 GIT binary patch literal 1925 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 delta 849 zcmV-X1Frmo59kJv8Gi-<002Q(%q{=`0@iv|SaechcOYNbB$Ypx9bvl%Jt&BLka|MEJ%Y?I{{3f$ zZzz<=LsIixa*imeq{0;)kGFDbDW?6rm3&%ywTIZw3x-M1%75`6$G^g^j{%mB{d%l?>fttX~_qEWTx9s^EIcDwz zPbLH-jQF93&y0Uk?}6rAsY?|7rju{LymA`LSmf3dUVlJ9^JuDD-(AB~-oz)ciS=2k3*1O#FxQOXpJ*@&Q{gHOfESrT6$K&sp+ zOt2BjfaAR8#u%gR%gQ%1t`>k$$zni*0|ZzpDe}jXBZsPrrl6`>Ode!o&ob+s8l7YN zLXFqQ@AvZGI6oN zVR&V)>o@6-+wivmz5;y(`U>=a2sCkB;Lm0F4$;(=#uc}I4*&oF32;bRa{vG?BLDy{ zBawR!N8&D0RH1(V**Ab6^z()U>L=O%P7(%(Czup bKz#rJ)ZGXHSBK}400000NkvXXu0mjf>erMB diff --git a/mods/ITEMS/mcl_signs/textures/_un.png b/mods/ITEMS/mcl_signs/textures/_un.png index d65f12d4e4f5dd8f99b5dd6058a6c6650ee5d57c..5da6b09a74cafd5116f981ee1230968e8e243a9b 100644 GIT binary patch literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz!2%>-$FVF0QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fI)Bu8WK%P)Nel#W95Adh(z14Gca!%m)$^9g3KgHx)A+3t<*hcpzN^ zRHItr8c~vxSdwa$T$Bo=7>o>zjC2hRbPbI|49%^Kjjc>gwG9lc3=9&te8@u4kei>9 lnN|tcU|{_`p7_hns=nMhNTg1+Jz6Ksg3aS3j3^ HP6-$FVF0QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fI)Bu8WK%P{_#B#W95Adhc07E(S#g=7XJg{_mIJX5Hy^IoIRHm6IP> z<|}D9m(4ZpUi9gAO0^cd-aO9oiyUHKU9x0=x>ZYDBT7;dOH!?pi&B9UgOP!ek*=YE zuAy;=p}Cc@v6ZQ*wt<0_fkEPy4_PQ0a`RI%(< N;OXk;vd$@?2>_X!Qhopc delta 66 zcmZ3*6golDhK+%N!7==d9*~mpba4!+U`$>h{Dc4Kj2acTuz&R_vlg&8P5Q;a5Us}b UE!U{yDNr4Qr>mdKI;Vst0FdDo7ytkO diff --git a/mods/ITEMS/mcl_signs/textures/_v_.png b/mods/ITEMS/mcl_signs/textures/_v_.png index f2ecbf143bc9ca9b246cf858e737cad29b57e2cb..5e27b773ec7ee352face89dc319ae005f9d7c037 100644 GIT binary patch literal 295 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz!2%>-$FVF0QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fI)Bu8WK%P)Og?#W95AdTXyW7lQ$h)BJ_s_iu{TnmLPuuP$Jw+ecw` z=0lz$*NS_WG0vQ#bnPCkWnhrF1GWRb7k}TWnyY(ZeeNV?BeR??&0Yb91<+v*#~fzWVs-^OvvRzW@073*;|G zV5GtTR(}Zs{l&z>!py=B@)sjhIS?}oval)|vI#i`vL_Y_D;YI%h&WALxbYyTvT@J{ z(WIh_Tw*FF4^=;cyax6eaUN?T%V%(pA^dfVfrpt97e0kHVpXx z-(>KWzV{iJJXK3vBT7;dOH!?pi&B9Uuq-n&(ls>DH8c(}G`BJ~wlX!bP0l+XkK DhQIY& delta 834 zcmV-I1HJsJ4(SGv8Gi-<0063BcP#(_0@Qj`SaechcOY@z}uyo|tyFA!2 z#C{CX!|*P$Jg@Q5^J7T(meY9;<;<(;Wjp8LcFZ2*pYO>KjIOXJ9C!#xMC;3oUuxX$s5c6X#wEdRtuaU!ZCulOk z7-7awHGC!fo%%2|=Sp3o=y#lu7FZXroW?R1xz$1o2!CjvnCg!2uHhwb;tSZtOm~*^%prN< z2{s}baGaNK%rV-!tbB`cwE%=l76Td_AizpVkw2CkIaGDsN2;3D)U{~Ml2g{4v*mS1 zRTE35mVeF6typ#O4mb)D#924b8D#D8rOKtl6k7M)V!MQ$;Rg>fj9L5+05 z>9mM}U>d|a>A~(v?w8zxrhmna|A|~!=>89KVWB(Ze&+TCwO;o>iflmZ6t0*?nYh@X zFubzY^`G?HefX~iz72gF`Zlz_DrU#0UHBW5f_AB=nCY4T000JJOGiWi{{a60|De66 zlaXs4IO78q2{tvX9dIZB000(AL_t&t*JEHH2mFUIn6SwXLP4wm0L^Xz5TCjJO8@`> M07*qoM6N<$f`bH;vj6}9 diff --git a/mods/ITEMS/mcl_signs/textures/_w.png b/mods/ITEMS/mcl_signs/textures/_w.png index 6c2eea3e192fe2119135539a1a14318795baa54e..1b8dc528e26ea620c6ea29243e8b30ab1362949d 100644 GIT binary patch literal 1848 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}T+^Y8$flK+ei7Ii){6=yJA&LP0}`Nnaeqg_%XJkvZqwHP>n`hl2{g@F;s z0=btF%H{#GnHZTFn1OU25KA$#g4L7&+0syU4Unw?R0Gn>1jL4nObj4>Kz}kA0ofuz zdIAtH0b&j?)B!35sfN++p1uJJMtX(@dKL^u28Nba2F6xKh6;uTR;H#_1|~>u%L3|x zxea6l%xzpiHZ#->Y(O<^NNiCk8{`K@CWs#eKzgBUV{p8|-1h&*{|5{LUT&UlK#M@m z1QP#mGdMGFu(7eTv2w7pvvYECaPf%n@^EwWND2w_i^xjJ%gIW~$SA1jsVgYyD9gxb zm}}}77@C-v$g5l0S{T{r8Jie^3}NKtKT(FjACJG$I-NKfoZ!0d!FoGoum% zlOQ9rAmjfd4DvvCvND1J(2roi$i&RT%Er#Y$;Ay+uvGvQQp`*&%&e>|K<_fv0_7Q4 z1X+a?4ISBp0~6Vm3Pp?>CobercG`GQH0a_772~9$CQdFfaS2H&RW)@DO)V2sGjj_| zD`yv1H+K(Dui%i-u<(e;sN|H?wDgS3tm2Z=vhs?`s^*r~w)T$Bu1S-pOr17;#>`oZ z7B5-4Z25|nt2S-kvUS_`9Xod&I(+2lvEwIBp1O4T%GGPvZ`{1~@X_NZPoF)1@$%Kj zPoKYh{r3IG&tD*aF#;nM2C(`|5a=%^78Yg}c96dqnaY8fS&)TQ(U48ZF_1m6P*};R zkwe63;=+vwIhBorK8Pk2UE~r|F?p!^5#%+n&xrF_6Inikdko>PTMRtRjKIia7G$tz z`1!9(V*%4B9*k;TjAqLW~ToOpL7zEg>3~h5rIoD^egEQY$jk ztei4SiUU%Mf)jHKa#9&AbQC~H=&hYPP?aKFl?%`nA(^=#mtd5ty5*m?0Tm0w6?^6; zrlYDh{PR5-lF=3ZgaZ#DiFo>oB3OYG zspthy7UHFe7%ODy)7QBRxqh9z$LJ$>u^zp=ry|6B4Dv^gj-K>GFOM+%wjz2)e)~cs zruf=kayMu9Ie*8!yP7gGmBZQ8kFD$x3@@Zo_OuK!d=z8bQXq~kHW2Hec|lsBLX2!q zO4O;+q_O)(4NFWs*w8aK;5e_?m}9hUS@~AuY5@q9ECw_>pIcJ48%AQh=1E6fP&`5EIOsci`-%s3*%5IgBt0A z(`gX{!8C|<(u3WT+%LHWP5+7;{}Z{e(ET6e!a{e*{mktPYQ64X6xo2*DO@>?GI6oN zV0dM(>o@7Q`|w{Kd^`Gf^zCT1GWRb7k}TA@D4Pe!W@2P!U35+00NkumRPuA+bfFY>*!qnIL`?0O^IYjlt0ebKCzL{~s_2 zc)5AH0WAVK6G;5O&EU+y!N$hU#>&CY&d$ln!NnuO%frphBPk@zFCr@?FDEM{Bcq_A zr>>x+qbwt%VXmoTU}$1uBCl>~Yhh%gXKZ2wGK7(nlaq&=M}n7E!bnj@(THU5{{Vv^ z2hc@X%#2D5OoEKef{g!L#mF~@HpsZ>9)FyqPq$FH2I6tkVJh3R1 X0jVhW>~R6sd<+bpu6{1-oD!M<>_hz3 delta 851 zcmV-Z1FZbN4*3R<8Gi-<0063BcP#(_0@Zp{SaechcOYYDh{PR5-lF=3ZgaZ#DiFo>oB3OYG zspthy7UHFe7%QY=oWIUp$o1>wJw_k7i}mQ`JryD5V~{^`bo8VjdU=H5w-wPd^4k|8 zF~!&RlDj#(&wn}Y-PM$lsT|Ixer#orV0a;wvZrN;;iDMamI85Xv4L0z%?r{36=Gy_ zQld_kCXL-UYFJ|8!G@l>A@57)VqCawC}{~zHsI+&9Bdk>3Do>p3+=dN$7|$>+zFOU za7LK%lZ3C7zatMvbFR`Qihkz_Wr20^s%b1^ky}q#0e=C_lT+RK-4b5vCcc1O%yg&O zvB4Uz+r_2ytS#A`1$G)!IFQNuaex#dwqh|PAP_Sy3Ca|W*@%!w2cL?Svn0MifK<6t zm|!E40mpg8#vG$<%gVPJR|`O>WHF$@0RpU)6!l}tQA1VNeWa>cO;9$dhsP!y7bDIU4E6T zHk40GOivcj-9(J$DP;d+Bx1Kq-whbmU>fM;UdZ)~3ufb>?Z)XPNaujn1)s zqedU(eoc)IwM8s#J9|=t+U$o5TGxp#W+29iK!4m80TeVZX3;4nUgQ?DSQv*w8PrG@ zoKA}v2&O@-lOF7zu+qi;v+U&ZYBYZv|olYn-q0^XUU00006VoOIv0RI600RN!9 zrva0ZYaU1A0~HB35dH#{E&u=kB}qg1GWRb7k}TSke;WDV+hCf*0Y9u3`njxg HN@xNA>%>ma delta 64 zcmZ3+6g)xFij9GRVO2u8E|8M)ba4!+U`$>h_=EqDM2?7~go4Tk`Ry~OFftsi<@xe) S#~MzcDh5wiKbLh*2~7Y^brawK diff --git a/mods/ITEMS/mcl_signs/textures/_x_.png b/mods/ITEMS/mcl_signs/textures/_x_.png index bcb351d56334a38a1e155e644acfbdffa82883c3..05300eca7036bf363922a830cae06f2f78e8c8c8 100644 GIT binary patch literal 296 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TSkb$R*V+hCf*0Y9O2OI>PE)fnra&uSQ!{3ZuyXfq9HdwB{QuOuED?}#K^$P#MsKv5~5*Q_%D#x89ZJ6 KT-G@yGywojO;k+) delta 66 zcmZ3%6golDhK+%NVO2u8E|8M(ba4!+U`$>h^M^f=$841XQv#Pj&{z5Gu2UEpPPX%Y U7RflY8>o)K)78&qol`;+09o-9jQ{`u diff --git a/mods/ITEMS/mcl_signs/textures/_y.png b/mods/ITEMS/mcl_signs/textures/_y.png index 7cd1d87b72dc21b13fb6a0a303faf810bd3ea9c9..87b45d413c7d8f5a9da5d6df2e5420ab26b49555 100644 GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TSke;WDV+hCf)-#4&3<^BV2fBa!*T3$#YVr)t7G=%34}+IG zi8wpNnYF&HK3i+Spfm3;yQG+*;02&g)e_f;l9a@fRIB8oR3OD*WME{ZYiOWrXdGf_ zZe?t2WooKzU|?lnkhtYT7K(=4{FKbJO1K6Cix49ND-&ZYLraK;W#PX-9%t}$^>bP0 Hl+XkKQ9Vy} delta 63 zcmZ3+6f{B7l8u3ZVO2u8E|8M+ba4!+U`$>h_=Er0j2xEc5=WoSA6F}|FbLW6eTv;{ Ry%4B~!PC{xWt~$(697eX6J7uS diff --git a/mods/ITEMS/mcl_signs/textures/_y_.png b/mods/ITEMS/mcl_signs/textures/_y_.png index b5f49850cd4ad52d81e7792b1f3dde04226a0023..de9a88db4d1dec2a0542308c51794cf69b28303f 100644 GIT binary patch literal 295 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}TSkiMsjV+hCf)?P<01_c48^lAV8r&@a~Z(?y|3p{-BLsvJ$ zq@dTDiWwO@#G($|KgzbpgG(gt^A9PYR@D;Mh?11Vl2ohYqEsNoU}Ruqq-$uPYiJx| zXl`X}Y-MVyZD3$!V34@wLl%mL-29Zxv`V-J1B(zN11l3_D?>|&hGpTuKt5;iboFyt I=akR{00j$B&;S4c delta 68 zcmZ3^6h1-Hj*WqVVO2u8E|8M*ba4!+U`$>h^M^gL1GWRb7k}T_WTR(nVgxdTk&}~?hnq)&msi3_QAW{- zWbpq0gCGacMOn;@N(@YbjLd?J|Bo=p1Kr8W2nIkuf&n8FGYcylI|nBhH&DS=0Z>RW zGqEtUva$fZ%UBDPXJ8Rz6;d>GWD^cdWLGK_F>0K+kVDyN<3Z7&iyu^slZu)+xx~aJ zB&Af<)HO7Muc{znEB9m|56C{$gY*2V!PH z7FI<=HX+AA_QXPAC8I_T5vPd@Hy-3vHV*nAnpAX=OH9S&q3TDF*T6m_&SOnv`3&wc zguiYv@Gvt1Bac~-!Jgsgzb=ghOrv!C8<`)MX5jv zSe6+X=^7g78XAWfnp+uz$}(*O11kfA#4R5{B^g3PZhlH;S|wbAfklXsft87|m7yg> z!?N&SpgKkhWJ792W}1~#W=U~CYEf`vZb42egN2R)2noHlQwOS2gsXA^x*{Yq7vvI* zQg!K-2ls%Ah2e@la}(23eNyw%OEMS?jp{Ei-3pWzM3oNDOaaQ8#!qe12TDr9C4=+R dO3D+9QW=nna?c(YVExCy;OXk;vd$@?2>><`1!RwJb#XUg$ZaBYJv%dm$22 zd@V1ro3s0z<9}XVO&O8O;VkOMQg#oD7eXm}SVlEmioWeyP#sHbAl5!mOfm6bL(AL{_a$>NF5EVhv?@(D;ORjeY#OKu#Qc~GZNFvvYvl0U37SkW zMi}u^4POa=r#=kLxl)%X`W+{v1?I&or!kF1Zrz~;1b;M7Om)Y1*YJ`z@dfN+raR1z z1=e`oCN8CCZpr2>(9@X0flStq0fY#?6_X(WftZollqnjs5h0EaJ{2=(Nqm6-sdA?< z!A2wlj`Q-3F-BXLm2WYQ7JyL6VnBlp1Xw94^2d@RhpMjgNL90%x)!Zja>|->w!F@$ zYGTRMvVWPm6{{|uTs^zFd+}Ph2#zo6I_L{3=&% zNS~IPw%n|FE3J0!(y{$}?iRZD((9msR2pgM$is$@GU`OGO_^!x%+sdNGV6mHoo)L@ zjXuczni?Hyi&)xv_M`@}*$)%6juTzXK#UWCxPL7INN8TnqEkw|$Sr2EFgArUsF5x> zofa_=OoLb_J=i_T{gPYI^sl(_KamRy-Ty%@EOdw5&)mMC*6aSF$Og1_;fiULiGvLa z!z+7T-=yDe!+$mKZRp$3x1se{F*|x80X-3 h(tm<(WME)m008M=3jBf4sp9|u002ovPDHLkV1iYKi`f7G diff --git a/mods/ITEMS/mcl_signs/textures/_y_acute_.png b/mods/ITEMS/mcl_signs/textures/_y_acute_.png index bcc15c41c725e58f5c34b0e7f18c35aa15be6dd1..18c5a552848329f986975cbb7f44b93b852b3c13 100644 GIT binary patch literal 1862 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 WMY(5>3$Wf}VDNPHb6Mw<&;$S*YW?K^ delta 844 zcmV-S1GD_S4&nxo8Gi-<0063BcP#(_0@Zp{SaechcOY@z}uyo|tyFA!2 z#C{CX!|*P$Jg@Q5^J7T(meY9;<;<(;Wjp8LcFZ2*pYO>KjIOXJ9C!#xMC;3oU7|kRzy$FZ$F5{ z6kp3r?B?t~=YP0&S5ro$ayXm%v6Vf7;)PJko|aJ!k78`Q7F5R;8;Et#yii-9LX2on zO4O;+q_O)(4NFWs*w8aK#C^$Jj0?97C9O)64S0GG2b%_J0x>_DBnbFS1SihjolX@Pa|%4sZPky|aafPaAIiK*`R?iyb5Ccc1O%yfs@ zvB4Uz+r*{x%q`iR1$r7&IFQNuF@O-kw_-6QAP_Sy3Ca|W*@zHF2cL?Svn0MifK<6t zm|%mv2OQ_+8*_}dE-T++TrB{hlEr`q2MDlIQsj>%M-Ek8_mQe*HFYgov*eUD=WKc1 zQPsqfseffNb1PO|Jh^&ybNAx4a1mT#T5_>ayp&QaoK~2wm|dY!>&2H`>C!7-cKKDV z+K@giHEp?B^Hy5z+@<6A_uMUX@1@s41F1C9(2<7?A7#{uT$?h})S0JEpJmnuH9E)k zjT(KB`!zK>)E2R{_3TLvVzVD6Xk90|n1L840)KH^1d!0Ym_?_Qc#&JoVqqK#Wl$qs za5^nwAeaWRPI|C=lKUmMpy^+6<9{L-7P|j~Tv+H1xu3axL9N&Qk0Kk;I)y8yQ6?@n zC=9Rcb^Ry(b|3z$fp0_KhQ1B0uZr36X&3$mxi)sKA9EoJ00009a7bBm001r{001r{ z0g-$SLgND!3^paVVWOu1001CKL_t&t*JEHH1^h?nGhtK3M2r#tahlDDO_oBHSOEYM Wm1GWRb7k}TC2*WiSG=MS%1KAYKB*9AKyeR0>iJquo7y0~Cz(3=Q-w7>o=IEv*cUt&9v63=OPI zO|6W~k=&LA)CF@J$OxF*xPWYCs2kXTYS@t2qEI%-4~$F@KMH{KLfOVFKnWm#xb6Rq z{|^`hyxct9fEIzA2_*jCW^iWUU}IxvW949HXXoVP;NlVC<>BV$krWc<7m<~cmy?x} zkx@|5Q&&*ZQI?U>FxS*EFf=hSkyp30wJ@^LGd3{-8N$fP$;rdbBf-lnVWcRdXhbsj ze}F-d1L&eGW=16jCP7AKLB{__803NOWMu>ch*v-!WoBVzW9Q)H;sz?%DgX*8W+oP9 zR#q0EcNuGe@(e73tU`*0j%>n#iR?;+B1Vl97jh^&Z9FI%bn%0VaZ*teCzqJGgrtbvx}>nyN9P&a7buactm7Wa!P7idPZheaY<=ec|~Pab4zPmdq-#2 zq{&mJPMbbs=B!1Fmn>bje8tLDn>KIRx^4T8ox2VlK63Qf@e?OcUAlbb>b2`PZr*zM z=<$=M&z`?{`Re1R&tJZN`~KtSFOa_&fsqOW5TBv>OAzQUCKeWE7Iu)o7@5jJ9v5U` zRWxK1atvfoEEHBUYUB`cnz(S|K~81kpbw%+MHjimR7@VKegt_9>@(s#)lOnKGb1qam<1W^8Gioj(pbPWiid0%@c+Nb5M_J{R4}QQxJHzuB$lLFB^RXvDPUP< zWTb0oplfIxVrXtUv<(cb3=9&td_dKZo1c=IRteW&U=dS^xk5 delta 847 zcmV-V1F-zR4)z9+8Gi-<0063BcP#(_0@Qj`SaechcOYYDh{PR5-lF=3ZgaZ#DiFo>oB3OYG zspthy7UHFe7%OCH?CacxT)$4I8%HeG4$5!?Th8I#Pds>DVK8mqzDGN< z2{s}baGY0c%rV-wtbD6+wE%=l76Td_AizpVQ9qU(HB@!oN2;3D)U{~Ml2g{4v*mS1 zRTE35mVeF6typ#Ofj9L5+05 z>9mM}U>d|a>A~(v?w8zxrhmna|A|~!=>89KVWB(Ze&+TCwO;oxiflmZ6t0{`nYh?s zFubzY^_%qDefX~qz8!r#`gXMbRm_gRcHwWPOm?ev$KJsJ000JJOGiWi{{a60|De66 zlaXs4MdJe%2{#*Q&`hQP001LNL_t&t*JEIyK44^EVEB(k3=YsG@eBNCU|?Wi!KIP{ Z0067|1_1?-IdA{~002ovPDHLkV1g0glBECu diff --git a/mods/ITEMS/mcl_signs/textures/_z_.png b/mods/ITEMS/mcl_signs/textures/_z_.png index 6192800b4c98ae11b552c46f7c91c06534182442..dcdf0ab8de5cb4b3c0d44c00610dae06f0465494 100644 GIT binary patch literal 1861 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7k}Tdk42(b)$nlI&HV=@^#K_FR45agbSc;JqtfmCWmWHxxfNTw*8jxNl zAU0%VVgTs_dYZuq$QA+86M%RL5OaW`4p1pbHH>!m^bJrj(la#BvtTeXFtoHXFt#!> zR4_EKGBvd_HbHV*7El+=Z6G6HZsP*7nW1iA1FB&|Vv9oAAU`lNLHsBH(hFr9gCh~< zw*NQ&KVT5>a`SWpS_E^( zPF6}rMnOeST|r4lSw=>~TvNxu(8R<5A1R0qH8UG()kO#Vxl@Sbpegp$XCT12^Hg*n9E^eTLtpcEs zVrF7tW@TjodY7>lD9^wm$SS00=*T7bFC}Pw&aUqAY)5e3MK^H%$7$+4qadL@? zOGrwos;O&eYMGdtnOj&|IlH*JxqEne1&4%&g-1k2C8wmOrDtSj6_=Ejl~+_&HMg|3 zwRd!OO`1Gq>a^)IX3ko)c*)Xb%U7&iwQ2K~t=qQm*tzS_;UhlG{sQ@n5g4g3fYo1uKz}i@urRZ*gZ#zFR1U<< zf-J0xhHOHPf$WKe!b(Ps93oB=7j8VrscandK{To8BA1wo$wSqTAg_UaMx4i*$nqK7 zV+eoUV&GwB1V$dSAcH-_&wpJS3z$ankPQR=|2G-TFI~I|OrEMGt`Q|Ei6yC4$wjF^ z3RspI8R;4t=o%V_7@Aud8v~0oZ36=<1B1jZA3!A;LPKtTN@iLmT!Vo{h>?MniLsTT zB}Bur@L!-hMhav@YDH$6l~ZO(aX@NOaAIyjPAY?ijsge?y|q&Zs#1ijasj#`Br_M} z5{y!nEoxyYP_Zyvv1e{#da6%qUV2FegP~FV<)vGJ(t@bc;h8BwS=0EbP5MAdNw{Qi fep*R+Vo@psQc>>N;{vSz7#KWV{an^LB{Ts5T(1Hg delta 849 zcmV-X1FrnV4)+F-8Gi-<0063BcP#(_0@Zp{SaechcOYYDh{PR5-lF=3ZgaZ#DiFo>oB3OYG zspthy7UHFe7%QYgo4(Fn$o1>wJw_k7i}mQ`JryD5V~{^`bo8VjdU=H5w-wPd^4k|8 zF~!&RlDj#(&wn}Y-PM$lsT|Ixer#orV0a;wvZrN;;iDMamI85Xv4L0z%?r{36=Gy_ zQld_kCXL-UYFJ|8!G@l>A@57)VqCawC}{~zHsI+&9Bdk>frs#8Ewtm79j}oiawk|a z!5Lx3PZGXT{*F8x&ACdKDEgfzlm*tstERDxMQ%M|1%CuIPfm5`cT0GwoA?5DG1Hx9 z#|CS>ZWou*v$kY&7T9S_;Xo$q#{p7=*owuFfI!T+Bq&ofW+Or#9egTQ&XV{70aE2o zVSayp&Qaf>yY$m|bB}>&2H`>C!7-cKKDV z+E6|%HEp?B^Hy5z+@<6A_uMUX@1@s41En<5(2<7?A7#{uTAMP{)S0JEpJmnuH9E)k zjT(KB`!zK>)E2R{?d(YnYO^0MXk90|n1L840)KH^1W?etm_?_Qc#&JoVqqK#Wl$qs za5^nwAeaWRPI|C=lKUmMpy^+6<9{L-7P|j~Tv+H1xu3axL9N&Qiy|A)I)y8zQ6?@n z7!0rMb^Rv&b|3z$gKtOQj=mkOe-*RiuU+^XlZ1AuNZE*-00006VoOIv0RI600RN!9 zrva0ZYaT`80~HB3A~w~;t^fc4BS}O-R0!8&V4w&vGB7aw$0CLzh^~M{f&UB)3=Ax| bR8jx{`{M`y19;H900000NkvXXu0mjfqZElv diff --git a/mods/ITEMS/mcl_signs/textures/default_sign_dark.png b/mods/ITEMS/mcl_signs/textures/default_sign_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..aedab6f06e72414bebd70305b6a0a014289b1800 GIT binary patch literal 746 zcmV&2A#>Cd=*y3ATcbg+*`50Q}q5TRP7t2|FuXA(@Gpq7Mm$0)7eX_rG=@Yz=XX`@< zARGVy010qNS#tmY3labT3lag+-G2N400AONL_t(I%e7OnPQx$|eRXXT5-^3TFd$$k z45$O@zw|%&7XE{uU}1)Vi4_DD10^L%Z8r(nk<+B2?ojchobK+~ckd+%upwGHT#v4b zaEmpFSg0xwJqE_wRjpKpSSsAyKDLN%$XRZP`=>W^v3}VOn|#mAbNBF4@~pW7%r2sJpB7r`U;TP6 zg;)%DAE&=D#dsPU8`eT8Jq72~Sk!oa{ldlZUeiMVl$)Xtj?YNoup1Z^)>>UbuM;%B z60ybdoA2!SE9EbrU5UY2w-}!H3fCFpB14}-s@%DRx=7z^LuKv(WSxz53dp8ElXJi{ cQTTWK0L8n0wECK-8vp#b^#i(XLQdbPphV4K&iC-nydN{~fIXPia%S5EmHk`cjKzp|NH(N9f_o=fvsJ5TGNf9@T_ofqo^z15$@G8 zv4rrE@R%V76uwq^yv{F*({=t(Y(&EIU{^i8=@yQ+u$D1$!Xv`IT(+b&&ZBPPN#>Up zr4Gm(#3W1rKVIULSSL%7ajAL9>~G&h&9^{7JevG<${6BElM(Njs3qx|l$sJfDPNYd z%KdkqW@>7(-reH|=d)$K4}ohJsuj!nKDMmt2{@kMGT-zUB&V5A(JM{OcL-fuaDLU) z;(Kth4gHUL%!t(_hfI4a1#f528HJu(aIe<0YOHhm0Fh03q8r#hfMMC+we|zwyl4B? z?bJO0000SaNLh0L01FZT01FZU(%pXi000BQNklfgc5Z&18+HKl=s8mo6 zAfXOoE_V(qYK}ie*x3JewuYK1MXYELsEb!dSZ}QKxd9DBc^Y4=;3 z00dd7TvuBzAFMcc)soQjuDJ1X(Zp6Q4hAhEu%<>rCr!1b_lwTlI2j4WCZf z7xjvt-ZvTi8wahpnXLuhu(`=xT5s26(j2>@zTu_!O$Ps2&7qD=%?W`bSv4{By0#vS z=;=EX`vQ)XvdMdpJd#xtQ?IM*Zn6`|iG2Zwtx0S(RMD7H72nwCJmyR610brQZveQf zRwSx{msT`>&xU7gbkIJ0SBK965Y^B(037_SBmk|SG_EqbRi)864>SFMe0jg%J%jJv zYtZ;bl+i6|8Pz_GvU(=p+cJqkgD741N7dh|T~nW`mv-f$&x&wn+W%F?(4a#}qS9ai zRZy*-j`n%`zbykC9`MJ#!;I#svYh4w3Jzic9lU2?rT}p2)J6gSJh~ifY@Ftl5RRBJ z!-Mw>%oKV3!pHzVX7a%W%}xb@u66T)T6JOu%@n+e^1Yi^T?L^kTpm@q6cuz()B!KKuxs>=5Wn=u9H^I zrh-U(9y`jy0MIo+O2CEzYT||H0bH~5ngxntj!v_nzUMkt5-7si;M2}SKD5?m)sOFg`hL8SZwSdX%eODg z21uGGf!`+Tt2>JNKY&yRF?!FuzDcGA0D<%F4Ipg43T>ZTxCENvxMt~G1pVIGo!#92 Y152xNvN(?epa1{>07*qoM6N<$f|jkdGynhq literal 0 HcmV?d00001 From 78c7ec6121d6a8b686a48515fc324ad1a0517fb3 Mon Sep 17 00:00:00 2001 From: Michieal Date: Fri, 21 Oct 2022 19:22:33 -0400 Subject: [PATCH 2/7] Added in MCL_SIGNS' debug setting. --- settingtypes.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/settingtypes.txt b/settingtypes.txt index 832025a77..d2d5130d8 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -219,3 +219,6 @@ mcl_logging_mapgen (Chunk generation logging) bool false # If enabled generated structures will be logged mcl_logging_structures (Structure generation logging) bool true + +#Complete debug logging for mcl_signs events. Use this if you have issues with signs. +mcl_logging_mcl_signs (Complete debug logging for mcl_signs) bool true From 23654916cf39a783d724da05eb9b0c998ab72d82 Mon Sep 17 00:00:00 2001 From: Michieal Date: Fri, 21 Oct 2022 23:31:00 +0000 Subject: [PATCH 3/7] Update DEBUG to use the global variable. Added in a debug variable entry into settings. This commit uses that variable for all of the Signs API's debugging needs. --- mods/ITEMS/mcl_signs/signs_api.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_signs/signs_api.lua b/mods/ITEMS/mcl_signs/signs_api.lua index 94f71de13..8b42e9ce2 100644 --- a/mods/ITEMS/mcl_signs/signs_api.lua +++ b/mods/ITEMS/mcl_signs/signs_api.lua @@ -4,7 +4,7 @@ --- DateTime: 10/14/22 4:05 PM --- -local DEBUG = false -- special debug setting. +local DEBUG = minetest.settings:get_bool("mcl_logging_mcl_signs",true) -- special debug setting. local table = table -- copied from the original signs init file. if DEBUG then From c0e4c96d879c693a00d5edd26637aa4f64fbce8b Mon Sep 17 00:00:00 2001 From: Michieal Date: Fri, 21 Oct 2022 23:54:26 +0000 Subject: [PATCH 4/7] set up for new api. Setting up for the NEW inclusive API. (prelude to). --- mods/ITEMS/mcl_signs/signs_api.lua | 531 +++++++++++++++++++++++++---- 1 file changed, 461 insertions(+), 70 deletions(-) diff --git a/mods/ITEMS/mcl_signs/signs_api.lua b/mods/ITEMS/mcl_signs/signs_api.lua index 8b42e9ce2..38f74a6a3 100644 --- a/mods/ITEMS/mcl_signs/signs_api.lua +++ b/mods/ITEMS/mcl_signs/signs_api.lua @@ -8,7 +8,7 @@ local DEBUG = minetest.settings:get_bool("mcl_logging_mcl_signs",true) -- specia local table = table -- copied from the original signs init file. if DEBUG then - minetest.log("Signs API Loading") + minetest.log("Action","Signs API Loading") end -- INITIALIZE THE GLOBAL API FOR SIGNS. @@ -62,13 +62,12 @@ else end end --- for testing purposes --- local test_color = "#BC0000" - local pi = math.pi local n = 23 / 56 - 1 / 128 -- GLOBALS +mcl_signs.sign_groups = { handy = 1, axey = 1, deco_block = 1, material_wood = 1, attached_node = 1, dig_by_piston = 1, flammable = -1 } + --- colors used for wools. mcl_signs.mcl_wool_colors = { unicolor_white = "#FFFFFF", @@ -88,24 +87,26 @@ mcl_signs.mcl_wool_colors = { unicolor_black = "#000000", unicolor_light_blue = "#5050FF", } -mcl_colors_official = { - BLACK = "#000000", - DARK_BLUE = "#0000AA", - DARK_GREEN = "#00AA00", - DARK_AQUA = "#00AAAA", - DARK_RED = "#AA0000", - DARK_PURPLE = "#AA00AA", - GOLD = "#FFAA00", - GRAY = "#AAAAAA", - DARK_GRAY = "#555555", - BLUE = "#5555FF", - GREEN = "#55FF55", - AQUA = "#55FFFF", - RED = "#FF5555", - LIGHT_PURPLE = "#FF55FF", - YELLOW = "#FFFF55", - WHITE = "#FFFFFF" -} +mcl_signs.signtext_info_wall = {} +mcl_signs.signtext_info_standing = {} -- built in build_signs_info(). + +-- data structure block for dynamically registered signs. +mcl_signs.registered_signs = {} +mcl_signs.registered_signs.wall_signs = {} +mcl_signs.registered_signs.standing_signs = {} +mcl_signs.registered_signs.hanging_signs = {} -- unused. prepping for future use. +-- DEFINE SIGN BASE TYPES +mcl_signs.wall_standard = {} -- initialize +mcl_signs.standing_standard = {} -- initialize + +mcl_signs.registered_sign_nodenames = {} + +-- locally cached copy of the official colors; this way, it updates as mcl_colors updates. +local mcl_colors_official = mcl_colors +if DEBUG then + minetest.log("Official MCL_Colors:\n" .. dump(mcl_colors_official)) +end + mcl_signs.woods = { "mcl_core:sprucewood", "mcl_core:darkwood", "mcl_core:wood", "mcl_core:birchwood", "mcl_core:junglewood", "mcl_core:acaciawood", "mcl_mangrove:mangrove_wood" } mcl_signs.signtext_info_wall = { @@ -125,37 +126,42 @@ local Dyes_table = { { "mcl_dye:blue", mcl_colors_official.BLUE }, { "mcl_dye:brown", mcl_colors_official.brown }, { "mcl_dye:cyan", mcl_signs.mcl_wool_colors.unicolor_cyan }, - { "mcl_dye:cyan 2", mcl_signs.mcl_wool_colors.unicolor_cyan }, { "mcl_dye:green", mcl_colors_official.GREEN }, - { "mcl_dye:green 2", mcl_colors_official.GREEN }, { "mcl_dye:dark_green", mcl_colors_official.DARK_GREEN }, { "mcl_dye:grey", mcl_colors_official.GRAY }, - { "mcl_dye:grey 2", mcl_signs.mcl_wool_colors.unicolor_grey }, - { "mcl_dye:grey 3", mcl_colors_official.GRAY }, { "mcl_dye:dark_grey", mcl_colors_official.DARK_GRAY }, - { "mcl_dye:dark_grey 2", mcl_signs.mcl_wool_colors.unicolor_darkgrey }, { "mcl_dye:lightblue", mcl_signs.mcl_wool_colors.unicolor_light_blue }, - { "mcl_dye:lightblue 2", mcl_signs.mcl_wool_colors.unicolor_light_blue }, { "mcl_dye:lime", mcl_signs.unicolor_green_or_lime }, - { "mcl_dye:magenta", mcl_signs.mcl_wool_colors.unicolor_red_violet_magenta }, - { "mcl_dye:magenta 2", mcl_signs.mcl_wool_colors.unicolor_red_violet_magenta }, - { "mcl_dye:magenta 3", mcl_signs.mcl_wool_colors.unicolor_red_violet_magenta }, + { "mcl_dye:magenta", mcl_colors_official.LIGHT_PURPLE }, { "mcl_dye:orange", mcl_signs.mcl_wool_colors.unicolor_orange }, - { "mcl_dye:orange 2", mcl_signs.mcl_wool_colors.unicolor_dark_orange }, { "mcl_dye:pink", mcl_signs.mcl_wool_colors.unicolor_light_red_pink }, - { "mcl_dye:pink 2", mcl_signs.mcl_wool_colors.unicolor_light_red_pink }, { "mcl_dye:purple", mcl_colors_official.LIGHT_PURPLE }, { "mcl_dye:red", mcl_signs.mcl_wool_colors.unicolor_red }, - { "mcl_dye:red 2", mcl_colors_official.RED }, { "mcl_dye:silver", mcl_signs.mcl_wool_colors.unicolor_grey }, { "mcl_dye:violet", mcl_colors_official.DARK_PURPLE }, - { "mcl_dye:violet 2", mcl_colors_official.DARK_PURPLE }, { "mcl_dye:white", mcl_colors_official.WHITE }, - { "mcl_dye:white 3", mcl_colors_official.WHITE }, { "mcl_dye:yellow", mcl_colors_official.YELLOW }, - { "mcl_dye:yellow 2", mcl_signs.mcl_wool_colors.unicolor_yellow }, } +--- Registers a new dye to use for sign text coloring. Is 100% functional. +function mcl_signs.register_dye (modname, item_name, color_code) + if minetest.get_modpath(modname) then + table.insert(Dyes_table, { item_name, color_code }) + end +end + +local function update_sign_registry(type, name) + if type == "wall" then + table.insert(mcl_signs.registered_signs.wall_signs, name) + end + if type == "standing" then + table.insert(mcl_signs.registered_signs.standing_signs, name) + end + if type == "hanging" then + table.insert(mcl_signs.registered_signs.hanging_signs, name) + end +end + --- This allows optional mods and helps prevent breaking. --- --- modname: the mod that defines the wood to add; item_name: the item_string of the wood to add. @@ -166,25 +172,19 @@ function mcl_signs.register_wood (modname, item_name) end end -function mcl_signs.register_dye (modname, item_name, color_code) - if minetest.get_modpath(modname) then - table.insert(mcl_signs.Dyes_table,{ item_name, color_code }) - end -end +-- the Reigister_sign* functions aren't yet in use, due to an error with them that is currently being debugged. Added here for the forthcoming use. --- DEFINE SIGN BASE TYPES -mcl_signs.wall_standard={} -mcl_signs.standing_standard ={} - ---- Register a new sign, tint the textures, and gives it an unique node name +--- Register a new sign, tint the textures, and gives it an unique node name. Creates both wall and standing signs. --- modname: optional (pass "" or "false" to ignore), for use with other mods to --- allow the creation of a sign from the mod's wood (if installed). ---- type: "wall", "standing". --- ---- color: the color code to color the base sign textures. +--- color: the color code to color the base sign textures. must be a valid html color code. --- ---- _name: the sign's name suffix, such as "_dark" or "_red", etc. -function mcl_signs.register_sign (modname, type, color, _name) +--- _name: the sign's name suffix, such as "_dark" or "_red", etc., appended to "wall_sign" or "standing_sign" +--- +--- ttsign: the tool tip of the sign that gets translated. Shown when the mouse hovers the inventory sign. +--- For example: the basic, default oak (wood) sign is just "Sign"; and a spruce sign would be "Spruce Sign" +function mcl_signs.register_sign (modname, color, _name, ttsign) local mod_name_pass = false if modname ~= "" and modname ~= "false" then if minetest.get_modpath(modname) then @@ -194,28 +194,221 @@ function mcl_signs.register_sign (modname, type, color, _name) return end end - local wsign ={} + local new_sign = {} - if type == "wall" then - wsign = table.copy(mcl_signs.wall_standard) + if color == nil or color == "" then + color = "#FFFFFF" end - + new_sign = table.copy(mcl_signs.wall_standard) + new_sign.description = S(ttsign) + new_sign.wield_image = "(default_sign.png^[multiply:" .. color .. ")" + new_sign.tiles = { "(mcl_signs_sign.png^[multiply:" .. color .. ")" } + new_sign.inventory_image = "(default_sign.png^[multiply:" .. color .. ")" + + -- currently have to do this, because of how the base node placement works. + new_sign.on_place = function(itemstack, placer, pointed_thing) + local above = pointed_thing.above + local under = pointed_thing.under + + -- Use pointed node's on_rightclick function first, if present + local node_under = minetest.get_node(under) + if placer and not placer:get_player_control().sneak then + if minetest.registered_nodes[node_under.name] and minetest.registered_nodes[node_under.name].on_rightclick then + return minetest.registered_nodes[node_under.name].on_rightclick(under, node_under, placer, itemstack) or itemstack + end + end + + local dir = vector.subtract(under, above) + + -- Only build when it's legal + local abovenodedef = minetest.registered_nodes[minetest.get_node(above).name] + if not abovenodedef or abovenodedef.buildable_to == false then + return itemstack + end + + local wdir = minetest.dir_to_wallmounted(dir) + local fdir = minetest.dir_to_facedir(dir) + + local sign_info + local nodeitem = ItemStack(itemstack) + -- Ceiling + if wdir == 0 then + --how would you add sign to ceiling? + return itemstack + -- Floor + elseif wdir == 1 then + -- Standing sign + + -- Determine the sign rotation based on player's yaw + local yaw = pi * 2 - placer:get_look_horizontal() + + -- Select one of 16 possible rotations (0-15) + local rotation_level = mcl_signs:round((yaw / (pi * 2)) * 16) + + if rotation_level > 15 then + rotation_level = 0 + elseif rotation_level < 0 then + rotation_level = 15 + end + + -- The actual rotation is a combination of predefined mesh and facedir (see node definition) + if rotation_level % 4 == 0 then + nodeitem:set_name("mcl_signs:standing_sign" .. _name) + elseif rotation_level % 4 == 1 then + nodeitem:set_name("mcl_signs:standing_sign22_5" .. _name) + elseif rotation_level % 4 == 2 then + nodeitem:set_name("mcl_signs:standing_sign45" .. _name) + elseif rotation_level % 4 == 3 then + nodeitem:set_name("mcl_signs:standing_sign67_5" .. _name) + end + fdir = math.floor(rotation_level / 4) + + -- Place the node! + local _, success = minetest.item_place_node(nodeitem, placer, pointed_thing, fdir) + if not success then + return itemstack + end + if not minetest.is_creative_enabled(placer:get_player_name()) then + itemstack:take_item() + end + sign_info = mcl_signs.signtext_info_standing[rotation_level + 1] + -- Side + else + -- Wall sign + local _, success = minetest.item_place_node(itemstack, placer, pointed_thing, wdir) + if not success then + return itemstack + end + sign_info = mcl_signs.signtext_info_wall[fdir + 1] + end + + -- Determine spawn position of entity + local place_pos + if minetest.registered_nodes[node_under.name].buildable_to then + place_pos = under + else + place_pos = above + end + + if DEBUG then + minetest.log("Register_Sign::Placed position:" .. dump(place_pos) .. "\nSign_info: " .. dump(sign_info)) + end + + local text_entity = minetest.add_entity({ + x = place_pos.x + sign_info.delta.x, + y = place_pos.y + sign_info.delta.y, + z = place_pos.z + sign_info.delta.z }, "mcl_signs:text") + text_entity:set_yaw(sign_info.yaw) + text_entity:get_luaentity()._signnodename = nodeitem:get_name() + + minetest.sound_play({ name = "default_place_node_hard", gain = 1.0 }, { pos = place_pos }, true) + + mcl_signs:show_formspec(placer, place_pos) + return itemstack + end + + minetest.register_node("mcl_signs:wall_sign" .. _name, new_sign) + update_sign_registry("wall", "mcl_signs:wall_sign" .. _name) + + -- debug step + if DEBUG then + minetest.log("Registered: mcl_signs:wall_sign" .. _name .. color .. "\n" .. dump(new_sign)) + minetest.log("mcl_signs:wall_sign_standard\n" .. dump(mcl_signs.wall_standard)) + end + + -- standing sign base. + local new_sign_standing = {} + new_sign_standing = table.copy(mcl_signs.standing_standard) + new_sign_standing.drop = "mcl_signs:wall_sign" .. _name + new_sign_standing.wield_image = "(default_sign.png^[multiply:" .. color .. ")" + new_sign_standing.tiles = { "(mcl_signs_sign.png^[multiply:" .. color .. ")" } + new_sign_standing.inventory_image = "(default_sign.png^[multiply:" .. color .. ")" + minetest.register_node("mcl_signs:standing_sign" .. _name, new_sign_standing) + update_sign_registry("standing", "mcl_signs:standing_sign" .. _name) + -- debug step + if DEBUG then + minetest.log("Registered: mcl_signs:standing_sign" .. _name .. color .. "\n" .. dump(new_sign_standing)) + end + + -- 22.5° + local ssign22_5d = table.copy(new_sign_standing) + ssign22_5d.mesh = "mcl_signs_sign22.5.obj" + ssign22_5d.on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_FACE then + node.name = "mcl_signs:standing_sign45" .. _name + minetest.swap_node(pos, node) + elseif mode == screwdriver.ROTATE_AXIS then + return false + end + mcl_signs:update_sign(pos, nil, nil, true) + return true + end + minetest.register_node("mcl_signs:standing_sign22_5" .. _name, ssign22_5d) + update_sign_registry("standing", "mcl_signs:standing_sign22_5" .. _name) + + -- 45° + local ssign45d = table.copy(new_sign_standing) + ssign45d.mesh = "mcl_signs_sign45.obj" + ssign45d.on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_FACE then + node.name = "mcl_signs:standing_sign67_5" .. _name + minetest.swap_node(pos, node) + elseif mode == screwdriver.ROTATE_AXIS then + return false + end + mcl_signs:update_sign(pos, nil, nil, true) + return true + end + minetest.register_node("mcl_signs:standing_sign45" .. _name, ssign45d) + update_sign_registry("standing", "mcl_signs:standing_sign45" .. _name) + + -- 67.5° + local ssign67_5d = table.copy(new_sign_standing) + ssign67_5d.mesh = "mcl_signs_sign67.5.obj" + ssign67_5d.on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_FACE then + node.name = "mcl_signs:standing_sign" .. _name + node.param2 = (node.param2 + 1) % 4 + minetest.swap_node(pos, node) + elseif mode == screwdriver.ROTATE_AXIS then + return false + end + mcl_signs:update_sign(pos, nil, nil, true) + return true + end + minetest.register_node("mcl_signs:standing_sign67_5" .. _name, ssign67_5d) + update_sign_registry("standing", "mcl_signs:standing_sign67_5" .. _name) + + -- register Doc entry + if minetest.get_modpath("doc") then + doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:wall_sign" .. _name) + doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign" .. _name) + doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign22_5" .. _name) + doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign45" .. _name) + doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign67_5" .. _name) + end end + --- the same as register_sign, except caller defines the textures. --- modname: optional (pass "" or "false" to ignore), for use with other mods to --- allow the creation of a sign from the mod's wood (if installed). --- type: "wall", "standing". --- ---- color: the color code to color the base sign textures. (use white or grey to not color the sign) +--- _name: the sign's name suffix, such as "_dark" or "_red", etc., appended to "wall_sign" or "standing_sign" --- ---- _name: the sign's name suffix, such as "_dark" or "_red", etc. +--- tiles: the texture file to use for the sign. --- ---- model_texture: the texture file to use for the sign. +--- inventory_image: the texture file to use for the sign's display in inventory. +--- +--- wield_image: the texture file to use for the sign's weilded (in hand) object. --- --- inventory_image: the image used for in-inventory and in hand. -function mcl_signs.register_sign_and_textures (modname, type, color, _name, model_texture, inventory_image) +--- +--- ttsign: the tool tip of the sign that gets translated. Shown when the mouse hovers the inventory sign. +--- For example: the basic, default oak (wood) sign is just "Sign"; and a spruce sign would be "Spruce Sign" +function mcl_signs.register_sign_custom (modname, _name, tiles, inventory_image, wield_image, ttsign) local mod_name_pass = false if modname ~= "" and modname ~= "false" then if minetest.get_modpath(modname) then @@ -225,22 +418,195 @@ function mcl_signs.register_sign_and_textures (modname, type, color, _name, mode return end end + local new_sign = {} + + new_sign = table.copy(mcl_signs.wall_standard) + + new_sign.wield_image = wield_image + new_sign.tiles = { tiles } + new_sign.inventory_image = inventory_image + new_sign.description = S(ttsign) + -- currently have to do this, because of how the base node placement works. + new_sign.on_place = function(itemstack, placer, pointed_thing) + local above = pointed_thing.above + local under = pointed_thing.under + + -- Use pointed node's on_rightclick function first, if present + local node_under = minetest.get_node(under) + if placer and not placer:get_player_control().sneak then + if minetest.registered_nodes[node_under.name] and minetest.registered_nodes[node_under.name].on_rightclick then + return minetest.registered_nodes[node_under.name].on_rightclick(under, node_under, placer, itemstack) or itemstack + end + end + + local dir = vector.subtract(under, above) + + -- Only build when it's legal + local abovenodedef = minetest.registered_nodes[minetest.get_node(above).name] + if not abovenodedef or abovenodedef.buildable_to == false then + return itemstack + end + + local wdir = minetest.dir_to_wallmounted(dir) + local fdir = minetest.dir_to_facedir(dir) + + local sign_info + local nodeitem = ItemStack(itemstack) + -- Ceiling + if wdir == 0 then + --how would you add sign to ceiling? + return itemstack + -- Floor + elseif wdir == 1 then + -- Standing sign + + -- Determine the sign rotation based on player's yaw + local yaw = pi * 2 - placer:get_look_horizontal() + + -- Select one of 16 possible rotations (0-15) + local rotation_level = mcl_signs:round((yaw / (pi * 2)) * 16) + + if rotation_level > 15 then + rotation_level = 0 + elseif rotation_level < 0 then + rotation_level = 15 + end + + -- The actual rotation is a combination of predefined mesh and facedir (see node definition) + if rotation_level % 4 == 0 then + nodeitem:set_name("mcl_signs:standing_sign" .. _name) + elseif rotation_level % 4 == 1 then + nodeitem:set_name("mcl_signs:standing_sign22_5" .. _name) + elseif rotation_level % 4 == 2 then + nodeitem:set_name("mcl_signs:standing_sign45" .. _name) + elseif rotation_level % 4 == 3 then + nodeitem:set_name("mcl_signs:standing_sign67_5" .. _name) + end + fdir = math.floor(rotation_level / 4) + + -- Place the node! + local _, success = minetest.item_place_node(nodeitem, placer, pointed_thing, fdir) + if not success then + return itemstack + end + if not minetest.is_creative_enabled(placer:get_player_name()) then + itemstack:take_item() + end + sign_info = mcl_signs.signtext_info_standing[rotation_level + 1] + -- Side + else + -- Wall sign + local _, success = minetest.item_place_node(itemstack, placer, pointed_thing, wdir) + if not success then + return itemstack + end + sign_info = mcl_signs.signtext_info_wall[fdir + 1] + end + + -- Determine spawn position of entity + local place_pos + if minetest.registered_nodes[node_under.name].buildable_to then + place_pos = under + else + place_pos = above + end + + local text_entity = minetest.add_entity({ + x = place_pos.x + sign_info.delta.x, + y = place_pos.y + sign_info.delta.y, + z = place_pos.z + sign_info.delta.z }, "mcl_signs:text") + text_entity:set_yaw(sign_info.yaw) + text_entity:get_luaentity()._signnodename = nodeitem:get_name() + + minetest.sound_play({ name = "default_place_node_hard", gain = 1.0 }, { pos = place_pos }, true) + + mcl_signs:show_formspec(placer, place_pos) + return itemstack + end + minetest.register_node("mcl_signs:wall_sign" .. _name, new_sign) + update_sign_registry("wall", "mcl_signs:wall_sign" .. _name) + + -- standing sign base. + local new_sign_standing = {} + new_sign_standing = table.copy(mcl_signs.standing_standard) + new_sign_standing.drop = "mcl_signs:wall_sign" .. _name + new_sign_standing.wield_image = wield_image + new_sign_standing.tiles = { tiles } + new_sign_standing.inventory_image = inventory_image + minetest.register_node("mcl_signs:standing_sign" .. _name, new_sign_standing) + update_sign_registry("standing", "mcl_signs:standing_sign" .. _name) + + -- 22.5° + local ssign22_5d = table.copy(new_sign_standing) + ssign22_5d.mesh = "mcl_signs_sign22.5.obj" + ssign22_5d.on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_FACE then + node.name = "mcl_signs:standing_sign45" .. _name + minetest.swap_node(pos, node) + elseif mode == screwdriver.ROTATE_AXIS then + return false + end + mcl_signs:update_sign(pos, nil, nil, true) + return true + end + minetest.register_node("mcl_signs:standing_sign22_5" .. _name, ssign22_5d) + update_sign_registry("standing", "mcl_signs:standing_sign22_5" .. _name) + + -- 45° + local ssign45d = table.copy(new_sign_standing) + ssign45d.mesh = "mcl_signs_sign45.obj" + ssign45d.on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_FACE then + node.name = "mcl_signs:standing_sign67_5" .. _name + minetest.swap_node(pos, node) + elseif mode == screwdriver.ROTATE_AXIS then + return false + end + mcl_signs:update_sign(pos, nil, nil, true) + return true + end + minetest.register_node("mcl_signs:standing_sign45" .. _name, ssign45d) + update_sign_registry("standing", "mcl_signs:standing_sign45" .. _name) + + -- 67.5° + local ssign67_5d = table.copy(new_sign_standing) + ssign67_5d.mesh = "mcl_signs_sign67.5.obj" + ssign67_5d.on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_FACE then + node.name = "mcl_signs:standing_sign" .. _name + node.param2 = (node.param2 + 1) % 4 + minetest.swap_node(pos, node) + elseif mode == screwdriver.ROTATE_AXIS then + return false + end + mcl_signs:update_sign(pos, nil, nil, true) + return true + end + minetest.register_node("mcl_signs:standing_sign67_5" .. _name, ssign67_5d) + update_sign_registry("standing", "mcl_signs:standing_sign67_5" .. _name) + + -- register Doc entry + if minetest.get_modpath("doc") then + doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:wall_sign" .. _name) + doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign" .. _name) + doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign22_5" .. _name) + doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign45" .. _name) + doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign67_5" .. _name) + end end ---- the same as register_sign_and_textures, except uses 1 image for all of the model textures. +--- Usage: Call this with the mod's name, the wood's item string (for the planks), and with the sign's suffix. +--- Registers the crafting recipe for that sign. for every registered sign, call this function to register the +--- standard recipe for the sign. Otherwise, you have to do your own register craft call. +--- --- modname: optional (pass "" or "false" to ignore), for use with other mods to ---- allow the creation of a sign from the mod's wood (if installed). ---- type: "wall", "standing". +--- allow the creation of a sign from the mod's wood (if installed). Example: "mcl_core". --- ---- color: the color code to color the base sign textures. (use white or grey to not color the sign) +--- wood_item_string: example: "mcl_core:wood" or "mcl_core:sprucewood" --- ---- _name: the sign's name suffix, such as "_dark" or "_red", etc. ---- ---- model_texture: the texture file to use for the sign. ---- ---- inventory_image: the image used for in-inventory and in hand. -function mcl_signs.register_sign_and_tiles (modname, type, color, _name, tiles, inventory_image) +--- _name: the sign's name suffix, such as "_dark" or "_red", etc., appended to "wall_sign" or "standing_sign" +function mcl_signs.register_sign_craft(modname, wood_item_string, _name) local mod_name_pass = false if modname ~= "" and modname ~= "false" then if minetest.get_modpath(modname) then @@ -251,8 +617,33 @@ function mcl_signs.register_sign_and_tiles (modname, type, color, _name, tiles, end end -end + minetest.register_craft({ + type = "fuel", + recipe = "mcl_signs:wall_sign" .. _name, + burntime = 10, + }) + -- debug step + if DEBUG then + minetest.log("Action", "Register Sign Crafts: \n" .. modname .. "\n" .. wood_item_string .. "\n" .. _name) + end + + -- register crafts (actual recipe) + if minetest.get_modpath(modname) then + + local itemstring = "mcl_signs:wall_sign" + + minetest.register_craft({ + output = itemstring .. _name .. " 3", + recipe = { + { wood_item_string, wood_item_string, wood_item_string }, + { wood_item_string, wood_item_string, wood_item_string }, + { "", "mcl_core:stick", "" }, + }, + }) + end + +end -- Helper functions local function string_to_array(str) From 9bbb065967ec520d2217b6cd8abd3c9a975b1534 Mon Sep 17 00:00:00 2001 From: Michieal Date: Fri, 21 Oct 2022 22:50:39 -0400 Subject: [PATCH 5/7] Complete signs acess using new API. Has compatibility layer for signs_dark, the original signs, etc. Has added greyscale sign for making your own signs. :) TODO: add in translations, tweak the sign colors. --- mods/ITEMS/mcl_signs/init.lua | 158 ++-- mods/ITEMS/mcl_signs/signs_api.lua | 1140 +++++++++++++--------------- 2 files changed, 601 insertions(+), 697 deletions(-) diff --git a/mods/ITEMS/mcl_signs/init.lua b/mods/ITEMS/mcl_signs/init.lua index 10bd909ba..d07b36a65 100644 --- a/mods/ITEMS/mcl_signs/init.lua +++ b/mods/ITEMS/mcl_signs/init.lua @@ -7,24 +7,12 @@ local modname = minetest.get_current_modname() local modpath = minetest.get_modpath(modname) -local table = table -local m = -1 / 16 + 1 / 64 - -- Signs API dofile(modpath .. "/signs_api.lua") -- LOCALIZATION local S = minetest.get_translator(modname) --- PLACE YAW VALUES INTO THE TABLE. -for rot = 0, 15 do - local yaw = math.pi * 2 - (((math.pi * 2) / 16) * rot) - local delta = vector.multiply(minetest.yaw_to_dir(yaw), m) - -- Offset because sign is a bit above node boundaries - delta.y = delta.y + 2 / 28 - table.insert(mcl_signs.signtext_info_standing, { delta = delta, yaw = yaw }) -end - -- HANDLE THE FORMSPEC CALLBACK minetest.register_on_player_receive_fields(function(player, formname, fields) if formname:find("mcl_signs:set_text_") == 1 then @@ -37,8 +25,6 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end end) -mcl_signs:generate_signs() -- initialize the nodes for the signs. - -- FIXME: Prevent entity destruction by /clearobjects minetest.register_entity("mcl_signs:text", { pointable = false, @@ -50,94 +36,108 @@ minetest.register_entity("mcl_signs:text", { _signnodename = nil, -- node name of sign node to which the text belongs on_activate = function(self, staticdata) + + local meta = minetest.get_meta(self.object:get_pos()) + local text = meta:get_string("text") + local text_color = meta:get_string("mcl_signs:text_color") + local glowing_sign = meta:get_string("mcl_signs:glowing_sign") if staticdata and staticdata ~= "" then local des = minetest.deserialize(staticdata) if des then self._signnodename = des._signnodename + if des._text_color ~= nil and des._text_color ~= "" then + self.text_color = des._text_color + end + if des._glowing_sign ~= nil and des._glowing_sign ~= "" then + self.glowing_sign = des._glowing_sign + end end end - local meta = minetest.get_meta(self.object:get_pos()) - local text = meta:get_string("text") + + if text_color == "" or text_color == nil then + text_color = "#000000" -- default to black text. + meta:set_string("mcl_signs:text_color", text_color) + end + + if glowing_sign == "" or glowing_sign == nil then + glowing_sign = "false" -- default to not glowing. + meta:set_string("mcl_signs:glowing_sign", glowing_sign) + end + self.object:set_properties({ - textures = { mcl_signs:create_lettering(text, self._signnodename) }, + textures = { mcl_signs:create_lettering(text, self._signnodename, text_color) }, }) + if glowing_sign == "true" then + self.object:set_properties({ + glow = 6, --sign_glow, + }) + end + self.object:set_armor_groups({ immortal = 1 }) + end, get_staticdata = function(self) - local out = { _signnodename = self._signnodename } + local out = { + _signnodename = self._signnodename, + } return minetest.serialize(out) end, }) --- Make the wall signs burnable. -minetest.register_craft({ - type = "fuel", - recipe = "mcl_signs:wall_sign", - burntime = 10, -}) +-- Build the signs x,y,z & rotations so that they work. (IE, do not remove!) +mcl_signs.build_signs_info() -minetest.register_craft({ - type = "fuel", - recipe = "mcl_signs:wall_sign_dark", - burntime = 10, -}) +-- ---------------------------- -- +-- Register Signs for use. -- +-- ---------------------------- -- +local mcl_colors_official = mcl_colors --- register crafts (actual recipes) -if minetest.get_modpath("mcl_core") then +-- Standard (original) Sign +mcl_signs.register_sign("mcl_core", "#ffffff", "", "Sign") +mcl_signs.register_sign_craft("mcl_core", "mcl_core:wood", "") - -- debug step - minetest.log("verbose", "Register Sign Crafts: \n" .. dump(mcl_signs.woods)) +-- birchwood Sign +--mcl_signs.register_sign("mcl_core", "#d5cb8d", "_birchwood", "Birch Sign") +mcl_signs.register_sign_custom("mcl_core", "_birchwood", + "mcl_signs_sign_greyscale.png",mcl_colors_official.YELLOW, "default_sign_greyscale.png", + "default_sign_greyscale.png", "Birch Sign" +) - for w = 1, #mcl_signs.woods do - local itemstring = "" +mcl_signs.register_sign_craft("mcl_core", "mcl_core:birchwood", "_birchwood") - if mcl_signs.woods[w] == "mcl_core:sprucewood" or mcl_signs.woods[w] == "mcl_core:darkwood" then - itemstring = "mcl_signs:wall_sign_dark" - else - itemstring = "mcl_signs:wall_sign 3" - end +-- sprucewood Sign +mcl_signs.register_sign_custom("mcl_core", "_sprucewood", + "mcl_signs_sign_dark.png","#ffffff", "default_sign_dark.png", + "default_sign_dark.png", "Spruce Sign" +) +mcl_signs.register_sign_craft("mcl_core", "mcl_core:sprucewood", "_sprucewood") - local c = mcl_signs.woods[w] +-- darkwood Sign +--mcl_signs.register_sign("mcl_core","#291f1a", "_darkwood", "Dark Oak Sign") +mcl_signs.register_sign_custom("mcl_core", "_darkwood", + "mcl_signs_sign_greyscale.png","#856443", "default_sign_greyscale.png", + "default_sign_greyscale.png", "Dark Oak Sign" +) - minetest.register_craft({ - output = itemstring.." 3", - recipe = { - { c, c, c }, - { c, c, c }, - { "", "mcl_core:stick", "" }, - }, - }) - end -end +mcl_signs.register_sign_craft("mcl_core", "mcl_core:darkwood", "_darkwood") -if minetest.get_modpath("doc") then - doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign") - doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign22_5") - doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign45") - doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign67_5") - doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:wall_sign_dark") - doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign_dark") - doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign22_5_dark") - doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign45_dark") - doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign67_5_dark") -end +-- junglewood Sign +mcl_signs.register_sign("mcl_core", "#866249", "_junglewood", "Jungle Sign") +mcl_signs.register_sign_craft("mcl_core", "mcl_core:junglewood", "_junglewood") +-- acaciawood Sign "b8693d" +mcl_signs.register_sign("mcl_core", "#ea7479", "_acaciawood", "Acacia Sign") +mcl_signs.register_sign_craft("mcl_core", "mcl_core:acaciawood", "_acaciawood") + +-- mangrove_wood Sign "#c7545c" +mcl_signs.register_sign("mcl_core", "#b8693d", "_mangrove_wood", "Mangrove Sign") +mcl_signs.register_sign_craft("mcl_core", "mcl_core:mangrove_wood", "_mangrove_wood") + +-- Register the LBMs for the created signs. +mcl_signs.make_lbm() + +-- really ancient compatibility. minetest.register_alias("signs:sign_wall", "mcl_signs:wall_sign") minetest.register_alias("signs:sign_yard", "mcl_signs:standing_sign") -minetest.register_alias("mcl_signs:wall_sign 3", "mcl_signs:wall_sign") - -minetest.register_lbm({ - name = "mcl_signs:respawn_entities", - label = "Respawn sign text entities", - run_at_every_load = true, - nodenames = { - "mcl_signs:wall_sign", "mcl_signs:wall_sign_dark", - "mcl_signs:standing_sign", "mcl_signs:standing_sign_dark", - "mcl_signs:standing_sign22_5", "mcl_signs:standing_sign22_5_dark", - "mcl_signs:standing_sign45", "mcl_signs:standing_sign45_dark", - "mcl_signs:standing_sign67_5", "mcl_signs:standing_sign67_5_dark" - }, - action = function(pos, node) - mcl_signs:update_sign(pos) - end, -}) \ No newline at end of file +minetest.register_alias("mcl_signs:wall_sign_dark", "mcl_signs:wall_sign_sprucewood") +minetest.register_alias("mcl_signs:standing_sign_dark", "mcl_signs:standing_sign_sprucewood") diff --git a/mods/ITEMS/mcl_signs/signs_api.lua b/mods/ITEMS/mcl_signs/signs_api.lua index 38f74a6a3..0931e419f 100644 --- a/mods/ITEMS/mcl_signs/signs_api.lua +++ b/mods/ITEMS/mcl_signs/signs_api.lua @@ -4,16 +4,15 @@ --- DateTime: 10/14/22 4:05 PM --- -local DEBUG = minetest.settings:get_bool("mcl_logging_mcl_signs",true) -- special debug setting. +--local logging = minetest.settings:get_bool("mcl_logging_mcl_signs",true) + +local DEBUG = minetest.settings:get_bool("mcl_logging_mcl_signs", true) -- special debug setting. local table = table -- copied from the original signs init file. if DEBUG then - minetest.log("Action","Signs API Loading") + minetest.log("action", "[mcl_signs] Signs API Loading") end --- INITIALIZE THE GLOBAL API FOR SIGNS. -mcl_signs = {} - -- LOCALIZATION local S = minetest.get_translator("mcl_signs") -- Signs form @@ -30,6 +29,13 @@ local NUMBER_OF_LINES = 4 local LINE_HEIGHT = 14 local CHAR_WIDTH = 5 +-- ----------------------- + +-- CACHE NODE_SOUNDS +local node_sounds +if minetest.get_modpath("mcl_sounds") then + node_sounds = mcl_sounds.node_sound_wood_defaults() +end -- SET UP THE CHARACTER MAPPING -- Load the characters map (characters.txt) @@ -62,12 +68,19 @@ else end end -local pi = math.pi -local n = 23 / 56 - 1 / 128 +local pi = 3.1415926 -- enough accuracy, to build an engine for a car. + +-- locally cached copy of the official colors; this way, it updates as mcl_colors updates. +local mcl_colors_official = mcl_colors +if DEBUG then + minetest.log("verbose", "[mcl_signs]Official MCL_Colors:\n" .. dump(mcl_colors_official)) +end + +-- INITIALIZE THE GLOBAL API FOR SIGNS. +mcl_signs = {} -- GLOBALS mcl_signs.sign_groups = { handy = 1, axey = 1, deco_block = 1, material_wood = 1, attached_node = 1, dig_by_piston = 1, flammable = -1 } - --- colors used for wools. mcl_signs.mcl_wool_colors = { unicolor_white = "#FFFFFF", @@ -89,6 +102,8 @@ mcl_signs.mcl_wool_colors = { } mcl_signs.signtext_info_wall = {} mcl_signs.signtext_info_standing = {} -- built in build_signs_info(). +-- the rotational levels for all of the standing signs. +mcl_signs.standing_rotation_levels = {} -- data structure block for dynamically registered signs. mcl_signs.registered_signs = {} @@ -99,24 +114,359 @@ mcl_signs.registered_signs.hanging_signs = {} -- unused. prepping for future use mcl_signs.wall_standard = {} -- initialize mcl_signs.standing_standard = {} -- initialize -mcl_signs.registered_sign_nodenames = {} +function mcl_signs.build_signs_info() + local n = 23 / 56 - 1 / 128 -- some required magic number from the original code. + local m = -1 / 16 + 1 / 64 -- " " " " " " " " + + mcl_signs.signtext_info_wall = { + { delta = { x = 0, y = 0, z = n }, yaw = 0 }, + { delta = { x = n, y = 0, z = 0 }, yaw = pi / -2 }, + { delta = { x = 0, y = 0, z = -n }, yaw = pi }, + { delta = { x = -n, y = 0, z = 0 }, yaw = pi / 2 }, + } + + -- PLACE YAW VALUES INTO THE TABLE. + for rot = 0, 15 do + local yaw = pi * 2 - (((pi * 2) / 16) * rot) + local delta = vector.multiply(minetest.yaw_to_dir(yaw), m) + -- Offset because sign is a bit above node boundaries + delta.y = delta.y + 2 / 28 + table.insert(mcl_signs.signtext_info_standing, { delta = delta, yaw = yaw }) + end --- locally cached copy of the official colors; this way, it updates as mcl_colors updates. -local mcl_colors_official = mcl_colors -if DEBUG then - minetest.log("Official MCL_Colors:\n" .. dump(mcl_colors_official)) end -mcl_signs.woods = { "mcl_core:sprucewood", "mcl_core:darkwood", "mcl_core:wood", "mcl_core:birchwood", "mcl_core:junglewood", "mcl_core:acaciawood", "mcl_mangrove:mangrove_wood" } +-- wall signs' & hanging signs' base (definition) +mcl_signs.wall_standard = { + description = S("Sign"), + _tt_help = S("Can be written"), + _doc_items_longdesc = S("Signs can be written and come in two variants: Wall sign and sign on a sign post. Signs can be placed on the top and the sides of other blocks, but not below them."), + _doc_items_usagehelp = S("After placing the sign, you can write something on it. You have 4 lines of text with up to 15 characters for each line; anything beyond these limits is lost. Not all characters are supported. The text can not be changed once it has been written; you have to break and place the sign again. Can be colored and made to glow."), + inventory_image = "default_sign.png", + walkable = false, + is_ground_content = false, + wield_image = "default_sign.png", + node_placement_prediction = "", + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "wallmounted", + drawtype = "mesh", + mesh = "mcl_signs_signonwallmount.obj", + selection_box = { type = "wallmounted", wall_side = { -0.5, -7 / 28, -0.5, -23 / 56, 7 / 28, 0.5 } }, + tiles = { "mcl_signs_sign.png" }, + use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false, + groups = mcl_signs.sign_groups, + stack_max = 16, + sounds = node_sounds, -mcl_signs.signtext_info_wall = { - { delta = { x = 0, y = 0, z = n }, yaw = 0 }, - { delta = { x = n, y = 0, z = 0 }, yaw = pi / -2 }, - { delta = { x = 0, y = 0, z = -n }, yaw = pi }, - { delta = { x = -n, y = 0, z = 0 }, yaw = pi / 2 }, + on_place = function(itemstack, placer, pointed_thing) + local above = pointed_thing.above + local under = pointed_thing.under + + -- Use pointed node's on_rightclick function first, if present + local node_under = minetest.get_node(under) + if placer and not placer:get_player_control().sneak then + if minetest.registered_nodes[node_under.name] and minetest.registered_nodes[node_under.name].on_rightclick then + return minetest.registered_nodes[node_under.name].on_rightclick(under, node_under, placer, itemstack) or itemstack + end + end + + local dir = vector.subtract(under, above) + + -- Only build when it's legal + local abovenodedef = minetest.registered_nodes[minetest.get_node(above).name] + if not abovenodedef or abovenodedef.buildable_to == false then + return itemstack + end + + local wdir = minetest.dir_to_wallmounted(dir) + + --local placer_pos = placer:get_pos() + + local fdir = minetest.dir_to_facedir(dir) + + local sign_info + local nodeitem = ItemStack(itemstack) + -- Ceiling + if wdir == 0 then + --how would you add sign to ceiling? + return itemstack + -- Floor + end + + if wdir == 1 then + -- Standing sign + + -- Determine the sign rotation based on player's yaw + local yaw = pi * 2 - placer:get_look_horizontal() + + -- Select one of 16 possible rotations (0-15) + local rotation_level = mcl_signs:round((yaw / (pi * 2)) * 16) + + if rotation_level > 15 then + rotation_level = 0 + elseif rotation_level < 0 then + rotation_level = 15 + end + + -- The actual rotation is a combination of predefined mesh and facedir (see node definition) + if rotation_level % 4 == 0 then + nodeitem:set_name("mcl_signs:standing_sign") + elseif rotation_level % 4 == 1 then + nodeitem:set_name("mcl_signs:standing_sign22_5") + elseif rotation_level % 4 == 2 then + nodeitem:set_name("mcl_signs:standing_sign45") + elseif rotation_level % 4 == 3 then + nodeitem:set_name("mcl_signs:standing_sign67_5") + end + fdir = math.floor(rotation_level / 4) + + -- Place the node! + local _, success = minetest.item_place_node(nodeitem, placer, pointed_thing, fdir) + if not success then + return itemstack + end + if not minetest.is_creative_enabled(placer:get_player_name()) then + itemstack:take_item() + end + sign_info = mcl_signs.signtext_info_standing[rotation_level + 1] + -- Side + else + -- Wall sign + local _, success = minetest.item_place_node(itemstack, placer, pointed_thing, wdir) + if not success then + return itemstack + end + sign_info = mcl_signs.signtext_info_wall[fdir + 1] + end + + -- Determine spawn position of entity + local place_pos + if minetest.registered_nodes[node_under.name].buildable_to then + place_pos = under + else + place_pos = above + end + + local text_entity = minetest.add_entity({ + x = place_pos.x + sign_info.delta.x, + y = place_pos.y + sign_info.delta.y, + z = place_pos.z + sign_info.delta.z }, "mcl_signs:text") + text_entity:set_yaw(sign_info.yaw) + text_entity:get_luaentity()._signnodename = nodeitem:get_name() + if DEBUG then + minetest.log("verbose", "[mcl_signs]Placed position:" .. dump(place_pos) .. "\nSign_info: " .. dump(sign_info)) + end + + minetest.sound_play({ name = "default_place_node_hard", gain = 1.0 }, { pos = place_pos }, true) + + mcl_signs:show_formspec(placer, place_pos) + return itemstack + end, + on_destruct = function(pos) + mcl_signs:destruct_sign(pos) + end, + + -- Not Useless Code. force updates the sign. + on_punch = function(pos, node, puncher) + mcl_signs:update_sign(pos) + if DISINTEGRATE then + mcl_signs:destruct_sign(pos) + end + end, + on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_FACE then + local r = screwdriver.rotate.wallmounted(pos, node, mode) + node.param2 = r + minetest.swap_node(pos, node) + mcl_signs:update_sign(pos, nil, nil, true) + return true + else + return false + end + end, + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + if DEBUG then + minetest.log("verbose", "[mcl_signs] Wall_Sign Right Click event.") + end + + -- make sure player is clicking + if not clicker or not clicker:is_player() then + return + end + + local item = clicker:get_wielded_item() + local iname = item:get_name() + + if node then + if DEBUG then + minetest.log("verbose", "[mcl_signs] Wall_Sign Right Click event on valid node.") + end + + -- handle glow from glow_ink_sac *first* + if (iname == "mcl_mobitems:glow_ink_sac") then + clicker:set_wielded_item(item) + local success = mcl_signs:glow_sign(pos) + if success then + if DEBUG then + minetest.log("verbose", "[mcl_signs] Sign Glow Success.") + end + itemstack:take_item() + end + return + end + + -- "mcl_dye:black" is a special case: it makes the sign's lettering black AND removes glow. + if (iname == "mcl_dye:black") then + clicker:set_wielded_item(item) + local success = mcl_signs:glow_sign(pos, true) + mcl_signs:color_sign(pos, mcl_colors.BLACK) + if success then + if DEBUG then + minetest.log("verbose", "[mcl_signs] Sign Glow removal Success.") + end + + itemstack:take_item() + end + return + end + + -- check the wielded item to make sure that it is a dye. + local txt_color = mcl_signs:get_color_for_sign(iname) + if txt_color ~= "false" then + clicker:set_wielded_item(item) + local success = mcl_signs:color_sign(pos, txt_color) + if success then + if DEBUG then + minetest.log("verbose", "[mcl_signs] Sign Color Success.") + end + itemstack:take_item() + end + end + end + end, + + _mcl_hardness = 1, + _mcl_blast_resistance = 1, } -mcl_signs.signtext_info_standing = {} -mcl_signs.sign_groups = { handy = 1, axey = 1, deco_block = 1, material_wood = 1, attached_node = 1, dig_by_piston = 1, flammable = -1 } +-- standing sign base (definition) +mcl_signs.standing_standard = { + paramtype = "light", + use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false, + sunlight_propagates = true, + walkable = false, + is_ground_content = false, + paramtype2 = "facedir", + drawtype = "mesh", + mesh = "mcl_signs_sign.obj", + selection_box = { type = "fixed", fixed = { -0.2, -0.5, -0.2, 0.2, 0.5, 0.2 } }, + tiles = { "mcl_signs_sign.png" }, + groups = mcl_signs.sign_groups, + drop = "mcl_signs:wall_sign", + stack_max = 16, + sounds = node_sounds, + + on_destruct = function(pos) + mcl_signs:destruct_sign(pos) + end, + + -- Not Useless Code. this force updates the sign. + on_punch = function(pos, node, puncher) + mcl_signs:update_sign(pos) + if DISINTEGRATE then + mcl_signs:destruct_sign(pos) + end + end, + on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_FACE then + node.name = "mcl_signs:standing_sign22_5" + minetest.swap_node(pos, node) + elseif mode == screwdriver.ROTATE_AXIS then + return false + end + mcl_signs:update_sign(pos, nil, nil, true) + return true + end, + + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + + if DEBUG then + minetest.log("verbose", "[mcl_signs] Standing_Sign Right Click event.") + end + + -- make sure player is clicking + if not clicker or not clicker:is_player() then + return + end + + local item = clicker:get_wielded_item() + local iname = item:get_name() + + if node then + -- handle glow from glow_ink_sac *first* + if DEBUG then + minetest.log("verbose", "[mcl_signs] Standing_Sign Right Click event on valid node.") + end + + if (iname == "mcl_mobitems:glow_ink_sac") then + clicker:set_wielded_item(item) + local success = mcl_signs:glow_sign(pos) + if success then + if DEBUG then + minetest.log("verbose", "[mcl_signs] Sign Glow Success.") + end + itemstack:take_item() + end + return + end + + -- check the wielded item to make sure that it is a dye. + local txt_color = mcl_signs:get_color_for_sign(iname) + if txt_color ~= "false" then + clicker:set_wielded_item(item) + local success = mcl_signs:color_sign(pos, txt_color) + if success then + if DEBUG then + minetest.log("verbose", "[mcl_signs] Sign Color Success.") + end + itemstack:take_item() + end + end + end + end, + + _mcl_hardness = 1, + _mcl_blast_resistance = 1, +} + +function mcl_signs.make_lbm() + + local registered_sign_nodenames = {} + + for i = 0, #mcl_signs.registered_signs.wall_signs do + table.insert(registered_sign_nodenames, mcl_signs.registered_signs.wall_signs[i]) + end + + for i = 0, #mcl_signs.registered_signs.standing_signs do + table.insert(registered_sign_nodenames, mcl_signs.registered_signs.standing_signs[i]) + end + + for i = 0, #mcl_signs.registered_signs.hanging_signs do + table.insert(registered_sign_nodenames, mcl_signs.registered_signs.hanging_signs[i]) + end + + -- the above is not yet used. + minetest.register_lbm({ + name = "mcl_signs:respawn_entities", + label = "Respawn sign text entities", + run_at_every_load = true, + nodenames = registered_sign_nodenames , + action = function(pos, node) + mcl_signs:update_sign(pos) + end, + }) + +end -- HELPER FUNCTIONS' VARIABLES local sign_glow = 6 @@ -143,7 +493,6 @@ local Dyes_table = { { "mcl_dye:yellow", mcl_colors_official.YELLOW }, } ---- Registers a new dye to use for sign text coloring. Is 100% functional. function mcl_signs.register_dye (modname, item_name, color_code) if minetest.get_modpath(modname) then table.insert(Dyes_table, { item_name, color_code }) @@ -162,18 +511,6 @@ local function update_sign_registry(type, name) end end ---- This allows optional mods and helps prevent breaking. ---- ---- modname: the mod that defines the wood to add; item_name: the item_string of the wood to add. ---- eventually, this will become modname, item_name, coloration_code. -function mcl_signs.register_wood (modname, item_name) - if minetest.get_modpath(modname) then - table.insert(mcl_signs.woods,item_name) - end -end - --- the Reigister_sign* functions aren't yet in use, due to an error with them that is currently being debugged. Added here for the forthcoming use. - --- Register a new sign, tint the textures, and gives it an unique node name. Creates both wall and standing signs. --- modname: optional (pass "" or "false" to ignore), for use with other mods to --- allow the creation of a sign from the mod's wood (if installed). @@ -293,7 +630,7 @@ function mcl_signs.register_sign (modname, color, _name, ttsign) end if DEBUG then - minetest.log("Register_Sign::Placed position:" .. dump(place_pos) .. "\nSign_info: " .. dump(sign_info)) + minetest.log("action", "[mcl_signs] Register_Sign::Placed position:" .. dump(place_pos) .. "\nSign_info: " .. dump(sign_info)) end local text_entity = minetest.add_entity({ @@ -314,8 +651,8 @@ function mcl_signs.register_sign (modname, color, _name, ttsign) -- debug step if DEBUG then - minetest.log("Registered: mcl_signs:wall_sign" .. _name .. color .. "\n" .. dump(new_sign)) - minetest.log("mcl_signs:wall_sign_standard\n" .. dump(mcl_signs.wall_standard)) + minetest.log("action", "[mcl_signs] Registered: mcl_signs:wall_sign" .. _name .. color .. "\n" .. dump(new_sign)) + minetest.log("action", "[mcl_signs] mcl_signs:wall_sign_standard\n" .. dump(mcl_signs.wall_standard)) end -- standing sign base. @@ -329,7 +666,7 @@ function mcl_signs.register_sign (modname, color, _name, ttsign) update_sign_registry("standing", "mcl_signs:standing_sign" .. _name) -- debug step if DEBUG then - minetest.log("Registered: mcl_signs:standing_sign" .. _name .. color .. "\n" .. dump(new_sign_standing)) + minetest.log("action", "[mcl_signs] Registered: mcl_signs:standing_sign" .. _name .. color .. "\n" .. dump(new_sign_standing)) end -- 22.5° @@ -389,9 +726,16 @@ function mcl_signs.register_sign (modname, color, _name, ttsign) doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign45" .. _name) doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign67_5" .. _name) end + + --register standing sign's rotation_levels + table.insert(mcl_signs.standing_rotation_levels, {"mcl_signs:standing_sign22_5" .. _name , 1}) + table.insert(mcl_signs.standing_rotation_levels, {"mcl_signs:standing_sign45" .. _name , 2}) + table.insert(mcl_signs.standing_rotation_levels, {"mcl_signs:standing_sign67_5" .. _name , 3}) end ---- the same as register_sign, except caller defines the textures. +--- The same as register_sign, except caller defines the textures. Note, there is a greyscale version of the sign, +--- called "default_sign_greyscale.png" and "mcl_signs_sign_greyscale.png" for optional use in the textures directory. +--- --- modname: optional (pass "" or "false" to ignore), for use with other mods to --- allow the creation of a sign from the mod's wood (if installed). --- type: "wall", "standing". @@ -400,6 +744,9 @@ end --- --- tiles: the texture file to use for the sign. --- +--- color: color the texture file to use with this color. Use white (#FFFFFF) to negate the color, +--- and just use the texture as is +--- --- inventory_image: the texture file to use for the sign's display in inventory. --- --- wield_image: the texture file to use for the sign's weilded (in hand) object. @@ -408,7 +755,7 @@ end --- --- ttsign: the tool tip of the sign that gets translated. Shown when the mouse hovers the inventory sign. --- For example: the basic, default oak (wood) sign is just "Sign"; and a spruce sign would be "Spruce Sign" -function mcl_signs.register_sign_custom (modname, _name, tiles, inventory_image, wield_image, ttsign) +function mcl_signs.register_sign_custom (modname, _name, tiles, color, inventory_image, wield_image, ttsign) local mod_name_pass = false if modname ~= "" and modname ~= "false" then if minetest.get_modpath(modname) then @@ -422,9 +769,9 @@ function mcl_signs.register_sign_custom (modname, _name, tiles, inventory_image, new_sign = table.copy(mcl_signs.wall_standard) - new_sign.wield_image = wield_image - new_sign.tiles = { tiles } - new_sign.inventory_image = inventory_image + new_sign.wield_image ="("..wield_image.."^[multiply:" .. color .. ")" + new_sign.tiles = { "("..tiles.."^[multiply:" .. color .. ")" } + new_sign.inventory_image = "("..inventory_image.."^[multiply:" .. color .. ")" new_sign.description = S(ttsign) -- currently have to do this, because of how the base node placement works. new_sign.on_place = function(itemstack, placer, pointed_thing) @@ -530,9 +877,9 @@ function mcl_signs.register_sign_custom (modname, _name, tiles, inventory_image, local new_sign_standing = {} new_sign_standing = table.copy(mcl_signs.standing_standard) new_sign_standing.drop = "mcl_signs:wall_sign" .. _name - new_sign_standing.wield_image = wield_image - new_sign_standing.tiles = { tiles } - new_sign_standing.inventory_image = inventory_image + new_sign_standing.wield_image ="("..wield_image.."^[multiply:" .. color .. ")" + new_sign_standing.tiles = { "("..tiles.."^[multiply:" .. color .. ")" } + new_sign_standing.inventory_image = "("..inventory_image.."^[multiply:" .. color .. ")" minetest.register_node("mcl_signs:standing_sign" .. _name, new_sign_standing) update_sign_registry("standing", "mcl_signs:standing_sign" .. _name) @@ -594,6 +941,11 @@ function mcl_signs.register_sign_custom (modname, _name, tiles, inventory_image, doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign67_5" .. _name) end + --register standing sign's rotation_levels + table.insert(mcl_signs.standing_rotation_levels, {"mcl_signs:standing_sign22_5" .. _name , 1}) + table.insert(mcl_signs.standing_rotation_levels, {"mcl_signs:standing_sign45" .. _name , 2}) + table.insert(mcl_signs.standing_rotation_levels, {"mcl_signs:standing_sign67_5" .. _name , 3}) + end --- Usage: Call this with the mod's name, the wood's item string (for the planks), and with the sign's suffix. @@ -625,7 +977,7 @@ function mcl_signs.register_sign_craft(modname, wood_item_string, _name) -- debug step if DEBUG then - minetest.log("Action", "Register Sign Crafts: \n" .. modname .. "\n" .. wood_item_string .. "\n" .. _name) + minetest.log("action", "[mcl_signs] Register Sign Crafts: \n" .. modname .. "\n" .. wood_item_string .. "\n" .. _name) end -- register crafts (actual recipe) @@ -647,41 +999,35 @@ end -- Helper functions local function string_to_array(str) - local tab = {} + local string_table = {} for i = 1, string.len(str) do - table.insert(tab, string.sub(str, i, i)) + table.insert(string_table, string.sub(str, i, i)) end - return tab + return string_table end local function string_to_line_array(str) - local tab = {} + local linechar_table = {} local current = 1 local linechar = 1 - tab[1] = "" + linechar_table[1] = "" for _, char in ipairs(string_to_array(str)) do -- New line if char == "\n" then current = current + 1 - tab[current] = "" + linechar_table[current] = "" linechar = 1 else - tab[current] = tab[current] .. char + linechar_table[current] = linechar_table[current] .. char linechar = linechar + 1 end end - return tab + return linechar_table end local function get_rotation_level(facedir, nodename) - local nnames = { - { "mcl_signs:standing_sign22_5", 1 }, - { "mcl_signs:standing_sign22_5_dark", 1 }, - { "mcl_signs:standing_sign45", 2 }, - { "mcl_signs:standing_sign45_dark", 2 }, - { "mcl_signs:standing_sign67_5", 3 }, - { "mcl_signs:standing_sign67_5_dark", 3 } - } + local nnames = mcl_signs.standing_rotation_levels -- functional copy... was easier this way. #LazyAF :P + local rl local offset = 0 for x = 1, #nnames do @@ -691,8 +1037,8 @@ local function get_rotation_level(facedir, nodename) end end rl = facedir * 4 + offset - if DEBUG then - minetest.log("NodeName: " .. nodename .. " RL value: " .. rl) + if 1 == 1 then + minetest.log("action", "[mcl_signs] GetRotationLevel: NodeName: " .. nodename .. " RL value: " .. rl) end return rl end @@ -719,13 +1065,12 @@ function mcl_signs:color_sign (pos, text_color) -- debug step local meta = minetest.get_meta(pos) if not meta then - if DEBUG then - minetest.log("verbose", "Sign Color Fail - Metadata.") - end + minetest.log("error", "[mcl_signs] Sign Color Fail - Metadata.") + return false end if DEBUG then - minetest.log("verbose", "Post-Sign Color: " .. meta:get_string("mcl_signs:text_color") .. " " .. meta:get_string("mcl_signs:glowing_sign") .. ".\n" .. dump(pos)) + minetest.log("verbose", "[mcl_signs] Post-Sign Color: " .. meta:get_string("mcl_signs:text_color") .. " " .. meta:get_string("mcl_signs:glowing_sign") .. ".\n" .. dump(pos)) end return success @@ -775,10 +1120,14 @@ function mcl_signs:glow_sign (pos, remove_glow) }) meta:set_string("mcl_signs:glowing_sign", "true") end + if not text_entity then + return false + end + text_entity:get_luaentity()._glowing_sign = meta:get_string("mcl_signs:glowing_sign") -- debug step if DEBUG then - minetest.log("verbose", "Post-Sign Glow: " .. meta:get_string("mcl_signs:text_color") .. " " .. meta:get_string("mcl_signs:glowing_sign") .. ".\n" .. dump(pos)) + minetest.log("verbose", "[mcl_signs] Post-Sign Glow: " .. meta:get_string("mcl_signs:text_color") .. " " .. meta:get_string("mcl_signs:glowing_sign") .. ".\n" .. dump(pos)) end return success end @@ -789,20 +1138,25 @@ function mcl_signs:create_lettering(text, signnodename, sign_color) end local texture = mcl_signs:generate_texture(mcl_signs:create_lines(text), signnodename, sign_color) + -- debug step + if DEBUG then + minetest.log("action", "[mcl_signs] Creating sign text; text:" .. text) + end + return texture end function mcl_signs:create_lines(text) local line_num = 1 - local tab = {} + local text_table = {} for _, line in ipairs(string_to_line_array(text)) do if line_num > NUMBER_OF_LINES then break end - table.insert(tab, line) + table.insert(text_table, line) line_num = line_num + 1 end - return tab + return text_table end function mcl_signs:generate_line(s, ypos) @@ -839,8 +1193,9 @@ function mcl_signs:generate_line(s, ypos) local texture = "" local xpos = math.floor((SIGN_WIDTH - width) / 2) - for i = 1, #parsed do - texture = texture .. ":" .. xpos .. "," .. ypos .. "=" .. parsed[i] .. ".png" + + for j = 1, #parsed do + texture = texture .. ":" .. xpos .. "," .. ypos .. "=" .. parsed[j] .. ".png" xpos = xpos + printed_char_width end return texture @@ -848,12 +1203,41 @@ end function mcl_signs:generate_texture(lines, signnodename, letter_color) local texture = "[combine:" .. SIGN_WIDTH .. "x" .. SIGN_WIDTH - local ypos + local ypos = 0 + + -- Handle all of the dynamically created signs. + for x = 1, #mcl_signs.registered_signs.wall_signs do + if signnodename == mcl_signs.registered_signs.wall_signs[x] then + ypos = 30 + break + end + end + for x = 1, #mcl_signs.registered_signs.standing_signs do + if signnodename == mcl_signs.registered_signs.standing_signs[x] then + ypos = 0 + break + end + end + -- for future inclusion, when the hanging sings are made. + --[[ + for x = 1, #mcl_signs.registered_signs.hanging_signs do + if signnodename == mcl_signs.registered_signs.hanging_signs[x] then + ypos = 30 + break + end + end + ]] + + -- kept in for now, compatibility with existing hard coded signs. TODO: Remove after done with api. if signnodename == "mcl_signs:wall_sign" or signnodename == "mcl_signs:wall_sign_dark" then ypos = 30 - else - ypos = 0 end + + -- debug step + if DEBUG then + minetest.log("action", "[mcl_signs] Generate_Texture::Debug_Data:\nSignNodeName: " .. dump(signnodename) .. "\nYPOS: " .. ypos) + end + for i = 1, #lines do texture = texture .. mcl_signs:generate_line(lines[i], ypos) ypos = ypos + LINE_HEIGHT @@ -908,9 +1292,6 @@ function mcl_signs:update_sign(pos, fields, sender, force_remove, text_color) text = "" end - --local placer_pos = placer:get_pos() - -- mcl_signs:show_formspec(placer, place_pos) - -- find text color. local sign_color @@ -922,7 +1303,7 @@ function mcl_signs:update_sign(pos, fields, sender, force_remove, text_color) sign_color = meta:get_string("mcl_signs:text_color") end - if text_color == nil then + if text_color == nil or text == "" then text_color = "false" end @@ -942,24 +1323,44 @@ function mcl_signs:update_sign(pos, fields, sender, force_remove, text_color) -- debug step if DEBUG then - minetest.log("Pre-Sign Update: " .. sign_color .. " " .. meta:get_string("mcl_signs:glowing_sign") .. ".\n" .. dump(pos)) + minetest.log("action", "[mcl_signs] Update_Signs: Pre-Sign Update: " .. sign_color .. " " .. meta:get_string("mcl_signs:glowing_sign") .. ".\n" .. dump(pos)) end local sign_info - local n = minetest.get_node(pos) - local nn = n.name + local npos = minetest.get_node(pos) + local npos_name = npos.name - if nn == "mcl_signs:standing_sign" or nn == "mcl_signs:standing_sign22_5" or nn == "mcl_signs:standing_sign45" or nn == "mcl_signs:standing_sign67_5" then - sign_info = mcl_signs.signtext_info_standing[get_rotation_level(n.param2, nn) + 1] - elseif nn == "mcl_signs:standing_sign_dark" or nn == "mcl_signs:standing_sign22_5_dark" or nn == "mcl_signs:standing_sign45_dark" or nn == "mcl_signs:standing_sign67_5_dark" then - sign_info = mcl_signs.signtext_info_standing[get_rotation_level(n.param2, nn) + 1] - elseif nn == "mcl_signs:wall_sign" or nn == "mcl_signs:wall_sign_dark" then - sign_info = mcl_signs.signtext_info_wall[mcl_signs:get_wall_signtext_info(n.param2)] + -- Handle all of the dynamically created signs. + for x = 1, #mcl_signs.registered_signs.wall_signs do + if npos_name == mcl_signs.registered_signs.wall_signs[x] then + sign_info = mcl_signs.signtext_info_wall[mcl_signs:get_wall_signtext_info(npos.param2)] + break + end + end + for x = 1, #mcl_signs.registered_signs.standing_signs do + if npos_name == mcl_signs.registered_signs.standing_signs[x] then + sign_info = mcl_signs.signtext_info_standing[get_rotation_level(npos.param2, npos_name) + 1] + break + end + end + -- for future inclusion, when the hanging sings are made. + --[[ + for x = 1, #mcl_signs.registered_signs.hanging_signs do + if nn == mcl_signs.registered_signs.hanging_signs[x] then + sign_info = mcl_signs.signtext_info_wall[mcl_signs:get_wall_signtext_info(n.param2)] + break + end + end + ]] + + -- the following if..elseif..end block is here for compatibility with the old code. TODO: remove this block after the new api is complete. + if npos_name == "mcl_signs:standing_sign_dark" or npos_name == "mcl_signs:standing_sign22_5_dark" or npos_name == "mcl_signs:standing_sign45_dark" or npos_name == "mcl_signs:standing_sign67_5_dark" then + sign_info = mcl_signs.signtext_info_standing[get_rotation_level(npos.param2, npos_name) + 1] + elseif npos_name == "mcl_signs:wall_sign_dark" then + sign_info = mcl_signs.signtext_info_wall[mcl_signs:get_wall_signtext_info(npos.param2)] end if sign_info == nil then - if DEBUG then - minetest.log("error", "[mcl_signs::update] Missing sign_info!") - end + minetest.log("error", "[mcl_signs] Update_Signs: Missing sign_info!") return false end @@ -978,16 +1379,36 @@ function mcl_signs:update_sign(pos, fields, sender, force_remove, text_color) end if not text_entity then + if DEBUG then + minetest.log("action", "[mcl_signs] Update_Sign: Text_Entity - does not exist, creating it now.") + end text_entity = minetest.add_entity({ x = pos.x + sign_info.delta.x, y = pos.y + sign_info.delta.y, z = pos.z + sign_info.delta.z }, "mcl_signs:text") + + if DEBUG then + minetest.log("action", "[mcl_signs] Update_Sign: Placed position:" .. dump(pos) .. "\nSign_info: " .. dump(sign_info)) + end + end + text_entity:get_luaentity()._signnodename = npos_name + + -- set up special case: Dark Oak Sign. Dark Oak signs are soooo dark, they start off with white lettering. + if npos_name == "mcl_signs:wall_sign_darkwood" or + npos_name == "mcl_signs:standing_sign67_5_darkwood" or + npos_name == "mcl_signs:standing_sign45_darkwood" or + npos_name == "mcl_signs:standing_sign22_5_darkwood" or + npos_name == "mcl_signs:standing_sign_darkwood" + then + if text_color == "#000000" then + text_color = "#ffffff" + end end - text_entity:get_luaentity()._signnodename = nn -- Set the actual properties for the sign + text_entity:set_properties({ - textures = { mcl_signs:create_lettering(text, nn, text_color) }, + textures = { mcl_signs:create_lettering(text, npos_name, text_color) }, }) if has_glow then @@ -997,12 +1418,16 @@ function mcl_signs:update_sign(pos, fields, sender, force_remove, text_color) end text_entity:set_yaw(sign_info.yaw) + if DEBUG then + minetest.log("verbose", "[mcl_signs] Update_Sign: After texture recreation.") + minetest.log("action","[mcl_signs] Update_Sign: " .. npos_name .. "\nPlaced position:" .. dump(pos) .. "\nSign_info: " .. dump(sign_info)) + end -- save sign metadata. meta:set_string("mcl_signs:text_color", text_color) -- debug step if DEBUG then - minetest.log("Post-Sign Update: " .. meta:get_string("mcl_signs:text_color") .. " " .. meta:get_string("mcl_signs:glowing_sign") .. ".\n" .. dump(pos)) + minetest.log("action", "[mcl_signs] Update_Sign: Post-Sign Update: " .. meta:get_string("mcl_signs:text_color") .. " " .. meta:get_string("mcl_signs:glowing_sign") .. ".\n" .. dump(pos)) end return true @@ -1016,524 +1441,3 @@ function mcl_signs:show_formspec(player, pos) "size[6,3]textarea[0.25,0.25;6,1.5;text;" .. F(S("Enter sign text:")) .. ";]label[0,1.5;" .. F(S("Maximum line length: 15")) .. "\n" .. F(S("Maximum lines: 4")) .. "]button_exit[0,2.5;6,1;submit;" .. F(S("Done")) .. "]" ) end - -function mcl_signs:generate_signs() - local node_sounds - if minetest.get_modpath("mcl_sounds") then - node_sounds = mcl_sounds.node_sound_wood_defaults() - end - - -- wall signs' & hanging signs' base - mcl_signs.wall_standard = { - description = S("Sign"), - _tt_help = S("Can be written"), - _doc_items_longdesc = S("Signs can be written and come in two variants: Wall sign and sign on a sign post. Signs can be placed on the top and the sides of other blocks, but not below them."), - _doc_items_usagehelp = S("After placing the sign, you can write something on it. You have 4 lines of text with up to 15 characters for each line; anything beyond these limits is lost. Not all characters are supported. The text can not be changed once it has been written; you have to break and place the sign again. Can be colored and made to glow."), - inventory_image = "default_sign.png", - walkable = false, - is_ground_content = false, - wield_image = "default_sign.png", - node_placement_prediction = "", - paramtype = "light", - sunlight_propagates = true, - paramtype2 = "wallmounted", - drawtype = "mesh", - mesh = "mcl_signs_signonwallmount.obj", - selection_box = { type = "wallmounted", wall_side = { -0.5, -7 / 28, -0.5, -23 / 56, 7 / 28, 0.5 } }, - tiles = { "mcl_signs_sign.png" }, - use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false, - groups = mcl_signs.sign_groups, - stack_max = 16, - sounds = node_sounds, - - on_place = function(itemstack, placer, pointed_thing) - local above = pointed_thing.above - local under = pointed_thing.under - - -- Use pointed node's on_rightclick function first, if present - local node_under = minetest.get_node(under) - if placer and not placer:get_player_control().sneak then - if minetest.registered_nodes[node_under.name] and minetest.registered_nodes[node_under.name].on_rightclick then - return minetest.registered_nodes[node_under.name].on_rightclick(under, node_under, placer, itemstack) or itemstack - end - end - - local dir = vector.subtract(under, above) - - -- Only build when it's legal - local abovenodedef = minetest.registered_nodes[minetest.get_node(above).name] - if not abovenodedef or abovenodedef.buildable_to == false then - return itemstack - end - - local wdir = minetest.dir_to_wallmounted(dir) - - --local placer_pos = placer:get_pos() - - local fdir = minetest.dir_to_facedir(dir) - - local sign_info - local nodeitem = ItemStack(itemstack) - -- Ceiling - if wdir == 0 then - --how would you add sign to ceiling? - return itemstack - -- Floor - end - - if wdir == 1 then - -- Standing sign - - -- Determine the sign rotation based on player's yaw - local yaw = pi * 2 - placer:get_look_horizontal() - - -- Select one of 16 possible rotations (0-15) - local rotation_level = mcl_signs:round((yaw / (pi * 2)) * 16) - - if rotation_level > 15 then - rotation_level = 0 - elseif rotation_level < 0 then - rotation_level = 15 - end - - -- The actual rotation is a combination of predefined mesh and facedir (see node definition) - if rotation_level % 4 == 0 then - nodeitem:set_name("mcl_signs:standing_sign") - elseif rotation_level % 4 == 1 then - nodeitem:set_name("mcl_signs:standing_sign22_5") - elseif rotation_level % 4 == 2 then - nodeitem:set_name("mcl_signs:standing_sign45") - elseif rotation_level % 4 == 3 then - nodeitem:set_name("mcl_signs:standing_sign67_5") - end - fdir = math.floor(rotation_level / 4) - - -- Place the node! - local _, success = minetest.item_place_node(nodeitem, placer, pointed_thing, fdir) - if not success then - return itemstack - end - if not minetest.is_creative_enabled(placer:get_player_name()) then - itemstack:take_item() - end - sign_info = mcl_signs.signtext_info_standing[rotation_level + 1] - -- Side - else - -- Wall sign - local _, success = minetest.item_place_node(itemstack, placer, pointed_thing, wdir) - if not success then - return itemstack - end - sign_info = mcl_signs.signtext_info_wall[fdir + 1] - end - - -- Determine spawn position of entity - local place_pos - if minetest.registered_nodes[node_under.name].buildable_to then - place_pos = under - else - place_pos = above - end - - local text_entity = minetest.add_entity({ - x = place_pos.x + sign_info.delta.x, - y = place_pos.y + sign_info.delta.y, - z = place_pos.z + sign_info.delta.z }, "mcl_signs:text") - text_entity:set_yaw(sign_info.yaw) - text_entity:get_luaentity()._signnodename = nodeitem:get_name() - - minetest.sound_play({ name = "default_place_node_hard", gain = 1.0 }, { pos = place_pos }, true) - - mcl_signs:show_formspec(placer, place_pos) - return itemstack - end, - on_destruct = function(pos) - mcl_signs:destruct_sign(pos) - end, - - -- Not Useless Code. If a sign is created without text, this shows the formspec again for textual entry. - on_punch = function(pos, node, puncher) - mcl_signs:update_sign(pos) - end, - on_rotate = function(pos, node, user, mode) - if mode == screwdriver.ROTATE_FACE then - local r = screwdriver.rotate.wallmounted(pos, node, mode) - node.param2 = r - minetest.swap_node(pos, node) - mcl_signs:update_sign(pos, nil, nil, true) - return true - else - return false - end - end, - on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) - if DEBUG then - minetest.log("verbose", "MCL_SIGNS::Wall_Sign Right Click event.") - end - - -- make sure player is clicking - if not clicker or not clicker:is_player() then - return - end - - local item = clicker:get_wielded_item() - local iname = item:get_name() - - if node then - if DEBUG then - minetest.log("verbose", "MCL_SIGNS::Wall_Sign Right Click event on valid node.") - end - - -- handle glow from glow_ink_sac *first* - if (iname == "mcl_mobitems:glow_ink_sac") then - clicker:set_wielded_item(item) - local success = mcl_signs:glow_sign(pos) - if success then - if DEBUG then - minetest.log("verbose", "Sign Glow Success.") - end - itemstack:take_item() - end - return - end - - -- "mcl_dye:black" is a special case: it makes the sign's lettering black AND removes glow. - if (iname == "mcl_dye:black") then - clicker:set_wielded_item(item) - local success = mcl_signs:glow_sign(pos, true) - mcl_signs:color_sign(pos, mcl_colors.BLACK) - if success then - if DEBUG then - minetest.log("verbose", "Sign Glow removal Success.") - end - - itemstack:take_item() - end - return - end - - -- check the wielded item to make sure that it is a dye. - local txt_color = mcl_signs:get_color_for_sign(iname) - if txt_color ~= "false" then - clicker:set_wielded_item(item) - local success = mcl_signs:color_sign(pos, txt_color) - if success then - if DEBUG then - minetest.log("verbose", "Sign Color Success.") - end - itemstack:take_item() - end - end - end - end, - - _mcl_hardness = 1, - _mcl_blast_resistance = 1, - } - if DEBUG then - minetest.log(dump(mcl_signs.wall_standard)) - end - - -- Standing sign nodes. - -- 4 rotations at 0°, 22.5°, 45° and 67.5°. - -- These are 4 out of 16 possible rotations. - -- With facedir the remaining 12 rotations are constructed. - - -- standing sign base. - mcl_signs.standing_standard = { - paramtype = "light", - use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false, - sunlight_propagates = true, - walkable = false, - is_ground_content = false, - paramtype2 = "facedir", - drawtype = "mesh", - mesh = "mcl_signs_sign.obj", - selection_box = { type = "fixed", fixed = { -0.2, -0.5, -0.2, 0.2, 0.5, 0.2 } }, - tiles = { "mcl_signs_sign.png" }, - groups = mcl_signs.sign_groups, - drop = "mcl_signs:wall_sign", - stack_max = 16, - sounds = node_sounds, - - on_destruct = function(pos) - mcl_signs:destruct_sign(pos) - end, - - -- Not Useless Code. If a sign is created without text, this shows the formspec again for textual entry. - on_punch = function(pos, node, puncher) - mcl_signs:update_sign(pos) - end, - on_rotate = function(pos, node, user, mode) - if mode == screwdriver.ROTATE_FACE then - node.name = "mcl_signs:standing_sign22_5" - minetest.swap_node(pos, node) - elseif mode == screwdriver.ROTATE_AXIS then - return false - end - mcl_signs:update_sign(pos, nil, nil, true) - return true - end, - - on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) - - if DEBUG then - minetest.log("verbose", "MCL_SIGNS::Standing_Sign Right Click event.") - end - - -- make sure player is clicking - if not clicker or not clicker:is_player() then - return - end - - local item = clicker:get_wielded_item() - local iname = item:get_name() - - if node then - -- handle glow from glow_ink_sac *first* - if DEBUG then - minetest.log("verbose", "MCL_SIGNS::Standing_Sign Right Click event on valid node.") - end - - if (iname == "mcl_mobitems:glow_ink_sac") then - clicker:set_wielded_item(item) - local success = mcl_signs:glow_sign(pos) - if success then - if DEBUG then - minetest.log("verbose", "Sign Glow Success.") - end - itemstack:take_item() - end - return - end - - -- check the wielded item to make sure that it is a dye. - local txt_color = mcl_signs:get_color_for_sign(iname) - if txt_color ~= "false" then - clicker:set_wielded_item(item) - local success = mcl_signs:color_sign(pos, txt_color) - if success then - if DEBUG then - minetest.log("verbose", "Sign Color Success.") - end - itemstack:take_item() - end - end - end - end, - - _mcl_hardness = 1, - _mcl_blast_resistance = 1, - } - - minetest.register_node("mcl_signs:wall_sign", mcl_signs.wall_standard) - -- 0° - minetest.register_node("mcl_signs:standing_sign", mcl_signs.standing_standard) - -- 22.5° - local ssign22_5 = table.copy(mcl_signs.standing_standard) - ssign22_5.mesh = "mcl_signs_sign22.5.obj" - ssign22_5.on_rotate = function(pos, node, user, mode) - if mode == screwdriver.ROTATE_FACE then - node.name = "mcl_signs:standing_sign45" - minetest.swap_node(pos, node) - elseif mode == screwdriver.ROTATE_AXIS then - return false - end - mcl_signs:update_sign(pos, nil, nil, true) - return true - end - minetest.register_node("mcl_signs:standing_sign22_5", ssign22_5) - - -- 45° - local ssign45 = table.copy(mcl_signs.standing_standard) - ssign45.mesh = "mcl_signs_sign45.obj" - ssign45.on_rotate = function(pos, node, user, mode) - if mode == screwdriver.ROTATE_FACE then - node.name = "mcl_signs:standing_sign67_5" - minetest.swap_node(pos, node) - elseif mode == screwdriver.ROTATE_AXIS then - return false - end - mcl_signs:update_sign(pos, nil, nil, true) - return true - end - minetest.register_node("mcl_signs:standing_sign45", ssign45) - - -- 67.5° - local ssign67_5 = table.copy(mcl_signs.standing_standard) - ssign67_5.mesh = "mcl_signs_sign67.5.obj" - ssign67_5.on_rotate = function(pos, node, user, mode) - if mode == screwdriver.ROTATE_FACE then - node.name = "mcl_signs:standing_sign" - node.param2 = (node.param2 + 1) % 4 - minetest.swap_node(pos, node) - elseif mode == screwdriver.ROTATE_AXIS then - return false - end - mcl_signs:update_sign(pos, nil, nil, true) - return true - end - minetest.register_node("mcl_signs:standing_sign67_5", ssign67_5) - - -- standard signs, dark: - -- dark standard wall sign / hanging sign base - mcl_signs.wall_standard_dark = table.copy(mcl_signs.wall_standard) - mcl_signs.wall_standard_dark.wield_image = "default_sign_dark.png" - mcl_signs.wall_standard_dark.tiles = { "mcl_signs_sign_dark.png" } - mcl_signs.wall_standard_dark.inventory_image = "default_sign_dark.png" - mcl_signs.wall_standard_dark.on_place = function(itemstack, placer, pointed_thing) - local above = pointed_thing.above - local under = pointed_thing.under - - -- Use pointed node's on_rightclick function first, if present - local node_under = minetest.get_node(under) - if placer and not placer:get_player_control().sneak then - if minetest.registered_nodes[node_under.name] and minetest.registered_nodes[node_under.name].on_rightclick then - return minetest.registered_nodes[node_under.name].on_rightclick(under, node_under, placer, itemstack) or itemstack - end - end - - local dir = vector.subtract(under, above) - - -- Only build when it's legal - local abovenodedef = minetest.registered_nodes[minetest.get_node(above).name] - if not abovenodedef or abovenodedef.buildable_to == false then - return itemstack - end - - local wdir = minetest.dir_to_wallmounted(dir) - local fdir = minetest.dir_to_facedir(dir) - - local sign_info - local nodeitem = ItemStack(itemstack) - -- Ceiling - if wdir == 0 then - --how would you add sign to ceiling? - return itemstack - -- Floor - elseif wdir == 1 then - -- Standing sign - - -- Determine the sign rotation based on player's yaw - local yaw = pi * 2 - placer:get_look_horizontal() - - -- Select one of 16 possible rotations (0-15) - local rotation_level = mcl_signs:round((yaw / (pi * 2)) * 16) - - if rotation_level > 15 then - rotation_level = 0 - elseif rotation_level < 0 then - rotation_level = 15 - end - - -- The actual rotation is a combination of predefined mesh and facedir (see node definition) - if rotation_level % 4 == 0 then - nodeitem:set_name("mcl_signs:standing_sign_dark") - elseif rotation_level % 4 == 1 then - nodeitem:set_name("mcl_signs:standing_sign22_5_dark") - elseif rotation_level % 4 == 2 then - nodeitem:set_name("mcl_signs:standing_sign45_dark") - elseif rotation_level % 4 == 3 then - nodeitem:set_name("mcl_signs:standing_sign67_5_dark") - end - fdir = math.floor(rotation_level / 4) - - -- Place the node! - local _, success = minetest.item_place_node(nodeitem, placer, pointed_thing, fdir) - if not success then - return itemstack - end - if not minetest.is_creative_enabled(placer:get_player_name()) then - itemstack:take_item() - end - sign_info = mcl_signs.signtext_info_standing[rotation_level + 1] - -- Side - else - -- Wall sign - local _, success = minetest.item_place_node(itemstack, placer, pointed_thing, wdir) - if not success then - return itemstack - end - sign_info = mcl_signs.signtext_info_wall[fdir + 1] - end - - -- Determine spawn position of entity - local place_pos - if minetest.registered_nodes[node_under.name].buildable_to then - place_pos = under - else - place_pos = above - end - - local text_entity = minetest.add_entity({ - x = place_pos.x + sign_info.delta.x, - y = place_pos.y + sign_info.delta.y, - z = place_pos.z + sign_info.delta.z }, "mcl_signs:text") - text_entity:set_yaw(sign_info.yaw) - text_entity:get_luaentity()._signnodename = nodeitem:get_name() - - minetest.sound_play({ name = "default_place_node_hard", gain = 1.0 }, { pos = place_pos }, true) - - mcl_signs:show_formspec(placer, place_pos) - return itemstack - end - minetest.register_node("mcl_signs:wall_sign_dark", mcl_signs.wall_standard_dark) - - -- 0° - -- dark standing sign - mcl_signs.standing_standard_dark = table.copy(mcl_signs.standing_standard) - mcl_signs.standing_standard_dark.wield_image = "default_sign_dark.png" - mcl_signs.standing_standard_dark.tiles = { "mcl_signs_sign_dark.png" } - mcl_signs.standing_standard_dark.inventory_image = "default_sign_dark.png" - mcl_signs.standing_standard_dark.drop = "mcl_signs:wall_sign_dark" - minetest.register_node("mcl_signs:standing_sign_dark", mcl_signs.standing_standard_dark) - - -- 22.5° - local ssign22_5d = table.copy(mcl_signs.standing_standard_dark) - ssign22_5d.mesh = "mcl_signs_sign22.5.obj" - ssign22_5d.on_rotate = function(pos, node, user, mode) - if mode == screwdriver.ROTATE_FACE then - node.name = "mcl_signs:standing_sign45" - minetest.swap_node(pos, node) - elseif mode == screwdriver.ROTATE_AXIS then - return false - end - mcl_signs:update_sign(pos, nil, nil, true) - return true - end - minetest.register_node("mcl_signs:standing_sign22_5_dark", ssign22_5d) - - -- 45° - local ssign45d = table.copy(mcl_signs.standing_standard_dark) - ssign45d.mesh = "mcl_signs_sign45.obj" - ssign45d.on_rotate = function(pos, node, user, mode) - if mode == screwdriver.ROTATE_FACE then - node.name = "mcl_signs:standing_sign67_5" - minetest.swap_node(pos, node) - elseif mode == screwdriver.ROTATE_AXIS then - return false - end - mcl_signs:update_sign(pos, nil, nil, true) - return true - end - minetest.register_node("mcl_signs:standing_sign45_dark", ssign45d) - - -- 67.5° - local ssign67_5d = table.copy(mcl_signs.standing_standard_dark) - ssign67_5d.mesh = "mcl_signs_sign67.5.obj" - ssign67_5d.on_rotate = function(pos, node, user, mode) - if mode == screwdriver.ROTATE_FACE then - node.name = "mcl_signs:standing_sign" - node.param2 = (node.param2 + 1) % 4 - minetest.swap_node(pos, node) - elseif mode == screwdriver.ROTATE_AXIS then - return false - end - mcl_signs:update_sign(pos, nil, nil, true) - return true - end - minetest.register_node("mcl_signs:standing_sign67_5_dark", ssign67_5d) - - -end - From 7095876af1ba2dbe8fdf0473b430e3321cce4305 Mon Sep 17 00:00:00 2001 From: Michieal Date: Fri, 21 Oct 2022 22:55:26 -0400 Subject: [PATCH 6/7] Forgot to add in the greysacle images. --- .../textures/default_sign_greyscale.png | Bin 0 -> 717 bytes .../textures/mcl_signs_sign_greyscale.png | Bin 0 -> 1309 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/mcl_signs/textures/default_sign_greyscale.png create mode 100644 mods/ITEMS/mcl_signs/textures/mcl_signs_sign_greyscale.png diff --git a/mods/ITEMS/mcl_signs/textures/default_sign_greyscale.png b/mods/ITEMS/mcl_signs/textures/default_sign_greyscale.png new file mode 100644 index 0000000000000000000000000000000000000000..2809447aa851e062d15eb42ccb2816fb22f49a46 GIT binary patch literal 717 zcmV;;0y6!HP)gO zl<<+T-;e_eUn@P?;1|W&27f3vV$nIUtDfHMA5Q*ZEoT&j$Ao=_d|CTFkGhE`U0hs{ zIw*4plPDpAcu7)bjXWg+Qj3yVYu|X?H_y6wH2LdPFvO81Ctkm(W$Buhnh`xMU!ID} z{ePZjW^$s@-4le)XUlpY0p~8%s+RSAY+1Dva6G|fvFTrzoTfiTuQoN`A@pp)`BhU( z?!m=23_R)yBT<(eGVPfRyq!UJ9Qtm-wbIDycb(G*h;7Of-N60DK@N010qNS#tmY3labT3lag+-G2N4009L_L_t(I%e7Ozs)aBNj#9**K|%2a6m<8M zd@SF_$-%|l(M>@?5k)wcvKd>hK+T=@{0(=PrhpMVxj^k*=zVFgT&ay1& zpXW(@S(b*06UT87(KHPa>ShkMEDL>gU2D9+;kqsu#}TqDlfiI~G0(HK!!U$x+w=gQ z=SisumWxtpkq{6BftHyQ3AIiJO1+y`Z7sks4CGAHL}hRZEFH6BiHN@MAxRRwgfvZo z|F|iRV^YDTsS2Vf(r(FQ=kLk;zW*p+T}ypX6vb_m*XNP)gO zl<<+T-;e_eUn@P?;1|W&27f3vV$nIUtDfHMA5Q*ZEoT&j$Ao=_d|CTFkGhE`U0hs{ zIw*4plPDpAcu7)bjXWg+Qj3yVYu|X?H_y6wH2LdPFvO81Ctkm(W$Buhnh`xMU!ID} z{ePZjW^$s@-4le)XUlpY0p~8%s+RSAY+1Dva6G|fvFTrzoTfiTuQoN`A@pp)`BhU( z?!m=23_R)yBT<(eGVPfRyq!UJ9Qtm-wbIDycb(G*h;7Of-N60DK@N010qNS#tmY3labT3lag+-G2N400UJ?L_t(&-tAbs?-B0s zCzDBQx7%4xluoB#euLkO!jeB23}U#CMk6Z-CFEx0CaCm$K0hzrhIEEPmNf2v$~UD1 zBj0Yf9hp+8)XVS9X7k3A&1N0fACE_CI-NeB>-D-LpEPv4-TKzkXf*E7^T>dhaRxxZ zWHPZ@t=5|XPNdrq`E|1ReYsp(wOTC{Jvv!|9YA5-ZucePm&?U7Bb>5>#xE9&w@p7H z_7ZVjI=j^nH9KfL9AWGLZn9i1|NEHu`}uae+3(itwJ*VxBl)?>QmN#+UI#NBQI21J zM+acT`F!3p-N=K2g*9$ztMVgah-faCvx}RX9!Ax#9#aU!QIU~;+$cApDpa58aoLh2 zUU`wIM_uQpr&uf+=?RyTL}X=}!zsLw1-K-ZIaAOeHTw8A zpU>Y4n@n>~hq#ahxO95hS={P{V+P1xD+d<}Rh@um-F%=%0};ba;WXgLs!cu82~Oj# zss}TL*C6G44$zU?x1i)Ute6ZkAJ+h$qI$jF{d786hr{9dVK$q^OawNY%{#gUG6eSr z3}V(7lU)N~d?u6mSRe)+7|;8+Qvwmg10v7pGm<8m04K5y!U^9_aSk`!EPuNlc)SRa zha*&neyszDRcw~nW%`;rK|1rR9Uw7_JDl+eh8g)t)BuTDJcj`T6xAqDTw)fJA0uZH zK^h)LNBJ=a=n5bVFv$Sb@JQ4EiP^Abfv8Yihgqh+dc+L^fhe>;+W}!?md4{BpvZIq zZdzg%?;oebJ7)rQHehzhXmfJpB#HIpl}@Jf(RsiFS(QrV`F=be|Hv64Au%i47iR++ zEsfxBr_@(Fiu#?7R0lEW3F}Pa+X39Ttlo5l>8a3k-H$^+hgsaCfZt#GrO)XPz0q Date: Sun, 23 Oct 2022 03:20:34 -0400 Subject: [PATCH 7/7] Added in Documentation, changed the inventory image to be more minecraft-like (hand made), changed some licensing, and tracked down an out of place debug log line. --- mods/ITEMS/mcl_signs/README.txt | 7 +- mods/ITEMS/mcl_signs/SIGNS_API_DOC.txt | 122 +++++ mods/ITEMS/mcl_signs/init.lua | 14 +- mods/ITEMS/mcl_signs/signs_api.lua | 515 ++++++++++++++++-- .../ITEMS/mcl_signs/textures/default_sign.png | Bin 243 -> 5305 bytes .../mcl_signs/textures/default_sign_dark.png | Bin 746 -> 5459 bytes .../textures/default_sign_greyscale.png | Bin 717 -> 5286 bytes 7 files changed, 608 insertions(+), 50 deletions(-) create mode 100644 mods/ITEMS/mcl_signs/SIGNS_API_DOC.txt diff --git a/mods/ITEMS/mcl_signs/README.txt b/mods/ITEMS/mcl_signs/README.txt index a5887f2a2..5ef65481c 100644 --- a/mods/ITEMS/mcl_signs/README.txt +++ b/mods/ITEMS/mcl_signs/README.txt @@ -23,7 +23,12 @@ License of code and font: MIT License Font source: 04.jp.org, some modifications and additions were made (added support for Latin-1 Supplement) Original font license text states: “YOU MAY USE THEM AS YOU LIKE” (in about.gif file distributed with the font) -License of textures: See README.md in top directory of MineClone 2. +License of textures: See README.md in top directory of MineClone 2, with the exception of the following: +default_sign.png, default_sign_dark.png, default_sign_greyscale.png, mcl_signs_sign_dark.png, +mcl_signs_sign_greyscale.png are licensed as follows: +Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) (https://creativecommons.org/licenses/by-sa/4.0/). +Credit Michieal (Faerraven). The extra sign textures are provided for you to use, modify, etc., with the goal being to +make the game better. (All of these textures were changed / created by me, to make them usable / better.) License of models: GPLv3 (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/mods/ITEMS/mcl_signs/SIGNS_API_DOC.txt b/mods/ITEMS/mcl_signs/SIGNS_API_DOC.txt new file mode 100644 index 000000000..e98741137 --- /dev/null +++ b/mods/ITEMS/mcl_signs/SIGNS_API_DOC.txt @@ -0,0 +1,122 @@ +--- +--- Generated by EmmyLua. +--- Created by Michieal (FaerRaven). +--- DateTime: 10/22/22 3:44 PM +--- + +SIGNS API + +--- How to Use: + +The simplest way to create a new sign is to use mcl_signs.register_sign [mcl_signs.register_sign (modname, color, _name, +ttsign)]. It's an all-in-one sign creator. It makes use of the standard textures for the signs, and colors them based on +the color code that you give it, and names it "mcl_signs:wall_sign" + _name. So, using the spruce sign to illustrate, it +would be named "mcl_signs:wall_sign_sprucewood", as we made _name equal to "_sprucewood" after the name of the +registered wood. + +To create a sign with specific textures: use the mcl_signs.register_sign_custom [mcl_signs.register_sign_custom +(modname, _name, tiles, color, inventory_image, wield_image, ttsign)]. Like the register_sign() function, this is also an +all-in-one sign creation function. With this function you can designate what textures to use, and give them a specified +color. This function follows the same naming conventions. + +If you wish to override / recreate one of the predefined signs, you may also do that. The reregister_sign() and +reregister_sign_custom() functions will replace an existing sign's definition with a new one. Caution, ONLY use this on +existing signs. If the sign doesn't exist, use the regular register_sign* functions. + +--- What the parameters mean, and what they do: + +* modname: optional (pass "" or "false" to ignore), for using mcl_signs with other mods to allow the creation of a sign +from the mod's wood (if installed). Use this to prevent failures of the specific mod is not installed that has the needed +information (textures, wood, etc.) Setting this is important, because it prevents items from being registered if the +mod in not installed. + +* tiles: the texture file to use for the sign's node. + +* color: color the texture file to use with this color. Use white (#FFFFFF) to negate the color, and just use the +texture as is. + +* inventory_image: the texture file to use for the sign's display in inventory. + +* wield_image: the texture file to use for the sign's weilded (in hand) object. + +* _name: the sign's name suffix, such as "_dark" or "_sprucewood", etc., appended to "wall_sign" or "standing_sign" + +* ttsign: the tool tip of the sign that gets translated. Shown when the mouse hovers the inventory sign. ttsign stands +for translated tooltip sign. + +* wood_item_string: example: "mcl_core:wood", "mcl_core:sprucewood" or "mymod:mywood". This is used when defining the +recipe for the sign. + +--- Other Functions of Importance: + +* register_dye [mcl_signs.register_dye (modname, item_name, color_code)] -- this registers a new dye that the sign knows +about so that the player can color their signs with the dye. +Parameters: + modname: your mod / module's name. make sure to use this for compatibility. + item_name: the item_string of the dye to register. + color_code: the hex code for the color to make the lettering. Also called HTML color code. Ex. "#FFFFFF" is white. + +* register_sign_craft [mcl_signs.register_sign_craft(modname, wood_item_string, _name)] -- this is what creates the +recipes for the sign, and makes the sign "burnable". Typically called right after the register_sign* functions. +Parameters: + _name: MUST be the same name as used for the sign. So, if your sign _name is "_sprucewood" then this should be too. + wood_item_string: the item_string of the wood to use for the sign's recipe. Example: "mcl_core:wood" (default oak). + modname: like with the other functions that has this parameter, used to make sure that nothing breaks. + +* make_lbm() [mcl_signs.make_lbm()] -- This innocuous function is very important. This is the function that makes the +signs work after reloading the game. This function is the last to be called in your sign creation work flow. Note, you +do not need to call this function after every definition, just at the end of the last definition. +(See Example WorkFlow below.) + +--- Example Workflow for sign creation. + +* these are, at the time of writing, a selection of the actual signs' definitions. Note the functions called, and when. + +-- ---------------------------- -- +-- Register Signs for use. -- +-- ---------------------------- -- + +-- sprucewood Sign +mcl_signs.register_sign_custom("mcl_core", "_sprucewood", + "mcl_signs_sign_dark.png","#ffffff", "default_sign_dark.png", + "default_sign_dark.png", "Spruce Sign" +) +mcl_signs.register_sign_craft("mcl_core", "mcl_core:sprucewood", "_sprucewood") + +-- darkwood Sign +mcl_signs.register_sign_custom("mcl_core", "_darkwood", + "mcl_signs_sign_greyscale.png","#856443", "default_sign_greyscale.png", + "default_sign_greyscale.png", "Dark Oak Sign" +) +mcl_signs.register_sign_craft("mcl_core", "mcl_core:darkwood", "_darkwood") + +-- acaciawood Sign +mcl_signs.register_sign("mcl_core", "#ea7479", "_acaciawood", "Acacia Sign") +mcl_signs.register_sign_craft("mcl_core", "mcl_core:acaciawood", "_acaciawood") + +-- junglewood Sign +mcl_signs.register_sign("mcl_core", "#866249", "_junglewood", "Jungle Sign") +mcl_signs.register_sign_craft("mcl_core", "mcl_core:junglewood", "_junglewood") + +-- Register the LBMs for the created signs. +mcl_signs.make_lbm() + +--- ----------------------------------------------------------------------------- + +* If you wish to use a recipe other than the standard sign recipe, you will need to define your own recipe. In doing so, +use this output line: + output = "mcl_signs:wall_sign" .. _name .. " 3", +where _name is the same string that you have used throughout your sign's workflow. That way, when players make the recipe, +they get your sign (x3). + +--- Future landmarks on the horizon for the Signs API: + +* Once the forthcoming Hanging Signs are in Minecraft, and we implement the code for them in here, hanging signs will +automatically exist as part of the signs' package. You won't have to change any of your code, it'll just be more +functional. :) + +* if you have suggestions, comments, etc., please contact me on MineClone 2's Discord server. + +And that... is all there is to it! + +-- written by Michieal. \ No newline at end of file diff --git a/mods/ITEMS/mcl_signs/init.lua b/mods/ITEMS/mcl_signs/init.lua index d07b36a65..6643b978a 100644 --- a/mods/ITEMS/mcl_signs/init.lua +++ b/mods/ITEMS/mcl_signs/init.lua @@ -1,5 +1,5 @@ --- ---- Generated by EmmyLua(https://github.com/EmmyLua) +--- Generated by EmmyLua. --- Created by Michieal (FaerRaven). --- DateTime: 10/14/22 4:05 PM --- @@ -25,6 +25,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end end) +-- This defines the text entity for the lettering of the sign. -- FIXME: Prevent entity destruction by /clearobjects minetest.register_entity("mcl_signs:text", { pointable = false, @@ -90,19 +91,16 @@ mcl_signs.build_signs_info() -- ---------------------------- -- -- Register Signs for use. -- -- ---------------------------- -- -local mcl_colors_official = mcl_colors -- Standard (original) Sign mcl_signs.register_sign("mcl_core", "#ffffff", "", "Sign") mcl_signs.register_sign_craft("mcl_core", "mcl_core:wood", "") --- birchwood Sign ---mcl_signs.register_sign("mcl_core", "#d5cb8d", "_birchwood", "Birch Sign") +-- birchwood Sign "#d5cb8d" / "#ffdba7" mcl_signs.register_sign_custom("mcl_core", "_birchwood", - "mcl_signs_sign_greyscale.png",mcl_colors_official.YELLOW, "default_sign_greyscale.png", + "mcl_signs_sign_greyscale.png","#ffdba7", "default_sign_greyscale.png", "default_sign_greyscale.png", "Birch Sign" ) - mcl_signs.register_sign_craft("mcl_core", "mcl_core:birchwood", "_birchwood") -- sprucewood Sign @@ -112,13 +110,11 @@ mcl_signs.register_sign_custom("mcl_core", "_sprucewood", ) mcl_signs.register_sign_craft("mcl_core", "mcl_core:sprucewood", "_sprucewood") --- darkwood Sign ---mcl_signs.register_sign("mcl_core","#291f1a", "_darkwood", "Dark Oak Sign") +-- darkwood Sign "#291f1a" / "#856443" mcl_signs.register_sign_custom("mcl_core", "_darkwood", "mcl_signs_sign_greyscale.png","#856443", "default_sign_greyscale.png", "default_sign_greyscale.png", "Dark Oak Sign" ) - mcl_signs.register_sign_craft("mcl_core", "mcl_core:darkwood", "_darkwood") -- junglewood Sign diff --git a/mods/ITEMS/mcl_signs/signs_api.lua b/mods/ITEMS/mcl_signs/signs_api.lua index 0931e419f..b5643a1c2 100644 --- a/mods/ITEMS/mcl_signs/signs_api.lua +++ b/mods/ITEMS/mcl_signs/signs_api.lua @@ -1,5 +1,5 @@ --- ---- Generated by EmmyLua(https://github.com/EmmyLua) +--- Generated by EmmyLua. --- Created by Michieal (FaerRaven). --- DateTime: 10/14/22 4:05 PM --- @@ -439,6 +439,43 @@ mcl_signs.standing_standard = { _mcl_blast_resistance = 1, } +-- HELPER FUNCTIONS' VARIABLES +local sign_glow = 6 +local Dyes_table = { + { "mcl_dye:aqua", mcl_colors_official.AQUA }, + { "mcl_dye:black", mcl_colors_official.BLACK }, + { "mcl_dye:blue", mcl_colors_official.BLUE }, + { "mcl_dye:brown", mcl_colors_official.brown }, + { "mcl_dye:cyan", mcl_signs.mcl_wool_colors.unicolor_cyan }, + { "mcl_dye:green", mcl_colors_official.GREEN }, + { "mcl_dye:dark_green", mcl_colors_official.DARK_GREEN }, + { "mcl_dye:grey", mcl_colors_official.GRAY }, + { "mcl_dye:dark_grey", mcl_colors_official.DARK_GRAY }, + { "mcl_dye:lightblue", mcl_signs.mcl_wool_colors.unicolor_light_blue }, + { "mcl_dye:lime", mcl_signs.unicolor_green_or_lime }, + { "mcl_dye:magenta", mcl_colors_official.LIGHT_PURPLE }, + { "mcl_dye:orange", mcl_signs.mcl_wool_colors.unicolor_orange }, + { "mcl_dye:pink", mcl_signs.mcl_wool_colors.unicolor_light_red_pink }, + { "mcl_dye:purple", mcl_colors_official.LIGHT_PURPLE }, + { "mcl_dye:red", mcl_signs.mcl_wool_colors.unicolor_red }, + { "mcl_dye:silver", mcl_signs.mcl_wool_colors.unicolor_grey }, + { "mcl_dye:violet", mcl_colors_official.DARK_PURPLE }, + { "mcl_dye:white", mcl_colors_official.WHITE }, + { "mcl_dye:yellow", mcl_colors_official.YELLOW }, +} + +local function update_sign_registry(type, name) + if type == "wall" then + table.insert(mcl_signs.registered_signs.wall_signs, name) + end + if type == "standing" then + table.insert(mcl_signs.registered_signs.standing_signs, name) + end + if type == "hanging" then + table.insert(mcl_signs.registered_signs.hanging_signs, name) + end +end + function mcl_signs.make_lbm() local registered_sign_nodenames = {} @@ -468,49 +505,12 @@ function mcl_signs.make_lbm() end --- HELPER FUNCTIONS' VARIABLES -local sign_glow = 6 -local Dyes_table = { - { "mcl_dye:aqua", mcl_colors_official.AQUA }, - { "mcl_dye:black", mcl_colors_official.BLACK }, - { "mcl_dye:blue", mcl_colors_official.BLUE }, - { "mcl_dye:brown", mcl_colors_official.brown }, - { "mcl_dye:cyan", mcl_signs.mcl_wool_colors.unicolor_cyan }, - { "mcl_dye:green", mcl_colors_official.GREEN }, - { "mcl_dye:dark_green", mcl_colors_official.DARK_GREEN }, - { "mcl_dye:grey", mcl_colors_official.GRAY }, - { "mcl_dye:dark_grey", mcl_colors_official.DARK_GRAY }, - { "mcl_dye:lightblue", mcl_signs.mcl_wool_colors.unicolor_light_blue }, - { "mcl_dye:lime", mcl_signs.unicolor_green_or_lime }, - { "mcl_dye:magenta", mcl_colors_official.LIGHT_PURPLE }, - { "mcl_dye:orange", mcl_signs.mcl_wool_colors.unicolor_orange }, - { "mcl_dye:pink", mcl_signs.mcl_wool_colors.unicolor_light_red_pink }, - { "mcl_dye:purple", mcl_colors_official.LIGHT_PURPLE }, - { "mcl_dye:red", mcl_signs.mcl_wool_colors.unicolor_red }, - { "mcl_dye:silver", mcl_signs.mcl_wool_colors.unicolor_grey }, - { "mcl_dye:violet", mcl_colors_official.DARK_PURPLE }, - { "mcl_dye:white", mcl_colors_official.WHITE }, - { "mcl_dye:yellow", mcl_colors_official.YELLOW }, -} - function mcl_signs.register_dye (modname, item_name, color_code) if minetest.get_modpath(modname) then table.insert(Dyes_table, { item_name, color_code }) end end -local function update_sign_registry(type, name) - if type == "wall" then - table.insert(mcl_signs.registered_signs.wall_signs, name) - end - if type == "standing" then - table.insert(mcl_signs.registered_signs.standing_signs, name) - end - if type == "hanging" then - table.insert(mcl_signs.registered_signs.hanging_signs, name) - end -end - --- Register a new sign, tint the textures, and gives it an unique node name. Creates both wall and standing signs. --- modname: optional (pass "" or "false" to ignore), for use with other mods to --- allow the creation of a sign from the mod's wood (if installed). @@ -738,7 +738,6 @@ end --- --- modname: optional (pass "" or "false" to ignore), for use with other mods to --- allow the creation of a sign from the mod's wood (if installed). ---- type: "wall", "standing". --- --- _name: the sign's name suffix, such as "_dark" or "_red", etc., appended to "wall_sign" or "standing_sign" --- @@ -948,6 +947,442 @@ function mcl_signs.register_sign_custom (modname, _name, tiles, color, inventory end +--- Override an existing sign, tint the textures, and gives it an unique node name. Creates both wall and standing signs. +--- modname: optional (pass "" or "false" to ignore), for use with other mods to +--- allow the creation of a sign from the mod's wood (if installed). +--- +--- color: the color code to color the base sign textures. must be a valid html color code. +--- +--- _name: the sign's name suffix, such as "_dark" or "_red", etc., appended to "wall_sign" or "standing_sign" +--- +--- ttsign: the tool tip of the sign that gets translated. Shown when the mouse hovers the inventory sign. +--- For example: the basic, default oak (wood) sign is just "Sign"; and a spruce sign would be "Spruce Sign" +function mcl_signs.reregister_sign (modname, color, _name, ttsign) + local mod_name_pass = false + if modname ~= "" and modname ~= "false" then + if minetest.get_modpath(modname) then + mod_name_pass = true + end + if mod_name_pass == false then + return + end + end + local new_sign = {} + + if color == nil or color == "" then + color = "#FFFFFF" + end + + new_sign = table.copy(mcl_signs.wall_standard) + new_sign.description = S(ttsign) + + new_sign.wield_image = "(default_sign.png^[multiply:" .. color .. ")" + new_sign.tiles = { "(mcl_signs_sign.png^[multiply:" .. color .. ")" } + new_sign.inventory_image = "(default_sign.png^[multiply:" .. color .. ")" + + -- currently have to do this, because of how the base node placement works. + new_sign.on_place = function(itemstack, placer, pointed_thing) + local above = pointed_thing.above + local under = pointed_thing.under + + -- Use pointed node's on_rightclick function first, if present + local node_under = minetest.get_node(under) + if placer and not placer:get_player_control().sneak then + if minetest.registered_nodes[node_under.name] and minetest.registered_nodes[node_under.name].on_rightclick then + return minetest.registered_nodes[node_under.name].on_rightclick(under, node_under, placer, itemstack) or itemstack + end + end + + local dir = vector.subtract(under, above) + + -- Only build when it's legal + local abovenodedef = minetest.registered_nodes[minetest.get_node(above).name] + if not abovenodedef or abovenodedef.buildable_to == false then + return itemstack + end + + local wdir = minetest.dir_to_wallmounted(dir) + local fdir = minetest.dir_to_facedir(dir) + + local sign_info + local nodeitem = ItemStack(itemstack) + -- Ceiling + if wdir == 0 then + --how would you add sign to ceiling? + return itemstack + -- Floor + elseif wdir == 1 then + -- Standing sign + + -- Determine the sign rotation based on player's yaw + local yaw = pi * 2 - placer:get_look_horizontal() + + -- Select one of 16 possible rotations (0-15) + local rotation_level = mcl_signs:round((yaw / (pi * 2)) * 16) + + if rotation_level > 15 then + rotation_level = 0 + elseif rotation_level < 0 then + rotation_level = 15 + end + + -- The actual rotation is a combination of predefined mesh and facedir (see node definition) + if rotation_level % 4 == 0 then + nodeitem:set_name("mcl_signs:standing_sign" .. _name) + elseif rotation_level % 4 == 1 then + nodeitem:set_name("mcl_signs:standing_sign22_5" .. _name) + elseif rotation_level % 4 == 2 then + nodeitem:set_name("mcl_signs:standing_sign45" .. _name) + elseif rotation_level % 4 == 3 then + nodeitem:set_name("mcl_signs:standing_sign67_5" .. _name) + end + fdir = math.floor(rotation_level / 4) + + -- Place the node! + local _, success = minetest.item_place_node(nodeitem, placer, pointed_thing, fdir) + if not success then + return itemstack + end + if not minetest.is_creative_enabled(placer:get_player_name()) then + itemstack:take_item() + end + sign_info = mcl_signs.signtext_info_standing[rotation_level + 1] + -- Side + else + -- Wall sign + local _, success = minetest.item_place_node(itemstack, placer, pointed_thing, wdir) + if not success then + return itemstack + end + sign_info = mcl_signs.signtext_info_wall[fdir + 1] + end + + -- Determine spawn position of entity + local place_pos + if minetest.registered_nodes[node_under.name].buildable_to then + place_pos = under + else + place_pos = above + end + + if DEBUG then + minetest.log("action", "[mcl_signs] Register_Sign::Placed position:" .. dump(place_pos) .. "\nSign_info: " .. dump(sign_info)) + end + + local text_entity = minetest.add_entity({ + x = place_pos.x + sign_info.delta.x, + y = place_pos.y + sign_info.delta.y, + z = place_pos.z + sign_info.delta.z }, "mcl_signs:text") + text_entity:set_yaw(sign_info.yaw) + text_entity:get_luaentity()._signnodename = nodeitem:get_name() + + minetest.sound_play({ name = "default_place_node_hard", gain = 1.0 }, { pos = place_pos }, true) + + mcl_signs:show_formspec(placer, place_pos) + return itemstack + end + + minetest.override_item("mcl_signs:wall_sign" .. _name, new_sign) + update_sign_registry("wall", "mcl_signs:wall_sign" .. _name) + + -- debug step + if DEBUG then + minetest.log("action", "[mcl_signs] Registered: mcl_signs:wall_sign" .. _name .. color .. "\n" .. dump(new_sign)) + minetest.log("action", "[mcl_signs] mcl_signs:wall_sign_standard\n" .. dump(mcl_signs.wall_standard)) + end + + -- standing sign base. + local new_sign_standing = {} + new_sign_standing = table.copy(mcl_signs.standing_standard) + new_sign_standing.drop = "mcl_signs:wall_sign" .. _name + new_sign_standing.wield_image = "(default_sign.png^[multiply:" .. color .. ")" + new_sign_standing.tiles = { "(mcl_signs_sign.png^[multiply:" .. color .. ")" } + new_sign_standing.inventory_image = "(default_sign.png^[multiply:" .. color .. ")" + minetest.override_item("mcl_signs:standing_sign" .. _name, new_sign_standing) + update_sign_registry("standing", "mcl_signs:standing_sign" .. _name) + -- debug step + if DEBUG then + minetest.log("action", "[mcl_signs] Registered: mcl_signs:standing_sign" .. _name .. color .. "\n" .. dump(new_sign_standing)) + end + + -- 22.5° + local ssign22_5d = table.copy(new_sign_standing) + ssign22_5d.mesh = "mcl_signs_sign22.5.obj" + ssign22_5d.on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_FACE then + node.name = "mcl_signs:standing_sign45" .. _name + minetest.swap_node(pos, node) + elseif mode == screwdriver.ROTATE_AXIS then + return false + end + mcl_signs:update_sign(pos, nil, nil, true) + return true + end + minetest.override_item("mcl_signs:standing_sign22_5" .. _name, ssign22_5d) + update_sign_registry("standing", "mcl_signs:standing_sign22_5" .. _name) + + -- 45° + local ssign45d = table.copy(new_sign_standing) + ssign45d.mesh = "mcl_signs_sign45.obj" + ssign45d.on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_FACE then + node.name = "mcl_signs:standing_sign67_5" .. _name + minetest.swap_node(pos, node) + elseif mode == screwdriver.ROTATE_AXIS then + return false + end + mcl_signs:update_sign(pos, nil, nil, true) + return true + end + minetest.override_item("mcl_signs:standing_sign45" .. _name, ssign45d) + update_sign_registry("standing", "mcl_signs:standing_sign45" .. _name) + + -- 67.5° + local ssign67_5d = table.copy(new_sign_standing) + ssign67_5d.mesh = "mcl_signs_sign67.5.obj" + ssign67_5d.on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_FACE then + node.name = "mcl_signs:standing_sign" .. _name + node.param2 = (node.param2 + 1) % 4 + minetest.swap_node(pos, node) + elseif mode == screwdriver.ROTATE_AXIS then + return false + end + mcl_signs:update_sign(pos, nil, nil, true) + return true + end + minetest.override_item("mcl_signs:standing_sign67_5" .. _name, ssign67_5d) + update_sign_registry("standing", "mcl_signs:standing_sign67_5" .. _name) + + -- register Doc entry + if minetest.get_modpath("doc") then + doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:wall_sign" .. _name) + doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign" .. _name) + doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign22_5" .. _name) + doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign45" .. _name) + doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign67_5" .. _name) + end + + --register standing sign's rotation_levels + table.insert(mcl_signs.standing_rotation_levels, {"mcl_signs:standing_sign22_5" .. _name , 1}) + table.insert(mcl_signs.standing_rotation_levels, {"mcl_signs:standing_sign45" .. _name , 2}) + table.insert(mcl_signs.standing_rotation_levels, {"mcl_signs:standing_sign67_5" .. _name , 3}) +end + +--- The same as reregister_sign, except caller defines the textures. Note, there is a greyscale version of the sign, +--- called "default_sign_greyscale.png" and "mcl_signs_sign_greyscale.png" for optional use in the textures directory. +--- +--- modname: optional (pass "" or "false" to ignore), for use with other mods to +--- allow the creation of a sign from the mod's wood (if installed). +--- +--- _name: the sign's name suffix, such as "_dark" or "_red", etc., appended to "wall_sign" or "standing_sign" +--- +--- tiles: the texture file to use for the sign. +--- +--- color: color the texture file to use with this color. Use white (#FFFFFF) to negate the color, +--- and just use the texture as is +--- +--- inventory_image: the texture file to use for the sign's display in inventory. +--- +--- wield_image: the texture file to use for the sign's weilded (in hand) object. +--- +--- inventory_image: the image used for in-inventory and in hand. +--- +--- ttsign: the tool tip of the sign that gets translated. Shown when the mouse hovers the inventory sign. +--- For example: the basic, default oak (wood) sign is just "Sign"; and a spruce sign would be "Spruce Sign" +function mcl_signs.reregister_sign_custom (modname, _name, tiles, color, inventory_image, wield_image, ttsign) + local mod_name_pass = false + if modname ~= "" and modname ~= "false" then + if minetest.get_modpath(modname) then + mod_name_pass = true + end + if mod_name_pass == false then + return + end + end + local new_sign = {} + + new_sign = table.copy(mcl_signs.wall_standard) + + new_sign.wield_image ="("..wield_image.."^[multiply:" .. color .. ")" + new_sign.tiles = { "("..tiles.."^[multiply:" .. color .. ")" } + new_sign.inventory_image = "("..inventory_image.."^[multiply:" .. color .. ")" + new_sign.description = S(ttsign) + -- currently have to do this, because of how the base node placement works. + new_sign.on_place = function(itemstack, placer, pointed_thing) + local above = pointed_thing.above + local under = pointed_thing.under + + -- Use pointed node's on_rightclick function first, if present + local node_under = minetest.get_node(under) + if placer and not placer:get_player_control().sneak then + if minetest.registered_nodes[node_under.name] and minetest.registered_nodes[node_under.name].on_rightclick then + return minetest.registered_nodes[node_under.name].on_rightclick(under, node_under, placer, itemstack) or itemstack + end + end + + local dir = vector.subtract(under, above) + + -- Only build when it's legal + local abovenodedef = minetest.registered_nodes[minetest.get_node(above).name] + if not abovenodedef or abovenodedef.buildable_to == false then + return itemstack + end + + local wdir = minetest.dir_to_wallmounted(dir) + local fdir = minetest.dir_to_facedir(dir) + + local sign_info + local nodeitem = ItemStack(itemstack) + -- Ceiling + if wdir == 0 then + --how would you add sign to ceiling? + return itemstack + -- Floor + elseif wdir == 1 then + -- Standing sign + + -- Determine the sign rotation based on player's yaw + local yaw = pi * 2 - placer:get_look_horizontal() + + -- Select one of 16 possible rotations (0-15) + local rotation_level = mcl_signs:round((yaw / (pi * 2)) * 16) + + if rotation_level > 15 then + rotation_level = 0 + elseif rotation_level < 0 then + rotation_level = 15 + end + + -- The actual rotation is a combination of predefined mesh and facedir (see node definition) + if rotation_level % 4 == 0 then + nodeitem:set_name("mcl_signs:standing_sign" .. _name) + elseif rotation_level % 4 == 1 then + nodeitem:set_name("mcl_signs:standing_sign22_5" .. _name) + elseif rotation_level % 4 == 2 then + nodeitem:set_name("mcl_signs:standing_sign45" .. _name) + elseif rotation_level % 4 == 3 then + nodeitem:set_name("mcl_signs:standing_sign67_5" .. _name) + end + fdir = math.floor(rotation_level / 4) + + -- Place the node! + local _, success = minetest.item_place_node(nodeitem, placer, pointed_thing, fdir) + if not success then + return itemstack + end + if not minetest.is_creative_enabled(placer:get_player_name()) then + itemstack:take_item() + end + sign_info = mcl_signs.signtext_info_standing[rotation_level + 1] + -- Side + else + -- Wall sign + local _, success = minetest.item_place_node(itemstack, placer, pointed_thing, wdir) + if not success then + return itemstack + end + sign_info = mcl_signs.signtext_info_wall[fdir + 1] + end + + -- Determine spawn position of entity + local place_pos + if minetest.registered_nodes[node_under.name].buildable_to then + place_pos = under + else + place_pos = above + end + + local text_entity = minetest.add_entity({ + x = place_pos.x + sign_info.delta.x, + y = place_pos.y + sign_info.delta.y, + z = place_pos.z + sign_info.delta.z }, "mcl_signs:text") + text_entity:set_yaw(sign_info.yaw) + text_entity:get_luaentity()._signnodename = nodeitem:get_name() + + minetest.sound_play({ name = "default_place_node_hard", gain = 1.0 }, { pos = place_pos }, true) + + mcl_signs:show_formspec(placer, place_pos) + return itemstack + end + minetest.override_item("mcl_signs:wall_sign" .. _name, new_sign) + update_sign_registry("wall", "mcl_signs:wall_sign" .. _name) + + -- standing sign base. + local new_sign_standing = {} + new_sign_standing = table.copy(mcl_signs.standing_standard) + new_sign_standing.drop = "mcl_signs:wall_sign" .. _name + new_sign_standing.wield_image ="("..wield_image.."^[multiply:" .. color .. ")" + new_sign_standing.tiles = { "("..tiles.."^[multiply:" .. color .. ")" } + new_sign_standing.inventory_image = "("..inventory_image.."^[multiply:" .. color .. ")" + minetest.override_item("mcl_signs:standing_sign" .. _name, new_sign_standing) + update_sign_registry("standing", "mcl_signs:standing_sign" .. _name) + + -- 22.5° + local ssign22_5d = table.copy(new_sign_standing) + ssign22_5d.mesh = "mcl_signs_sign22.5.obj" + ssign22_5d.on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_FACE then + node.name = "mcl_signs:standing_sign45" .. _name + minetest.swap_node(pos, node) + elseif mode == screwdriver.ROTATE_AXIS then + return false + end + mcl_signs:update_sign(pos, nil, nil, true) + return true + end + minetest.override_item("mcl_signs:standing_sign22_5" .. _name, ssign22_5d) + update_sign_registry("standing", "mcl_signs:standing_sign22_5" .. _name) + + -- 45° + local ssign45d = table.copy(new_sign_standing) + ssign45d.mesh = "mcl_signs_sign45.obj" + ssign45d.on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_FACE then + node.name = "mcl_signs:standing_sign67_5" .. _name + minetest.swap_node(pos, node) + elseif mode == screwdriver.ROTATE_AXIS then + return false + end + mcl_signs:update_sign(pos, nil, nil, true) + return true + end + minetest.override_item("mcl_signs:standing_sign45" .. _name, ssign45d) + update_sign_registry("standing", "mcl_signs:standing_sign45" .. _name) + + -- 67.5° + local ssign67_5d = table.copy(new_sign_standing) + ssign67_5d.mesh = "mcl_signs_sign67.5.obj" + ssign67_5d.on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_FACE then + node.name = "mcl_signs:standing_sign" .. _name + node.param2 = (node.param2 + 1) % 4 + minetest.swap_node(pos, node) + elseif mode == screwdriver.ROTATE_AXIS then + return false + end + mcl_signs:update_sign(pos, nil, nil, true) + return true + end + minetest.override_item("mcl_signs:standing_sign67_5" .. _name, ssign67_5d) + update_sign_registry("standing", "mcl_signs:standing_sign67_5" .. _name) + + -- register Doc entry + if minetest.get_modpath("doc") then + doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:wall_sign" .. _name) + doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign" .. _name) + doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign22_5" .. _name) + doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign45" .. _name) + doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign67_5" .. _name) + end + + --register standing sign's rotation_levels + table.insert(mcl_signs.standing_rotation_levels, {"mcl_signs:standing_sign22_5" .. _name , 1}) + table.insert(mcl_signs.standing_rotation_levels, {"mcl_signs:standing_sign45" .. _name , 2}) + table.insert(mcl_signs.standing_rotation_levels, {"mcl_signs:standing_sign67_5" .. _name , 3}) + +end + --- Usage: Call this with the mod's name, the wood's item string (for the planks), and with the sign's suffix. --- Registers the crafting recipe for that sign. for every registered sign, call this function to register the --- standard recipe for the sign. Otherwise, you have to do your own register craft call. @@ -1037,7 +1472,7 @@ local function get_rotation_level(facedir, nodename) end end rl = facedir * 4 + offset - if 1 == 1 then + if DEBUG then minetest.log("action", "[mcl_signs] GetRotationLevel: NodeName: " .. nodename .. " RL value: " .. rl) end return rl diff --git a/mods/ITEMS/mcl_signs/textures/default_sign.png b/mods/ITEMS/mcl_signs/textures/default_sign.png index 077983118274db82bad1d7abca17690112131857..8fcee7e9fb1a247f26a17bf4cc5eaa0c94c9d02e 100644 GIT binary patch literal 5305 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 ZmE-0ubBlZZT3evC44$rjF6*2UngG1rNMHZ} diff --git a/mods/ITEMS/mcl_signs/textures/default_sign_dark.png b/mods/ITEMS/mcl_signs/textures/default_sign_dark.png index aedab6f06e72414bebd70305b6a0a014289b1800..016098238767b45fac28853f80e92d5c8e6d063a 100644 GIT binary patch literal 5459 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 aaR>#w%mt2j7Y4!WeD%U@Rj delta 709 zcmV;$0y_QED(VH0BYy#IX+uL$X=7sm04R}lkvmHRK@^2Q;}ahUY9V5gLd7D%pdgkS z3!5Mk6?`?>&2A#>Cd=*y3ATcbgAJbdL320{@?fK zXi6KN4pj}p!@A@8!lS~872i?3A>5&7Q)%IS;fN~-6uwZpR^~^=nKHjBc4v~~5K=wE znIEkEU_I;F!u`TMwpGx-&!cYAY~*IArFO~e#v{oDal&X6SjNI9Dm5pW{q2i=`6kJW zN0+}t5my`;vVY=@h+2@YhE!8@Lq3b5%Kdkqo;fsF?%o`S+J_)`>4o|&C~XG8$3YO3 z4x#!U&TLkJ)o00009aFg^C5`O_ANklc8|q_!jV z*>~?H3a}wsI$V#gig1fHh*+p94?PCP+EuMohFB`x+&;F5Zpc|~i2J8EbFqHe4x4<> z%yakfQu0N~QGXrgd4`Wkg3FTwNKp>cJ&P!sSNYLyh$LMsFav^ZR!P;cazcIyl8XFtdLMc53=hRr#cz*rD#qnO#LjRPTq7RPG zNZ_y=7!}r9T|uuCG`L!Uyb+_{9hNZ)Hi rW$poFosD%0$fiG&bHFrF_;>sO#k+pA`kJR300000NkvXXu0mjfi7!!c diff --git a/mods/ITEMS/mcl_signs/textures/default_sign_greyscale.png b/mods/ITEMS/mcl_signs/textures/default_sign_greyscale.png index 2809447aa851e062d15eb42ccb2816fb22f49a46..570851a6a2a6a6003b01e81b437cdecf189c41c4 100644 GIT binary patch literal 5286 zcmeHKc{r478=px^)25PC(=n!#60z#R@=eh6Sec!+Pe(ql%nL!u4sZ7m&}MWj?rK7Gb$}U!FzYuv>_Hx$du#TO$V#yl=nMHnKe- zAig%CHrcx9{MNoW;y&MU)55hrqeHD*UI`uL3Nu~yv|Eq-r&WGTT@haLoJb2L>D5&i zWzO5v-g7jb$CdTA`29r<-&Q>!+99V}#5uKRiEaU$gtpVsTI3 z>$wl|Cs;W&-7l`$8#*)cdeXGc;>e|&kG!Bo4I+C>Ez09#EdG3Xem1&mvCF4irS+d3 zt!G=k?)8=C_b$2ll9~2F_suEg zCGxwT9sKjVC%un$9hqpXteW#WHV?aOhhM@b*}M!SJni+xd~D_GhpQ7zb?&Vv9run! zyj`AnIyJZVazoOiAZL^ZeL_pge_rq3?cUl&eZY5<&N`I8eL3Agk*!xPb`@e5{8@_m3*92?G^usKS!4Dq6Q zyJNQmW)khs!taiPIVsGrw0w3Ka`t?|C^cUp@Rjd%>BvaTi?EVo=m% z!9MsDR)k3rs}OGXM*Cg1<*}V5MXFg-j?G@enStDztQ)d{*DcCvexPj6*>#5bzNtUz;f(H{j}s{6*>H@mk)(i&{?^sFke7%k_4h%<0c3iKw$KSnIHET|Rvw%0PGEc8b!xm{e-S zNFFwAO&ppd88~@kKfEpDMq6OGb-`{y?&(62hYu9M-SSu_85{ zbqwa=?$psZYnzZ0ri8lI8ik*5>B-RfwkK2-L}kp+q&Gr;crXbumgJG38lYRBjdxTMz6`& zA_>d?8Y-Au&8Z(enp#m~!E)>JU&QPfjmulJfpgb?(P(q*o!Vr9SCw(r2PfMNx872% zGa4sStOzAYo7AOdG~b2_QbhFKIV&$&qC5}kq=g-~HPkYXNJ*bVF-&|Os!AT_F1uv^ zo|$Us)Za7NigfMoVc(JLVXMjHMvy{F4}`(sJ3t#7CytHH=RN~eae- z?1Colp@<{7tyhs2aYbZA)Zb2 z;H0Jyi;k`TVJ$)^_^L};%c@|HO15;PS{y+kn1Q}eLIv{u6H~$&++$DUfiX9`*`wKxhLzy|-|6ek}a-M1^^^1C(9oo}3j+wBfbJ;Dke?TF~D^fWam zY+j3~iF`lr`Uita6Dn60Jf*c?-@SeXe5B!W+T($YyvqYiU#6YVr%$+07M0L_;>0U> z#)_4n_8J{5G5r7{Dv-U~?AlY|VUnm0zpCMuxfeUnfgz5(1EZ3gc`p)*MT9Bim^PQln-E4Vi|NWz+e_uDj84U4=7Q5zz38t z(Qhg*p;4faiQYir;<+*#z!$U+lLPC+99;xq{sOuXZDonDP%$6?F`(q3RN?@Mf}vuf zHMk7uT|JFMqckE)ex8nA$^jG^OUB|cwkj}~h_*zaEaXBF!D)KIuU=O@k? zP)LL10>CyHkSG^_3n3JI(U%3u12o|X1vnr85JRF0$SUDGldCvfr!N|63VcAZOrr&n z{hg!|6n!P@JKxkRnsB~#1XBNk`plnOv0L-Wcf z6Da~RUxX3x_~sZgUqHanDHIWgLM4a@Bm$K{14Q3IaU=>QPa*)+P!Kp4gm6TBGLJwe z3ozznstAJMkuiLMh=38&g?K8#oFXJsfo~wz%0Z|qc>&*grG^qhP$UsuBqGqvF(kT3 z?F~T2&}cL|hAyP=1b8}?2Msh(LIJ~0Di`yhbb?}@4}gHP&x=tYgjRq78!$uD9lv25iR2slUt6f5=H8tgpvKUK>J*a>rLe&*NUi0gL zz_HQT76p4MG|`}zX{a>$-j@(x zK+O{#+S>#?hDdZF&>3VZ15d%=$qYOmjT;Xbr{2|{BeuZ(4<{BHfp6LXq&GGPwHK&c z;l8x1an95<{)?aST>Og`An2b)eu&?nbp533hZy)F;h)v@ldd0P;D>~NR@eWHF2vUh z4T%dC7h2u9Jp{=Pye`}D#Z=yc-1GC(@^KY5PiG*bqIaiz z-n) zz>D6ju+}-ATAka?NOiW{Che`T(eW+-kgFb+X&(`LHV0`R0T+}u`xcz)UJx0yiTMUY zI~AGXp9uFpU|eEWdH>;HR*Bj6-dBwt%i^O$52ZK{kxZ7XHc55PY&V^FcOz-qcAQc_ zQ|OQ3Ho}}-=RTwH3r36X4vs!Cc5GxH>a6b{0f5efZTi+3nWOOIU>Nv!>xiknNm6Hj zXzL#_A;LYsZkyBoByd%2;48!KCEA^rdix>|%T{=M=zm-!-J71YVs6z*F+>@RW9!I1 IW9=RNUjvmLng9R* delta 694 zcmV;n0!jU*Da{3tBYy#IX+uL$X=7sm04R}lk-bYoQ5eR5YGJ4mR6|68gGGZv6hvd$ z;36Srkkz8suR!f`uM*N4v@{3}QA=M#|3R%mYe5hcK}1u3KwnG9?L8V8q33e$`{Oz1 zc{%4fU=QcDg4r<+g<{EwhJxOu__Ejeii=*{I2lf8ral{qgnwx}zV5N9dKXZ=+V5*Q z+^Mvwfvrn;O4E&!@QiSHqoga|5$@M=iInh>u-}ja3STQd+29w&*#>_oHe%5^u&bWl z>>p14VJ&AAgvW$^g?w52J&(GHCtX}zkUA)H2$Luwf_O<%W{o^00#b{TS!>^T-8av= zcr^LzR4~MmC4VPgzo=#DnwFXoJuP3Jipu?eo@QopqS4(GgwAKndLIGjF4U@)^?htv zwG(hW!DX@OUzePwKSi%LHQyohY{B_eQ%ml_#WoB)>IoxJmmD(fnGC$0L3bSbZo#$E z$m(~U(+7xc$`jqd{sD~2{+`tzugGWReOc+(00009aDPZya{vGf5&!@T5&_cPe*6Fc z0R>4!K~y-)wNt&Sg)j_`QpBG@LGc9?boZ5fEZ@e-!NuLtO+i5sML3t_lG0xEoZ)ak zuqOT5Sh#}TqDlfiI~G0(HK!!U$x+w=gQ=SisumWxtpkq{6BftHyQ3AIiJO1+y` zZ7sks4CGAHL}hRZEFH6BiHN@MAxRRwgfvZo|F|iRV^YDTsS2Vf(r(FQ=kLk;zW*p+ zT}ypX6vb_mH(`r!`dr(XZ0!2I?xy$!Ig cEBrft01*d%>;`QcuK)l507*qoM6N<$f?dl^lmGw#