diff --git a/api.lua b/api.lua new file mode 100644 index 0000000..80e545b --- /dev/null +++ b/api.lua @@ -0,0 +1,663 @@ +-- signs_lib api, backported from street_signs + +local S = signs_lib.gettext + +signs_lib.lbm_restore_nodes = {} +signs_lib.old_fenceposts = {} +signs_lib.old_fenceposts_replacement_signs = {} +signs_lib.old_fenceposts_with_signs = {} +signs_lib.allowed_poles = {} + +-- Settings used for a standard wood or steel wall sign +signs_lib.standard_lines = 6 +signs_lib.standard_hscale = 1.7 +signs_lib.standard_vscale = 1.75 +signs_lib.standard_lspace = 1 +signs_lib.standard_fsize = 15 +signs_lib.standard_xoffs = 5 +signs_lib.standard_yoffs = 38 +signs_lib.standard_cpl = 25 + +signs_lib.standard_wood_groups = {choppy = 2, flammable = 2, oddly_breakable_by_hand = 3} +signs_lib.standard_steel_groups = {cracky = 2, oddly_breakable_by_hand = 3} + +signs_lib.standard_yaw = { + 0, + math.pi / -2, + math.pi, + math.pi / 2, +} + +signs_lib.wallmounted_yaw = { + nil, + nil, + math.pi / -2, + math.pi / 2, + 0, + math.pi, +} + +local wall_dir_change = { + [0] = 2, + 2, + 5, + 4, + 2, + 3, +} + +signs_lib.fdir_to_back = { + { 0, -1 }, + { -1, 0 }, + { 0, 1 }, + { 1, 0 }, +} + +signs_lib.wall_fdir_to_back = { + nil, + nil, + { 0, 1 }, + { 0, -1 }, + { -1, 0 }, + { 1, 0 }, +} + +-- Initialize character texture cache +local ctexcache = {} + +signs_lib.wallmounted_rotate = function(pos, node, user, mode) + if mode ~= screwdriver.ROTATE_FACE then return false end + minetest.swap_node(pos, { name = node.name, param2 = wall_dir_change[node.param2 % 6] }) + for _, v in ipairs(minetest.get_objects_inside_radius(pos, 0.5)) do + local e = v:get_luaentity() + if e and e.name == "signs_lib:text" then + v:remove() + end + end + signs_lib.update_sign(pos) + return true +end + +signs_lib.facedir_rotate = function(pos, node, user, mode) + if mode ~= screwdriver.ROTATE_FACE or not signs_lib.can_modify(pos, user) then return end + newparam2 = ((node.param2 % 6 ) == 0) and 1 or 0 + minetest.swap_node(pos, { name = node.name, param2 = newparam2 }) + for _, v in ipairs(minetest.get_objects_inside_radius(pos, 0.5)) do + local e = v:get_luaentity() + if e and e.name == "signs_lib:text" then + v:remove() + end + end + signs_lib.update_sign(pos) + return true +end + +local DEFAULT_TEXT_SCALE = {x=10, y=10} + +-- infinite stacks + +if not minetest.settings:get_bool("creative_mode") then + signs_lib.expect_infinite_stacks = false +else + signs_lib.expect_infinite_stacks = true +end + +-- CONSTANTS + +-- Path to the textures. +local TP = signs_lib.path .. "/textures" +-- Font file formatter +local CHAR_FILE = "%s_%02x.png" +-- Fonts path +local CHAR_PATH = TP .. "/" .. CHAR_FILE + +-- Lots of overkill here. KISS advocates, go away, shoo! ;) -- kaeza + +local PNG_HDR = string.char(0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A) + +-- check if a file does exist +-- to avoid reopening file after checking again +-- pass TRUE as second argument +local function file_exists(name, return_handle, mode) + mode = mode or "r"; + local f = io.open(name, mode) + if f ~= nil then + if (return_handle) then + return f + end + io.close(f) + return true + else + return false + end +end + +-- Read the image size from a PNG file. +-- Returns image_w, image_h. +-- Only the LSB is read from each field! +function signs_lib.read_image_size(filename) + local f = file_exists(filename, true, "rb") + -- file might not exist (don't crash the game) + if (not f) then + return 0, 0 + end + f:seek("set", 0x0) + local hdr = f:read(string.len(PNG_HDR)) + if hdr ~= PNG_HDR then + f:close() + return + end + f:seek("set", 0x13) + local ws = f:read(1) + f:seek("set", 0x17) + local hs = f:read(1) + f:close() + return ws:byte(), hs:byte() +end + +-- 4 rows, max 80 chars per, plus a bit of fudge to +-- avoid excess trimming (e.g. due to color codes) + +local MAX_INPUT_CHARS = 400 + +-- helper functions to trim sign text input/output + +local function trim_input(text) + return text:sub(1, math.min(MAX_INPUT_CHARS, text:len())) +end + +local function build_char_db(font_size) + + local cw = {} + + -- To calculate average char width. + local total_width = 0 + local char_count = 0 + + for c = 32, 255 do + local w, h = signs_lib.read_image_size(CHAR_PATH:format("signs_lib_font_"..font_size.."px", c)) + if w and h then + local ch = string.char(c) + cw[ch] = w + total_width = total_width + w + char_count = char_count + 1 + end + end + + local cbw, cbh = signs_lib.read_image_size(TP.."/signs_lib_color_"..font_size.."px_n.png") + assert(cbw and cbh, "error reading bg dimensions") + return cw, cbw, cbh, (total_width / char_count) +end + +signs_lib.charwidth15, +signs_lib.colorbgw15, +signs_lib.lineheight15, +signs_lib.avgwidth15 = build_char_db(15) + +signs_lib.charwidth31, +signs_lib.colorbgw31, +signs_lib.lineheight31, +signs_lib.avgwidth31 = build_char_db(31) + +local sign_groups = {choppy=2, dig_immediate=2} +local fences_with_sign = { } + +-- some local helper functions + +local function split_lines_and_words(text) + if not text then return end + local lines = { } + for _, line in ipairs(text:split("\n")) do + table.insert(lines, line:split(" ")) + end + return lines +end + +local math_max = math.max + +local function fill_line(x, y, w, c, font_size, colorbgw) + c = c or "0" + local tex = { } + for xx = 0, math.max(0, w), colorbgw do + table.insert(tex, (":%d,%d=signs_lib_color_"..font_size.."px_%s.png"):format(x + xx, y, c)) + end + return table.concat(tex) +end + +-- make char texture file name +-- if texture file does not exist use fallback texture instead +local function char_tex(font_name, ch) + if ctexcache[font_name..ch] then + return ctexcache[font_name..ch], true + else + local c = ch:byte() + local exists, tex = file_exists(CHAR_PATH:format(font_name, c)) + if exists and c ~= 14 then + tex = CHAR_FILE:format(font_name, c) + else + tex = CHAR_FILE:format(font_name, 0x0) + end + ctexcache[font_name..ch] = tex + return tex, exists + end +end + +local function make_line_texture(line, lineno, pos, line_width, line_height, cwidth_tab, font_size, colorbgw) + local width = 0 + local maxw = 0 + local font_name = "signs_lib_font_"..font_size.."px" + + local words = { } + local node = minetest.get_node(pos) + local def = minetest.registered_items[node.name] + local default_color = def.default_color or 0 + + local cur_color = tonumber(default_color, 16) + + -- We check which chars are available here. + for word_i, word in ipairs(line) do + local chars = { } + local ch_offs = 0 + word = string.gsub(word, "%^[12345678abcdefgh]", { + ["^1"] = string.char(0x81), + ["^2"] = string.char(0x82), + ["^3"] = string.char(0x83), + ["^4"] = string.char(0x84), + ["^5"] = string.char(0x85), + ["^6"] = string.char(0x86), + ["^7"] = string.char(0x87), + ["^8"] = string.char(0x88), + ["^a"] = string.char(0x8a), + ["^b"] = string.char(0x8b), + ["^c"] = string.char(0x8c), + ["^d"] = string.char(0x8d), + ["^e"] = string.char(0x8e), + ["^f"] = string.char(0x8f), + ["^g"] = string.char(0x90), + ["^h"] = string.char(0x91) + }) + local word_l = #word + local i = 1 + while i <= word_l do + local c = word:sub(i, i) + if c == "#" then + local cc = tonumber(word:sub(i+1, i+1), 16) + if cc then + i = i + 1 + cur_color = cc + end + else + local w = cwidth_tab[c] + if w then + width = width + w + 1 + if width >= (line_width - cwidth_tab[" "]) then + width = 0 + else + maxw = math_max(width, maxw) + end + if #chars < MAX_INPUT_CHARS then + table.insert(chars, { + off = ch_offs, + tex = char_tex(font_name, c), + col = ("%X"):format(cur_color), + }) + end + ch_offs = ch_offs + w + end + end + i = i + 1 + end + width = width + cwidth_tab[" "] + 1 + maxw = math_max(width, maxw) + table.insert(words, { chars=chars, w=ch_offs }) + end + + -- Okay, we actually build the "line texture" here. + + local texture = { } + + local start_xpos = math.floor((line_width - maxw) / 2) + def.x_offset + + local xpos = start_xpos + local ypos = (line_height + def.line_spacing)* lineno + def.y_offset + + cur_color = nil + + for word_i, word in ipairs(words) do + local xoffs = (xpos - start_xpos) + if (xoffs > 0) and ((xoffs + word.w) > maxw) then + table.insert(texture, fill_line(xpos, ypos, maxw, "n", font_size, colorbgw)) + xpos = start_xpos + ypos = ypos + line_height + def.line_spacing + lineno = lineno + 1 + if lineno >= def.number_of_lines then break end + table.insert(texture, fill_line(xpos, ypos, maxw, cur_color, font_size, colorbgw)) + end + for ch_i, ch in ipairs(word.chars) do + if ch.col ~= cur_color then + cur_color = ch.col + table.insert(texture, fill_line(xpos + ch.off, ypos, maxw, cur_color, font_size, colorbgw)) + end + table.insert(texture, (":%d,%d=%s"):format(xpos + ch.off, ypos, ch.tex)) + end + table.insert( + texture, + (":%d,%d="):format(xpos + word.w, ypos) .. char_tex(font_name, " ") + ) + xpos = xpos + word.w + cwidth_tab[" "] + if xpos >= (line_width + cwidth_tab[" "]) then break end + end + + table.insert(texture, fill_line(xpos, ypos, maxw, "n", font_size, colorbgw)) + table.insert(texture, fill_line(start_xpos, ypos + line_height, maxw, "n", font_size, colorbgw)) + + return table.concat(texture), lineno +end + +local function make_sign_texture(lines, pos) + local node = minetest.get_node(pos) + local def = minetest.registered_items[node.name] + + local font_size + local line_width + local line_height + local char_width + local colorbgw + + if def.font_size and def.font_size == 31 then + font_size = 31 + line_width = math.floor(signs_lib.avgwidth31 * def.chars_per_line) * def.horiz_scaling + line_height = signs_lib.lineheight31 + char_width = signs_lib.charwidth31 + colorbgw = signs_lib.colorbgw31 + else + font_size = 15 + line_width = math.floor(signs_lib.avgwidth15 * def.chars_per_line) * def.horiz_scaling + line_height = signs_lib.lineheight15 + char_width = signs_lib.charwidth15 + colorbgw = signs_lib.colorbgw15 + end + + local texture = { ("[combine:%dx%d"):format(line_width, (line_height + def.line_spacing) * def.number_of_lines * def.vert_scaling) } + + local lineno = 0 + for i = 1, #lines do + if lineno >= def.number_of_lines then break end + local linetex, ln = make_line_texture(lines[i], lineno, pos, line_width, line_height, char_width, font_size, colorbgw) + table.insert(texture, linetex) + lineno = ln + 1 + end + table.insert(texture, "^[makealpha:0,0,0") + return table.concat(texture, "") +end + +local function set_obj_text(obj, text, x, pos) + local split = split_lines_and_words + local text_ansi = Utf8ToAnsi(text) + local n = minetest.registered_nodes[minetest.get_node(pos).name] + local text_scale = (n and n.text_scale) or DEFAULT_TEXT_SCALE + local texture = make_sign_texture(split(text_ansi), pos) + obj:set_properties({ + textures={texture}, + visual_size = text_scale, + }) +end + +signs_lib.construct_sign = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string( + "formspec", + "size[6,4]".. + "textarea[0,-0.3;6.5,3;text;;${text}]".. + "button_exit[2,3.4;2,1;ok;"..S("Write").."]".. + "background[-0.5,-0.5;7,5;signs_lib_sign_bg.jpg]") + meta:set_string("infotext", "") +end + +function signs_lib.destruct_sign(pos) + local objects = minetest.get_objects_inside_radius(pos, 0.5) + for _, v in ipairs(objects) do + local e = v:get_luaentity() + if e and e.name == "signs_lib:text" then + v:remove() + end + end +end + +local function make_infotext(text) + text = trim_input(text) + local lines = split_lines_and_words(text) or {} + local lines2 = { } + for _, line in ipairs(lines) do + table.insert(lines2, (table.concat(line, " "):gsub("#[0-9a-fA-F]", ""):gsub("##", "#"))) + end + return table.concat(lines2, "\n") +end + +function signs_lib.update_sign(pos, fields) + local meta = minetest.get_meta(pos) + + local text = fields and fields.text or meta:get_string("text") + text = trim_input(text) + + local owner = meta:get_string("owner") + ownstr = "" + if owner ~= "" then ownstr = S("Locked sign, owned by @1\n", owner) end + + meta:set_string("text", text) + meta:set_string("infotext", ownstr..make_infotext(text).." ") + + local objects = minetest.get_objects_inside_radius(pos, 0.5) + local found + for _, v in ipairs(objects) do + local e = v:get_luaentity() + if e and e.name == "signs_lib:text" then + if found then + v:remove() + else + set_obj_text(v, text, nil, pos) + found = true + end + end + end + if found then + return + end + + -- if there is no entity + local signnode = minetest.get_node(pos) + local signname = signnode.name + local def = minetest.registered_items[signname] + if not def.entity_info or not def.entity_info.yaw[signnode.param2 + 1] then return end + local obj = minetest.add_entity(pos, "signs_lib:text") + + obj:setyaw(def.entity_info.yaw[signnode.param2 + 1]) + obj:set_properties({ + mesh = def.entity_info.mesh, + }) +end + +function signs_lib.receive_fields(pos, formname, fields, sender) + if fields and fields.text and fields.ok and signs_lib.can_modify(pos, sender) then + minetest.log("action", S("@1 wrote \"@2\" to sign at @3", + (sender:get_player_name() or ""), + fields.text:gsub('\\', '\\\\'):gsub("\n", "\\n"), + minetest.pos_to_string(pos) + )) + signs_lib.update_sign(pos, fields) + end +end + +function signs_lib.can_modify(pos, player) + local meta = minetest.get_meta(pos) + local owner = meta:get_string("owner") + local playername = player:get_player_name() + + if minetest.is_protected(pos, playername) then + minetest.record_protection_violation(pos, playername) + return false + end + + if owner == "" + or playername == owner + or (minetest.check_player_privs(playername, {sign_editor=true})) + or (playername == minetest.settings:get("name")) then + return true + end + minetest.record_protection_violation(pos, playername) + return false +end + +local signs_text_on_activate = function(self) + local pos = self.object:getpos() + local meta = minetest.get_meta(pos) + local signnode = minetest.get_node(pos) + local signname = signnode.name + local def = minetest.registered_items[signname] + local text = meta:get_string("text") + if text and def and def.entity_info then + text = trim_input(text) + set_obj_text(self.object, text, nil, pos) + self.object:set_properties({ + mesh = def.entity_info.mesh, + }) + end +end + +minetest.register_entity("signs_lib:text", { + collisionbox = { 0, 0, 0, 0, 0, 0 }, + visual = "mesh", + mesh = "signs_lib_basic_entity.obj", + textures = {}, + on_activate = signs_text_on_activate, +}) + +-- make selection boxes +-- sizex/sizey specified in inches because that's what MUTCD uses. + +function signs_lib.make_selection_boxes(sizex, sizey, onpole, xoffs, yoffs, zoffs, fdir) + + local tx = (sizex * 0.0254 ) / 2 + local ty = (sizey * 0.0254 ) / 2 + local xo = xoffs and xoffs * 0.0254 or 0 + local yo = yoffs and yoffs * 0.0254 or 0 + local zo = zoffs and zoffs * 0.0254 or 0 + + if onpole == "_onpole" then + if not fdir then + return { + type = "wallmounted", + wall_side = { -0.5 - 0.3125 + zo, -ty + yo, -tx + xo, -0.4375 - 0.3125 + zo, ty + yo , tx + xo }, + wall_top = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + wall_bottom = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + } + else + return { + type = "fixed", + fixed = { -tx + xo, -ty + yo, 0.5 + 0.3125 + zo, tx + xo, ty + yo, 0.4375 + 0.3125 + zo } + } + end + else + if not fdir then + return { + type = "wallmounted", + wall_side = { -0.5, -ty, -tx, -0.4375, ty, tx }, + wall_top = { -tx - xo, 0.5 + zo, -ty + yo, tx - xo, 0.4375 + zo, ty + yo}, + wall_bottom = { -tx - xo, -0.5 + zo, -ty + yo, tx - xo, -0.4375 + zo, ty + yo } + } + else + return { + type = "fixed", + fixed = { -tx + xo, -ty + yo, 0.5 + zo, tx + xo, ty + yo, 0.4375 + zo} + } + end + end +end + +function signs_lib.check_for_pole(pos, pointed_thing) + local ppos = minetest.get_pointed_thing_position(pointed_thing) + local pnode = minetest.get_node(ppos) + local pdef = minetest.registered_items[pnode.name] + + if signs_lib.allowed_poles[pnode.name] + or (pdef and pdef.drawtype == "fencelike") + or string.find(pnode.name, "default:fence_") + or string.find(pnode.name, "_post") + or string.find(pnode.name, "fencepost") + or (pnode.name == "streets:bigpole" and pnode.param2 < 4) + or (pnode.name == "streets:bigpole" and pnode.param2 > 19 and pnode.param2 < 24) then + return true + end +end + +function signs_lib.after_place_node(pos, placer, itemstack, pointed_thing, locked) + local ppos = minetest.get_pointed_thing_position(pointed_thing) + local pnode = minetest.get_node(ppos) + local pdef = minetest.registered_items[pnode.name] + local playername = placer:get_player_name() + + if signs_lib.check_for_pole(pos, pointed_thing) then + local node = minetest.get_node(pos) + minetest.swap_node(pos, {name = itemstack:get_name().."_onpole", param2 = node.param2}) + end + if locked then + local meta = minetest.get_meta(pos) + meta:set_string("owner", playername) + meta:set_string("infotext", S("Locked sign, owned by @1\n", playername)) + end +end + +function signs_lib.register_fence_with_sign() + minetest.log("warning", "[signs_lib] ".."Attempt to call no longer used function signs_lib.register_fence_with_sign()") +end + +-- restore signs' text after /clearobjects and the like, the next time +-- a block is reloaded by the server. + +minetest.register_lbm({ + nodenames = signs_lib.lbm_restore_nodes, + name = "signs_lib:restore_sign_text", + label = "Restore sign text", + run_at_every_load = true, + action = function(pos, node) + signs_lib.update_sign(pos,nil,nil,node) + end +}) + +-- Convert old signs on fenceposts into signs on.. um.. fence posts :P + +minetest.register_lbm({ + nodenames = signs_lib.old_fenceposts_with_signs, + name = "signs_lib:fix_fencepost_signs", + label = "Change single-node signs on fences into normal", + run_at_every_load = true, + action = function(pos, node) + + local fdir = node.param2 % 8 + local signpos = { + x = pos.x + signs_lib.fdir_to_back[fdir+1][1], + y = pos.y, + z = pos.z + signs_lib.fdir_to_back[fdir+1][2] + } + + if minetest.get_node(signpos).name == "air" then + local new_wmdir = minetest.dir_to_wallmounted(minetest.facedir_to_dir(fdir)) + local oldfence = signs_lib.old_fenceposts[node.name] + local newsign = signs_lib.old_fenceposts_replacement_signs[node.name] + + for _, v in ipairs(minetest.get_objects_inside_radius(pos, 0.5)) do + local e = v:get_luaentity() + if e and e.name == "signs_lib:text" then + v:remove() + end + end + + local oldmeta = minetest.get_meta(pos):to_table() + minetest.set_node(pos, {name = oldfence}) + minetest.set_node(signpos, { name = newsign, param2 = new_wmdir }) + local newmeta = minetest.get_meta(signpos) + newmeta:from_table(oldmeta) + signs_lib.update_sign(signpos) + end + end +}) diff --git a/depends.txt b/depends.txt index 6937007..c0dd3b0 100644 --- a/depends.txt +++ b/depends.txt @@ -1,6 +1,3 @@ default -basic_materials intllib? screwdriver? -keyword_interact? -craft_guide? diff --git a/encoding.lua b/encoding.lua index 16e35fe..b398c46 100644 --- a/encoding.lua +++ b/encoding.lua @@ -1,4 +1,4 @@ --- encoding borrowed from signs_lib mod of https://github.com/lord-server/lord +-- encoding borrowed from signs_lib fork at https://github.com/lord-server/lord local ansi_decode = { [128] = "\208\130", diff --git a/init.lua b/init.lua index b399d07..152cf1f 100644 --- a/init.lua +++ b/init.lua @@ -3,1279 +3,13 @@ -- PilzAdam's original text-on-signs mod and rewritten by Vanessa Ezekowitz -- and Diego Martinez --- textpos = { --- { delta = {entity position for 0° yaw}, exact yaw expression } --- { delta = {entity position for 180° yaw}, exact yaw expression } --- { delta = {entity position for 270° yaw}, exact yaw expression } --- { delta = {entity position for 90° yaw}, exact yaw expression } --- } --- Made colored metal signs optionals -local enable_colored_metal_signs = true - --- CWz's keyword interact mod uses this setting. -local current_keyword = minetest.settings:get("interact_keyword") or "iaccept" - signs_lib = {} -signs_lib.path = minetest.get_modpath(minetest.get_current_modname()) -screwdriver = screwdriver or {} --- Load support for intllib. +signs_lib.path = minetest.get_modpath(minetest.get_current_modname()) + local S, NS = dofile(signs_lib.path .. "/intllib.lua") signs_lib.gettext = S --- text encoding -dofile(signs_lib.path .. "/encoding.lua"); - --- Initialize character texture cache -local ctexcache = {} - - -local wall_dir_change = { - [0] = 4, - 0, - 5, - 1, - 2, - 3, - 0 -} - -signs_lib.wallmounted_rotate = function(pos, node, user, mode) - if minetest.is_protected(pos, user:get_player_name()) then - minetest.record_protection_violation(pos, - sender:get_player_name()) - return false - end - if mode ~= screwdriver.ROTATE_FACE then return false end - minetest.swap_node(pos, { name = node.name, param2 = wall_dir_change[node.param2 % 6] }) - signs_lib.update_sign(pos,nil,nil,node) - return true -end - -signs_lib.facedir_rotate = function(pos, node, user, mode) - if minetest.is_protected(pos, user:get_player_name()) then - minetest.record_protection_violation(pos, - sender:get_player_name()) - return false - end - if mode ~= screwdriver.ROTATE_FACE then return false end - local newparam2 = (node.param2 %8) + 1 - if newparam2 == 5 then - newparam2 = 6 - elseif newparam2 > 6 then - newparam2 = 0 - end - minetest.swap_node(pos, { name = node.name, param2 = newparam2 }) - signs_lib.update_sign(pos,nil,nil,node) - return true -end - -signs_lib.facedir_rotate_simple = function(pos, node, user, mode) - if minetest.is_protected(pos, user:get_player_name()) then - minetest.record_protection_violation(pos, - sender:get_player_name()) - return false - end - if mode ~= screwdriver.ROTATE_FACE then return false end - local newparam2 = (node.param2 %8) + 1 - if newparam2 > 3 then newparam2 = 0 end - minetest.swap_node(pos, { name = node.name, param2 = newparam2 }) - signs_lib.update_sign(pos,nil,nil,node) - return true -end - - -signs_lib.modpath = minetest.get_modpath("signs_lib") - -local DEFAULT_TEXT_SCALE = {x=0.8, y=0.5} - -signs_lib.regular_wall_sign_model = { - nodebox = { - type = "wallmounted", - wall_side = { -0.5, -0.25, -0.4375, -0.4375, 0.375, 0.4375 }, - wall_bottom = { -0.4375, -0.5, -0.25, 0.4375, -0.4375, 0.375 }, - wall_top = { -0.4375, 0.4375, -0.375, 0.4375, 0.5, 0.25 } - }, - textpos = { - nil, - nil, - {delta = { x = 0.41, y = 0.07, z = 0 }, yaw = math.pi / -2}, - {delta = { x = -0.41, y = 0.07, z = 0 }, yaw = math.pi / 2}, - {delta = { x = 0, y = 0.07, z = 0.41 }, yaw = 0}, - {delta = { x = 0, y = 0.07, z = -0.41 }, yaw = math.pi}, - } -} - -signs_lib.metal_wall_sign_model = { - nodebox = { - type = "fixed", - fixed = {-0.4375, -0.25, 0.4375, 0.4375, 0.375, 0.5} - }, - textpos = { - {delta = { x = 0, y = 0.07, z = 0.41 }, yaw = 0}, - {delta = { x = 0.41, y = 0.07, z = 0 }, yaw = math.pi / -2}, - {delta = { x = 0, y = 0.07, z = -0.41 }, yaw = math.pi}, - {delta = { x = -0.41, y = 0.07, z = 0 }, yaw = math.pi / 2}, - } -} - -signs_lib.yard_sign_model = { - nodebox = { - type = "fixed", - fixed = { - {-0.4375, -0.25, -0.0625, 0.4375, 0.375, 0}, - {-0.0625, -0.5, -0.0625, 0.0625, -0.1875, 0}, - } - }, - textpos = { - {delta = { x = 0, y = 0.07, z = -0.08 }, yaw = 0}, - {delta = { x = -0.08, y = 0.07, z = 0 }, yaw = math.pi / -2}, - {delta = { x = 0, y = 0.07, z = 0.08 }, yaw = math.pi}, - {delta = { x = 0.08, y = 0.07, z = 0 }, yaw = math.pi / 2}, - } -} - -signs_lib.hanging_sign_model = { - nodebox = { - type = "fixed", - fixed = { - {-0.4375, -0.3125, -0.0625, 0.4375, 0.3125, 0}, - {-0.4375, 0.25, -0.03125, 0.4375, 0.5, -0.03125}, - } - }, - textpos = { - {delta = { x = 0, y = -0.02, z = -0.08 }, yaw = 0}, - {delta = { x = -0.08, y = -0.02, z = 0 }, yaw = math.pi / -2}, - {delta = { x = 0, y = -0.02, z = 0.08 }, yaw = math.pi}, - {delta = { x = 0.08, y = -0.02, z = 0 }, yaw = math.pi / 2}, - } -} - -signs_lib.sign_post_model = { - nodebox = { - type = "fixed", - fixed = { - {-0.4375, -0.25, -0.1875, 0.4375, 0.375, -0.125}, - {-0.125, -0.5, -0.125, 0.125, 0.5, 0.125}, - } - }, - textpos = { - {delta = { x = 0, y = 0.07, z = -0.2 }, yaw = 0}, - {delta = { x = -0.2, y = 0.07, z = 0 }, yaw = math.pi / -2}, - {delta = { x = 0, y = 0.07, z = 0.2 }, yaw = math.pi}, - {delta = { x = 0.2, y = 0.07, z = 0 }, yaw = math.pi / 2}, - } -} - --- the list of standard sign nodes - -local default_sign = "default:sign_wall_wood" -local default_sign_image = "default_sign_wood.png" - -local default_sign_metal = "default:sign_wall_steel" -local default_sign_metal_image = "default_sign_steel.png" - -signs_lib.sign_node_list = { - default_sign, - default_sign_metal, - "signs:sign_yard", - "signs:sign_hanging", - "signs:sign_wall_green", - "signs:sign_wall_yellow", - "signs:sign_wall_red", - "signs:sign_wall_white_red", - "signs:sign_wall_white_black", - "signs:sign_wall_orange", - "signs:sign_wall_blue", - "signs:sign_wall_brown", - "locked_sign:sign_wall_locked" -} - ---table copy - -function signs_lib.table_copy(t) - local nt = { } - for k, v in pairs(t) do - if type(v) == "table" then - nt[k] = signs_lib.table_copy(v) - else - nt[k] = v - end - end - return nt -end - --- infinite stacks - -if not minetest.settings:get_bool("creative_mode") then - signs_lib.expect_infinite_stacks = false -else - signs_lib.expect_infinite_stacks = true -end - --- CONSTANTS - --- Path to the textures. -local TP = signs_lib.path .. "/textures" --- Font file formatter -local CHAR_FILE = "%s_%02x.png" --- Fonts path -local CHAR_PATH = TP .. "/" .. CHAR_FILE - --- Font name. -local font_name = "hdf" - --- Lots of overkill here. KISS advocates, go away, shoo! ;) -- kaeza - -local PNG_HDR = string.char(0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A) - --- check if a file does exist --- to avoid reopening file after checking again --- pass TRUE as second argument -function file_exists(name, return_handle, mode) - mode = mode or "r"; - local f = io.open(name, mode) - if f ~= nil then - if (return_handle) then - return f - end - io.close(f) - return true - else - return false - end -end - --- Read the image size from a PNG file. --- Returns image_w, image_h. --- Only the LSB is read from each field! -local function read_image_size(filename) - local f = file_exists(filename, true, "rb") - -- file might not exist (don't crash the game) - if (not f) then - return 0, 0 - end - f:seek("set", 0x0) - local hdr = f:read(string.len(PNG_HDR)) - if hdr ~= PNG_HDR then - f:close() - return - end - f:seek("set", 0x13) - local ws = f:read(1) - f:seek("set", 0x17) - local hs = f:read(1) - f:close() - return ws:byte(), hs:byte() -end - --- Set by build_char_db() -local LINE_HEIGHT -local SIGN_WIDTH -local COLORBGW, COLORBGH - --- Size of the canvas, in characters. --- Please note that CHARS_PER_LINE is multiplied by the average character --- width to get the total width of the canvas, so for proportional fonts, --- either more or fewer characters may fit on a line. -local CHARS_PER_LINE = 30 -local NUMBER_OF_LINES = 6 - --- 6 rows, max 80 chars per, plus a bit of fudge to --- avoid excess trimming (e.g. due to color codes) - -local MAX_INPUT_CHARS = 600 - --- This holds the individual character widths. --- Indexed by the actual character (e.g. charwidth["A"]) -local charwidth - --- helper functions to trim sign text input/output - -local function trim_input(text) - return text:sub(1, math.min(MAX_INPUT_CHARS, text:len())) -end - -local function build_char_db() - - charwidth = { } - - -- To calculate average char width. - local total_width = 0 - local char_count = 0 - - for c = 32, 255 do - local w, h = read_image_size(CHAR_PATH:format(font_name, c)) - if w and h then - local ch = string.char(c) - charwidth[ch] = w - total_width = total_width + w - char_count = char_count + 1 - end - end - - COLORBGW, COLORBGH = read_image_size(TP.."/slc_n.png") - assert(COLORBGW and COLORBGH, "error reading bg dimensions") - LINE_HEIGHT = COLORBGH - - -- XXX: Is there a better way to calc this? - SIGN_WIDTH = math.floor((total_width / char_count) * CHARS_PER_LINE) - -end - -local sign_groups = {choppy=2, dig_immediate=2} - -local fences_with_sign = { } - --- some local helper functions - -local function split_lines_and_words_old(text) - local lines = { } - local line = { } - if not text then return end - for word in text:gmatch("%S+") do - if word == "|" then - table.insert(lines, line) - if #lines >= NUMBER_OF_LINES then break end - line = { } - elseif word == "\\|" then - table.insert(line, "|") - else - table.insert(line, word) - end - end - table.insert(lines, line) - return lines -end - -local function split_lines_and_words(text) - if not text then return end - text = string.gsub(text, "@KEYWORD", current_keyword) - local lines = { } - for _, line in ipairs(text:split("\n")) do - table.insert(lines, line:split(" ")) - end - return lines -end - -local math_max = math.max - -local function fill_line(x, y, w, c) - c = c or "0" - local tex = { } - for xx = 0, math.max(0, w), COLORBGW do - table.insert(tex, (":%d,%d=slc_%s.png"):format(x + xx, y, c)) - end - return table.concat(tex) -end - --- make char texture file name --- if texture file does not exist use fallback texture instead -local function char_tex(font_name, ch) - if ctexcache[font_name..ch] then - return ctexcache[font_name..ch], true - else - local c = ch:byte() - local exists, tex = file_exists(CHAR_PATH:format(font_name, c)) - if exists and c ~= 14 then - tex = CHAR_FILE:format(font_name, c) - else - tex = CHAR_FILE:format(font_name, 0x0) - end - ctexcache[font_name..ch] = tex - return tex, exists - end -end - -local function make_line_texture(line, lineno, pos) - - local width = 0 - local maxw = 0 - - local words = { } - local n = minetest.registered_nodes[minetest.get_node(pos).name] - local default_color = n.default_color or 0 - - local cur_color = tonumber(default_color, 16) - - -- We check which chars are available here. - for word_i, word in ipairs(line) do - local chars = { } - local ch_offs = 0 - word = string.gsub(word, "%^[12345678abcdefgh]", { - ["^1"] = string.char(0x81), - ["^2"] = string.char(0x82), - ["^3"] = string.char(0x83), - ["^4"] = string.char(0x84), - ["^5"] = string.char(0x85), - ["^6"] = string.char(0x86), - ["^7"] = string.char(0x87), - ["^8"] = string.char(0x88), - ["^a"] = string.char(0x8a), - ["^b"] = string.char(0x8b), - ["^c"] = string.char(0x8c), - ["^d"] = string.char(0x8d), - ["^e"] = string.char(0x8e), - ["^f"] = string.char(0x8f), - ["^g"] = string.char(0x90), - ["^h"] = string.char(0x91) - }) - local word_l = #word - local i = 1 - while i <= word_l do - local c = word:sub(i, i) - if c == "#" then - local cc = tonumber(word:sub(i+1, i+1), 16) - if cc then - i = i + 1 - cur_color = cc - end - else - local w = charwidth[c] - if w then - width = width + w + 1 - if width >= (SIGN_WIDTH - charwidth[" "]) then - width = 0 - else - maxw = math_max(width, maxw) - end - if #chars < MAX_INPUT_CHARS then - table.insert(chars, { - off = ch_offs, - tex = char_tex(font_name, c), - col = ("%X"):format(cur_color), - }) - end - ch_offs = ch_offs + w - end - end - i = i + 1 - end - width = width + charwidth[" "] + 1 - maxw = math_max(width, maxw) - table.insert(words, { chars=chars, w=ch_offs }) - end - - -- Okay, we actually build the "line texture" here. - - local texture = { } - - local start_xpos = math.floor((SIGN_WIDTH - maxw) / 2) - - local xpos = start_xpos - local ypos = (LINE_HEIGHT * lineno) - - cur_color = nil - - for word_i, word in ipairs(words) do - local xoffs = (xpos - start_xpos) - if (xoffs > 0) and ((xoffs + word.w) > maxw) then - table.insert(texture, fill_line(xpos, ypos, maxw, "n")) - xpos = start_xpos - ypos = ypos + LINE_HEIGHT - lineno = lineno + 1 - if lineno >= NUMBER_OF_LINES then break end - table.insert(texture, fill_line(xpos, ypos, maxw, cur_color)) - end - for ch_i, ch in ipairs(word.chars) do - if ch.col ~= cur_color then - cur_color = ch.col - table.insert(texture, fill_line(xpos + ch.off, ypos, maxw, cur_color)) - end - table.insert(texture, (":%d,%d=%s"):format(xpos + ch.off, ypos, ch.tex)) - end - table.insert( - texture, - (":%d,%d="):format(xpos + word.w, ypos) .. char_tex(font_name, " ") - ) - xpos = xpos + word.w + charwidth[" "] - if xpos >= (SIGN_WIDTH + charwidth[" "]) then break end - end - - table.insert(texture, fill_line(xpos, ypos, maxw, "n")) - table.insert(texture, fill_line(start_xpos, ypos + LINE_HEIGHT, maxw, "n")) - - return table.concat(texture), lineno -end - -local function make_sign_texture(lines, pos) - local texture = { ("[combine:%dx%d"):format(SIGN_WIDTH, LINE_HEIGHT * NUMBER_OF_LINES) } - local lineno = 0 - for i = 1, #lines do - if lineno >= NUMBER_OF_LINES then break end - local linetex, ln = make_line_texture(lines[i], lineno, pos) - table.insert(texture, linetex) - lineno = ln + 1 - end - table.insert(texture, "^[makealpha:0,0,0") - return table.concat(texture, "") -end - -local function set_obj_text(obj, text, new, pos) - local split = new and split_lines_and_words or split_lines_and_words_old - local text_ansi = Utf8ToAnsi(text) - local n = minetest.registered_nodes[minetest.get_node(pos).name] - local text_scale = (n and n.text_scale) or DEFAULT_TEXT_SCALE - obj:set_properties({ - textures={make_sign_texture(split(text_ansi), pos)}, - visual_size = text_scale, - }) -end - -signs_lib.construct_sign = function(pos, locked) - local meta = minetest.get_meta(pos) - meta:set_string( - "formspec", - "size[6,4]".. - "textarea[0,-0.3;6.5,3;text;;${text}]".. - "button_exit[2,3.4;2,1;ok;"..S("Write").."]".. - "background[-0.5,-0.5;7,5;bg_signs_lib.jpg]") - meta:set_string("infotext", "") -end - -signs_lib.destruct_sign = function(pos) - local objects = minetest.get_objects_inside_radius(pos, 0.5) - for _, v in ipairs(objects) do - local e = v:get_luaentity() - if e and e.name == "signs:text" then - v:remove() - end - end -end - -local function make_infotext(text) - text = trim_input(text) - local lines = split_lines_and_words(text) or {} - local lines2 = { } - for _, line in ipairs(lines) do - table.insert(lines2, (table.concat(line, " "):gsub("#[0-9a-fA-F]", ""):gsub("##", "#"))) - end - return table.concat(lines2, "\n") -end - -signs_lib.update_sign = function(pos, fields, owner, node) - - -- First, check if the interact keyword from CWz's mod is being set, - -- or has been changed since the last restart... - - local meta = minetest.get_meta(pos) - local stored_text = meta:get_string("text") or "" - current_keyword = rawget(_G, "mki_interact_keyword") or current_keyword - - if fields then -- ...we're editing the sign. - if fields.text and string.find(dump(fields.text), "@KEYWORD") then - meta:set_string("keyword", current_keyword) - else - meta:set_string("keyword", nil) - end - elseif string.find(dump(stored_text), "@KEYWORD") then -- we need to check if the password is being set/changed - - local stored_keyword = meta:get_string("keyword") - if stored_keyword and stored_keyword ~= "" and stored_keyword ~= current_keyword then - signs_lib.destruct_sign(pos) - meta:set_string("keyword", current_keyword) - local ownstr = "" - if owner then ownstr = S("Locked sign, owned by @1\n", owner) end - meta:set_string("infotext", ownstr..string.gsub(make_infotext(stored_text), "@KEYWORD", current_keyword).." ") - end - end - - local new - - if fields then - - fields.text = trim_input(fields.text) - - local ownstr = "" - if owner then ownstr = S("Locked sign, owned by @1\n", owner) end - - meta:set_string("infotext", ownstr..string.gsub(make_infotext(fields.text), "@KEYWORD", current_keyword).." ") - meta:set_string("text", fields.text) - - meta:set_int("__signslib_new_format", 1) - new = true - else - new = (meta:get_int("__signslib_new_format") ~= 0) - end - signs_lib.destruct_sign(pos) - local text = meta:get_string("text") - if text == nil or text == "" then return end - local sign_info - local signnode = node or minetest.get_node(pos) - local signname = signnode.name - local textpos = minetest.registered_nodes[signname].textpos - if textpos then - sign_info = textpos[minetest.get_node(pos).param2 + 1] - elseif signnode.name == "signs:sign_yard" then - sign_info = signs_lib.yard_sign_model.textpos[minetest.get_node(pos).param2 + 1] - elseif signnode.name == "signs:sign_hanging" then - sign_info = signs_lib.hanging_sign_model.textpos[minetest.get_node(pos).param2 + 1] - elseif string.find(signnode.name, "sign_wall") then - if signnode.name == default_sign - or signnode.name == default_sign_metal - or signnode.name == "locked_sign:sign_wall_locked" then - sign_info = signs_lib.regular_wall_sign_model.textpos[minetest.get_node(pos).param2 + 1] - else - sign_info = signs_lib.metal_wall_sign_model.textpos[minetest.get_node(pos).param2 + 1] - end - else -- ...it must be a sign on a fence post. - sign_info = signs_lib.sign_post_model.textpos[minetest.get_node(pos).param2 + 1] - end - if sign_info == nil then - return - end - local text = minetest.add_entity({x = pos.x + sign_info.delta.x, - y = pos.y + sign_info.delta.y, - z = pos.z + sign_info.delta.z}, "signs:text") - text:setyaw(sign_info.yaw) -end - --- What kind of sign do we need to place, anyway? - -function signs_lib.determine_sign_type(itemstack, placer, pointed_thing, locked) - local name - name = minetest.get_node(pointed_thing.under).name - if fences_with_sign[name] then - if minetest.is_protected(pointed_thing.under, placer:get_player_name()) then - minetest.record_protection_violation(pointed_thing.under, - placer:get_player_name()) - return itemstack - end - else - name = minetest.get_node(pointed_thing.above).name - local def = minetest.registered_nodes[name] - if not def.buildable_to then - return itemstack - end - if minetest.is_protected(pointed_thing.above, placer:get_player_name()) then - minetest.record_protection_violation(pointed_thing.above, - placer:get_player_name()) - return itemstack - end - end - - local node=minetest.get_node(pointed_thing.under) - - if minetest.registered_nodes[node.name] and - minetest.registered_nodes[node.name].on_rightclick and - not placer:get_player_control().sneak then - return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack, pointed_thing) - else - local above = pointed_thing.above - local under = pointed_thing.under - local dir = {x = under.x - above.x, - y = under.y - above.y, - z = under.z - above.z} - - local wdir = minetest.dir_to_wallmounted(dir) - - local placer_pos = placer:getpos() - if placer_pos then - dir = { - x = above.x - placer_pos.x, - y = above.y - placer_pos.y, - z = above.z - placer_pos.z - } - end - local finalpos = above - - local fdir = minetest.dir_to_facedir(dir) - local pt_name = minetest.get_node(under).name - local signname = itemstack:get_name() - - if fences_with_sign[pt_name] and signname == default_sign then - minetest.add_node(under, {name = fences_with_sign[pt_name], param2 = fdir}) - finalpos = under - elseif wdir == 0 and signname == default_sign then - minetest.add_node(above, {name = "signs:sign_hanging", param2 = fdir}) - elseif wdir == 1 and signname == default_sign then - minetest.add_node(above, {name = "signs:sign_yard", param2 = fdir}) - elseif signname == default_sign - or signname == default_sign_metal - or signname == "locked_sign:sign_wall_locked" then - minetest.add_node(above, {name = signname, param2 = wdir }) - else - minetest.add_node(above, {name = signname, param2 = fdir}) -- it must be a colored metal sign - end - - if locked then - local meta = minetest.get_meta(finalpos) - local owner = placer:get_player_name() - meta:set_string("owner", owner) - end - - if not signs_lib.expect_infinite_stacks then - itemstack:take_item() - end - return itemstack - end -end - -function signs_lib.receive_fields(pos, formname, fields, sender, lock) - if minetest.is_protected(pos, sender:get_player_name()) then - minetest.record_protection_violation(pos, - sender:get_player_name()) - return - end - local lockstr = lock and S("locked ") or "" - if fields and fields.text and fields.ok then - minetest.log("action", S("@1 wrote \"@2\" to @3sign at @4", - (sender:get_player_name() or ""), - fields.text:gsub('\\', '\\\\'):gsub("\n", "\\n"), - lockstr, - minetest.pos_to_string(pos) - )) - if lock then - signs_lib.update_sign(pos, fields, sender:get_player_name()) - else - signs_lib.update_sign(pos, fields) - end - end -end - -minetest.register_node(":"..default_sign, { - description = S("Sign"), - inventory_image = default_sign_image, - wield_image = default_sign_image, - node_placement_prediction = "", - sunlight_propagates = true, - paramtype = "light", - paramtype2 = "wallmounted", - drawtype = "nodebox", - node_box = signs_lib.regular_wall_sign_model.nodebox, - tiles = {"signs_wall_sign.png"}, - groups = sign_groups, - - on_place = function(itemstack, placer, pointed_thing) - return signs_lib.determine_sign_type(itemstack, placer, pointed_thing) - end, - on_construct = function(pos) - signs_lib.construct_sign(pos) - end, - on_destruct = function(pos) - signs_lib.destruct_sign(pos) - end, - on_receive_fields = function(pos, formname, fields, sender) - signs_lib.receive_fields(pos, formname, fields, sender) - end, - on_punch = function(pos, node, puncher) - signs_lib.update_sign(pos,nil,nil,node) - end, - on_rotate = signs_lib.wallmounted_rotate -}) - -minetest.register_node(":signs:sign_yard", { - paramtype = "light", - sunlight_propagates = true, - paramtype2 = "facedir", - drawtype = "nodebox", - node_box = signs_lib.yard_sign_model.nodebox, - selection_box = { - type = "fixed", - fixed = {-0.4375, -0.5, -0.0625, 0.4375, 0.375, 0} - }, - tiles = {"signs_top.png", "signs_bottom.png", "signs_side.png", "signs_side.png", "signs_back.png", "signs_front.png"}, - groups = {choppy=2, dig_immediate=2}, - drop = default_sign, - - on_construct = function(pos) - signs_lib.construct_sign(pos) - end, - on_destruct = function(pos) - signs_lib.destruct_sign(pos) - end, - on_receive_fields = function(pos, formname, fields, sender) - signs_lib.receive_fields(pos, formname, fields, sender) - end, - on_punch = function(pos, node, puncher) - signs_lib.update_sign(pos,nil,nil,node) - end, - on_rotate = signs_lib.facedir_rotate_simple - -}) - -minetest.register_node(":signs:sign_hanging", { - paramtype = "light", - sunlight_propagates = true, - paramtype2 = "facedir", - drawtype = "nodebox", - node_box = signs_lib.hanging_sign_model.nodebox, - selection_box = { - type = "fixed", - fixed = {-0.45, -0.275, -0.049, 0.45, 0.5, 0.049} - }, - tiles = { - "signs_hanging_top.png", - "signs_hanging_bottom.png", - "signs_hanging_side.png", - "signs_hanging_side.png", - "signs_hanging_back.png", - "signs_hanging_front.png" - }, - groups = {choppy=2, dig_immediate=2}, - drop = default_sign, - - on_construct = function(pos) - signs_lib.construct_sign(pos) - end, - on_destruct = function(pos) - signs_lib.destruct_sign(pos) - end, - on_receive_fields = function(pos, formname, fields, sender) - signs_lib.receive_fields(pos, formname, fields, sender) - end, - on_punch = function(pos, node, puncher) - signs_lib.update_sign(pos,nil,nil,node) - end, - on_rotate = signs_lib.facedir_rotate_simple -}) - -minetest.register_node(":signs:sign_post", { - paramtype = "light", - sunlight_propagates = true, - paramtype2 = "facedir", - drawtype = "nodebox", - node_box = signs_lib.sign_post_model.nodebox, - tiles = { - "signs_post_top.png", - "signs_post_bottom.png", - "signs_post_side.png", - "signs_post_side.png", - "signs_post_back.png", - "signs_post_front.png", - }, - groups = {choppy=2, dig_immediate=2}, - drop = { - max_items = 2, - items = { - { items = { default_sign }}, - { items = { "default:fence_wood" }}, - }, - }, - on_rotate = signs_lib.facedir_rotate_simple -}) - --- Locked wall sign - -minetest.register_privilege("sign_editor", S("Can edit all locked signs")) - -minetest.register_node(":locked_sign:sign_wall_locked", { - description = S("Locked Sign"), - inventory_image = "signs_locked_inv.png", - wield_image = "signs_locked_inv.png", - node_placement_prediction = "", - sunlight_propagates = true, - paramtype = "light", - paramtype2 = "wallmounted", - drawtype = "nodebox", - node_box = signs_lib.regular_wall_sign_model.nodebox, - tiles = { "signs_wall_sign_locked.png" }, - groups = sign_groups, - on_place = function(itemstack, placer, pointed_thing) - return signs_lib.determine_sign_type(itemstack, placer, pointed_thing, true) - end, - on_construct = function(pos) - signs_lib.construct_sign(pos, true) - end, - on_destruct = function(pos) - signs_lib.destruct_sign(pos) - end, - on_receive_fields = function(pos, formname, fields, sender) - local meta = minetest.get_meta(pos) - local owner = meta:get_string("owner") - local pname = sender:get_player_name() or "" - if pname ~= owner and pname ~= minetest.settings:get("name") - and not minetest.check_player_privs(pname, {sign_editor=true}) then - return - end - signs_lib.receive_fields(pos, formname, fields, sender, true) - end, - on_punch = function(pos, node, puncher) - signs_lib.update_sign(pos,nil,nil,node) - end, - can_dig = function(pos, player) - local meta = minetest.get_meta(pos) - local owner = meta:get_string("owner") - local pname = player:get_player_name() - return pname == owner or pname == minetest.settings:get("name") - or minetest.check_player_privs(pname, {sign_editor=true}) - end, - on_rotate = function(pos, node, user, mode) - local meta = minetest.get_meta(pos) - local owner = meta:get_string("owner") - if owner == user:get_player_name() then - signs_lib.wallmounted_rotate(pos, node, user, mode) - else - return false - end - end -}) - --- default metal sign - -minetest.register_node(":"..default_sign_metal, { - description = S("Sign"), - inventory_image = default_sign_metal_image, - wield_image = default_sign_metal_image, - node_placement_prediction = "", - sunlight_propagates = true, - paramtype = "light", - paramtype2 = "wallmounted", - drawtype = "nodebox", - node_box = signs_lib.regular_wall_sign_model.nodebox, - tiles = {"signs_wall_sign_metal.png"}, - groups = sign_groups, - on_place = function(itemstack, placer, pointed_thing) - return signs_lib.determine_sign_type(itemstack, placer, pointed_thing, true) - end, - on_construct = function(pos) - signs_lib.construct_sign(pos, true) - end, - on_destruct = function(pos) - signs_lib.destruct_sign(pos) - end, - on_receive_fields = function(pos, formname, fields, sender) - local meta = minetest.get_meta(pos) - local owner = meta:get_string("owner") - local pname = sender:get_player_name() or "" - if pname ~= owner and pname ~= minetest.settings:get("name") - and not minetest.check_player_privs(pname, {sign_editor=true}) then - return - end - signs_lib.receive_fields(pos, formname, fields, sender, true) - end, - on_punch = function(pos, node, puncher) - signs_lib.update_sign(pos,nil,nil,node) - end, - can_dig = function(pos, player) - local meta = minetest.get_meta(pos) - local owner = meta:get_string("owner") - local pname = player:get_player_name() - return pname == owner or pname == minetest.settings:get("name") - or minetest.check_player_privs(pname, {sign_editor=true}) - end, - on_rotate = function(pos, node, user, mode) - local meta = minetest.get_meta(pos) - local owner = meta:get_string("owner") - if owner == user:get_player_name() then - signs_lib.wallmounted_rotate(pos, node, user, mode) - else - return false - end - end -}) - --- metal, colored signs -if enable_colored_metal_signs then - -- array : color, translated color, default text color - local sign_colors = { - {"green", S("green"), "f"}, - {"yellow", S("yellow"), "0"}, - {"red", S("red"), "f"}, - {"white_red", S("white_red"), "4"}, - {"white_black", S("white_black"), "0"}, - {"orange", S("orange"), "0"}, - {"blue", S("blue"), "f"}, - {"brown", S("brown"), "f"}, - } - - for i, color in ipairs(sign_colors) do - minetest.register_node(":signs:sign_wall_"..color[1], { - description = S("Sign (@1, metal)", color[2]), - inventory_image = "signs_"..color[1].."_inv.png", - wield_image = "signs_"..color[1].."_inv.png", - node_placement_prediction = "", - paramtype = "light", - sunlight_propagates = true, - paramtype2 = "facedir", - drawtype = "nodebox", - node_box = signs_lib.metal_wall_sign_model.nodebox, - tiles = { - "signs_metal_tb.png", - "signs_metal_tb.png", - "signs_metal_sides.png", - "signs_metal_sides.png", - "signs_metal_back.png", - "signs_"..color[1].."_front.png" - }, - default_color = color[3], - groups = sign_groups, - on_place = function(itemstack, placer, pointed_thing) - return signs_lib.determine_sign_type(itemstack, placer, pointed_thing) - end, - on_construct = function(pos) - signs_lib.construct_sign(pos) - end, - on_destruct = function(pos) - signs_lib.destruct_sign(pos) - end, - on_receive_fields = function(pos, formname, fields, sender) - signs_lib.receive_fields(pos, formname, fields, sender) - end, - on_punch = function(pos, node, puncher) - signs_lib.update_sign(pos,nil,nil,node) - end, - on_rotate = signs_lib.facedir_rotate - }) - end -end - -local signs_text_on_activate - -signs_text_on_activate = function(self) - local pos = self.object:getpos() - local meta = minetest.get_meta(pos) - local text = meta:get_string("text") - local new = (meta:get_int("__signslib_new_format") ~= 0) - if text and minetest.registered_nodes[minetest.get_node(pos).name] then - text = trim_input(text) - set_obj_text(self.object, text, new, pos) - end -end - -minetest.register_entity(":signs:text", { - collisionbox = { 0, 0, 0, 0, 0, 0 }, - visual = "upright_sprite", - textures = {}, - - on_activate = signs_text_on_activate, -}) - --- And the good stuff here! :-) - -function signs_lib.register_fence_with_sign(fencename, fencewithsignname) - local def = minetest.registered_nodes[fencename] - local def_sign = minetest.registered_nodes[fencewithsignname] - if not (def and def_sign) then - minetest.log("warning", "[signs_lib] "..S("Attempt to register unknown node as fence")) - return - end - def = signs_lib.table_copy(def) - def_sign = signs_lib.table_copy(def_sign) - fences_with_sign[fencename] = fencewithsignname - - def_sign.on_place = function(itemstack, placer, pointed_thing, ...) - local node_above = minetest.get_node_or_nil(pointed_thing.above) - local node_under = minetest.get_node_or_nil(pointed_thing.under) - local def_above = node_above and minetest.registered_nodes[node_above.name] - local def_under = node_under and minetest.registered_nodes[node_under.name] - local fdir = minetest.dir_to_facedir(placer:get_look_dir()) - local playername = placer:get_player_name() - - if minetest.is_protected(pointed_thing.under, playername) then - minetest.record_protection_violation(pointed_thing.under, playername) - return itemstack - end - - if minetest.is_protected(pointed_thing.above, playername) then - minetest.record_protection_violation(pointed_thing.above, playername) - return itemstack - end - - if def_under and def_under.on_rightclick then - return def_under.on_rightclick(pointed_thing.under, node_under, placer, itemstack, pointed_thing) or itemstack - elseif def_under and def_under.buildable_to then - minetest.add_node(pointed_thing.under, {name = fencename, param2 = fdir}) - if not signs_lib.expect_infinite_stacks then - itemstack:take_item() - end - placer:set_wielded_item(itemstack) - elseif def_above and def_above.buildable_to then - minetest.add_node(pointed_thing.above, {name = fencename, param2 = fdir}) - if not signs_lib.expect_infinite_stacks then - itemstack:take_item() - end - placer:set_wielded_item(itemstack) - end - return itemstack - end - def_sign.on_construct = function(pos, ...) - signs_lib.construct_sign(pos) - end - def_sign.on_destruct = function(pos, ...) - signs_lib.destruct_sign(pos) - end - def_sign.on_receive_fields = function(pos, formname, fields, sender) - signs_lib.receive_fields(pos, formname, fields, sender) - end - def_sign.on_punch = function(pos, node, puncher, ...) - signs_lib.update_sign(pos,nil,nil,node) - end - local fencename = fencename - def_sign.after_dig_node = function(pos, node, ...) - node.name = fencename - minetest.add_node(pos, node) - end - def_sign.on_rotate = signs_lib.facedir_rotate_simple - - def_sign.drop = default_sign - minetest.register_node(":"..fencewithsignname, def_sign) - table.insert(signs_lib.sign_node_list, fencewithsignname) - minetest.log("verbose", S("Registered @1 and @2", fencename, fencewithsignname)) -end - -build_char_db() - -minetest.register_alias("homedecor:fence_wood_with_sign", "signs:sign_post") -minetest.register_alias("sign_wall_locked", "locked_sign:sign_wall_locked") - -signs_lib.register_fence_with_sign("default:fence_wood", "signs:sign_post") - --- restore signs' text after /clearobjects and the like, the next time --- a block is reloaded by the server. - -minetest.register_lbm({ - nodenames = signs_lib.sign_node_list, - name = "signs_lib:restore_sign_text", - label = "Restore sign text", - run_at_every_load = true, - action = function(pos, node) - signs_lib.update_sign(pos,nil,nil,node) - end -}) - --- locked sign - -minetest.register_craft({ - output = "locked_sign:sign_wall_locked", - recipe = { - {default_sign}, - {"basic_materials:padlock"}, - }, -}) - --- craft recipes for the metal signs -if enable_colored_metal_signs then - - minetest.register_craft( { - output = "signs:sign_wall_green", - recipe = { - { "dye:dark_green", "dye:white", "dye:dark_green" }, - { "", default_sign_metal, "" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_green 2", - recipe = { - { "dye:dark_green", "dye:white", "dye:dark_green" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_yellow", - recipe = { - { "dye:yellow", "dye:black", "dye:yellow" }, - { "", default_sign_metal, "" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_yellow 2", - recipe = { - { "dye:yellow", "dye:black", "dye:yellow" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_red", - recipe = { - { "dye:red", "dye:white", "dye:red" }, - { "", default_sign_metal, "" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_red 2", - recipe = { - { "dye:red", "dye:white", "dye:red" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_white_red", - recipe = { - { "dye:white", "dye:red", "dye:white" }, - { "", default_sign_metal, "" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_white_red 2", - recipe = { - { "dye:white", "dye:red", "dye:white" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_white_black", - recipe = { - { "dye:white", "dye:black", "dye:white" }, - { "", default_sign_metal, "" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_white_black 2", - recipe = { - { "dye:white", "dye:black", "dye:white" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_orange", - recipe = { - { "dye:orange", "dye:black", "dye:orange" }, - { "", default_sign_metal, "" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_orange 2", - recipe = { - { "dye:orange", "dye:black", "dye:orange" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_blue", - recipe = { - { "dye:blue", "dye:white", "dye:blue" }, - { "", default_sign_metal, "" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_blue 2", - recipe = { - { "dye:blue", "dye:white", "dye:blue" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_brown", - recipe = { - { "dye:brown", "dye:white", "dye:brown" }, - { "", default_sign_metal, "" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_brown 2", - recipe = { - { "dye:brown", "dye:white", "dye:brown" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, - }) -end - -if minetest.settings:get("log_mods") then - minetest.log("action", S("[MOD] signs loaded")) -end +dofile(signs_lib.path.."/api.lua") +dofile(signs_lib.path.."/encoding.lua") +dofile(signs_lib.path.."/standard_signs.lua") diff --git a/models/signs_lib_standard_wall_sign.obj b/models/signs_lib_standard_wall_sign.obj new file mode 100644 index 0000000..639444f --- /dev/null +++ b/models/signs_lib_standard_wall_sign.obj @@ -0,0 +1,52 @@ +# Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden wall sign.blend' +# www.blender.org +o Cube +v 0.437500 -0.500000 -0.312500 +v 0.437500 -0.437500 -0.312500 +v 0.437500 -0.500000 0.312500 +v 0.437500 -0.437500 0.312500 +v -0.437500 -0.500000 -0.312500 +v -0.437500 -0.437500 -0.312500 +v -0.437500 -0.500000 0.312500 +v -0.437500 -0.437500 0.312500 +v 0.437500 -0.500000 -0.312500 +v 0.437500 -0.437500 -0.312500 +v 0.437500 -0.500000 0.312500 +v 0.437500 -0.437500 0.312500 +v -0.437500 -0.500000 -0.312500 +v -0.437500 -0.437500 -0.312500 +v -0.437500 -0.500000 0.312500 +v -0.437500 -0.437500 0.312500 +vt 0.468750 0.812500 +vt 0.031250 0.812500 +vt 0.031250 0.187500 +vt 0.468750 0.187500 +vt 0.531250 0.812500 +vt 0.968750 0.812500 +vt 0.968750 0.187500 +vt 0.531250 0.187500 +vt 0.234375 0.000000 +vt 0.234375 1.000000 +vt 0.015625 1.000000 +vt 0.015625 -0.000000 +vt 0.609375 -0.000000 +vt 0.609375 1.000000 +vt 0.390625 1.000000 +vt 0.390625 -0.000000 +vt 0.765625 0.000000 +vt 0.765625 1.000000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +g Cube_Cube_front-back +s off +f 8/1/1 4/2/1 2/3/1 6/4/1 +f 3/5/2 7/6/2 5/7/2 1/8/2 +g Cube_Cube_edges +f 13/9/3 14/10/3 10/11/3 9/12/3 +f 11/13/4 12/14/4 16/15/4 15/16/4 +f 11/13/5 9/17/5 10/18/5 12/14/5 +f 13/9/6 15/16/6 16/15/6 14/10/6 diff --git a/models/signs_lib_standard_wall_sign_entity.obj b/models/signs_lib_standard_wall_sign_entity.obj new file mode 100644 index 0000000..ca7eddb --- /dev/null +++ b/models/signs_lib_standard_wall_sign_entity.obj @@ -0,0 +1,15 @@ +# Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden wall sign--entity.blend' +# www.blender.org +o Cube +v 0.406250 -0.281250 0.429687 +v 0.406250 0.281250 0.429688 +v -0.406250 -0.281250 0.429687 +v -0.406250 0.281250 0.429688 +vt 0.906250 0.781250 +vt 0.093750 0.781250 +vt 0.093750 0.218750 +vt 0.906250 0.218750 +vn 0.0000 0.0000 -1.0000 +g Cube_Cube_None +s off +f 4/1/1 2/2/1 1/3/1 3/4/1 diff --git a/models/signs_lib_standard_wall_sign_entity_onpole.obj b/models/signs_lib_standard_wall_sign_entity_onpole.obj new file mode 100644 index 0000000..2be0885 --- /dev/null +++ b/models/signs_lib_standard_wall_sign_entity_onpole.obj @@ -0,0 +1,15 @@ +# Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden wall sign.blend' +# www.blender.org +o Cube +v 0.406250 -0.281250 0.742188 +v 0.406250 0.281250 0.742188 +v -0.406250 -0.281250 0.742188 +v -0.406250 0.281250 0.742188 +vt 0.906250 0.781250 +vt 0.093750 0.781250 +vt 0.093750 0.218750 +vt 0.906250 0.218750 +vn 0.0000 0.0000 -1.0000 +g Cube_Cube_None +s off +f 4/1/1 2/2/1 1/3/1 3/4/1 diff --git a/models/signs_lib_standard_wall_sign_facedir.obj b/models/signs_lib_standard_wall_sign_facedir.obj new file mode 100644 index 0000000..90dbeee --- /dev/null +++ b/models/signs_lib_standard_wall_sign_facedir.obj @@ -0,0 +1,52 @@ +# Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden wall sign--facedir.blend' +# www.blender.org +o Cube +v 0.437500 -0.312500 0.500000 +v 0.437500 -0.312500 0.437500 +v 0.437500 0.312500 0.500000 +v 0.437500 0.312500 0.437500 +v -0.437500 -0.312500 0.500000 +v -0.437500 -0.312500 0.437500 +v -0.437500 0.312500 0.500000 +v -0.437500 0.312500 0.437500 +v 0.437500 -0.312500 0.500000 +v 0.437500 -0.312500 0.437500 +v 0.437500 0.312500 0.500000 +v 0.437500 0.312500 0.437500 +v -0.437500 -0.312500 0.500000 +v -0.437500 -0.312500 0.437500 +v -0.437500 0.312500 0.500000 +v -0.437500 0.312500 0.437500 +vt 0.468750 0.812500 +vt 0.031250 0.812500 +vt 0.031250 0.187500 +vt 0.468750 0.187500 +vt 0.531250 0.812500 +vt 0.968750 0.812500 +vt 0.968750 0.187500 +vt 0.531250 0.187500 +vt 0.234375 0.000000 +vt 0.234375 1.000000 +vt 0.015625 1.000000 +vt 0.015625 -0.000000 +vt 0.609375 -0.000000 +vt 0.609375 1.000000 +vt 0.390625 1.000000 +vt 0.390625 -0.000000 +vt 0.765625 0.000000 +vt 0.765625 1.000000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +g Cube_Cube_front-back +s off +f 8/1/1 4/2/1 2/3/1 6/4/1 +f 3/5/2 7/6/2 5/7/2 1/8/2 +g Cube_Cube_edges +f 13/9/3 14/10/3 10/11/3 9/12/3 +f 11/13/4 12/14/4 16/15/4 15/16/4 +f 11/13/5 9/17/5 10/18/5 12/14/5 +f 13/9/6 15/16/6 16/15/6 14/10/6 diff --git a/models/signs_lib_standard_wall_sign_facedir_onpole.obj b/models/signs_lib_standard_wall_sign_facedir_onpole.obj new file mode 100644 index 0000000..264ceb7 --- /dev/null +++ b/models/signs_lib_standard_wall_sign_facedir_onpole.obj @@ -0,0 +1,254 @@ +# Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden wall sign--facedir.blend' +# www.blender.org +o Cube +v 0.437500 -0.312500 0.812500 +v 0.437500 -0.312500 0.750000 +v 0.437500 0.312500 0.812500 +v 0.437500 0.312500 0.750000 +v -0.437500 -0.312500 0.812500 +v -0.437500 -0.312500 0.750000 +v -0.437500 0.312500 0.812500 +v -0.437500 0.312500 0.750000 +v 0.437500 -0.312500 0.812500 +v 0.437500 -0.312500 0.750000 +v 0.437500 0.312500 0.812500 +v 0.437500 0.312500 0.750000 +v -0.437500 -0.312500 0.812500 +v -0.437500 -0.312500 0.750000 +v -0.437500 0.312500 0.812500 +v -0.437500 0.312500 0.750000 +vt 0.468750 0.812500 +vt 0.031250 0.812500 +vt 0.031250 0.187500 +vt 0.468750 0.187500 +vt 0.531250 0.812500 +vt 0.968750 0.812500 +vt 0.968750 0.187500 +vt 0.531250 0.187500 +vt 0.234375 0.000000 +vt 0.234375 1.000000 +vt 0.015625 1.000000 +vt 0.015625 -0.000000 +vt 0.609375 -0.000000 +vt 0.609375 1.000000 +vt 0.390625 1.000000 +vt 0.390625 -0.000000 +vt 0.765625 0.000000 +vt 0.765625 1.000000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +g Cube_Cube_front-back +s off +f 8/1/1 4/2/1 2/3/1 6/4/1 +f 3/5/2 7/6/2 5/7/2 1/8/2 +g Cube_Cube_edges +f 13/9/3 14/10/3 10/11/3 9/12/3 +f 11/13/4 12/14/4 16/15/4 15/16/4 +f 11/13/5 9/17/5 10/18/5 12/14/5 +f 13/9/6 15/16/6 16/15/6 14/10/6 +o Cube.001 +v -0.125000 -0.187500 0.812500 +v -0.125000 -0.187500 0.875000 +v -0.125000 0.187500 0.812500 +v -0.125000 0.187500 0.875000 +v 0.125000 0.187500 0.812500 +v 0.125000 -0.187500 0.812500 +v 0.125000 -0.187500 0.875000 +v 0.125000 0.187500 0.875000 +v -0.125000 -0.187500 1.125000 +v -0.125000 -0.187500 0.812500 +v -0.125000 -0.125000 1.125000 +v -0.125000 -0.125000 0.812500 +v -0.164063 -0.187500 1.125000 +v -0.164063 -0.187500 0.812500 +v -0.164063 -0.125000 1.125000 +v -0.164063 -0.125000 0.812500 +v -0.125000 0.125000 1.125000 +v -0.125000 0.125000 0.812500 +v -0.125000 0.187500 1.125000 +v -0.125000 0.187500 0.812500 +v -0.164063 0.125000 1.125000 +v -0.164063 0.125000 0.812500 +v -0.164063 0.187500 1.125000 +v -0.164063 0.187500 0.812500 +v 0.164062 -0.187500 1.125000 +v 0.164062 -0.187500 0.812500 +v 0.164062 -0.125000 1.125000 +v 0.164062 -0.125000 0.812500 +v 0.125000 -0.187500 1.125000 +v 0.125000 -0.187500 0.812500 +v 0.125000 -0.125000 1.125000 +v 0.125000 -0.125000 0.812500 +v 0.164062 0.125000 1.125000 +v 0.164062 0.125000 0.812500 +v 0.164062 0.187500 1.125000 +v 0.164062 0.187500 0.812500 +v 0.125000 0.125000 1.125000 +v 0.125000 0.125000 0.812500 +v 0.125000 0.187500 1.125000 +v 0.125000 0.187500 0.812500 +v -0.164063 -0.187500 1.164063 +v 0.164062 -0.187500 1.164063 +v -0.164063 -0.125000 1.164063 +v 0.164062 -0.125000 1.164063 +v -0.164063 -0.187500 1.125000 +v 0.164062 -0.187500 1.125000 +v -0.164063 -0.125000 1.125000 +v 0.164062 -0.125000 1.125000 +v -0.164063 0.125000 1.164063 +v 0.164062 0.125000 1.164063 +v -0.164063 0.187500 1.164063 +v 0.164062 0.187500 1.164063 +v -0.164063 0.125000 1.125000 +v 0.164062 0.125000 1.125000 +v -0.164063 0.187500 1.125000 +v 0.164062 0.187500 1.125000 +vt 0.843750 0.507812 +vt 0.703125 0.507812 +vt 0.703125 0.093750 +vt 0.843750 0.093750 +vt 0.015625 0.507812 +vt 0.015625 0.093750 +vt 0.156250 0.093750 +vt 0.156250 0.507812 +vt 0.156250 0.031250 +vt 0.703125 0.031250 +vt 0.703125 0.578125 +vt 0.156250 0.578125 +vt 0.312500 0.640625 +vt 0.312500 0.992188 +vt 0.453125 0.992188 +vt 0.453125 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.312500 0.992188 +vt 0.312500 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.093750 0.992188 +vt 0.093750 0.640625 +vt 0.015625 0.992188 +vt 0.015625 0.640625 +vt 0.312500 0.640625 +vt 0.312500 0.992188 +vt 0.453125 0.992188 +vt 0.453125 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.312500 0.992188 +vt 0.312500 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.093750 0.992188 +vt 0.093750 0.640625 +vt 0.015625 0.992188 +vt 0.015625 0.640625 +vt 0.312500 0.640625 +vt 0.312500 0.992188 +vt 0.453125 0.992188 +vt 0.453125 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.312500 0.992188 +vt 0.312500 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.093750 0.992188 +vt 0.093750 0.640625 +vt 0.015625 0.992188 +vt 0.015625 0.640625 +vt 0.312500 0.640625 +vt 0.312500 0.992188 +vt 0.453125 0.992188 +vt 0.453125 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.312500 0.992188 +vt 0.312500 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.093750 0.992188 +vt 0.093750 0.640625 +vt 0.015625 0.992188 +vt 0.015625 0.640625 +vt 0.781250 0.664062 +vt 0.781250 0.992188 +vt 0.921875 0.992188 +vt 0.921875 0.664062 +vt 0.484375 0.664062 +vt 0.484375 0.992188 +vt 0.562500 0.992188 +vt 0.562500 0.664062 +vt 0.703125 0.992188 +vt 0.703125 0.664062 +vt 0.234375 0.593750 +vt 0.234375 0.640625 +vt 0.093750 0.640625 +vt 0.093750 0.593750 +vt 0.453125 0.640625 +vt 0.453125 0.593750 +vt 0.312500 0.593750 +vt 0.312500 0.640625 +vt 0.781250 0.664062 +vt 0.781250 0.992188 +vt 0.921875 0.992188 +vt 0.921875 0.664062 +vt 0.484375 0.664062 +vt 0.484375 0.992188 +vt 0.562500 0.992188 +vt 0.562500 0.664062 +vt 0.703125 0.992188 +vt 0.703125 0.664062 +vt 0.234375 0.593750 +vt 0.234375 0.640625 +vt 0.093750 0.640625 +vt 0.093750 0.593750 +vt 0.453125 0.640625 +vt 0.453125 0.593750 +vt 0.312500 0.593750 +vt 0.312500 0.640625 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 -0.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +g Cube.001_Cube.001_pole_mount +s off +f 17/19/7 18/20/7 20/21/7 19/22/7 +f 22/23/8 21/24/8 24/25/8 23/26/8 +f 20/21/9 24/25/9 21/27/9 19/28/9 +f 17/29/10 22/30/10 23/26/10 18/20/10 +f 18/20/11 23/26/11 24/25/11 20/21/11 +f 25/31/8 26/32/8 28/33/8 27/34/8 +f 27/35/9 28/36/9 32/37/9 31/38/9 +f 31/39/7 32/40/7 30/41/7 29/42/7 +f 29/42/10 30/41/10 26/43/10 25/44/10 +f 33/45/8 34/46/8 36/47/8 35/48/8 +f 35/49/9 36/50/9 40/51/9 39/52/9 +f 39/53/7 40/54/7 38/55/7 37/56/7 +f 37/56/10 38/55/10 34/57/10 33/58/10 +f 41/59/8 42/60/8 44/61/8 43/62/8 +f 43/63/9 44/64/9 48/65/9 47/66/9 +f 47/67/7 48/68/7 46/69/7 45/70/7 +f 45/70/10 46/69/10 42/71/10 41/72/10 +f 49/73/8 50/74/8 52/75/8 51/76/8 +f 51/77/9 52/78/9 56/79/9 55/80/9 +f 55/81/7 56/82/7 54/83/7 53/84/7 +f 53/84/10 54/83/10 50/85/10 49/86/10 +f 57/87/11 58/88/11 60/89/11 59/90/11 +f 59/91/9 60/92/9 64/93/9 63/94/9 +f 63/94/12 64/93/12 62/95/12 61/96/12 +f 61/96/10 62/95/10 58/88/10 57/87/10 +f 59/97/7 63/98/7 61/99/7 57/100/7 +f 64/101/8 60/102/8 58/103/8 62/104/8 +f 65/105/11 66/106/11 68/107/11 67/108/11 +f 67/109/9 68/110/9 72/111/9 71/112/9 +f 71/112/12 72/111/12 70/113/12 69/114/12 +f 69/114/10 70/113/10 66/106/10 65/105/10 +f 67/115/7 71/116/7 69/117/7 65/118/7 +f 72/119/8 68/120/8 66/121/8 70/122/8 diff --git a/models/signs_lib_standard_wall_sign_onpole.obj b/models/signs_lib_standard_wall_sign_onpole.obj new file mode 100644 index 0000000..31b73ef --- /dev/null +++ b/models/signs_lib_standard_wall_sign_onpole.obj @@ -0,0 +1,254 @@ +# Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden wall sign.blend' +# www.blender.org +o Cube +v 0.437500 -0.812500 -0.312500 +v 0.437500 -0.750000 -0.312500 +v 0.437500 -0.812500 0.312500 +v 0.437500 -0.750000 0.312500 +v -0.437500 -0.812500 -0.312500 +v -0.437500 -0.750000 -0.312500 +v -0.437500 -0.812500 0.312500 +v -0.437500 -0.750000 0.312500 +v 0.437500 -0.812500 -0.312500 +v 0.437500 -0.750000 -0.312500 +v 0.437500 -0.812500 0.312500 +v 0.437500 -0.750000 0.312500 +v -0.437500 -0.812500 -0.312500 +v -0.437500 -0.750000 -0.312500 +v -0.437500 -0.812500 0.312500 +v -0.437500 -0.750000 0.312500 +vt 0.468750 0.812500 +vt 0.031250 0.812500 +vt 0.031250 0.187500 +vt 0.468750 0.187500 +vt 0.531250 0.812500 +vt 0.968750 0.812500 +vt 0.968750 0.187500 +vt 0.531250 0.187500 +vt 0.234375 0.000000 +vt 0.234375 1.000000 +vt 0.015625 1.000000 +vt 0.015625 -0.000000 +vt 0.609375 -0.000000 +vt 0.609375 1.000000 +vt 0.390625 1.000000 +vt 0.390625 -0.000000 +vt 0.765625 0.000000 +vt 0.765625 1.000000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +g Cube_Cube_front-back +s off +f 8/1/1 4/2/1 2/3/1 6/4/1 +f 3/5/2 7/6/2 5/7/2 1/8/2 +g Cube_Cube_edges +f 13/9/3 14/10/3 10/11/3 9/12/3 +f 11/13/4 12/14/4 16/15/4 15/16/4 +f 11/13/5 9/17/5 10/18/5 12/14/5 +f 13/9/6 15/16/6 16/15/6 14/10/6 +o Cube.001 +v -0.125000 -0.812500 -0.187500 +v -0.125000 -0.875000 -0.187500 +v -0.125000 -0.812500 0.187500 +v -0.125000 -0.875000 0.187500 +v 0.125000 -0.812500 0.187500 +v 0.125000 -0.812500 -0.187500 +v 0.125000 -0.875000 -0.187500 +v 0.125000 -0.875000 0.187500 +v -0.125000 -1.125000 -0.187500 +v -0.125000 -0.812500 -0.187500 +v -0.125000 -1.125000 -0.125000 +v -0.125000 -0.812500 -0.125000 +v -0.164063 -1.125000 -0.187500 +v -0.164063 -0.812500 -0.187500 +v -0.164063 -1.125000 -0.125000 +v -0.164063 -0.812500 -0.125000 +v -0.125000 -1.125000 0.125000 +v -0.125000 -0.812500 0.125000 +v -0.125000 -1.125000 0.187500 +v -0.125000 -0.812500 0.187500 +v -0.164063 -1.125000 0.125000 +v -0.164063 -0.812500 0.125000 +v -0.164063 -1.125000 0.187500 +v -0.164063 -0.812500 0.187500 +v 0.164062 -1.125000 -0.187500 +v 0.164062 -0.812500 -0.187500 +v 0.164062 -1.125000 -0.125000 +v 0.164062 -0.812500 -0.125000 +v 0.125000 -1.125000 -0.187500 +v 0.125000 -0.812500 -0.187500 +v 0.125000 -1.125000 -0.125000 +v 0.125000 -0.812500 -0.125000 +v 0.164062 -1.125000 0.125000 +v 0.164062 -0.812500 0.125000 +v 0.164062 -1.125000 0.187500 +v 0.164062 -0.812500 0.187500 +v 0.125000 -1.125000 0.125000 +v 0.125000 -0.812500 0.125000 +v 0.125000 -1.125000 0.187500 +v 0.125000 -0.812500 0.187500 +v -0.164063 -1.164063 -0.187500 +v 0.164062 -1.164063 -0.187500 +v -0.164063 -1.164063 -0.125000 +v 0.164062 -1.164063 -0.125000 +v -0.164063 -1.125000 -0.187500 +v 0.164062 -1.125000 -0.187500 +v -0.164063 -1.125000 -0.125000 +v 0.164062 -1.125000 -0.125000 +v -0.164063 -1.164063 0.125000 +v 0.164062 -1.164063 0.125000 +v -0.164063 -1.164063 0.187500 +v 0.164062 -1.164063 0.187500 +v -0.164063 -1.125000 0.125000 +v 0.164062 -1.125000 0.125000 +v -0.164063 -1.125000 0.187500 +v 0.164062 -1.125000 0.187500 +vt 0.843750 0.507812 +vt 0.703125 0.507812 +vt 0.703125 0.093750 +vt 0.843750 0.093750 +vt 0.015625 0.507812 +vt 0.015625 0.093750 +vt 0.156250 0.093750 +vt 0.156250 0.507812 +vt 0.156250 0.031250 +vt 0.703125 0.031250 +vt 0.703125 0.578125 +vt 0.156250 0.578125 +vt 0.312500 0.640625 +vt 0.312500 0.992188 +vt 0.453125 0.992188 +vt 0.453125 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.312500 0.992188 +vt 0.312500 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.093750 0.992188 +vt 0.093750 0.640625 +vt 0.015625 0.992188 +vt 0.015625 0.640625 +vt 0.312500 0.640625 +vt 0.312500 0.992188 +vt 0.453125 0.992188 +vt 0.453125 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.312500 0.992188 +vt 0.312500 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.093750 0.992188 +vt 0.093750 0.640625 +vt 0.015625 0.992188 +vt 0.015625 0.640625 +vt 0.312500 0.640625 +vt 0.312500 0.992188 +vt 0.453125 0.992188 +vt 0.453125 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.312500 0.992188 +vt 0.312500 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.093750 0.992188 +vt 0.093750 0.640625 +vt 0.015625 0.992188 +vt 0.015625 0.640625 +vt 0.312500 0.640625 +vt 0.312500 0.992188 +vt 0.453125 0.992188 +vt 0.453125 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.312500 0.992188 +vt 0.312500 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.093750 0.992188 +vt 0.093750 0.640625 +vt 0.015625 0.992188 +vt 0.015625 0.640625 +vt 0.781250 0.664062 +vt 0.781250 0.992188 +vt 0.921875 0.992188 +vt 0.921875 0.664062 +vt 0.484375 0.664062 +vt 0.484375 0.992188 +vt 0.562500 0.992188 +vt 0.562500 0.664062 +vt 0.703125 0.992188 +vt 0.703125 0.664062 +vt 0.234375 0.593750 +vt 0.234375 0.640625 +vt 0.093750 0.640625 +vt 0.093750 0.593750 +vt 0.453125 0.640625 +vt 0.453125 0.593750 +vt 0.312500 0.593750 +vt 0.312500 0.640625 +vt 0.781250 0.664062 +vt 0.781250 0.992188 +vt 0.921875 0.992188 +vt 0.921875 0.664062 +vt 0.484375 0.664062 +vt 0.484375 0.992188 +vt 0.562500 0.992188 +vt 0.562500 0.664062 +vt 0.703125 0.992188 +vt 0.703125 0.664062 +vt 0.234375 0.593750 +vt 0.234375 0.640625 +vt 0.093750 0.640625 +vt 0.093750 0.593750 +vt 0.453125 0.640625 +vt 0.453125 0.593750 +vt 0.312500 0.593750 +vt 0.312500 0.640625 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -1.0000 -0.0000 +vn 0.0000 1.0000 0.0000 +g Cube.001_Cube.001_pole_mount +s off +f 17/19/7 18/20/7 20/21/7 19/22/7 +f 22/23/8 21/24/8 24/25/8 23/26/8 +f 20/21/9 24/25/9 21/27/9 19/28/9 +f 17/29/10 22/30/10 23/26/10 18/20/10 +f 18/20/11 23/26/11 24/25/11 20/21/11 +f 25/31/8 26/32/8 28/33/8 27/34/8 +f 27/35/9 28/36/9 32/37/9 31/38/9 +f 31/39/7 32/40/7 30/41/7 29/42/7 +f 29/42/10 30/41/10 26/43/10 25/44/10 +f 33/45/8 34/46/8 36/47/8 35/48/8 +f 35/49/9 36/50/9 40/51/9 39/52/9 +f 39/53/7 40/54/7 38/55/7 37/56/7 +f 37/56/10 38/55/10 34/57/10 33/58/10 +f 41/59/8 42/60/8 44/61/8 43/62/8 +f 43/63/9 44/64/9 48/65/9 47/66/9 +f 47/67/7 48/68/7 46/69/7 45/70/7 +f 45/70/10 46/69/10 42/71/10 41/72/10 +f 49/73/8 50/74/8 52/75/8 51/76/8 +f 51/77/9 52/78/9 56/79/9 55/80/9 +f 55/81/7 56/82/7 54/83/7 53/84/7 +f 53/84/10 54/83/10 50/85/10 49/86/10 +f 57/87/11 58/88/11 60/89/11 59/90/11 +f 59/91/9 60/92/9 64/93/9 63/94/9 +f 63/94/12 64/93/12 62/95/12 61/96/12 +f 61/96/10 62/95/10 58/88/10 57/87/10 +f 59/97/7 63/98/7 61/99/7 57/100/7 +f 64/101/8 60/102/8 58/103/8 62/104/8 +f 65/105/11 66/106/11 68/107/11 67/108/11 +f 67/109/9 68/110/9 72/111/9 71/112/9 +f 71/112/12 72/111/12 70/113/12 69/114/12 +f 69/114/10 70/113/10 66/106/10 65/105/10 +f 67/115/7 71/116/7 69/117/7 65/118/7 +f 72/119/8 68/120/8 66/121/8 70/122/8 diff --git a/screenshot.png b/screenshot.png deleted file mode 100644 index 17229a3..0000000 Binary files a/screenshot.png and /dev/null differ diff --git a/standard_signs.lua b/standard_signs.lua new file mode 100644 index 0000000..2cbe18d --- /dev/null +++ b/standard_signs.lua @@ -0,0 +1,103 @@ +-- Definitions for standard minetest_game wooden and steel wall signs + +for _, onpole in ipairs({"", "_onpole"}) do + + local nci = nil + local on_rotate = signs_lib.wallmounted_rotate + local pole_mount_tex = nil + + if onpole == "_onpole" then + nci = 1 + on_rotate = nil + pole_mount_tex = "signs_lib_pole_mount.png" -- the metal straps on back, if needed + end + + local wood_groups = table.copy(signs_lib.standard_wood_groups) + wood_groups.not_in_creative_inventory = nci + local steel_groups = table.copy(signs_lib.standard_steel_groups) + steel_groups.not_in_creative_inventory = nci + + cbox = signs_lib.make_selection_boxes(35, 25, onpole) + + minetest.register_node(":default:sign_wall_wood"..onpole, { + description = "Wooden wall sign", + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "wallmounted", + drawtype = "mesh", + node_box = cbox, + selection_box = cbox, + mesh = "signs_lib_standard_wall_sign"..onpole..".obj", + tiles = { + "signs_lib_sign_wall_wooden.png", + "signs_lib_sign_wall_wooden_edges.png", + pole_mount_tex + }, + inventory_image = "signs_lib_sign_wall_wooden_inv.png", + wield_image = "signs_lib_sign_wall_wooden_inv.png", + groups = wood_groups, + default_color = "0", + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, + on_rotate = on_rotate, + number_of_lines = signs_lib.standard_lines, + horiz_scaling = signs_lib.standard_hscale, + vert_scaling = signs_lib.standard_vscale, + line_spacing = signs_lib.standard_lspace, + font_size = signs_lib.standard_fsize, + x_offset = signs_lib.standard_xoffs, + y_offset = signs_lib.standard_yoffs, + chars_per_line = signs_lib.standard_cpl, + entity_info = { + mesh = "signs_lib_standard_wall_sign_entity"..onpole..".obj", + yaw = signs_lib.wallmounted_yaw + }, + drop = "default:sign_wall_wood" + }) + table.insert(signs_lib.lbm_restore_nodes, "default:sign_wall_wood"..onpole) + + minetest.register_node(":default:sign_wall_steel"..onpole, { + description = "Steel wall sign", + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "wallmounted", + drawtype = "mesh", + node_box = cbox, + selection_box = cbox, + mesh = "signs_lib_standard_wall_sign"..onpole..".obj", + tiles = { + "signs_lib_sign_wall_steel.png", + "signs_lib_sign_wall_steel_edges.png", + pole_mount_tex + }, + inventory_image = "signs_lib_sign_wall_steel_inv.png", + wield_image = "signs_lib_sign_wall_steel_inv.png", + groups = wood_groups, + default_color = "0", + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + after_place_node = function(pos, placer, itemstack, pointed_thing) + signs_lib.after_place_node(pos, placer, itemstack, pointed_thing, true) + end, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, + can_dig = signs_lib.can_modify, + on_rotate = on_rotate, + number_of_lines = signs_lib.standard_lines, + horiz_scaling = signs_lib.standard_hscale, + vert_scaling = signs_lib.standard_vscale, + line_spacing = signs_lib.standard_lspace, + font_size = signs_lib.standard_fsize, + x_offset = signs_lib.standard_xoffs, + y_offset = signs_lib.standard_yoffs, + chars_per_line = signs_lib.standard_cpl, + entity_info = { + mesh = "signs_lib_standard_wall_sign_entity"..onpole..".obj", + yaw = signs_lib.wallmounted_yaw + }, + drop = "default:sign_wall_steel" + }) + table.insert(signs_lib.lbm_restore_nodes, "default:sign_wall_steel"..onpole) +end diff --git a/textures/signs_back.png b/textures/signs_back.png deleted file mode 100644 index db33dee..0000000 Binary files a/textures/signs_back.png and /dev/null differ diff --git a/textures/signs_blue_front.png b/textures/signs_blue_front.png deleted file mode 100644 index 65ed6ea..0000000 Binary files a/textures/signs_blue_front.png and /dev/null differ diff --git a/textures/signs_blue_inv.png b/textures/signs_blue_inv.png deleted file mode 100644 index 3f5a0ce..0000000 Binary files a/textures/signs_blue_inv.png and /dev/null differ diff --git a/textures/signs_bottom.png b/textures/signs_bottom.png deleted file mode 100644 index 38961f0..0000000 Binary files a/textures/signs_bottom.png and /dev/null differ diff --git a/textures/signs_brown_front.png b/textures/signs_brown_front.png deleted file mode 100644 index 2ed2640..0000000 Binary files a/textures/signs_brown_front.png and /dev/null differ diff --git a/textures/signs_brown_inv.png b/textures/signs_brown_inv.png deleted file mode 100644 index 5ba9283..0000000 Binary files a/textures/signs_brown_inv.png and /dev/null differ diff --git a/textures/signs_front.png b/textures/signs_front.png deleted file mode 100644 index 2e61435..0000000 Binary files a/textures/signs_front.png and /dev/null differ diff --git a/textures/signs_green_front.png b/textures/signs_green_front.png deleted file mode 100644 index 45c6e0f..0000000 Binary files a/textures/signs_green_front.png and /dev/null differ diff --git a/textures/signs_green_inv.png b/textures/signs_green_inv.png deleted file mode 100644 index 24ca5a8..0000000 Binary files a/textures/signs_green_inv.png and /dev/null differ diff --git a/textures/signs_hanging_back.png b/textures/signs_hanging_back.png deleted file mode 100644 index 7cf39a2..0000000 Binary files a/textures/signs_hanging_back.png and /dev/null differ diff --git a/textures/signs_hanging_bottom.png b/textures/signs_hanging_bottom.png deleted file mode 100644 index 7b2af4d..0000000 Binary files a/textures/signs_hanging_bottom.png and /dev/null differ diff --git a/textures/signs_hanging_front.png b/textures/signs_hanging_front.png deleted file mode 100644 index bdc745e..0000000 Binary files a/textures/signs_hanging_front.png and /dev/null differ diff --git a/textures/signs_hanging_side.png b/textures/signs_hanging_side.png deleted file mode 100644 index 8498d67..0000000 Binary files a/textures/signs_hanging_side.png and /dev/null differ diff --git a/textures/signs_hanging_top.png b/textures/signs_hanging_top.png deleted file mode 100644 index 1c08f91..0000000 Binary files a/textures/signs_hanging_top.png and /dev/null differ diff --git a/textures/signs_lib_color_15px_0.png b/textures/signs_lib_color_15px_0.png new file mode 100644 index 0000000..f743589 Binary files /dev/null and b/textures/signs_lib_color_15px_0.png differ diff --git a/textures/signs_lib_color_15px_1.png b/textures/signs_lib_color_15px_1.png new file mode 100644 index 0000000..497d708 Binary files /dev/null and b/textures/signs_lib_color_15px_1.png differ diff --git a/textures/signs_lib_color_15px_2.png b/textures/signs_lib_color_15px_2.png new file mode 100644 index 0000000..a5f4e84 Binary files /dev/null and b/textures/signs_lib_color_15px_2.png differ diff --git a/textures/signs_lib_color_15px_3.png b/textures/signs_lib_color_15px_3.png new file mode 100644 index 0000000..ef59a0c Binary files /dev/null and b/textures/signs_lib_color_15px_3.png differ diff --git a/textures/signs_lib_color_15px_4.png b/textures/signs_lib_color_15px_4.png new file mode 100644 index 0000000..1abb4da Binary files /dev/null and b/textures/signs_lib_color_15px_4.png differ diff --git a/textures/signs_lib_color_15px_5.png b/textures/signs_lib_color_15px_5.png new file mode 100644 index 0000000..dfcdc1b Binary files /dev/null and b/textures/signs_lib_color_15px_5.png differ diff --git a/textures/signs_lib_color_15px_6.png b/textures/signs_lib_color_15px_6.png new file mode 100644 index 0000000..dc829f9 Binary files /dev/null and b/textures/signs_lib_color_15px_6.png differ diff --git a/textures/signs_lib_color_15px_7.png b/textures/signs_lib_color_15px_7.png new file mode 100644 index 0000000..9b79dfd Binary files /dev/null and b/textures/signs_lib_color_15px_7.png differ diff --git a/textures/signs_lib_color_15px_8.png b/textures/signs_lib_color_15px_8.png new file mode 100644 index 0000000..f7f2a0d Binary files /dev/null and b/textures/signs_lib_color_15px_8.png differ diff --git a/textures/signs_lib_color_15px_9.png b/textures/signs_lib_color_15px_9.png new file mode 100644 index 0000000..52488ad Binary files /dev/null and b/textures/signs_lib_color_15px_9.png differ diff --git a/textures/signs_lib_color_15px_A.png b/textures/signs_lib_color_15px_A.png new file mode 100644 index 0000000..be3bc17 Binary files /dev/null and b/textures/signs_lib_color_15px_A.png differ diff --git a/textures/signs_lib_color_15px_B.png b/textures/signs_lib_color_15px_B.png new file mode 100644 index 0000000..48ae3e0 Binary files /dev/null and b/textures/signs_lib_color_15px_B.png differ diff --git a/textures/signs_lib_color_15px_C.png b/textures/signs_lib_color_15px_C.png new file mode 100644 index 0000000..d4f901a Binary files /dev/null and b/textures/signs_lib_color_15px_C.png differ diff --git a/textures/signs_lib_color_15px_D.png b/textures/signs_lib_color_15px_D.png new file mode 100644 index 0000000..1f2efde Binary files /dev/null and b/textures/signs_lib_color_15px_D.png differ diff --git a/textures/signs_lib_color_15px_E.png b/textures/signs_lib_color_15px_E.png new file mode 100644 index 0000000..3309f9b Binary files /dev/null and b/textures/signs_lib_color_15px_E.png differ diff --git a/textures/signs_lib_color_15px_F.png b/textures/signs_lib_color_15px_F.png new file mode 100644 index 0000000..da91ce4 Binary files /dev/null and b/textures/signs_lib_color_15px_F.png differ diff --git a/textures/signs_lib_color_15px_n.png b/textures/signs_lib_color_15px_n.png new file mode 100644 index 0000000..b73f781 Binary files /dev/null and b/textures/signs_lib_color_15px_n.png differ diff --git a/textures/signs_lib_color_31px_0.png b/textures/signs_lib_color_31px_0.png new file mode 100644 index 0000000..bbda5a9 Binary files /dev/null and b/textures/signs_lib_color_31px_0.png differ diff --git a/textures/signs_lib_color_31px_1.png b/textures/signs_lib_color_31px_1.png new file mode 100644 index 0000000..0431113 Binary files /dev/null and b/textures/signs_lib_color_31px_1.png differ diff --git a/textures/signs_lib_color_31px_2.png b/textures/signs_lib_color_31px_2.png new file mode 100644 index 0000000..1e5d351 Binary files /dev/null and b/textures/signs_lib_color_31px_2.png differ diff --git a/textures/signs_lib_color_31px_3.png b/textures/signs_lib_color_31px_3.png new file mode 100644 index 0000000..49eb91c Binary files /dev/null and b/textures/signs_lib_color_31px_3.png differ diff --git a/textures/signs_lib_color_31px_4.png b/textures/signs_lib_color_31px_4.png new file mode 100644 index 0000000..1578043 Binary files /dev/null and b/textures/signs_lib_color_31px_4.png differ diff --git a/textures/signs_lib_color_31px_5.png b/textures/signs_lib_color_31px_5.png new file mode 100644 index 0000000..ea9bf8c Binary files /dev/null and b/textures/signs_lib_color_31px_5.png differ diff --git a/textures/signs_lib_color_31px_6.png b/textures/signs_lib_color_31px_6.png new file mode 100644 index 0000000..6a32f66 Binary files /dev/null and b/textures/signs_lib_color_31px_6.png differ diff --git a/textures/signs_lib_color_31px_7.png b/textures/signs_lib_color_31px_7.png new file mode 100644 index 0000000..20a4184 Binary files /dev/null and b/textures/signs_lib_color_31px_7.png differ diff --git a/textures/signs_lib_color_31px_8.png b/textures/signs_lib_color_31px_8.png new file mode 100644 index 0000000..d9767df Binary files /dev/null and b/textures/signs_lib_color_31px_8.png differ diff --git a/textures/signs_lib_color_31px_9.png b/textures/signs_lib_color_31px_9.png new file mode 100644 index 0000000..e64f7f3 Binary files /dev/null and b/textures/signs_lib_color_31px_9.png differ diff --git a/textures/signs_lib_color_31px_A.png b/textures/signs_lib_color_31px_A.png new file mode 100644 index 0000000..53c7fcc Binary files /dev/null and b/textures/signs_lib_color_31px_A.png differ diff --git a/textures/signs_lib_color_31px_B.png b/textures/signs_lib_color_31px_B.png new file mode 100644 index 0000000..48318cb Binary files /dev/null and b/textures/signs_lib_color_31px_B.png differ diff --git a/textures/signs_lib_color_31px_C.png b/textures/signs_lib_color_31px_C.png new file mode 100644 index 0000000..9ad71a4 Binary files /dev/null and b/textures/signs_lib_color_31px_C.png differ diff --git a/textures/signs_lib_color_31px_D.png b/textures/signs_lib_color_31px_D.png new file mode 100644 index 0000000..4b692fb Binary files /dev/null and b/textures/signs_lib_color_31px_D.png differ diff --git a/textures/signs_lib_color_31px_E.png b/textures/signs_lib_color_31px_E.png new file mode 100644 index 0000000..468c5ab Binary files /dev/null and b/textures/signs_lib_color_31px_E.png differ diff --git a/textures/signs_lib_color_31px_F.png b/textures/signs_lib_color_31px_F.png new file mode 100644 index 0000000..0fc1caa Binary files /dev/null and b/textures/signs_lib_color_31px_F.png differ diff --git a/textures/signs_lib_color_31px_n.png b/textures/signs_lib_color_31px_n.png new file mode 100644 index 0000000..3d4cf1a Binary files /dev/null and b/textures/signs_lib_color_31px_n.png differ diff --git a/textures/hdf_00.png b/textures/signs_lib_font_15px_00.png similarity index 100% rename from textures/hdf_00.png rename to textures/signs_lib_font_15px_00.png diff --git a/textures/hdf_20.png b/textures/signs_lib_font_15px_20.png similarity index 100% rename from textures/hdf_20.png rename to textures/signs_lib_font_15px_20.png diff --git a/textures/hdf_21.png b/textures/signs_lib_font_15px_21.png similarity index 100% rename from textures/hdf_21.png rename to textures/signs_lib_font_15px_21.png diff --git a/textures/hdf_22.png b/textures/signs_lib_font_15px_22.png similarity index 100% rename from textures/hdf_22.png rename to textures/signs_lib_font_15px_22.png diff --git a/textures/hdf_23.png b/textures/signs_lib_font_15px_23.png similarity index 100% rename from textures/hdf_23.png rename to textures/signs_lib_font_15px_23.png diff --git a/textures/hdf_24.png b/textures/signs_lib_font_15px_24.png similarity index 100% rename from textures/hdf_24.png rename to textures/signs_lib_font_15px_24.png diff --git a/textures/hdf_25.png b/textures/signs_lib_font_15px_25.png similarity index 100% rename from textures/hdf_25.png rename to textures/signs_lib_font_15px_25.png diff --git a/textures/hdf_26.png b/textures/signs_lib_font_15px_26.png similarity index 100% rename from textures/hdf_26.png rename to textures/signs_lib_font_15px_26.png diff --git a/textures/hdf_27.png b/textures/signs_lib_font_15px_27.png similarity index 100% rename from textures/hdf_27.png rename to textures/signs_lib_font_15px_27.png diff --git a/textures/hdf_28.png b/textures/signs_lib_font_15px_28.png similarity index 100% rename from textures/hdf_28.png rename to textures/signs_lib_font_15px_28.png diff --git a/textures/hdf_29.png b/textures/signs_lib_font_15px_29.png similarity index 100% rename from textures/hdf_29.png rename to textures/signs_lib_font_15px_29.png diff --git a/textures/hdf_2a.png b/textures/signs_lib_font_15px_2a.png similarity index 100% rename from textures/hdf_2a.png rename to textures/signs_lib_font_15px_2a.png diff --git a/textures/hdf_2b.png b/textures/signs_lib_font_15px_2b.png similarity index 100% rename from textures/hdf_2b.png rename to textures/signs_lib_font_15px_2b.png diff --git a/textures/hdf_2c.png b/textures/signs_lib_font_15px_2c.png similarity index 100% rename from textures/hdf_2c.png rename to textures/signs_lib_font_15px_2c.png diff --git a/textures/hdf_2d.png b/textures/signs_lib_font_15px_2d.png similarity index 100% rename from textures/hdf_2d.png rename to textures/signs_lib_font_15px_2d.png diff --git a/textures/hdf_2e.png b/textures/signs_lib_font_15px_2e.png similarity index 100% rename from textures/hdf_2e.png rename to textures/signs_lib_font_15px_2e.png diff --git a/textures/hdf_2f.png b/textures/signs_lib_font_15px_2f.png similarity index 100% rename from textures/hdf_2f.png rename to textures/signs_lib_font_15px_2f.png diff --git a/textures/hdf_30.png b/textures/signs_lib_font_15px_30.png similarity index 100% rename from textures/hdf_30.png rename to textures/signs_lib_font_15px_30.png diff --git a/textures/hdf_31.png b/textures/signs_lib_font_15px_31.png similarity index 100% rename from textures/hdf_31.png rename to textures/signs_lib_font_15px_31.png diff --git a/textures/hdf_32.png b/textures/signs_lib_font_15px_32.png similarity index 100% rename from textures/hdf_32.png rename to textures/signs_lib_font_15px_32.png diff --git a/textures/hdf_33.png b/textures/signs_lib_font_15px_33.png similarity index 100% rename from textures/hdf_33.png rename to textures/signs_lib_font_15px_33.png diff --git a/textures/hdf_34.png b/textures/signs_lib_font_15px_34.png similarity index 100% rename from textures/hdf_34.png rename to textures/signs_lib_font_15px_34.png diff --git a/textures/hdf_35.png b/textures/signs_lib_font_15px_35.png similarity index 100% rename from textures/hdf_35.png rename to textures/signs_lib_font_15px_35.png diff --git a/textures/hdf_36.png b/textures/signs_lib_font_15px_36.png similarity index 100% rename from textures/hdf_36.png rename to textures/signs_lib_font_15px_36.png diff --git a/textures/hdf_37.png b/textures/signs_lib_font_15px_37.png similarity index 100% rename from textures/hdf_37.png rename to textures/signs_lib_font_15px_37.png diff --git a/textures/hdf_38.png b/textures/signs_lib_font_15px_38.png similarity index 100% rename from textures/hdf_38.png rename to textures/signs_lib_font_15px_38.png diff --git a/textures/hdf_39.png b/textures/signs_lib_font_15px_39.png similarity index 100% rename from textures/hdf_39.png rename to textures/signs_lib_font_15px_39.png diff --git a/textures/hdf_3a.png b/textures/signs_lib_font_15px_3a.png similarity index 100% rename from textures/hdf_3a.png rename to textures/signs_lib_font_15px_3a.png diff --git a/textures/hdf_3b.png b/textures/signs_lib_font_15px_3b.png similarity index 100% rename from textures/hdf_3b.png rename to textures/signs_lib_font_15px_3b.png diff --git a/textures/hdf_3c.png b/textures/signs_lib_font_15px_3c.png similarity index 100% rename from textures/hdf_3c.png rename to textures/signs_lib_font_15px_3c.png diff --git a/textures/hdf_3d.png b/textures/signs_lib_font_15px_3d.png similarity index 100% rename from textures/hdf_3d.png rename to textures/signs_lib_font_15px_3d.png diff --git a/textures/hdf_3e.png b/textures/signs_lib_font_15px_3e.png similarity index 100% rename from textures/hdf_3e.png rename to textures/signs_lib_font_15px_3e.png diff --git a/textures/hdf_3f.png b/textures/signs_lib_font_15px_3f.png similarity index 100% rename from textures/hdf_3f.png rename to textures/signs_lib_font_15px_3f.png diff --git a/textures/hdf_40.png b/textures/signs_lib_font_15px_40.png similarity index 100% rename from textures/hdf_40.png rename to textures/signs_lib_font_15px_40.png diff --git a/textures/hdf_41.png b/textures/signs_lib_font_15px_41.png similarity index 100% rename from textures/hdf_41.png rename to textures/signs_lib_font_15px_41.png diff --git a/textures/hdf_42.png b/textures/signs_lib_font_15px_42.png similarity index 100% rename from textures/hdf_42.png rename to textures/signs_lib_font_15px_42.png diff --git a/textures/hdf_43.png b/textures/signs_lib_font_15px_43.png similarity index 100% rename from textures/hdf_43.png rename to textures/signs_lib_font_15px_43.png diff --git a/textures/hdf_44.png b/textures/signs_lib_font_15px_44.png similarity index 100% rename from textures/hdf_44.png rename to textures/signs_lib_font_15px_44.png diff --git a/textures/hdf_45.png b/textures/signs_lib_font_15px_45.png similarity index 100% rename from textures/hdf_45.png rename to textures/signs_lib_font_15px_45.png diff --git a/textures/hdf_46.png b/textures/signs_lib_font_15px_46.png similarity index 100% rename from textures/hdf_46.png rename to textures/signs_lib_font_15px_46.png diff --git a/textures/hdf_47.png b/textures/signs_lib_font_15px_47.png similarity index 100% rename from textures/hdf_47.png rename to textures/signs_lib_font_15px_47.png diff --git a/textures/hdf_48.png b/textures/signs_lib_font_15px_48.png similarity index 100% rename from textures/hdf_48.png rename to textures/signs_lib_font_15px_48.png diff --git a/textures/hdf_49.png b/textures/signs_lib_font_15px_49.png similarity index 100% rename from textures/hdf_49.png rename to textures/signs_lib_font_15px_49.png diff --git a/textures/hdf_4a.png b/textures/signs_lib_font_15px_4a.png similarity index 100% rename from textures/hdf_4a.png rename to textures/signs_lib_font_15px_4a.png diff --git a/textures/hdf_4b.png b/textures/signs_lib_font_15px_4b.png similarity index 100% rename from textures/hdf_4b.png rename to textures/signs_lib_font_15px_4b.png diff --git a/textures/hdf_4c.png b/textures/signs_lib_font_15px_4c.png similarity index 100% rename from textures/hdf_4c.png rename to textures/signs_lib_font_15px_4c.png diff --git a/textures/hdf_4d.png b/textures/signs_lib_font_15px_4d.png similarity index 100% rename from textures/hdf_4d.png rename to textures/signs_lib_font_15px_4d.png diff --git a/textures/hdf_4e.png b/textures/signs_lib_font_15px_4e.png similarity index 100% rename from textures/hdf_4e.png rename to textures/signs_lib_font_15px_4e.png diff --git a/textures/hdf_4f.png b/textures/signs_lib_font_15px_4f.png similarity index 100% rename from textures/hdf_4f.png rename to textures/signs_lib_font_15px_4f.png diff --git a/textures/hdf_50.png b/textures/signs_lib_font_15px_50.png similarity index 100% rename from textures/hdf_50.png rename to textures/signs_lib_font_15px_50.png diff --git a/textures/hdf_51.png b/textures/signs_lib_font_15px_51.png similarity index 100% rename from textures/hdf_51.png rename to textures/signs_lib_font_15px_51.png diff --git a/textures/hdf_52.png b/textures/signs_lib_font_15px_52.png similarity index 100% rename from textures/hdf_52.png rename to textures/signs_lib_font_15px_52.png diff --git a/textures/hdf_53.png b/textures/signs_lib_font_15px_53.png similarity index 100% rename from textures/hdf_53.png rename to textures/signs_lib_font_15px_53.png diff --git a/textures/hdf_54.png b/textures/signs_lib_font_15px_54.png similarity index 100% rename from textures/hdf_54.png rename to textures/signs_lib_font_15px_54.png diff --git a/textures/hdf_55.png b/textures/signs_lib_font_15px_55.png similarity index 100% rename from textures/hdf_55.png rename to textures/signs_lib_font_15px_55.png diff --git a/textures/hdf_56.png b/textures/signs_lib_font_15px_56.png similarity index 100% rename from textures/hdf_56.png rename to textures/signs_lib_font_15px_56.png diff --git a/textures/hdf_57.png b/textures/signs_lib_font_15px_57.png similarity index 100% rename from textures/hdf_57.png rename to textures/signs_lib_font_15px_57.png diff --git a/textures/hdf_58.png b/textures/signs_lib_font_15px_58.png similarity index 100% rename from textures/hdf_58.png rename to textures/signs_lib_font_15px_58.png diff --git a/textures/hdf_59.png b/textures/signs_lib_font_15px_59.png similarity index 100% rename from textures/hdf_59.png rename to textures/signs_lib_font_15px_59.png diff --git a/textures/hdf_5a.png b/textures/signs_lib_font_15px_5a.png similarity index 100% rename from textures/hdf_5a.png rename to textures/signs_lib_font_15px_5a.png diff --git a/textures/hdf_5b.png b/textures/signs_lib_font_15px_5b.png similarity index 100% rename from textures/hdf_5b.png rename to textures/signs_lib_font_15px_5b.png diff --git a/textures/hdf_5c.png b/textures/signs_lib_font_15px_5c.png similarity index 100% rename from textures/hdf_5c.png rename to textures/signs_lib_font_15px_5c.png diff --git a/textures/hdf_5d.png b/textures/signs_lib_font_15px_5d.png similarity index 100% rename from textures/hdf_5d.png rename to textures/signs_lib_font_15px_5d.png diff --git a/textures/hdf_5e.png b/textures/signs_lib_font_15px_5e.png similarity index 100% rename from textures/hdf_5e.png rename to textures/signs_lib_font_15px_5e.png diff --git a/textures/hdf_5f.png b/textures/signs_lib_font_15px_5f.png similarity index 100% rename from textures/hdf_5f.png rename to textures/signs_lib_font_15px_5f.png diff --git a/textures/hdf_60.png b/textures/signs_lib_font_15px_60.png similarity index 100% rename from textures/hdf_60.png rename to textures/signs_lib_font_15px_60.png diff --git a/textures/hdf_61.png b/textures/signs_lib_font_15px_61.png similarity index 100% rename from textures/hdf_61.png rename to textures/signs_lib_font_15px_61.png diff --git a/textures/hdf_62.png b/textures/signs_lib_font_15px_62.png similarity index 100% rename from textures/hdf_62.png rename to textures/signs_lib_font_15px_62.png diff --git a/textures/hdf_63.png b/textures/signs_lib_font_15px_63.png similarity index 100% rename from textures/hdf_63.png rename to textures/signs_lib_font_15px_63.png diff --git a/textures/hdf_64.png b/textures/signs_lib_font_15px_64.png similarity index 100% rename from textures/hdf_64.png rename to textures/signs_lib_font_15px_64.png diff --git a/textures/hdf_65.png b/textures/signs_lib_font_15px_65.png similarity index 100% rename from textures/hdf_65.png rename to textures/signs_lib_font_15px_65.png diff --git a/textures/hdf_66.png b/textures/signs_lib_font_15px_66.png similarity index 100% rename from textures/hdf_66.png rename to textures/signs_lib_font_15px_66.png diff --git a/textures/hdf_67.png b/textures/signs_lib_font_15px_67.png similarity index 100% rename from textures/hdf_67.png rename to textures/signs_lib_font_15px_67.png diff --git a/textures/hdf_68.png b/textures/signs_lib_font_15px_68.png similarity index 100% rename from textures/hdf_68.png rename to textures/signs_lib_font_15px_68.png diff --git a/textures/hdf_69.png b/textures/signs_lib_font_15px_69.png similarity index 100% rename from textures/hdf_69.png rename to textures/signs_lib_font_15px_69.png diff --git a/textures/hdf_6a.png b/textures/signs_lib_font_15px_6a.png similarity index 100% rename from textures/hdf_6a.png rename to textures/signs_lib_font_15px_6a.png diff --git a/textures/hdf_6b.png b/textures/signs_lib_font_15px_6b.png similarity index 100% rename from textures/hdf_6b.png rename to textures/signs_lib_font_15px_6b.png diff --git a/textures/hdf_6c.png b/textures/signs_lib_font_15px_6c.png similarity index 100% rename from textures/hdf_6c.png rename to textures/signs_lib_font_15px_6c.png diff --git a/textures/hdf_6d.png b/textures/signs_lib_font_15px_6d.png similarity index 100% rename from textures/hdf_6d.png rename to textures/signs_lib_font_15px_6d.png diff --git a/textures/hdf_6e.png b/textures/signs_lib_font_15px_6e.png similarity index 100% rename from textures/hdf_6e.png rename to textures/signs_lib_font_15px_6e.png diff --git a/textures/hdf_6f.png b/textures/signs_lib_font_15px_6f.png similarity index 100% rename from textures/hdf_6f.png rename to textures/signs_lib_font_15px_6f.png diff --git a/textures/hdf_70.png b/textures/signs_lib_font_15px_70.png similarity index 100% rename from textures/hdf_70.png rename to textures/signs_lib_font_15px_70.png diff --git a/textures/hdf_71.png b/textures/signs_lib_font_15px_71.png similarity index 100% rename from textures/hdf_71.png rename to textures/signs_lib_font_15px_71.png diff --git a/textures/hdf_72.png b/textures/signs_lib_font_15px_72.png similarity index 100% rename from textures/hdf_72.png rename to textures/signs_lib_font_15px_72.png diff --git a/textures/hdf_73.png b/textures/signs_lib_font_15px_73.png similarity index 100% rename from textures/hdf_73.png rename to textures/signs_lib_font_15px_73.png diff --git a/textures/hdf_74.png b/textures/signs_lib_font_15px_74.png similarity index 100% rename from textures/hdf_74.png rename to textures/signs_lib_font_15px_74.png diff --git a/textures/hdf_75.png b/textures/signs_lib_font_15px_75.png similarity index 100% rename from textures/hdf_75.png rename to textures/signs_lib_font_15px_75.png diff --git a/textures/hdf_76.png b/textures/signs_lib_font_15px_76.png similarity index 100% rename from textures/hdf_76.png rename to textures/signs_lib_font_15px_76.png diff --git a/textures/hdf_77.png b/textures/signs_lib_font_15px_77.png similarity index 100% rename from textures/hdf_77.png rename to textures/signs_lib_font_15px_77.png diff --git a/textures/hdf_78.png b/textures/signs_lib_font_15px_78.png similarity index 100% rename from textures/hdf_78.png rename to textures/signs_lib_font_15px_78.png diff --git a/textures/hdf_79.png b/textures/signs_lib_font_15px_79.png similarity index 100% rename from textures/hdf_79.png rename to textures/signs_lib_font_15px_79.png diff --git a/textures/hdf_7a.png b/textures/signs_lib_font_15px_7a.png similarity index 100% rename from textures/hdf_7a.png rename to textures/signs_lib_font_15px_7a.png diff --git a/textures/hdf_7b.png b/textures/signs_lib_font_15px_7b.png similarity index 100% rename from textures/hdf_7b.png rename to textures/signs_lib_font_15px_7b.png diff --git a/textures/hdf_7c.png b/textures/signs_lib_font_15px_7c.png similarity index 100% rename from textures/hdf_7c.png rename to textures/signs_lib_font_15px_7c.png diff --git a/textures/hdf_7d.png b/textures/signs_lib_font_15px_7d.png similarity index 100% rename from textures/hdf_7d.png rename to textures/signs_lib_font_15px_7d.png diff --git a/textures/hdf_7e.png b/textures/signs_lib_font_15px_7e.png similarity index 100% rename from textures/hdf_7e.png rename to textures/signs_lib_font_15px_7e.png diff --git a/textures/hdf_81.png b/textures/signs_lib_font_15px_81.png similarity index 100% rename from textures/hdf_81.png rename to textures/signs_lib_font_15px_81.png diff --git a/textures/hdf_82.png b/textures/signs_lib_font_15px_82.png similarity index 100% rename from textures/hdf_82.png rename to textures/signs_lib_font_15px_82.png diff --git a/textures/hdf_83.png b/textures/signs_lib_font_15px_83.png similarity index 100% rename from textures/hdf_83.png rename to textures/signs_lib_font_15px_83.png diff --git a/textures/hdf_84.png b/textures/signs_lib_font_15px_84.png similarity index 100% rename from textures/hdf_84.png rename to textures/signs_lib_font_15px_84.png diff --git a/textures/hdf_85.png b/textures/signs_lib_font_15px_85.png similarity index 100% rename from textures/hdf_85.png rename to textures/signs_lib_font_15px_85.png diff --git a/textures/hdf_86.png b/textures/signs_lib_font_15px_86.png similarity index 100% rename from textures/hdf_86.png rename to textures/signs_lib_font_15px_86.png diff --git a/textures/hdf_87.png b/textures/signs_lib_font_15px_87.png similarity index 100% rename from textures/hdf_87.png rename to textures/signs_lib_font_15px_87.png diff --git a/textures/hdf_88.png b/textures/signs_lib_font_15px_88.png similarity index 100% rename from textures/hdf_88.png rename to textures/signs_lib_font_15px_88.png diff --git a/textures/hdf_8a.png b/textures/signs_lib_font_15px_8a.png similarity index 100% rename from textures/hdf_8a.png rename to textures/signs_lib_font_15px_8a.png diff --git a/textures/hdf_8b.png b/textures/signs_lib_font_15px_8b.png similarity index 100% rename from textures/hdf_8b.png rename to textures/signs_lib_font_15px_8b.png diff --git a/textures/hdf_8c.png b/textures/signs_lib_font_15px_8c.png similarity index 100% rename from textures/hdf_8c.png rename to textures/signs_lib_font_15px_8c.png diff --git a/textures/hdf_8d.png b/textures/signs_lib_font_15px_8d.png similarity index 100% rename from textures/hdf_8d.png rename to textures/signs_lib_font_15px_8d.png diff --git a/textures/hdf_8e.png b/textures/signs_lib_font_15px_8e.png similarity index 100% rename from textures/hdf_8e.png rename to textures/signs_lib_font_15px_8e.png diff --git a/textures/hdf_8f.png b/textures/signs_lib_font_15px_8f.png similarity index 100% rename from textures/hdf_8f.png rename to textures/signs_lib_font_15px_8f.png diff --git a/textures/hdf_90.png b/textures/signs_lib_font_15px_90.png similarity index 100% rename from textures/hdf_90.png rename to textures/signs_lib_font_15px_90.png diff --git a/textures/hdf_91.png b/textures/signs_lib_font_15px_91.png similarity index 100% rename from textures/hdf_91.png rename to textures/signs_lib_font_15px_91.png diff --git a/textures/hdf_a8.png b/textures/signs_lib_font_15px_a8.png similarity index 100% rename from textures/hdf_a8.png rename to textures/signs_lib_font_15px_a8.png diff --git a/textures/hdf_b8.png b/textures/signs_lib_font_15px_b8.png similarity index 100% rename from textures/hdf_b8.png rename to textures/signs_lib_font_15px_b8.png diff --git a/textures/hdf_b9.png b/textures/signs_lib_font_15px_b9.png similarity index 100% rename from textures/hdf_b9.png rename to textures/signs_lib_font_15px_b9.png diff --git a/textures/hdf_c0.png b/textures/signs_lib_font_15px_c0.png similarity index 100% rename from textures/hdf_c0.png rename to textures/signs_lib_font_15px_c0.png diff --git a/textures/hdf_c1.png b/textures/signs_lib_font_15px_c1.png similarity index 100% rename from textures/hdf_c1.png rename to textures/signs_lib_font_15px_c1.png diff --git a/textures/hdf_c2.png b/textures/signs_lib_font_15px_c2.png similarity index 100% rename from textures/hdf_c2.png rename to textures/signs_lib_font_15px_c2.png diff --git a/textures/hdf_c3.png b/textures/signs_lib_font_15px_c3.png similarity index 100% rename from textures/hdf_c3.png rename to textures/signs_lib_font_15px_c3.png diff --git a/textures/hdf_c4.png b/textures/signs_lib_font_15px_c4.png similarity index 100% rename from textures/hdf_c4.png rename to textures/signs_lib_font_15px_c4.png diff --git a/textures/hdf_c5.png b/textures/signs_lib_font_15px_c5.png similarity index 100% rename from textures/hdf_c5.png rename to textures/signs_lib_font_15px_c5.png diff --git a/textures/hdf_c6.png b/textures/signs_lib_font_15px_c6.png similarity index 100% rename from textures/hdf_c6.png rename to textures/signs_lib_font_15px_c6.png diff --git a/textures/hdf_c7.png b/textures/signs_lib_font_15px_c7.png similarity index 100% rename from textures/hdf_c7.png rename to textures/signs_lib_font_15px_c7.png diff --git a/textures/hdf_c8.png b/textures/signs_lib_font_15px_c8.png similarity index 100% rename from textures/hdf_c8.png rename to textures/signs_lib_font_15px_c8.png diff --git a/textures/hdf_c9.png b/textures/signs_lib_font_15px_c9.png similarity index 100% rename from textures/hdf_c9.png rename to textures/signs_lib_font_15px_c9.png diff --git a/textures/hdf_ca.png b/textures/signs_lib_font_15px_ca.png similarity index 100% rename from textures/hdf_ca.png rename to textures/signs_lib_font_15px_ca.png diff --git a/textures/hdf_cb.png b/textures/signs_lib_font_15px_cb.png similarity index 100% rename from textures/hdf_cb.png rename to textures/signs_lib_font_15px_cb.png diff --git a/textures/hdf_cc.png b/textures/signs_lib_font_15px_cc.png similarity index 100% rename from textures/hdf_cc.png rename to textures/signs_lib_font_15px_cc.png diff --git a/textures/hdf_cd.png b/textures/signs_lib_font_15px_cd.png similarity index 100% rename from textures/hdf_cd.png rename to textures/signs_lib_font_15px_cd.png diff --git a/textures/hdf_ce.png b/textures/signs_lib_font_15px_ce.png similarity index 100% rename from textures/hdf_ce.png rename to textures/signs_lib_font_15px_ce.png diff --git a/textures/hdf_cf.png b/textures/signs_lib_font_15px_cf.png similarity index 100% rename from textures/hdf_cf.png rename to textures/signs_lib_font_15px_cf.png diff --git a/textures/hdf_d0.png b/textures/signs_lib_font_15px_d0.png similarity index 100% rename from textures/hdf_d0.png rename to textures/signs_lib_font_15px_d0.png diff --git a/textures/hdf_d1.png b/textures/signs_lib_font_15px_d1.png similarity index 100% rename from textures/hdf_d1.png rename to textures/signs_lib_font_15px_d1.png diff --git a/textures/hdf_d2.png b/textures/signs_lib_font_15px_d2.png similarity index 100% rename from textures/hdf_d2.png rename to textures/signs_lib_font_15px_d2.png diff --git a/textures/hdf_d3.png b/textures/signs_lib_font_15px_d3.png similarity index 100% rename from textures/hdf_d3.png rename to textures/signs_lib_font_15px_d3.png diff --git a/textures/hdf_d4.png b/textures/signs_lib_font_15px_d4.png similarity index 100% rename from textures/hdf_d4.png rename to textures/signs_lib_font_15px_d4.png diff --git a/textures/hdf_d5.png b/textures/signs_lib_font_15px_d5.png similarity index 100% rename from textures/hdf_d5.png rename to textures/signs_lib_font_15px_d5.png diff --git a/textures/hdf_d6.png b/textures/signs_lib_font_15px_d6.png similarity index 100% rename from textures/hdf_d6.png rename to textures/signs_lib_font_15px_d6.png diff --git a/textures/hdf_d7.png b/textures/signs_lib_font_15px_d7.png similarity index 100% rename from textures/hdf_d7.png rename to textures/signs_lib_font_15px_d7.png diff --git a/textures/hdf_d8.png b/textures/signs_lib_font_15px_d8.png similarity index 100% rename from textures/hdf_d8.png rename to textures/signs_lib_font_15px_d8.png diff --git a/textures/hdf_d9.png b/textures/signs_lib_font_15px_d9.png similarity index 100% rename from textures/hdf_d9.png rename to textures/signs_lib_font_15px_d9.png diff --git a/textures/hdf_da.png b/textures/signs_lib_font_15px_da.png similarity index 100% rename from textures/hdf_da.png rename to textures/signs_lib_font_15px_da.png diff --git a/textures/hdf_db.png b/textures/signs_lib_font_15px_db.png similarity index 100% rename from textures/hdf_db.png rename to textures/signs_lib_font_15px_db.png diff --git a/textures/hdf_dc.png b/textures/signs_lib_font_15px_dc.png similarity index 100% rename from textures/hdf_dc.png rename to textures/signs_lib_font_15px_dc.png diff --git a/textures/hdf_dd.png b/textures/signs_lib_font_15px_dd.png similarity index 100% rename from textures/hdf_dd.png rename to textures/signs_lib_font_15px_dd.png diff --git a/textures/hdf_de.png b/textures/signs_lib_font_15px_de.png similarity index 100% rename from textures/hdf_de.png rename to textures/signs_lib_font_15px_de.png diff --git a/textures/hdf_df.png b/textures/signs_lib_font_15px_df.png similarity index 100% rename from textures/hdf_df.png rename to textures/signs_lib_font_15px_df.png diff --git a/textures/hdf_e0.png b/textures/signs_lib_font_15px_e0.png similarity index 100% rename from textures/hdf_e0.png rename to textures/signs_lib_font_15px_e0.png diff --git a/textures/hdf_e1.png b/textures/signs_lib_font_15px_e1.png similarity index 100% rename from textures/hdf_e1.png rename to textures/signs_lib_font_15px_e1.png diff --git a/textures/hdf_e2.png b/textures/signs_lib_font_15px_e2.png similarity index 100% rename from textures/hdf_e2.png rename to textures/signs_lib_font_15px_e2.png diff --git a/textures/hdf_e3.png b/textures/signs_lib_font_15px_e3.png similarity index 100% rename from textures/hdf_e3.png rename to textures/signs_lib_font_15px_e3.png diff --git a/textures/hdf_e4.png b/textures/signs_lib_font_15px_e4.png similarity index 100% rename from textures/hdf_e4.png rename to textures/signs_lib_font_15px_e4.png diff --git a/textures/hdf_e5.png b/textures/signs_lib_font_15px_e5.png similarity index 100% rename from textures/hdf_e5.png rename to textures/signs_lib_font_15px_e5.png diff --git a/textures/hdf_e6.png b/textures/signs_lib_font_15px_e6.png similarity index 100% rename from textures/hdf_e6.png rename to textures/signs_lib_font_15px_e6.png diff --git a/textures/hdf_e7.png b/textures/signs_lib_font_15px_e7.png similarity index 100% rename from textures/hdf_e7.png rename to textures/signs_lib_font_15px_e7.png diff --git a/textures/hdf_e8.png b/textures/signs_lib_font_15px_e8.png similarity index 100% rename from textures/hdf_e8.png rename to textures/signs_lib_font_15px_e8.png diff --git a/textures/hdf_e9.png b/textures/signs_lib_font_15px_e9.png similarity index 100% rename from textures/hdf_e9.png rename to textures/signs_lib_font_15px_e9.png diff --git a/textures/hdf_ea.png b/textures/signs_lib_font_15px_ea.png similarity index 100% rename from textures/hdf_ea.png rename to textures/signs_lib_font_15px_ea.png diff --git a/textures/hdf_eb.png b/textures/signs_lib_font_15px_eb.png similarity index 100% rename from textures/hdf_eb.png rename to textures/signs_lib_font_15px_eb.png diff --git a/textures/hdf_ec.png b/textures/signs_lib_font_15px_ec.png similarity index 100% rename from textures/hdf_ec.png rename to textures/signs_lib_font_15px_ec.png diff --git a/textures/hdf_ed.png b/textures/signs_lib_font_15px_ed.png similarity index 100% rename from textures/hdf_ed.png rename to textures/signs_lib_font_15px_ed.png diff --git a/textures/hdf_ee.png b/textures/signs_lib_font_15px_ee.png similarity index 100% rename from textures/hdf_ee.png rename to textures/signs_lib_font_15px_ee.png diff --git a/textures/hdf_ef.png b/textures/signs_lib_font_15px_ef.png similarity index 100% rename from textures/hdf_ef.png rename to textures/signs_lib_font_15px_ef.png diff --git a/textures/hdf_f0.png b/textures/signs_lib_font_15px_f0.png similarity index 100% rename from textures/hdf_f0.png rename to textures/signs_lib_font_15px_f0.png diff --git a/textures/hdf_f1.png b/textures/signs_lib_font_15px_f1.png similarity index 100% rename from textures/hdf_f1.png rename to textures/signs_lib_font_15px_f1.png diff --git a/textures/hdf_f2.png b/textures/signs_lib_font_15px_f2.png similarity index 100% rename from textures/hdf_f2.png rename to textures/signs_lib_font_15px_f2.png diff --git a/textures/hdf_f3.png b/textures/signs_lib_font_15px_f3.png similarity index 100% rename from textures/hdf_f3.png rename to textures/signs_lib_font_15px_f3.png diff --git a/textures/hdf_f4.png b/textures/signs_lib_font_15px_f4.png similarity index 100% rename from textures/hdf_f4.png rename to textures/signs_lib_font_15px_f4.png diff --git a/textures/hdf_f5.png b/textures/signs_lib_font_15px_f5.png similarity index 100% rename from textures/hdf_f5.png rename to textures/signs_lib_font_15px_f5.png diff --git a/textures/hdf_f6.png b/textures/signs_lib_font_15px_f6.png similarity index 100% rename from textures/hdf_f6.png rename to textures/signs_lib_font_15px_f6.png diff --git a/textures/hdf_f7.png b/textures/signs_lib_font_15px_f7.png similarity index 100% rename from textures/hdf_f7.png rename to textures/signs_lib_font_15px_f7.png diff --git a/textures/hdf_f8.png b/textures/signs_lib_font_15px_f8.png similarity index 100% rename from textures/hdf_f8.png rename to textures/signs_lib_font_15px_f8.png diff --git a/textures/hdf_f9.png b/textures/signs_lib_font_15px_f9.png similarity index 100% rename from textures/hdf_f9.png rename to textures/signs_lib_font_15px_f9.png diff --git a/textures/hdf_fa.png b/textures/signs_lib_font_15px_fa.png similarity index 100% rename from textures/hdf_fa.png rename to textures/signs_lib_font_15px_fa.png diff --git a/textures/hdf_fb.png b/textures/signs_lib_font_15px_fb.png similarity index 100% rename from textures/hdf_fb.png rename to textures/signs_lib_font_15px_fb.png diff --git a/textures/hdf_fc.png b/textures/signs_lib_font_15px_fc.png similarity index 100% rename from textures/hdf_fc.png rename to textures/signs_lib_font_15px_fc.png diff --git a/textures/hdf_fd.png b/textures/signs_lib_font_15px_fd.png similarity index 100% rename from textures/hdf_fd.png rename to textures/signs_lib_font_15px_fd.png diff --git a/textures/hdf_fe.png b/textures/signs_lib_font_15px_fe.png similarity index 100% rename from textures/hdf_fe.png rename to textures/signs_lib_font_15px_fe.png diff --git a/textures/hdf_ff.png b/textures/signs_lib_font_15px_ff.png similarity index 100% rename from textures/hdf_ff.png rename to textures/signs_lib_font_15px_ff.png diff --git a/textures/signs_lib_font_31px_20.png b/textures/signs_lib_font_31px_20.png new file mode 100644 index 0000000..a83236d Binary files /dev/null and b/textures/signs_lib_font_31px_20.png differ diff --git a/textures/signs_lib_font_31px_21.png b/textures/signs_lib_font_31px_21.png new file mode 100644 index 0000000..d3b9f61 Binary files /dev/null and b/textures/signs_lib_font_31px_21.png differ diff --git a/textures/signs_lib_font_31px_22.png b/textures/signs_lib_font_31px_22.png new file mode 100644 index 0000000..ea354d8 Binary files /dev/null and b/textures/signs_lib_font_31px_22.png differ diff --git a/textures/signs_lib_font_31px_23.png b/textures/signs_lib_font_31px_23.png new file mode 100644 index 0000000..eded520 Binary files /dev/null and b/textures/signs_lib_font_31px_23.png differ diff --git a/textures/signs_lib_font_31px_24.png b/textures/signs_lib_font_31px_24.png new file mode 100644 index 0000000..9225f94 Binary files /dev/null and b/textures/signs_lib_font_31px_24.png differ diff --git a/textures/signs_lib_font_31px_25.png b/textures/signs_lib_font_31px_25.png new file mode 100644 index 0000000..473590f Binary files /dev/null and b/textures/signs_lib_font_31px_25.png differ diff --git a/textures/signs_lib_font_31px_26.png b/textures/signs_lib_font_31px_26.png new file mode 100644 index 0000000..b7a9778 Binary files /dev/null and b/textures/signs_lib_font_31px_26.png differ diff --git a/textures/signs_lib_font_31px_27.png b/textures/signs_lib_font_31px_27.png new file mode 100644 index 0000000..5185d81 Binary files /dev/null and b/textures/signs_lib_font_31px_27.png differ diff --git a/textures/signs_lib_font_31px_28.png b/textures/signs_lib_font_31px_28.png new file mode 100644 index 0000000..8641fe1 Binary files /dev/null and b/textures/signs_lib_font_31px_28.png differ diff --git a/textures/signs_lib_font_31px_29.png b/textures/signs_lib_font_31px_29.png new file mode 100644 index 0000000..044366c Binary files /dev/null and b/textures/signs_lib_font_31px_29.png differ diff --git a/textures/signs_lib_font_31px_2a.png b/textures/signs_lib_font_31px_2a.png new file mode 100644 index 0000000..3da8dc4 Binary files /dev/null and b/textures/signs_lib_font_31px_2a.png differ diff --git a/textures/signs_lib_font_31px_2b.png b/textures/signs_lib_font_31px_2b.png new file mode 100644 index 0000000..1c5be46 Binary files /dev/null and b/textures/signs_lib_font_31px_2b.png differ diff --git a/textures/signs_lib_font_31px_2c.png b/textures/signs_lib_font_31px_2c.png new file mode 100644 index 0000000..dd8de22 Binary files /dev/null and b/textures/signs_lib_font_31px_2c.png differ diff --git a/textures/signs_lib_font_31px_2d.png b/textures/signs_lib_font_31px_2d.png new file mode 100644 index 0000000..3a8f62c Binary files /dev/null and b/textures/signs_lib_font_31px_2d.png differ diff --git a/textures/signs_lib_font_31px_2e.png b/textures/signs_lib_font_31px_2e.png new file mode 100644 index 0000000..860df5d Binary files /dev/null and b/textures/signs_lib_font_31px_2e.png differ diff --git a/textures/signs_lib_font_31px_2f.png b/textures/signs_lib_font_31px_2f.png new file mode 100644 index 0000000..91b0e1c Binary files /dev/null and b/textures/signs_lib_font_31px_2f.png differ diff --git a/textures/signs_lib_font_31px_30.png b/textures/signs_lib_font_31px_30.png new file mode 100644 index 0000000..c34aaf8 Binary files /dev/null and b/textures/signs_lib_font_31px_30.png differ diff --git a/textures/signs_lib_font_31px_31.png b/textures/signs_lib_font_31px_31.png new file mode 100644 index 0000000..091e6c9 Binary files /dev/null and b/textures/signs_lib_font_31px_31.png differ diff --git a/textures/signs_lib_font_31px_32.png b/textures/signs_lib_font_31px_32.png new file mode 100644 index 0000000..e43a58f Binary files /dev/null and b/textures/signs_lib_font_31px_32.png differ diff --git a/textures/signs_lib_font_31px_33.png b/textures/signs_lib_font_31px_33.png new file mode 100644 index 0000000..7a873cf Binary files /dev/null and b/textures/signs_lib_font_31px_33.png differ diff --git a/textures/signs_lib_font_31px_34.png b/textures/signs_lib_font_31px_34.png new file mode 100644 index 0000000..952d474 Binary files /dev/null and b/textures/signs_lib_font_31px_34.png differ diff --git a/textures/signs_lib_font_31px_35.png b/textures/signs_lib_font_31px_35.png new file mode 100644 index 0000000..4297837 Binary files /dev/null and b/textures/signs_lib_font_31px_35.png differ diff --git a/textures/signs_lib_font_31px_36.png b/textures/signs_lib_font_31px_36.png new file mode 100644 index 0000000..71c6e4b Binary files /dev/null and b/textures/signs_lib_font_31px_36.png differ diff --git a/textures/signs_lib_font_31px_37.png b/textures/signs_lib_font_31px_37.png new file mode 100644 index 0000000..c73dc10 Binary files /dev/null and b/textures/signs_lib_font_31px_37.png differ diff --git a/textures/signs_lib_font_31px_38.png b/textures/signs_lib_font_31px_38.png new file mode 100644 index 0000000..4028298 Binary files /dev/null and b/textures/signs_lib_font_31px_38.png differ diff --git a/textures/signs_lib_font_31px_39.png b/textures/signs_lib_font_31px_39.png new file mode 100644 index 0000000..a240984 Binary files /dev/null and b/textures/signs_lib_font_31px_39.png differ diff --git a/textures/signs_lib_font_31px_3a.png b/textures/signs_lib_font_31px_3a.png new file mode 100644 index 0000000..a3d967c Binary files /dev/null and b/textures/signs_lib_font_31px_3a.png differ diff --git a/textures/signs_lib_font_31px_3b.png b/textures/signs_lib_font_31px_3b.png new file mode 100644 index 0000000..becc877 Binary files /dev/null and b/textures/signs_lib_font_31px_3b.png differ diff --git a/textures/signs_lib_font_31px_3c.png b/textures/signs_lib_font_31px_3c.png new file mode 100644 index 0000000..0d3d291 Binary files /dev/null and b/textures/signs_lib_font_31px_3c.png differ diff --git a/textures/signs_lib_font_31px_3d.png b/textures/signs_lib_font_31px_3d.png new file mode 100644 index 0000000..952ffca Binary files /dev/null and b/textures/signs_lib_font_31px_3d.png differ diff --git a/textures/signs_lib_font_31px_3e.png b/textures/signs_lib_font_31px_3e.png new file mode 100644 index 0000000..4367ba0 Binary files /dev/null and b/textures/signs_lib_font_31px_3e.png differ diff --git a/textures/signs_lib_font_31px_3f.png b/textures/signs_lib_font_31px_3f.png new file mode 100644 index 0000000..d1d18fc Binary files /dev/null and b/textures/signs_lib_font_31px_3f.png differ diff --git a/textures/signs_lib_font_31px_40.png b/textures/signs_lib_font_31px_40.png new file mode 100644 index 0000000..5003e81 Binary files /dev/null and b/textures/signs_lib_font_31px_40.png differ diff --git a/textures/signs_lib_font_31px_41.png b/textures/signs_lib_font_31px_41.png new file mode 100644 index 0000000..22542bf Binary files /dev/null and b/textures/signs_lib_font_31px_41.png differ diff --git a/textures/signs_lib_font_31px_42.png b/textures/signs_lib_font_31px_42.png new file mode 100644 index 0000000..8250ba6 Binary files /dev/null and b/textures/signs_lib_font_31px_42.png differ diff --git a/textures/signs_lib_font_31px_43.png b/textures/signs_lib_font_31px_43.png new file mode 100644 index 0000000..60df4ce Binary files /dev/null and b/textures/signs_lib_font_31px_43.png differ diff --git a/textures/signs_lib_font_31px_44.png b/textures/signs_lib_font_31px_44.png new file mode 100644 index 0000000..3efe851 Binary files /dev/null and b/textures/signs_lib_font_31px_44.png differ diff --git a/textures/signs_lib_font_31px_45.png b/textures/signs_lib_font_31px_45.png new file mode 100644 index 0000000..edc2321 Binary files /dev/null and b/textures/signs_lib_font_31px_45.png differ diff --git a/textures/signs_lib_font_31px_46.png b/textures/signs_lib_font_31px_46.png new file mode 100644 index 0000000..a6c1c44 Binary files /dev/null and b/textures/signs_lib_font_31px_46.png differ diff --git a/textures/signs_lib_font_31px_47.png b/textures/signs_lib_font_31px_47.png new file mode 100644 index 0000000..67772e6 Binary files /dev/null and b/textures/signs_lib_font_31px_47.png differ diff --git a/textures/signs_lib_font_31px_48.png b/textures/signs_lib_font_31px_48.png new file mode 100644 index 0000000..db78806 Binary files /dev/null and b/textures/signs_lib_font_31px_48.png differ diff --git a/textures/signs_lib_font_31px_49.png b/textures/signs_lib_font_31px_49.png new file mode 100644 index 0000000..a07c15a Binary files /dev/null and b/textures/signs_lib_font_31px_49.png differ diff --git a/textures/signs_lib_font_31px_4a.png b/textures/signs_lib_font_31px_4a.png new file mode 100644 index 0000000..ae61bf1 Binary files /dev/null and b/textures/signs_lib_font_31px_4a.png differ diff --git a/textures/signs_lib_font_31px_4b.png b/textures/signs_lib_font_31px_4b.png new file mode 100644 index 0000000..87d9c78 Binary files /dev/null and b/textures/signs_lib_font_31px_4b.png differ diff --git a/textures/signs_lib_font_31px_4c.png b/textures/signs_lib_font_31px_4c.png new file mode 100644 index 0000000..bafd6d2 Binary files /dev/null and b/textures/signs_lib_font_31px_4c.png differ diff --git a/textures/signs_lib_font_31px_4d.png b/textures/signs_lib_font_31px_4d.png new file mode 100644 index 0000000..efc8814 Binary files /dev/null and b/textures/signs_lib_font_31px_4d.png differ diff --git a/textures/signs_lib_font_31px_4e.png b/textures/signs_lib_font_31px_4e.png new file mode 100644 index 0000000..10b7607 Binary files /dev/null and b/textures/signs_lib_font_31px_4e.png differ diff --git a/textures/signs_lib_font_31px_4f.png b/textures/signs_lib_font_31px_4f.png new file mode 100644 index 0000000..9698926 Binary files /dev/null and b/textures/signs_lib_font_31px_4f.png differ diff --git a/textures/signs_lib_font_31px_50.png b/textures/signs_lib_font_31px_50.png new file mode 100644 index 0000000..67ebc51 Binary files /dev/null and b/textures/signs_lib_font_31px_50.png differ diff --git a/textures/signs_lib_font_31px_51.png b/textures/signs_lib_font_31px_51.png new file mode 100644 index 0000000..83e28f0 Binary files /dev/null and b/textures/signs_lib_font_31px_51.png differ diff --git a/textures/signs_lib_font_31px_52.png b/textures/signs_lib_font_31px_52.png new file mode 100644 index 0000000..d651ab2 Binary files /dev/null and b/textures/signs_lib_font_31px_52.png differ diff --git a/textures/signs_lib_font_31px_53.png b/textures/signs_lib_font_31px_53.png new file mode 100644 index 0000000..896571d Binary files /dev/null and b/textures/signs_lib_font_31px_53.png differ diff --git a/textures/signs_lib_font_31px_54.png b/textures/signs_lib_font_31px_54.png new file mode 100644 index 0000000..ad38df3 Binary files /dev/null and b/textures/signs_lib_font_31px_54.png differ diff --git a/textures/signs_lib_font_31px_55.png b/textures/signs_lib_font_31px_55.png new file mode 100644 index 0000000..80f1ba4 Binary files /dev/null and b/textures/signs_lib_font_31px_55.png differ diff --git a/textures/signs_lib_font_31px_56.png b/textures/signs_lib_font_31px_56.png new file mode 100644 index 0000000..4db8d12 Binary files /dev/null and b/textures/signs_lib_font_31px_56.png differ diff --git a/textures/signs_lib_font_31px_57.png b/textures/signs_lib_font_31px_57.png new file mode 100644 index 0000000..7b43529 Binary files /dev/null and b/textures/signs_lib_font_31px_57.png differ diff --git a/textures/signs_lib_font_31px_58.png b/textures/signs_lib_font_31px_58.png new file mode 100644 index 0000000..8a4e863 Binary files /dev/null and b/textures/signs_lib_font_31px_58.png differ diff --git a/textures/signs_lib_font_31px_59.png b/textures/signs_lib_font_31px_59.png new file mode 100644 index 0000000..647bdb8 Binary files /dev/null and b/textures/signs_lib_font_31px_59.png differ diff --git a/textures/signs_lib_font_31px_5a.png b/textures/signs_lib_font_31px_5a.png new file mode 100644 index 0000000..7b3ba63 Binary files /dev/null and b/textures/signs_lib_font_31px_5a.png differ diff --git a/textures/signs_lib_font_31px_5b.png b/textures/signs_lib_font_31px_5b.png new file mode 100644 index 0000000..2ba87b6 Binary files /dev/null and b/textures/signs_lib_font_31px_5b.png differ diff --git a/textures/signs_lib_font_31px_5c.png b/textures/signs_lib_font_31px_5c.png new file mode 100644 index 0000000..6c7e6bf Binary files /dev/null and b/textures/signs_lib_font_31px_5c.png differ diff --git a/textures/signs_lib_font_31px_5d.png b/textures/signs_lib_font_31px_5d.png new file mode 100644 index 0000000..06575b7 Binary files /dev/null and b/textures/signs_lib_font_31px_5d.png differ diff --git a/textures/signs_lib_font_31px_5e.png b/textures/signs_lib_font_31px_5e.png new file mode 100644 index 0000000..5ac99a6 Binary files /dev/null and b/textures/signs_lib_font_31px_5e.png differ diff --git a/textures/signs_lib_font_31px_5f.png b/textures/signs_lib_font_31px_5f.png new file mode 100644 index 0000000..0841466 Binary files /dev/null and b/textures/signs_lib_font_31px_5f.png differ diff --git a/textures/signs_lib_font_31px_60.png b/textures/signs_lib_font_31px_60.png new file mode 100644 index 0000000..02e0761 Binary files /dev/null and b/textures/signs_lib_font_31px_60.png differ diff --git a/textures/signs_lib_font_31px_61.png b/textures/signs_lib_font_31px_61.png new file mode 100644 index 0000000..8591054 Binary files /dev/null and b/textures/signs_lib_font_31px_61.png differ diff --git a/textures/signs_lib_font_31px_62.png b/textures/signs_lib_font_31px_62.png new file mode 100644 index 0000000..63b6c29 Binary files /dev/null and b/textures/signs_lib_font_31px_62.png differ diff --git a/textures/signs_lib_font_31px_63.png b/textures/signs_lib_font_31px_63.png new file mode 100644 index 0000000..f0d6995 Binary files /dev/null and b/textures/signs_lib_font_31px_63.png differ diff --git a/textures/signs_lib_font_31px_64.png b/textures/signs_lib_font_31px_64.png new file mode 100644 index 0000000..f73979c Binary files /dev/null and b/textures/signs_lib_font_31px_64.png differ diff --git a/textures/signs_lib_font_31px_65.png b/textures/signs_lib_font_31px_65.png new file mode 100644 index 0000000..6bbd2ee Binary files /dev/null and b/textures/signs_lib_font_31px_65.png differ diff --git a/textures/signs_lib_font_31px_66.png b/textures/signs_lib_font_31px_66.png new file mode 100644 index 0000000..8d23c9c Binary files /dev/null and b/textures/signs_lib_font_31px_66.png differ diff --git a/textures/signs_lib_font_31px_67.png b/textures/signs_lib_font_31px_67.png new file mode 100644 index 0000000..ba5de8d Binary files /dev/null and b/textures/signs_lib_font_31px_67.png differ diff --git a/textures/signs_lib_font_31px_68.png b/textures/signs_lib_font_31px_68.png new file mode 100644 index 0000000..726598b Binary files /dev/null and b/textures/signs_lib_font_31px_68.png differ diff --git a/textures/signs_lib_font_31px_69.png b/textures/signs_lib_font_31px_69.png new file mode 100644 index 0000000..b790d77 Binary files /dev/null and b/textures/signs_lib_font_31px_69.png differ diff --git a/textures/signs_lib_font_31px_6a.png b/textures/signs_lib_font_31px_6a.png new file mode 100644 index 0000000..3e735fe Binary files /dev/null and b/textures/signs_lib_font_31px_6a.png differ diff --git a/textures/signs_lib_font_31px_6b.png b/textures/signs_lib_font_31px_6b.png new file mode 100644 index 0000000..d03c199 Binary files /dev/null and b/textures/signs_lib_font_31px_6b.png differ diff --git a/textures/signs_lib_font_31px_6c.png b/textures/signs_lib_font_31px_6c.png new file mode 100644 index 0000000..836db1a Binary files /dev/null and b/textures/signs_lib_font_31px_6c.png differ diff --git a/textures/signs_lib_font_31px_6d.png b/textures/signs_lib_font_31px_6d.png new file mode 100644 index 0000000..96387f1 Binary files /dev/null and b/textures/signs_lib_font_31px_6d.png differ diff --git a/textures/signs_lib_font_31px_6e.png b/textures/signs_lib_font_31px_6e.png new file mode 100644 index 0000000..f8a8dc6 Binary files /dev/null and b/textures/signs_lib_font_31px_6e.png differ diff --git a/textures/signs_lib_font_31px_6f.png b/textures/signs_lib_font_31px_6f.png new file mode 100644 index 0000000..8982e75 Binary files /dev/null and b/textures/signs_lib_font_31px_6f.png differ diff --git a/textures/signs_lib_font_31px_70.png b/textures/signs_lib_font_31px_70.png new file mode 100644 index 0000000..60caef9 Binary files /dev/null and b/textures/signs_lib_font_31px_70.png differ diff --git a/textures/signs_lib_font_31px_71.png b/textures/signs_lib_font_31px_71.png new file mode 100644 index 0000000..390d463 Binary files /dev/null and b/textures/signs_lib_font_31px_71.png differ diff --git a/textures/signs_lib_font_31px_72.png b/textures/signs_lib_font_31px_72.png new file mode 100644 index 0000000..c2a6b4d Binary files /dev/null and b/textures/signs_lib_font_31px_72.png differ diff --git a/textures/signs_lib_font_31px_73.png b/textures/signs_lib_font_31px_73.png new file mode 100644 index 0000000..43ec451 Binary files /dev/null and b/textures/signs_lib_font_31px_73.png differ diff --git a/textures/signs_lib_font_31px_74.png b/textures/signs_lib_font_31px_74.png new file mode 100644 index 0000000..b4f222d Binary files /dev/null and b/textures/signs_lib_font_31px_74.png differ diff --git a/textures/signs_lib_font_31px_75.png b/textures/signs_lib_font_31px_75.png new file mode 100644 index 0000000..54696ef Binary files /dev/null and b/textures/signs_lib_font_31px_75.png differ diff --git a/textures/signs_lib_font_31px_76.png b/textures/signs_lib_font_31px_76.png new file mode 100644 index 0000000..3cc3dc9 Binary files /dev/null and b/textures/signs_lib_font_31px_76.png differ diff --git a/textures/signs_lib_font_31px_77.png b/textures/signs_lib_font_31px_77.png new file mode 100644 index 0000000..948ae21 Binary files /dev/null and b/textures/signs_lib_font_31px_77.png differ diff --git a/textures/signs_lib_font_31px_78.png b/textures/signs_lib_font_31px_78.png new file mode 100644 index 0000000..78a6259 Binary files /dev/null and b/textures/signs_lib_font_31px_78.png differ diff --git a/textures/signs_lib_font_31px_79.png b/textures/signs_lib_font_31px_79.png new file mode 100644 index 0000000..dbab511 Binary files /dev/null and b/textures/signs_lib_font_31px_79.png differ diff --git a/textures/signs_lib_font_31px_7a.png b/textures/signs_lib_font_31px_7a.png new file mode 100644 index 0000000..2d12719 Binary files /dev/null and b/textures/signs_lib_font_31px_7a.png differ diff --git a/textures/signs_lib_font_31px_7b.png b/textures/signs_lib_font_31px_7b.png new file mode 100644 index 0000000..81cb103 Binary files /dev/null and b/textures/signs_lib_font_31px_7b.png differ diff --git a/textures/signs_lib_font_31px_7c.png b/textures/signs_lib_font_31px_7c.png new file mode 100644 index 0000000..fc6a626 Binary files /dev/null and b/textures/signs_lib_font_31px_7c.png differ diff --git a/textures/signs_lib_font_31px_7d.png b/textures/signs_lib_font_31px_7d.png new file mode 100644 index 0000000..70e8f75 Binary files /dev/null and b/textures/signs_lib_font_31px_7d.png differ diff --git a/textures/signs_lib_font_31px_7e.png b/textures/signs_lib_font_31px_7e.png new file mode 100644 index 0000000..cf63d5d Binary files /dev/null and b/textures/signs_lib_font_31px_7e.png differ diff --git a/textures/signs_lib_font_31px_81.png b/textures/signs_lib_font_31px_81.png new file mode 100644 index 0000000..d44b0cc Binary files /dev/null and b/textures/signs_lib_font_31px_81.png differ diff --git a/textures/signs_lib_font_31px_82.png b/textures/signs_lib_font_31px_82.png new file mode 100644 index 0000000..665b9c4 Binary files /dev/null and b/textures/signs_lib_font_31px_82.png differ diff --git a/textures/signs_lib_font_31px_83.png b/textures/signs_lib_font_31px_83.png new file mode 100644 index 0000000..8c28c96 Binary files /dev/null and b/textures/signs_lib_font_31px_83.png differ diff --git a/textures/signs_lib_font_31px_84.png b/textures/signs_lib_font_31px_84.png new file mode 100644 index 0000000..67a557b Binary files /dev/null and b/textures/signs_lib_font_31px_84.png differ diff --git a/textures/signs_lib_font_31px_85.png b/textures/signs_lib_font_31px_85.png new file mode 100644 index 0000000..9844dcb Binary files /dev/null and b/textures/signs_lib_font_31px_85.png differ diff --git a/textures/signs_lib_font_31px_86.png b/textures/signs_lib_font_31px_86.png new file mode 100644 index 0000000..a1c90cb Binary files /dev/null and b/textures/signs_lib_font_31px_86.png differ diff --git a/textures/signs_lib_font_31px_87.png b/textures/signs_lib_font_31px_87.png new file mode 100644 index 0000000..0632b15 Binary files /dev/null and b/textures/signs_lib_font_31px_87.png differ diff --git a/textures/signs_lib_font_31px_88.png b/textures/signs_lib_font_31px_88.png new file mode 100644 index 0000000..7568730 Binary files /dev/null and b/textures/signs_lib_font_31px_88.png differ diff --git a/textures/signs_lib_font_31px_8a.png b/textures/signs_lib_font_31px_8a.png new file mode 100644 index 0000000..e38280e Binary files /dev/null and b/textures/signs_lib_font_31px_8a.png differ diff --git a/textures/signs_lib_font_31px_8b.png b/textures/signs_lib_font_31px_8b.png new file mode 100644 index 0000000..7b6c97c Binary files /dev/null and b/textures/signs_lib_font_31px_8b.png differ diff --git a/textures/signs_lib_font_31px_8c.png b/textures/signs_lib_font_31px_8c.png new file mode 100644 index 0000000..fa08fba Binary files /dev/null and b/textures/signs_lib_font_31px_8c.png differ diff --git a/textures/signs_lib_font_31px_8d.png b/textures/signs_lib_font_31px_8d.png new file mode 100644 index 0000000..f4e0f71 Binary files /dev/null and b/textures/signs_lib_font_31px_8d.png differ diff --git a/textures/signs_lib_font_31px_8e.png b/textures/signs_lib_font_31px_8e.png new file mode 100644 index 0000000..d546346 Binary files /dev/null and b/textures/signs_lib_font_31px_8e.png differ diff --git a/textures/signs_lib_font_31px_8f.png b/textures/signs_lib_font_31px_8f.png new file mode 100644 index 0000000..726b7c1 Binary files /dev/null and b/textures/signs_lib_font_31px_8f.png differ diff --git a/textures/signs_lib_font_31px_90.png b/textures/signs_lib_font_31px_90.png new file mode 100644 index 0000000..c920165 Binary files /dev/null and b/textures/signs_lib_font_31px_90.png differ diff --git a/textures/signs_lib_font_31px_91.png b/textures/signs_lib_font_31px_91.png new file mode 100644 index 0000000..c3a3934 Binary files /dev/null and b/textures/signs_lib_font_31px_91.png differ diff --git a/textures/signs_lib_pole_mount.png b/textures/signs_lib_pole_mount.png new file mode 100644 index 0000000..56f64ea Binary files /dev/null and b/textures/signs_lib_pole_mount.png differ diff --git a/textures/bg_signs_lib.jpg b/textures/signs_lib_sign_bg.jpg similarity index 100% rename from textures/bg_signs_lib.jpg rename to textures/signs_lib_sign_bg.jpg diff --git a/textures/signs_lib_sign_wall_steel.png b/textures/signs_lib_sign_wall_steel.png new file mode 100644 index 0000000..eac6acd Binary files /dev/null and b/textures/signs_lib_sign_wall_steel.png differ diff --git a/textures/signs_lib_sign_wall_steel_edges.png b/textures/signs_lib_sign_wall_steel_edges.png new file mode 100644 index 0000000..791ec9f Binary files /dev/null and b/textures/signs_lib_sign_wall_steel_edges.png differ diff --git a/textures/signs_lib_sign_wall_steel_inv.png b/textures/signs_lib_sign_wall_steel_inv.png new file mode 100644 index 0000000..dfa25bf Binary files /dev/null and b/textures/signs_lib_sign_wall_steel_inv.png differ diff --git a/textures/signs_lib_sign_wall_wooden.png b/textures/signs_lib_sign_wall_wooden.png new file mode 100644 index 0000000..fd8fcbd Binary files /dev/null and b/textures/signs_lib_sign_wall_wooden.png differ diff --git a/textures/signs_lib_sign_wall_wooden_edges.png b/textures/signs_lib_sign_wall_wooden_edges.png new file mode 100644 index 0000000..9b0ac53 Binary files /dev/null and b/textures/signs_lib_sign_wall_wooden_edges.png differ diff --git a/textures/signs_lib_sign_wall_wooden_inv.png b/textures/signs_lib_sign_wall_wooden_inv.png new file mode 100644 index 0000000..3b1a078 Binary files /dev/null and b/textures/signs_lib_sign_wall_wooden_inv.png differ diff --git a/textures/signs_locked_inv.png b/textures/signs_locked_inv.png deleted file mode 100644 index 3c0554a..0000000 Binary files a/textures/signs_locked_inv.png and /dev/null differ diff --git a/textures/signs_metal_back.png b/textures/signs_metal_back.png deleted file mode 100644 index 48420b2..0000000 Binary files a/textures/signs_metal_back.png and /dev/null differ diff --git a/textures/signs_metal_sides.png b/textures/signs_metal_sides.png deleted file mode 100644 index b7b4526..0000000 Binary files a/textures/signs_metal_sides.png and /dev/null differ diff --git a/textures/signs_metal_tb.png b/textures/signs_metal_tb.png deleted file mode 100644 index 9a264f0..0000000 Binary files a/textures/signs_metal_tb.png and /dev/null differ diff --git a/textures/signs_orange_front.png b/textures/signs_orange_front.png deleted file mode 100644 index 6e81443..0000000 Binary files a/textures/signs_orange_front.png and /dev/null differ diff --git a/textures/signs_orange_inv.png b/textures/signs_orange_inv.png deleted file mode 100644 index 8f9f9e6..0000000 Binary files a/textures/signs_orange_inv.png and /dev/null differ diff --git a/textures/signs_post_back.png b/textures/signs_post_back.png deleted file mode 100644 index 829b844..0000000 Binary files a/textures/signs_post_back.png and /dev/null differ diff --git a/textures/signs_post_bottom.png b/textures/signs_post_bottom.png deleted file mode 100644 index bea83e3..0000000 Binary files a/textures/signs_post_bottom.png and /dev/null differ diff --git a/textures/signs_post_front.png b/textures/signs_post_front.png deleted file mode 100644 index 02a0e59..0000000 Binary files a/textures/signs_post_front.png and /dev/null differ diff --git a/textures/signs_post_side.png b/textures/signs_post_side.png deleted file mode 100644 index 95d7a69..0000000 Binary files a/textures/signs_post_side.png and /dev/null differ diff --git a/textures/signs_post_top.png b/textures/signs_post_top.png deleted file mode 100644 index 6b251f6..0000000 Binary files a/textures/signs_post_top.png and /dev/null differ diff --git a/textures/signs_red_front.png b/textures/signs_red_front.png deleted file mode 100644 index 7986203..0000000 Binary files a/textures/signs_red_front.png and /dev/null differ diff --git a/textures/signs_red_inv.png b/textures/signs_red_inv.png deleted file mode 100644 index af4597d..0000000 Binary files a/textures/signs_red_inv.png and /dev/null differ diff --git a/textures/signs_side.png b/textures/signs_side.png deleted file mode 100644 index ab6db9e..0000000 Binary files a/textures/signs_side.png and /dev/null differ diff --git a/textures/signs_top.png b/textures/signs_top.png deleted file mode 100644 index aa86aa8..0000000 Binary files a/textures/signs_top.png and /dev/null differ diff --git a/textures/signs_wall_sign.png b/textures/signs_wall_sign.png deleted file mode 100644 index 2f1c168..0000000 Binary files a/textures/signs_wall_sign.png and /dev/null differ diff --git a/textures/signs_wall_sign_locked.png b/textures/signs_wall_sign_locked.png deleted file mode 100644 index 7061167..0000000 Binary files a/textures/signs_wall_sign_locked.png and /dev/null differ diff --git a/textures/signs_wall_sign_metal.png b/textures/signs_wall_sign_metal.png deleted file mode 100644 index 7eff1a6..0000000 Binary files a/textures/signs_wall_sign_metal.png and /dev/null differ diff --git a/textures/signs_white_black_front.png b/textures/signs_white_black_front.png deleted file mode 100644 index f4163f1..0000000 Binary files a/textures/signs_white_black_front.png and /dev/null differ diff --git a/textures/signs_white_black_inv.png b/textures/signs_white_black_inv.png deleted file mode 100644 index 42bb014..0000000 Binary files a/textures/signs_white_black_inv.png and /dev/null differ diff --git a/textures/signs_white_red_front.png b/textures/signs_white_red_front.png deleted file mode 100644 index 48216c9..0000000 Binary files a/textures/signs_white_red_front.png and /dev/null differ diff --git a/textures/signs_white_red_inv.png b/textures/signs_white_red_inv.png deleted file mode 100644 index 52ac3c8..0000000 Binary files a/textures/signs_white_red_inv.png and /dev/null differ diff --git a/textures/signs_yellow_front.png b/textures/signs_yellow_front.png deleted file mode 100644 index b05b9a4..0000000 Binary files a/textures/signs_yellow_front.png and /dev/null differ diff --git a/textures/signs_yellow_inv.png b/textures/signs_yellow_inv.png deleted file mode 100644 index 5b7354b..0000000 Binary files a/textures/signs_yellow_inv.png and /dev/null differ diff --git a/textures/slc_0.png b/textures/slc_0.png deleted file mode 100644 index 17c6631..0000000 Binary files a/textures/slc_0.png and /dev/null differ diff --git a/textures/slc_1.png b/textures/slc_1.png deleted file mode 100644 index 3cbbbe6..0000000 Binary files a/textures/slc_1.png and /dev/null differ diff --git a/textures/slc_2.png b/textures/slc_2.png deleted file mode 100644 index f86ae90..0000000 Binary files a/textures/slc_2.png and /dev/null differ diff --git a/textures/slc_3.png b/textures/slc_3.png deleted file mode 100644 index 1938911..0000000 Binary files a/textures/slc_3.png and /dev/null differ diff --git a/textures/slc_4.png b/textures/slc_4.png deleted file mode 100644 index cdcb302..0000000 Binary files a/textures/slc_4.png and /dev/null differ diff --git a/textures/slc_5.png b/textures/slc_5.png deleted file mode 100644 index 57ff7b5..0000000 Binary files a/textures/slc_5.png and /dev/null differ diff --git a/textures/slc_6.png b/textures/slc_6.png deleted file mode 100644 index de15f52..0000000 Binary files a/textures/slc_6.png and /dev/null differ diff --git a/textures/slc_7.png b/textures/slc_7.png deleted file mode 100644 index a38eb42..0000000 Binary files a/textures/slc_7.png and /dev/null differ diff --git a/textures/slc_8.png b/textures/slc_8.png deleted file mode 100644 index b0e5941..0000000 Binary files a/textures/slc_8.png and /dev/null differ diff --git a/textures/slc_9.png b/textures/slc_9.png deleted file mode 100644 index d2a0974..0000000 Binary files a/textures/slc_9.png and /dev/null differ diff --git a/textures/slc_A.png b/textures/slc_A.png deleted file mode 100644 index bed719c..0000000 Binary files a/textures/slc_A.png and /dev/null differ diff --git a/textures/slc_B.png b/textures/slc_B.png deleted file mode 100644 index f1f9d26..0000000 Binary files a/textures/slc_B.png and /dev/null differ diff --git a/textures/slc_C.png b/textures/slc_C.png deleted file mode 100644 index 1822a5d..0000000 Binary files a/textures/slc_C.png and /dev/null differ diff --git a/textures/slc_D.png b/textures/slc_D.png deleted file mode 100644 index a9f06c4..0000000 Binary files a/textures/slc_D.png and /dev/null differ diff --git a/textures/slc_E.png b/textures/slc_E.png deleted file mode 100644 index d73776b..0000000 Binary files a/textures/slc_E.png and /dev/null differ diff --git a/textures/slc_F.png b/textures/slc_F.png deleted file mode 100644 index e59813b..0000000 Binary files a/textures/slc_F.png and /dev/null differ diff --git a/textures/slc_n.png b/textures/slc_n.png deleted file mode 100644 index 8f59c9b..0000000 Binary files a/textures/slc_n.png and /dev/null differ