Compare commits
24 Commits
2021-01-30
...
c08eb3452f
Author | SHA1 | Date | |
---|---|---|---|
c08eb3452f | |||
3ee06f9ba2 | |||
02c19e89d9 | |||
8b6f5e23a6 | |||
85dd92fb25 | |||
16b9251511 | |||
b0fac5ef9f | |||
34689b5b04 | |||
8b6e41c3fe | |||
d077d23f1a | |||
d71dcf4874 | |||
ac8b00f826 | |||
707f633f0d | |||
c82952befb | |||
26c3935c9b | |||
3ef11a995b | |||
22af21aeaf | |||
af45e591e3 | |||
b174cea893 | |||
4a196211ee | |||
942e91e00e | |||
4b2d4db848 | |||
4b432eec08 | |||
d956c87dbc |
@ -22,7 +22,7 @@ That said, there are some basic text formatting options:
|
||||
|
||||
Writing "^" followed by a letter "a" through "h" will produce double-wide versions of these arrows, in the same order. These wide arrows occupy 0x89 to 0x91 in the character set.
|
||||
|
||||
* A color may be specified in the sign text by using "#" followed by a single hexadcimal digit (0-9 or a-f). These colors come from the standard Linux/IRC/CGA color set, and are shown in the sign's formspec. Any color change will remain in effect until changed again, or until the next line break. Any number of color changes in any arbitrary arrangement is allowed.
|
||||
* A color may be specified in the sign text by using "#" followed by a single hexadcimal digit (0-9 or a-f). These colors come from the standard Linux/IRC/CGA color set, and are shown in the sign's formspec. Any color change will remain in effect until changed again, or until the next line break. Any number of color changes in any arbitrary arrangement is allowed. To write "#" on a sign, write "##".
|
||||
|
||||
* Most writable signs can display double-wide text by flipping a switch in the sign's formspec.
|
||||
|
||||
|
178
api.lua
@ -4,6 +4,8 @@ local S = signs_lib.gettext
|
||||
|
||||
local function get_sign_formspec() end
|
||||
|
||||
signs_lib.glow_item = "basic_materials:energy_crystal_simple"
|
||||
|
||||
signs_lib.lbm_restore_nodes = {}
|
||||
signs_lib.old_fenceposts = {}
|
||||
signs_lib.old_fenceposts_replacement_signs = {}
|
||||
@ -155,6 +157,7 @@ signs_lib.flip_walldir = {
|
||||
|
||||
-- Initialize character texture cache
|
||||
local ctexcache = {}
|
||||
local ctexcache_wide = {}
|
||||
|
||||
-- entity handling
|
||||
|
||||
@ -179,7 +182,7 @@ function signs_lib.delete_objects(pos)
|
||||
end
|
||||
end
|
||||
|
||||
function signs_lib.spawn_entity(pos, texture)
|
||||
function signs_lib.spawn_entity(pos, texture, glow)
|
||||
local node = minetest.get_node(pos)
|
||||
local def = minetest.registered_items[node.name]
|
||||
if not def or not def.entity_info then return end
|
||||
@ -228,6 +231,10 @@ function signs_lib.spawn_entity(pos, texture)
|
||||
end
|
||||
end
|
||||
|
||||
if glow ~= "" then
|
||||
obj:set_properties( {glow = tonumber(glow * 5)} )
|
||||
end
|
||||
|
||||
if yaw then
|
||||
obj:set_rotation({x = pitch, y = yaw, z=0})
|
||||
|
||||
@ -246,12 +253,16 @@ function signs_lib.spawn_entity(pos, texture)
|
||||
end
|
||||
end
|
||||
|
||||
function signs_lib.set_obj_text(pos, text)
|
||||
function signs_lib.set_obj_text(pos, text, glow)
|
||||
local split = signs_lib.split_lines_and_words
|
||||
local text_ansi = Utf8ToAnsi(text)
|
||||
local n = minetest.registered_nodes[minetest.get_node(pos).name]
|
||||
signs_lib.delete_objects(pos)
|
||||
signs_lib.spawn_entity(pos, signs_lib.make_sign_texture(split(text_ansi), pos) )
|
||||
-- only create sign entity for actual text
|
||||
if text_ansi and text_ansi ~= "" then
|
||||
signs_lib.spawn_entity(pos,
|
||||
signs_lib.make_sign_texture(split(text_ansi), pos), glow)
|
||||
end
|
||||
end
|
||||
|
||||
-- rotation
|
||||
@ -330,8 +341,10 @@ end
|
||||
local TP = signs_lib.path .. "/textures"
|
||||
-- Font file formatter
|
||||
local CHAR_FILE = "%s_%02x.png"
|
||||
local CHAR_FILE_WIDE = "%s_%s.png"
|
||||
-- Fonts path
|
||||
local CHAR_PATH = TP .. "/" .. CHAR_FILE
|
||||
local CHAR_PATH_WIDE = TP .. "/" .. CHAR_FILE_WIDE
|
||||
|
||||
-- Lots of overkill here. KISS advocates, go away, shoo! ;) -- kaeza
|
||||
|
||||
@ -391,6 +404,7 @@ end
|
||||
local function build_char_db(font_size)
|
||||
|
||||
local cw = {}
|
||||
local cw_wide = {}
|
||||
|
||||
-- To calculate average char width.
|
||||
local total_width = 0
|
||||
@ -406,20 +420,32 @@ local function build_char_db(font_size)
|
||||
end
|
||||
end
|
||||
|
||||
for i = 1, #signs_lib.wide_character_codes do
|
||||
local ch = signs_lib.wide_character_codes[i]
|
||||
local w, h = signs_lib.read_image_size(CHAR_PATH_WIDE:format("signs_lib_font_"..font_size.."px", ch))
|
||||
if w and h then
|
||||
cw_wide[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)
|
||||
return cw, cbw, cbh, (total_width / char_count), cw_wide
|
||||
end
|
||||
|
||||
signs_lib.charwidth15,
|
||||
signs_lib.colorbgw15,
|
||||
signs_lib.lineheight15,
|
||||
signs_lib.avgwidth15 = build_char_db(15)
|
||||
signs_lib.avgwidth15,
|
||||
signs_lib.charwidth_wide15 = build_char_db(15)
|
||||
|
||||
signs_lib.charwidth31,
|
||||
signs_lib.colorbgw31,
|
||||
signs_lib.lineheight31,
|
||||
signs_lib.avgwidth31 = build_char_db(31)
|
||||
signs_lib.avgwidth31,
|
||||
signs_lib.charwidth_wide31 = build_char_db(31)
|
||||
|
||||
local sign_groups = {choppy=2, dig_immediate=2}
|
||||
local fences_with_sign = { }
|
||||
@ -455,7 +481,22 @@ local function char_tex(font_name, ch)
|
||||
end
|
||||
end
|
||||
|
||||
local function make_line_texture(line, lineno, pos, line_width, line_height, cwidth_tab, font_size, colorbgw)
|
||||
local function char_tex_wide(font_name, ch)
|
||||
if ctexcache_wide[font_name..ch] then
|
||||
return ctexcache_wide[font_name..ch], true
|
||||
else
|
||||
local exists, tex = file_exists(CHAR_PATH_WIDE:format(font_name, ch))
|
||||
if exists then
|
||||
tex = CHAR_FILE_WIDE:format(font_name, ch)
|
||||
else
|
||||
tex = CHAR_FILE:format(font_name, 0x5f)
|
||||
end
|
||||
ctexcache_wide[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, cwidth_tab_wide)
|
||||
local width = 0
|
||||
local maxw = 0
|
||||
local font_name = "signs_lib_font_"..font_size.."px"
|
||||
@ -492,13 +533,54 @@ local function make_line_texture(line, lineno, pos, line_width, line_height, cwi
|
||||
local word_l = #word
|
||||
local i = 1
|
||||
while i <= word_l do
|
||||
local wide_c
|
||||
if "&#x" == word:sub(i, i + 2) then
|
||||
local j = i + 3
|
||||
local collected = ""
|
||||
while j <= word_l do
|
||||
local c = word:sub(j, j)
|
||||
if c == ";" then
|
||||
wide_c = collected
|
||||
break
|
||||
elseif c < "0" then
|
||||
break
|
||||
elseif "f" < c then
|
||||
break
|
||||
elseif ("9" < c) and (c < "a") then
|
||||
break
|
||||
else
|
||||
collected = collected .. c
|
||||
j = j + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
local c = word:sub(i, i)
|
||||
if c == "#" then
|
||||
local cc = tonumber(word:sub(i+1, i+1), 16)
|
||||
local c2 = word:sub(i+1, i+1)
|
||||
if c == "#" and c2 ~= "#" then
|
||||
local cc = tonumber(c2, 16)
|
||||
if cc then
|
||||
i = i + 1
|
||||
cur_color = cc
|
||||
end
|
||||
elseif wide_c then
|
||||
local w = cwidth_tab_wide[wide_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_wide(font_name, wide_c),
|
||||
col = ("%X"):format(cur_color),
|
||||
})
|
||||
end
|
||||
ch_offs = ch_offs + w
|
||||
end
|
||||
i = i + #wide_c + 3
|
||||
else
|
||||
local w = cwidth_tab[c]
|
||||
if w then
|
||||
@ -578,6 +660,7 @@ function signs_lib.make_sign_texture(lines, pos)
|
||||
local line_width
|
||||
local line_height
|
||||
local char_width
|
||||
local char_width_wide
|
||||
local colorbgw
|
||||
local widemult = 1
|
||||
|
||||
@ -590,12 +673,14 @@ function signs_lib.make_sign_texture(lines, pos)
|
||||
line_width = math.floor(signs_lib.avgwidth31 * def.chars_per_line) * (def.horiz_scaling * widemult)
|
||||
line_height = signs_lib.lineheight31
|
||||
char_width = signs_lib.charwidth31
|
||||
char_width_wide = signs_lib.charwidth_wide31
|
||||
colorbgw = signs_lib.colorbgw31
|
||||
else
|
||||
font_size = 15
|
||||
line_width = math.floor(signs_lib.avgwidth15 * def.chars_per_line) * (def.horiz_scaling * widemult)
|
||||
line_height = signs_lib.lineheight15
|
||||
char_width = signs_lib.charwidth15
|
||||
char_width_wide = signs_lib.charwidth_wide15
|
||||
colorbgw = signs_lib.colorbgw15
|
||||
end
|
||||
|
||||
@ -604,7 +689,7 @@ function signs_lib.make_sign_texture(lines, pos)
|
||||
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)
|
||||
local linetex, ln = make_line_texture(lines[i], lineno, pos, line_width, line_height, char_width, font_size, colorbgw, char_width_wide)
|
||||
table.insert(texture, linetex)
|
||||
lineno = ln + 1
|
||||
end
|
||||
@ -623,13 +708,19 @@ end
|
||||
|
||||
function signs_lib.rightclick_sign(pos, node, player, itemstack, pointed_thing)
|
||||
|
||||
if not signs_lib.can_modify(pos, player) then return end
|
||||
if not player or not signs_lib.can_modify(pos, player) then return end
|
||||
|
||||
player:get_meta():set_string("signslib:pos", minetest.pos_to_string(pos))
|
||||
minetest.show_formspec(player:get_player_name(), "signs_lib:sign", get_sign_formspec(pos, node.name))
|
||||
end
|
||||
|
||||
function signs_lib.destruct_sign(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local glow = meta:get_string("glow")
|
||||
if glow ~= "" and not minetest.is_creative_enabled("") then
|
||||
local num = tonumber(glow)
|
||||
minetest.add_item(pos, ItemStack(signs_lib.glow_item .. " " .. num))
|
||||
end
|
||||
signs_lib.delete_objects(pos)
|
||||
end
|
||||
|
||||
@ -643,6 +734,30 @@ local function make_infotext(text)
|
||||
return table.concat(lines2, "\n")
|
||||
end
|
||||
|
||||
function signs_lib.glow(pos, node, puncher)
|
||||
local name = puncher:get_player_name()
|
||||
if minetest.is_protected(pos, name) then
|
||||
return
|
||||
end
|
||||
local tool = puncher:get_wielded_item()
|
||||
if tool:get_name() == signs_lib.glow_item then
|
||||
local meta = minetest.get_meta(pos)
|
||||
local glow = tonumber(meta:get_string("glow"))
|
||||
if not glow then
|
||||
glow = 1
|
||||
elseif glow < 3 then
|
||||
glow = glow + 1
|
||||
else
|
||||
return -- already at brightest level
|
||||
end
|
||||
if not minetest.is_creative_enabled(name) then
|
||||
tool:take_item()
|
||||
puncher:set_wielded_item(tool)
|
||||
end
|
||||
meta:set_string("glow", glow)
|
||||
end
|
||||
end
|
||||
|
||||
function signs_lib.update_sign(pos, fields)
|
||||
local meta = minetest.get_meta(pos)
|
||||
|
||||
@ -660,7 +775,9 @@ function signs_lib.update_sign(pos, fields)
|
||||
|
||||
meta:set_string("text", text)
|
||||
meta:set_string("infotext", ownstr..make_infotext(text).." ")
|
||||
signs_lib.set_obj_text(pos, text)
|
||||
|
||||
local glow = meta:get_string("glow")
|
||||
signs_lib.set_obj_text(pos, text, glow)
|
||||
end
|
||||
|
||||
function signs_lib.can_modify(pos, player)
|
||||
@ -825,6 +942,23 @@ 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
|
||||
|
||||
local use_glow = function(pos, node, puncher, pointed_thing)
|
||||
if puncher then -- if e.g. a machine tries to punch; only a real person should change the lighting
|
||||
signs_lib.glow(pos, node, puncher)
|
||||
end
|
||||
return signs_lib.update_sign(pos)
|
||||
end
|
||||
|
||||
local glow_drops = function(pos, oldnode, oldmetadata, digger)
|
||||
if minetest.is_creative_enabled(digger:get_player_name()) then
|
||||
return
|
||||
end
|
||||
local glow = oldmetadata and oldmetadata.fields and oldmetadata.fields.glow
|
||||
if glow then
|
||||
minetest.add_item(pos, ItemStack(signs_lib.glow_item .. " " .. glow))
|
||||
end
|
||||
end
|
||||
|
||||
function signs_lib.register_sign(name, raw_def)
|
||||
local def = table.copy(raw_def)
|
||||
|
||||
@ -840,9 +974,16 @@ function signs_lib.register_sign(name, raw_def)
|
||||
def.after_place_node = raw_def.after_place_node or signs_lib.after_place_node
|
||||
|
||||
if raw_def.entity_info then
|
||||
|
||||
if def.allow_glow ~= false then
|
||||
def.on_punch = raw_def.on_punch or use_glow
|
||||
def.after_dig_node = raw_def.after_dig_node or glow_drops
|
||||
else
|
||||
def.on_punch = raw_def.on_punch or signs_lib.update_sign
|
||||
end
|
||||
|
||||
def.on_rightclick = raw_def.on_rightclick or signs_lib.rightclick_sign
|
||||
def.on_destruct = raw_def.on_destruct or signs_lib.destruct_sign
|
||||
def.on_punch = raw_def.on_punch or signs_lib.update_sign
|
||||
def.number_of_lines = raw_def.number_of_lines or signs_lib.standard_lines
|
||||
def.horiz_scaling = raw_def.horiz_scaling or signs_lib.standard_hscale
|
||||
def.vert_scaling = raw_def.vert_scaling or signs_lib.standard_vscale
|
||||
@ -1151,16 +1292,17 @@ function get_sign_formspec(pos, nodename)
|
||||
|
||||
local formspec = {
|
||||
"size[6,4]",
|
||||
"textarea[0,-0.3;6.5,3;text;;" .. minetest.formspec_escape(txt) .. "]",
|
||||
"background[-0.5,-0.5;7,5;signs_lib_sign_bg.jpg]",
|
||||
"button_exit[2,3.4;2,1;ok;" .. S("Write") .. "]"
|
||||
"background[-0.5,-0.5;7,5;signs_lib_sign_bg.png]",
|
||||
"image[0.1,2.4;7,1;signs_lib_sign_color_palette.png]",
|
||||
"textarea[0.15,-0.2;6.3,2.8;text;;" .. minetest.formspec_escape(txt) .. "]",
|
||||
"button_exit[3,3.4;2,1;ok;" .. S("Write") .. "]"
|
||||
}
|
||||
|
||||
if minetest.registered_nodes[nodename].allow_widefont then
|
||||
local state = "off"
|
||||
if meta:get_int("widefont") == 1 then state = "on" end
|
||||
formspec[5] = "label[0.5,3.4;Use wide font]"
|
||||
formspec[6] = "image_button[0.6,3.7;1,0.6;signs_lib_switch_" .. state .. ".png;"
|
||||
formspec[#formspec+1] = "label[0.9,3.4;Use wide font]"
|
||||
formspec[#formspec+1] = "image_button[1.1,3.7;1,0.6;signs_lib_switch_" .. state .. ".png;"
|
||||
.. state .. ";;;false;signs_lib_switch_interm.png]"
|
||||
end
|
||||
|
||||
|
@ -1,7 +0,0 @@
|
||||
default
|
||||
intllib?
|
||||
screwdriver?
|
||||
streetspoles?
|
||||
streetlamps?
|
||||
cottages?
|
||||
prefab_redo?
|
@ -1 +0,0 @@
|
||||
Adds signs with readable text.
|
59
encoding.lua
@ -203,6 +203,32 @@ local utf8_decode = {
|
||||
[210] = {[144] = "\165", [145] = "\180"}
|
||||
}
|
||||
|
||||
local wide_character_codes = {
|
||||
}
|
||||
|
||||
signs_lib.unicode_install = function(
|
||||
numbers
|
||||
)
|
||||
local scope = utf8_decode
|
||||
for i = 1,#numbers-2 do
|
||||
if not scope[numbers[i]] then
|
||||
scope[numbers[i]] = {}
|
||||
end
|
||||
scope = scope[numbers[i]]
|
||||
end
|
||||
scope[numbers[#numbers-1]] = "&#x" .. numbers[#numbers] .. ";"
|
||||
table.insert(
|
||||
wide_character_codes,
|
||||
numbers[#numbers]
|
||||
)
|
||||
end
|
||||
|
||||
signs_lib.unicode_install({38,"26"})
|
||||
|
||||
dofile(signs_lib.path.."/nonascii-de.lua")
|
||||
dofile(signs_lib.path.."/nonascii-fr.lua")
|
||||
dofile(signs_lib.path.."/nonascii-pl.lua")
|
||||
|
||||
local nmdc = {
|
||||
[36] = "$",
|
||||
[124] = "|"
|
||||
@ -230,36 +256,33 @@ function AnsiToUtf8(s)
|
||||
end
|
||||
|
||||
function Utf8ToAnsi(s)
|
||||
local a, j, r, b = 0, 0, ""
|
||||
local a, j, r, b, scope = 0, 0, ""
|
||||
for i = 1, s and s:len() or 0 do
|
||||
b = s:byte(i)
|
||||
if b < 128 then
|
||||
if b == 0x26 then
|
||||
r = r .. "&"
|
||||
elseif b < 128 then
|
||||
if nmdc[b] then
|
||||
r = r .. nmdc[b]
|
||||
else
|
||||
r = r .. string.char(b)
|
||||
end
|
||||
elseif a == 2 then
|
||||
a, j = a - 1, b
|
||||
elseif a == 1 then
|
||||
--if j == nil or b == nil then return r end
|
||||
--print(j)
|
||||
--print(b)
|
||||
--local ansi = utf8_decode[j]
|
||||
--if ansi == nil then return r end
|
||||
--if ansi[b] == nil then return r end
|
||||
if utf8_decode[j] then
|
||||
if utf8_decode[j][b] then
|
||||
a, r = a - 1, r .. utf8_decode[j][b]
|
||||
elseif scope then
|
||||
if scope[b] then
|
||||
scope = scope[b]
|
||||
if "string" == type(scope) then
|
||||
r, scope = r .. scope
|
||||
end
|
||||
else
|
||||
r, scope = r .. "_"
|
||||
end
|
||||
elseif b == 226 then
|
||||
a = 2
|
||||
elseif b == 194 or b == 208 or b == 209 or b == 210 then
|
||||
j, a = b, 1
|
||||
elseif utf8_decode[b] then
|
||||
scope = utf8_decode[b]
|
||||
else
|
||||
r = r .. "_"
|
||||
end
|
||||
end
|
||||
return r
|
||||
end
|
||||
|
||||
signs_lib.wide_character_codes = wide_character_codes
|
||||
|
2
init.lua
@ -10,7 +10,7 @@ signs_lib.path = minetest.get_modpath(minetest.get_current_modname())
|
||||
local S, NS = dofile(signs_lib.path .. "/intllib.lua")
|
||||
signs_lib.gettext = S
|
||||
|
||||
dofile(signs_lib.path.."/api.lua")
|
||||
dofile(signs_lib.path.."/encoding.lua")
|
||||
dofile(signs_lib.path.."/api.lua")
|
||||
dofile(signs_lib.path.."/standard_signs.lua")
|
||||
dofile(signs_lib.path.."/compat.lua")
|
||||
|
6
mod.conf
@ -1,2 +1,6 @@
|
||||
name = signs_lib
|
||||
min_minetest_version = 5.2.0
|
||||
author = VanessaE
|
||||
depends = default
|
||||
optional_depends = intllib, screwdriver, streetspoles, streetlamps, cottages, prefab_redo
|
||||
description = Adds signs with readable text.
|
||||
min_minetest_version = 5.4.0
|
||||
|
7
nonascii-de.lua
Normal file
@ -0,0 +1,7 @@
|
||||
signs_lib.unicode_install({195,132,"00c4"})
|
||||
signs_lib.unicode_install({195,150,"00d6"})
|
||||
signs_lib.unicode_install({195,156,"00dc"})
|
||||
signs_lib.unicode_install({195,159,"00df"})
|
||||
signs_lib.unicode_install({195,164,"00e4"})
|
||||
signs_lib.unicode_install({195,182,"00f6"})
|
||||
signs_lib.unicode_install({195,188,"00fc"})
|
16
nonascii-fr.lua
Normal file
@ -0,0 +1,16 @@
|
||||
signs_lib.unicode_install({195,128,"00c0"})
|
||||
signs_lib.unicode_install({195,134,"00c6"})
|
||||
signs_lib.unicode_install({195,135,"00c7"})
|
||||
signs_lib.unicode_install({195,136,"00c8"})
|
||||
signs_lib.unicode_install({195,137,"00c9"})
|
||||
signs_lib.unicode_install({195,138,"00ca"})
|
||||
signs_lib.unicode_install({195,148,"00d4"})
|
||||
signs_lib.unicode_install({195,153,"00d9"})
|
||||
signs_lib.unicode_install({195,160,"00e0"})
|
||||
signs_lib.unicode_install({195,166,"00e6"})
|
||||
signs_lib.unicode_install({195,167,"00e7"})
|
||||
signs_lib.unicode_install({195,168,"00e8"})
|
||||
signs_lib.unicode_install({195,169,"00e9"})
|
||||
signs_lib.unicode_install({195,170,"00ea"})
|
||||
signs_lib.unicode_install({195,180,"00f4"})
|
||||
signs_lib.unicode_install({195,185,"00f9"})
|
16
nonascii-pl.lua
Normal file
@ -0,0 +1,16 @@
|
||||
signs_lib.unicode_install({195,147,"00d3"})
|
||||
signs_lib.unicode_install({195,179,"00f3"})
|
||||
signs_lib.unicode_install({196,132,"0104"})
|
||||
signs_lib.unicode_install({196,133,"0105"})
|
||||
signs_lib.unicode_install({196,134,"0106"})
|
||||
signs_lib.unicode_install({196,135,"0107"})
|
||||
signs_lib.unicode_install({196,152,"0118"})
|
||||
signs_lib.unicode_install({196,153,"0119"})
|
||||
signs_lib.unicode_install({197,129,"0141"})
|
||||
signs_lib.unicode_install({197,130,"0142"})
|
||||
signs_lib.unicode_install({197,154,"015a"})
|
||||
signs_lib.unicode_install({197,155,"015b"})
|
||||
signs_lib.unicode_install({197,185,"0179"})
|
||||
signs_lib.unicode_install({197,186,"017a"})
|
||||
signs_lib.unicode_install({197,187,"017b"})
|
||||
signs_lib.unicode_install({197,188,"017c"})
|
@ -14,7 +14,8 @@ signs_lib.register_sign("default:sign_wall_wood", {
|
||||
allow_widefont = true,
|
||||
allow_onpole = true,
|
||||
allow_onpole_horizontal = true,
|
||||
allow_yard = true
|
||||
allow_yard = true,
|
||||
use_texture_alpha = "clip",
|
||||
})
|
||||
|
||||
signs_lib.register_sign("default:sign_wall_steel", {
|
||||
@ -35,7 +36,8 @@ signs_lib.register_sign("default:sign_wall_steel", {
|
||||
allow_widefont = true,
|
||||
allow_onpole = true,
|
||||
allow_onpole_horizontal = true,
|
||||
allow_yard = true
|
||||
allow_yard = true,
|
||||
use_texture_alpha = "clip",
|
||||
})
|
||||
|
||||
minetest.register_alias("signs:sign_hanging", "default:sign_wood_hanging")
|
||||
|
BIN
textures/signs_lib_font_15px_00c0.png
Normal file
After Width: | Height: | Size: 337 B |
BIN
textures/signs_lib_font_15px_00c4.png
Normal file
After Width: | Height: | Size: 337 B |
BIN
textures/signs_lib_font_15px_00c6.png
Normal file
After Width: | Height: | Size: 345 B |
BIN
textures/signs_lib_font_15px_00c7.png
Normal file
After Width: | Height: | Size: 334 B |
BIN
textures/signs_lib_font_15px_00c8.png
Normal file
After Width: | Height: | Size: 323 B |
BIN
textures/signs_lib_font_15px_00c9.png
Normal file
After Width: | Height: | Size: 324 B |
BIN
textures/signs_lib_font_15px_00ca.png
Normal file
After Width: | Height: | Size: 325 B |
BIN
textures/signs_lib_font_15px_00d3.png
Normal file
After Width: | Height: | Size: 331 B |
BIN
textures/signs_lib_font_15px_00d4.png
Normal file
After Width: | Height: | Size: 341 B |
BIN
textures/signs_lib_font_15px_00d6.png
Normal file
After Width: | Height: | Size: 341 B |
BIN
textures/signs_lib_font_15px_00d9.png
Normal file
After Width: | Height: | Size: 324 B |
BIN
textures/signs_lib_font_15px_00dc.png
Normal file
After Width: | Height: | Size: 326 B |
BIN
textures/signs_lib_font_15px_00df.png
Normal file
After Width: | Height: | Size: 332 B |
BIN
textures/signs_lib_font_15px_00e0.png
Normal file
After Width: | Height: | Size: 332 B |
BIN
textures/signs_lib_font_15px_00e4.png
Normal file
After Width: | Height: | Size: 328 B |
BIN
textures/signs_lib_font_15px_00e6.png
Normal file
After Width: | Height: | Size: 340 B |
BIN
textures/signs_lib_font_15px_00e7.png
Normal file
After Width: | Height: | Size: 329 B |
BIN
textures/signs_lib_font_15px_00e8.png
Normal file
After Width: | Height: | Size: 337 B |
BIN
textures/signs_lib_font_15px_00e9.png
Normal file
After Width: | Height: | Size: 333 B |
BIN
textures/signs_lib_font_15px_00ea.png
Normal file
After Width: | Height: | Size: 337 B |
BIN
textures/signs_lib_font_15px_00f3.png
Normal file
After Width: | Height: | Size: 330 B |
BIN
textures/signs_lib_font_15px_00f4.png
Normal file
After Width: | Height: | Size: 334 B |
BIN
textures/signs_lib_font_15px_00f6.png
Normal file
After Width: | Height: | Size: 332 B |
BIN
textures/signs_lib_font_15px_00f9.png
Normal file
After Width: | Height: | Size: 327 B |
BIN
textures/signs_lib_font_15px_00fc.png
Normal file
After Width: | Height: | Size: 319 B |
BIN
textures/signs_lib_font_15px_0104.png
Normal file
After Width: | Height: | Size: 339 B |
BIN
textures/signs_lib_font_15px_0105.png
Normal file
After Width: | Height: | Size: 331 B |
BIN
textures/signs_lib_font_15px_0106.png
Normal file
After Width: | Height: | Size: 334 B |
BIN
textures/signs_lib_font_15px_0107.png
Normal file
After Width: | Height: | Size: 329 B |
BIN
textures/signs_lib_font_15px_0118.png
Normal file
After Width: | Height: | Size: 323 B |
BIN
textures/signs_lib_font_15px_0119.png
Normal file
After Width: | Height: | Size: 332 B |
BIN
textures/signs_lib_font_15px_0141.png
Normal file
After Width: | Height: | Size: 319 B |
BIN
textures/signs_lib_font_15px_0142.png
Normal file
After Width: | Height: | Size: 310 B |
BIN
textures/signs_lib_font_15px_015a.png
Normal file
After Width: | Height: | Size: 340 B |
BIN
textures/signs_lib_font_15px_015b.png
Normal file
After Width: | Height: | Size: 330 B |
BIN
textures/signs_lib_font_15px_0179.png
Normal file
After Width: | Height: | Size: 329 B |
BIN
textures/signs_lib_font_15px_017a.png
Normal file
After Width: | Height: | Size: 324 B |
BIN
textures/signs_lib_font_15px_017b.png
Normal file
After Width: | Height: | Size: 329 B |
BIN
textures/signs_lib_font_15px_017c.png
Normal file
After Width: | Height: | Size: 326 B |
Before Width: | Height: | Size: 83 B After Width: | Height: | Size: 305 B |
Before Width: | Height: | Size: 83 B After Width: | Height: | Size: 296 B |
Before Width: | Height: | Size: 97 B After Width: | Height: | Size: 323 B |
Before Width: | Height: | Size: 112 B After Width: | Height: | Size: 332 B |
Before Width: | Height: | Size: 125 B After Width: | Height: | Size: 347 B |
Before Width: | Height: | Size: 120 B After Width: | Height: | Size: 341 B |
Before Width: | Height: | Size: 78 B After Width: | Height: | Size: 299 B |
Before Width: | Height: | Size: 88 B After Width: | Height: | Size: 312 B |
Before Width: | Height: | Size: 88 B After Width: | Height: | Size: 312 B |
Before Width: | Height: | Size: 90 B After Width: | Height: | Size: 313 B |
Before Width: | Height: | Size: 84 B After Width: | Height: | Size: 309 B |
Before Width: | Height: | Size: 79 B After Width: | Height: | Size: 302 B |
Before Width: | Height: | Size: 77 B After Width: | Height: | Size: 298 B |
Before Width: | Height: | Size: 77 B After Width: | Height: | Size: 298 B |
Before Width: | Height: | Size: 93 B After Width: | Height: | Size: 313 B |
Before Width: | Height: | Size: 97 B After Width: | Height: | Size: 316 B |
Before Width: | Height: | Size: 87 B After Width: | Height: | Size: 318 B |
Before Width: | Height: | Size: 113 B After Width: | Height: | Size: 332 B |
Before Width: | Height: | Size: 109 B After Width: | Height: | Size: 334 B |
Before Width: | Height: | Size: 103 B After Width: | Height: | Size: 326 B |
Before Width: | Height: | Size: 109 B After Width: | Height: | Size: 325 B |
Before Width: | Height: | Size: 104 B After Width: | Height: | Size: 331 B |
Before Width: | Height: | Size: 95 B After Width: | Height: | Size: 321 B |
Before Width: | Height: | Size: 104 B After Width: | Height: | Size: 328 B |
Before Width: | Height: | Size: 110 B After Width: | Height: | Size: 332 B |
Before Width: | Height: | Size: 77 B After Width: | Height: | Size: 298 B |
Before Width: | Height: | Size: 80 B After Width: | Height: | Size: 305 B |
Before Width: | Height: | Size: 96 B After Width: | Height: | Size: 322 B |
Before Width: | Height: | Size: 80 B After Width: | Height: | Size: 302 B |
Before Width: | Height: | Size: 95 B After Width: | Height: | Size: 324 B |
Before Width: | Height: | Size: 102 B After Width: | Height: | Size: 329 B |
Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 359 B |
Before Width: | Height: | Size: 117 B After Width: | Height: | Size: 332 B |
Before Width: | Height: | Size: 97 B After Width: | Height: | Size: 324 B |
Before Width: | Height: | Size: 113 B After Width: | Height: | Size: 330 B |
Before Width: | Height: | Size: 104 B After Width: | Height: | Size: 330 B |
Before Width: | Height: | Size: 92 B After Width: | Height: | Size: 315 B |
Before Width: | Height: | Size: 91 B After Width: | Height: | Size: 311 B |
Before Width: | Height: | Size: 118 B After Width: | Height: | Size: 335 B |
Before Width: | Height: | Size: 89 B After Width: | Height: | Size: 313 B |
Before Width: | Height: | Size: 77 B After Width: | Height: | Size: 300 B |
Before Width: | Height: | Size: 91 B After Width: | Height: | Size: 319 B |
Before Width: | Height: | Size: 114 B After Width: | Height: | Size: 336 B |
Before Width: | Height: | Size: 82 B After Width: | Height: | Size: 305 B |
Before Width: | Height: | Size: 108 B After Width: | Height: | Size: 333 B |
Before Width: | Height: | Size: 103 B After Width: | Height: | Size: 329 B |
Before Width: | Height: | Size: 116 B After Width: | Height: | Size: 333 B |
Before Width: | Height: | Size: 99 B After Width: | Height: | Size: 321 B |
Before Width: | Height: | Size: 122 B After Width: | Height: | Size: 338 B |
Before Width: | Height: | Size: 100 B After Width: | Height: | Size: 330 B |