Compare commits

...

12 Commits

Author SHA1 Message Date
1d98c6a5cc Add Ukrainian localization (#36) 2025-03-14 20:54:09 -04:00
87d65439a1 Convert CR(LF)s to LFs (#32) 2024-09-06 19:04:15 -04:00
4309b3575a Fix placing certain signs (#29)
* Fix placing certain signs

This fixes https://github.com/mt-mods/signs_lib/issues/1 by removing node extensions before placing, just incase player got a hold of certain sign nodes they shouldnt have.

* fix typo

fix typo
2024-06-03 18:10:42 -04:00
bb13ba6d7c Add support for Ukrainian-specific Cyrillic letters (#30) 2024-05-29 18:21:33 -04:00
3d5ba32fa0 Fix out-of-bounds textures in [combine (#28) 2024-04-22 21:50:06 +10:00
0847176bdb Revert "Fix out-of-bounds textures in [combine (#27)"
This reverts commit 4fb53b67e8.
2024-04-19 17:52:33 +10:00
4fb53b67e8 Fix out-of-bounds textures in [combine (#27) 2024-04-19 13:44:16 +10:00
e5f73438ce make signs non ground content (#26) 2024-02-29 18:48:31 -05:00
e387808065 Fix warnings (mt 5.8+) due to disallowed filenames (#23)
* Fix warnings (mt 5.8+) due to disallowed filenames

* Don't ship blend files to cdb users
2023-10-15 12:34:26 -04:00
1c881d6f22 add initial_properties (#22)
* add initial_properties

Adds initial_properties update so that 5.7dev doesn't throw an error when entering text on signs.

* Remove newline

---------

Co-authored-by: Niklp <89982526+Niklp09@users.noreply.github.com>
2023-09-25 13:50:55 +02:00
cd6bf1eabe Complete Spanish translation (#21) 2023-07-09 20:08:59 -04:00
1dd01e3bc6 Make missing strings translatable, update locale files and German (#19)
* Make a bunch of strings translatable

* Update locale files

* Update German translation
2023-07-04 13:03:49 -04:00
36 changed files with 145 additions and 160 deletions

1
.gitattributes vendored Normal file
View File

@ -0,0 +1 @@
util/blender export-ignore

84
api.lua
View File

@ -1,6 +1,7 @@
-- signs_lib api, backported from street_signs -- signs_lib api, backported from street_signs
local S = signs_lib.S local S = signs_lib.S
local FS = function(...) return minetest.formspec_escape(S(...)) end
local has_default_mod = minetest.get_modpath("default") local has_default_mod = minetest.get_modpath("default")
local function log(level, messagefmt, ...) local function log(level, messagefmt, ...)
@ -165,12 +166,14 @@ local ctexcache_wide = {}
-- entity handling -- entity handling
minetest.register_entity("signs_lib:text", { minetest.register_entity("signs_lib:text", {
collisionbox = { 0, 0, 0, 0, 0, 0 }, initial_properties = {
visual = "mesh", collisionbox = { 0, 0, 0, 0, 0, 0 },
mesh = "signs_lib_standard_sign_entity_wall.obj", visual = "mesh",
textures = {}, mesh = "signs_lib_standard_sign_entity_wall.obj",
static_save = true, textures = {},
backface_culling = false, static_save = true,
backface_culling = false,
},
on_activate = function(self) on_activate = function(self)
local node = minetest.get_node(self.object:get_pos()) local node = minetest.get_node(self.object:get_pos())
if minetest.get_item_group(node.name, "sign") == 0 then if minetest.get_item_group(node.name, "sign") == 0 then
@ -467,8 +470,8 @@ local math_max = math.max
local function fill_line(x, y, w, c, font_size, colorbgw) local function fill_line(x, y, w, c, font_size, colorbgw)
c = c or "0" c = c or "0"
local tex = { } local tex = { }
for xx = 0, math.max(0, w), colorbgw do for xx = x, w, colorbgw do
table.insert(tex, (":%d,%d=signs_lib_color_"..font_size.."px_%s.png"):format(x + xx, y, c)) table.insert(tex, (":%d,%d=signs_lib_color_"..font_size.."px_%s.png"):format(xx, y, c))
end end
return table.concat(tex) return table.concat(tex)
end end
@ -580,8 +583,8 @@ local function make_line_texture(line, lineno, pos, line_width, line_height, cwi
end end
end end
if w then if w then
width = width + w + 1 width = width + w
if width >= (line_width - cwidth_tab[" "]) then if width > line_width then
width = 0 width = 0
else else
maxw = math_max(width, maxw) maxw = math_max(width, maxw)
@ -604,6 +607,7 @@ local function make_line_texture(line, lineno, pos, line_width, line_height, cwi
off = ch_offs, off = ch_offs,
tex = tex, tex = tex,
col = ("%X"):format(cur_color), col = ("%X"):format(cur_color),
w = w,
}) })
end end
ch_offs = ch_offs + w ch_offs = ch_offs + w
@ -612,8 +616,8 @@ local function make_line_texture(line, lineno, pos, line_width, line_height, cwi
else else
local w = cwidth_tab[c] local w = cwidth_tab[c]
if w then if w then
width = width + w + 1 width = width + w
if width >= (line_width - cwidth_tab[" "]) then if width > line_width then
width = 0 width = 0
else else
maxw = math_max(width, maxw) maxw = math_max(width, maxw)
@ -623,6 +627,7 @@ local function make_line_texture(line, lineno, pos, line_width, line_height, cwi
off = ch_offs, off = ch_offs,
tex = char_tex(font_name, c), tex = char_tex(font_name, c),
col = ("%X"):format(cur_color), col = ("%X"):format(cur_color),
w = w,
}) })
end end
ch_offs = ch_offs + w ch_offs = ch_offs + w
@ -630,7 +635,7 @@ local function make_line_texture(line, lineno, pos, line_width, line_height, cwi
end end
i = i + 1 i = i + 1
end end
width = width + cwidth_tab[" "] + 1 width = width + cwidth_tab[" "]
maxw = math_max(width, maxw) maxw = math_max(width, maxw)
table.insert(words, { chars=chars, w=ch_offs }) table.insert(words, { chars=chars, w=ch_offs })
end end
@ -639,7 +644,8 @@ local function make_line_texture(line, lineno, pos, line_width, line_height, cwi
local texture = { } local texture = { }
local start_xpos = math.floor((line_width - maxw) / 2) + def.x_offset local start_xpos = math.max(0, math.floor((line_width - maxw) / 2)) + def.x_offset
local end_xpos = math.min(start_xpos + maxw, line_width)
local xpos = start_xpos local xpos = start_xpos
local ypos = (line_height + def.line_spacing)* lineno + def.y_offset local ypos = (line_height + def.line_spacing)* lineno + def.y_offset
@ -648,31 +654,33 @@ local function make_line_texture(line, lineno, pos, line_width, line_height, cwi
for word_i, word in ipairs(words) do for word_i, word in ipairs(words) do
local xoffs = (xpos - start_xpos) local xoffs = (xpos - start_xpos)
if (xoffs > 0) and ((xoffs + word.w) > maxw) then if (xoffs > 0) and ((xoffs + word.w) > end_xpos) then
table.insert(texture, fill_line(xpos, ypos, maxw, "n", font_size, colorbgw)) table.insert(texture, fill_line(xpos, ypos, end_xpos, "n", font_size, colorbgw))
xpos = start_xpos xpos = start_xpos
ypos = ypos + line_height + def.line_spacing ypos = ypos + line_height + def.line_spacing
lineno = lineno + 1 lineno = lineno + 1
if lineno >= def.number_of_lines then break end if lineno >= def.number_of_lines then break end
table.insert(texture, fill_line(xpos, ypos, maxw, cur_color, font_size, colorbgw)) table.insert(texture, fill_line(xpos, ypos, end_xpos, cur_color, font_size, colorbgw))
end end
for ch_i, ch in ipairs(word.chars) do for ch_i, ch in ipairs(word.chars) do
if xpos + ch.off + ch.w > end_xpos then
table.insert(texture, fill_line(xpos + ch.off, ypos, end_xpos, "n", font_size, colorbgw))
break
end
if ch.col ~= cur_color then if ch.col ~= cur_color then
cur_color = ch.col cur_color = ch.col
table.insert(texture, fill_line(xpos + ch.off, ypos, maxw, cur_color, font_size, colorbgw)) table.insert(texture, fill_line(xpos + ch.off, ypos, end_xpos, cur_color, font_size, colorbgw))
end end
table.insert(texture, (":%d,%d=%s"):format(xpos + ch.off, ypos, ch.tex)) table.insert(texture, (":%d,%d=%s"):format(xpos + ch.off, ypos, ch.tex))
end end
table.insert( xpos = xpos + word.w
texture, if xpos < end_xpos then
(":%d,%d="):format(xpos + word.w, ypos) .. char_tex(font_name, " ") table.insert(texture, (":%d,%d="):format(xpos, ypos) .. char_tex(font_name, " "))
) xpos = xpos + cwidth_tab[" "]
xpos = xpos + word.w + cwidth_tab[" "] end
if xpos >= (line_width + cwidth_tab[" "]) then break end
end end
table.insert(texture, fill_line(xpos, ypos, maxw, "n", font_size, colorbgw)) table.insert(texture, fill_line(xpos, ypos, end_xpos, "n", font_size, colorbgw))
table.insert(texture, fill_line(start_xpos, ypos + line_height, maxw, "n", font_size, colorbgw))
return table.concat(texture), lineno return table.concat(texture), lineno
end end
@ -810,6 +818,9 @@ function signs_lib.update_sign(pos, fields)
local ownstr = "" local ownstr = ""
if owner ~= "" then ownstr = S("Locked sign, owned by @1\n", owner) end if owner ~= "" then ownstr = S("Locked sign, owned by @1\n", owner) end
-- Fix pasting from Windows: CR instead of LF
text = string.gsub(text, "\r\n?", "\n")
meta:set_string("text", text) meta:set_string("text", text)
meta:set_string("infotext", ownstr..make_infotext(text).." ") meta:set_string("infotext", ownstr..make_infotext(text).." ")
@ -935,7 +946,13 @@ function signs_lib.after_place_node(pos, placer, itemstack, pointed_thing, locke
local controls = placer:get_player_control() local controls = placer:get_player_control()
local signname = itemstack:get_name() local signname = itemstack:get_name()
-- in case player has sign nodes they shouldn't, remove extensions for normal sign
local no_wall_name = string.gsub(signname, "_wall", "") local no_wall_name = string.gsub(signname, "_wall", "")
no_wall_name = string.gsub(no_wall_name, "_yard", "")
no_wall_name = string.gsub(no_wall_name, "_hanging", "")
no_wall_name = string.gsub(no_wall_name, "_onpole_horiz", "")
no_wall_name = string.gsub(no_wall_name, "_onpole", "")
local def = minetest.registered_items[signname] local def = minetest.registered_items[signname]
@ -999,6 +1016,7 @@ end
function signs_lib.register_sign(name, raw_def) function signs_lib.register_sign(name, raw_def)
local def = table.copy(raw_def) local def = table.copy(raw_def)
def.is_ground_content = false
if raw_def.entity_info == "standard" then if raw_def.entity_info == "standard" then
def.entity_info = { def.entity_info = {
@ -1278,7 +1296,7 @@ minetest.register_lbm({
minetest.register_chatcommand("regen_signs", { minetest.register_chatcommand("regen_signs", {
params = "", params = "",
privs = {server = true}, privs = {server = true},
description = "Skims through all currently-loaded sign-bearing mapblocks, clears away any entities within each sign's node space, and regenerates their text entities, if any.", description = S("Skims through all currently-loaded sign-bearing mapblocks, clears away any entities within each sign's node space, and regenerates their text entities, if any."),
func = function(player_name, params) func = function(player_name, params)
local allsigns = {} local allsigns = {}
local totalsigns = 0 local totalsigns = 0
@ -1297,13 +1315,13 @@ minetest.register_chatcommand("regen_signs", {
end end
if signs_lib.totalblocks < 0 then signs_lib.totalblocks = 0 end if signs_lib.totalblocks < 0 then signs_lib.totalblocks = 0 end
if totalsigns == 0 then if totalsigns == 0 then
minetest.chat_send_player(player_name, "There are no signs in the currently-loaded terrain.") minetest.chat_send_player(player_name, S("There are no signs in the currently-loaded terrain."))
signs_lib.block_list = {} signs_lib.block_list = {}
return return
end end
minetest.chat_send_player(player_name, "Found a total of "..totalsigns.." sign nodes across "..signs_lib.totalblocks.." blocks.") minetest.chat_send_player(player_name, S("Found a total of @1 sign nodes across @2 blocks.", totalsigns, signs_lib.totalblocks))
minetest.chat_send_player(player_name, "Regenerating sign entities...") minetest.chat_send_player(player_name, S("Regenerating sign entities ..."))
for _, b in pairs(allsigns) do for _, b in pairs(allsigns) do
for _, pos in ipairs(b) do for _, pos in ipairs(b) do
@ -1315,7 +1333,7 @@ minetest.register_chatcommand("regen_signs", {
end end
end end
end end
minetest.chat_send_player(player_name, "Finished.") minetest.chat_send_player(player_name, S("Finished."))
end end
}) })
@ -1343,14 +1361,14 @@ function get_sign_formspec(pos, nodename)
"image[0.1,2.4;7,1;signs_lib_sign_color_palette.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) .. "]", "textarea[0.15,-0.2;6.3,2.8;text;;" .. minetest.formspec_escape(txt) .. "]",
"button_exit[3.7,3.4;2,1;ok;" .. S("Write") .. "]", "button_exit[3.7,3.4;2,1;ok;" .. S("Write") .. "]",
"label[0.3,3.4;Unicode font]", "label[0.3,3.4;"..FS("Unicode font").."]",
"image_button[0.6,3.7;1,0.6;signs_lib_switch_" .. state .. ".png;uni_" "image_button[0.6,3.7;1,0.6;signs_lib_switch_" .. state .. ".png;uni_"
.. state .. ";;;false;signs_lib_switch_interm.png]", .. state .. ";;;false;signs_lib_switch_interm.png]",
} }
if minetest.registered_nodes[nodename].allow_widefont then if minetest.registered_nodes[nodename].allow_widefont then
state = meta:get_int("widefont") == 1 and "on" or "off" state = meta:get_int("widefont") == 1 and "on" or "off"
formspec[#formspec+1] = "label[2.1,3.4;Wide font]" formspec[#formspec+1] = "label[2.1,3.4;"..FS("Wide font").."]"
formspec[#formspec+1] = "image_button[2.3,3.7;1,0.6;signs_lib_switch_" .. state .. ".png;wide_" formspec[#formspec+1] = "image_button[2.3,3.7;1,0.6;signs_lib_switch_" .. state .. ".png;wide_"
.. state .. ";;;false;signs_lib_switch_interm.png]" .. state .. ";;;false;signs_lib_switch_interm.png]"
end end

View File

@ -231,6 +231,7 @@ signs_lib.unicode_install({38,"26"})
dofile(signs_lib.path.."/nonascii-de.lua") dofile(signs_lib.path.."/nonascii-de.lua")
dofile(signs_lib.path.."/nonascii-fr.lua") dofile(signs_lib.path.."/nonascii-fr.lua")
dofile(signs_lib.path.."/nonascii-pl.lua") dofile(signs_lib.path.."/nonascii-pl.lua")
dofile(signs_lib.path.."/nonascii-ua.lua")
local nmdc = { local nmdc = {
[36] = "$", [36] = "$",

View File

@ -1,27 +1,12 @@
# textdomain: signs_lib # textdomain: signs_lib
Locked sign, owned by @1@n=gesperrter Schild, gehört @1@n Locked sign, owned by @1@n=Abgeschlossenes Schild, gehört @1@n
Write=schreiben Skims through all currently-loaded sign-bearing mapblocks, clears away any entities within each sign's node space, and regenerates their text entities, if any.=Iteriert durch alle derzeit geladenen Kartenblöcke, die Schilder enthalten, löscht alle Entities innerhalb des Node-Raums eines jeden Schildes und erzeugt ihre Text-Entities, falls vorhanden, neu.
@1 wrote "@2" to sign at @3= There are no signs in the currently-loaded terrain.=Im derzeit geladenen Gelände befinden sich keine Schilder.
@1 flipped the wide-font switch to "@2" at @3= Found a total of @1 sign nodes across @2 blocks.=Insgesamt wurden @1 Schild-Nodes über @2 Kartenblöcke gefunden.
@1 flipped the unicode-font switch to "@2" at @3= Regenerating sign entities ...=Schild-Entities werden neu erzeugt ...
Finished.=Fertig.
Write=Schreiben
##### not used anymore ##### Unicode font=Unicode-Schrift
Wide font=Weite Schrift
locked =gesperrt Wooden Wall Sign=Holzwandschild
@1 wrote "@2" to @3sign at @4=@1 schrieb "@2" auf das @3Schild bei @4 Steel Wall Sign=Stahlwandschild
Sign=Schild
Can edit all locked signs=Kann alle gesperrte Schilder bearbeiten
Locked Sign=gesperrter Schild
green=grün
yellow=gelb
red=rot
white_red=weißrot
white_black=schwarzweiß
orange=orange
blue=blau
brown=braun
Sign (@1, metal)=Schild (@1, Metall)
Attempt to register unknown node as fence=Versuch ein unbekanntes Element als Zaun zu registrieren
Registered @1 and @2=Registrierte @1 und @2
[MOD] signs loaded=[MOD] Schilder-Mod geladen

View File

@ -1,25 +1,12 @@
# textdomain: signs_lib # textdomain: signs_lib
Locked sign, owned by @1@n= Locked sign, owned by @1@n=Cartel bloqueado, propiedad de @1
Write= Skims through all currently-loaded sign-bearing mapblocks, clears away any entities within each sign's node space, and regenerates their text entities, if any.=Examina todos los bloques de mapas que contienen letreros cargados actualmente, elimina cualquier entidad dentro del espacio de nodo de cada cartel y regenera sus entidades de texto, si las hay.
@1 wrote "@2" to sign at @3= There are no signs in the currently-loaded terrain.=No hay carteles en el terreno actual cargado.
@1 flipped the wide-font switch to "@2" at @3= Found a total of @1 sign nodes across @2 blocks.=Se han encontrado un total de @1 cartel(es) a traves de @2 bloque(s).
@1 flipped the unicode-font switch to "@2" at @3= Regenerating sign entities ...=Regenerando entidades de los carteles...
Finished.=Terminado
Write=Escribir
##### not used anymore ##### Unicode font=Fuente unicode
Wide font=Fuente ancha
locked =bloqueada Wooden Wall Sign=Cartel de Madera
@1 wrote "@2" to @3sign at @4=@1 escribio "@2" en el cartel @3en @4 Steel Wall Sign=Cartel de Acero
Sign=Letrero
Locked Sign=Letrero bloqueada
green=verde
yellow=amarillo
red=rojo
white_red=rojo y blanco
white_black=negro y blanco
orange=naranja
blue=azul
brown=marrón
Sign (@1, metal)=Letrero (@1, metal)
Registered @1 and @2=Registrado @1 y @2
[MOD] signs loaded=[MOD] signs cargados

View File

@ -1,27 +1,12 @@
# textdomain: signs_lib # textdomain: signs_lib
Locked sign, owned by @1@n=Panneau verrouillé, appartient à @1@n Locked sign, owned by @1@n=Panneau verrouillé, appartient à @1@n
Skims through all currently-loaded sign-bearing mapblocks, clears away any entities within each sign's node space, and regenerates their text entities, if any.=
There are no signs in the currently-loaded terrain.=
Found a total of @1 sign nodes across @2 blocks.=
Regenerating sign entities ...=
Finished.=
Write= Write=
@1 wrote "@2" to sign at @3= Unicode font=
@1 flipped the wide-font switch to "@2" at @3= Wide font=
@1 flipped the unicode-font switch to "@2" at @3= Wooden Wall Sign=
Steel Wall Sign=
##### not used anymore #####
locked =verrouillé
@1 wrote "@2" to @3sign at @4=@1 a écrit "@2" sur le panneau @3en @4
Sign=Panneau
Can edit all locked signs=Peut modifier les panneaux verrouillés
Locked Sign=Panneau (verrouillé)
green=vert
yellow=jaune
red=rouge
white_red=rouge et blanc
white_black=noir et blanc
orange=orange
blue=bleu
brown=marron
Sign (@1, metal)=Panneau (@1, métal)
Attempt to register unknown node as fence=Tentative d'enregistrer un nœud inconnu comme barrière
Registered @1 and @2=Enregistrement de @1 et @
[MOD] signs loaded=[MOD] signs chargé

View File

@ -1,27 +1,12 @@
# textdomain: signs_lib # textdomain: signs_lib
Locked sign, owned by @1@n=Papan tanda berkunci, milik @1@n Locked sign, owned by @1@n=Papan tanda berkunci, milik @1@n
Skims through all currently-loaded sign-bearing mapblocks, clears away any entities within each sign's node space, and regenerates their text entities, if any.=
There are no signs in the currently-loaded terrain.=
Found a total of @1 sign nodes across @2 blocks.=
Regenerating sign entities ...=
Finished.=
Write= Write=
@1 wrote "@2" to sign at @3= Unicode font=
@1 flipped the wide-font switch to "@2" at @3= Wide font=
@1 flipped the unicode-font switch to "@2" at @3= Wooden Wall Sign=
Steel Wall Sign=
##### not used anymore #####
locked =berkunci
@1 wrote "@2" to @3sign at @4=@1 menulis "@2" atas papan tanda @3dekat @4
Sign=Papan Tanda
Can edit all locked signs=Boleh sunting semua papan tanda berkunci
Locked Sign=Papan Tanda Berkunci
green=hijau
yellow=kuning
red=merah
white_red=putih_merah
white_black=putih_hitam
orange=jingga
blue=biru
brown=perang
Sign (@1, metal)=Papan Tanda (@1, logam)
Attempt to register unknown node as fence=Cuba untuk mendaftar nod tidak diketahui sebagai pagar
Registered @1 and @2=Telah daftar @1 dan @2
[MOD] signs loaded=[MODS] signs telah dimuatkan

View File

@ -1,27 +1,12 @@
# textdomain: signs_lib # textdomain: signs_lib
Locked sign, owned by @1@n=защищенная табличка, пренадлежит @1@n Locked sign, owned by @1@n=защищенная табличка, пренадлежит @1@n
Skims through all currently-loaded sign-bearing mapblocks, clears away any entities within each sign's node space, and regenerates their text entities, if any.=
There are no signs in the currently-loaded terrain.=
Found a total of @1 sign nodes across @2 blocks.=
Regenerating sign entities ...=
Finished.=
Write=записать Write=записать
@1 wrote "@2" to sign at @3= Unicode font=
@1 flipped the wide-font switch to "@2" at @3= Wide font=
@1 flipped the unicode-font switch to "@2" at @3= Wooden Wall Sign=
Steel Wall Sign=
##### not used anymore #####
locked =защищенный
@1 wrote "@2" to @3sign at @4=@1 записал "@2" в @3sign на @4
Sign=табличка
Can edit all locked signs=Может редактировать все защищенные таблички
Locked Sign=защищенная табличка
green=зеленая
yellow=желтая
red=красная
white_red=краснобелая
white_black=чернобелая
orange=оранжевая
blue=синея
brown=коричневая
Sign (@1, metal)=Табличка (@1, металл)
Attempt to register unknown node as fence=Попытка зарегистрировать неизвестный узел как забор
Registered @1 and @2=Зарегистрировано @1 для @2
[MOD] signs loaded=[MOD] мод табличек загружен

14
locale/signs_lib.uk.tr Normal file
View File

@ -0,0 +1,14 @@
# textdomain: signs_lib
Signs Lib=Таблички Lib
Adds signs with readable text.=Додає таблички з читабельним текстом.
Locked sign, owned by @1@n=Захищена табличка (власник @1@n)
Skims through all currently-loaded sign-bearing mapblocks, clears away any entities within each sign's node space, and regenerates their text entities, if any.=Перевіряє всі завантажені блоки з табличками, очищає їхній простір від об'єктів і відновлює текст, якщо потрібно.
There are no signs in the currently-loaded terrain.=Не знайдено табличок на поточній провантаженій території.
Found a total of @1 sign nodes across @2 blocks.=Загалом знайдено @1 табличок в @2 блоках.
Regenerating sign entities ...=Регенерація сутностей табличок...
Finished.=Завершено.
Write=Записати
Unicode font=Юнікод
Wide font=Широкий
Wooden Wall Sign=Дерев'яна табличка
Steel Wall Sign=Сталева табличка

View File

@ -1,6 +1,12 @@
# textdomain: signs_lib # textdomain: signs_lib
Locked sign, owned by @1@n= Locked sign, owned by @1@n=
Skims through all currently-loaded sign-bearing mapblocks, clears away any entities within each sign's node space, and regenerates their text entities, if any.=
There are no signs in the currently-loaded terrain.=
Found a total of @1 sign nodes across @2 blocks.=
Regenerating sign entities ...=
Finished.=
Write= Write=
@1 wrote "@2" to sign at @3= Unicode font=
@1 flipped the wide-font switch to "@2" at @3= Wide font=
@1 flipped the unicode-font switch to "@2" at @3= Wooden Wall Sign=
Steel Wall Sign=

8
nonascii-ua.lua Normal file
View File

@ -0,0 +1,8 @@
signs_lib.unicode_install({208,132,"0404"})
signs_lib.unicode_install({208,134,"0406"})
signs_lib.unicode_install({208,135,"0407"})
signs_lib.unicode_install({209,148,"0454"})
signs_lib.unicode_install({209,150,"0456"})
signs_lib.unicode_install({209,151,"0457"})
signs_lib.unicode_install({210,144,"0490"})
signs_lib.unicode_install({210,145,"0491"})

View File

@ -1,8 +1,10 @@
-- Definitions for standard minetest_game wooden and steel wall signs -- Definitions for standard minetest_game wooden and steel wall signs
local S = signs_lib.S
if minetest.get_modpath("default") then if minetest.get_modpath("default") then
signs_lib.register_sign("default:sign_wall_wood", { signs_lib.register_sign("default:sign_wall_wood", {
description = "Wooden wall sign", description = S("Wooden Wall Sign"),
inventory_image = "signs_lib_sign_wall_wooden_inv.png", inventory_image = "signs_lib_sign_wall_wooden_inv.png",
tiles = { tiles = {
"signs_lib_sign_wall_wooden.png", "signs_lib_sign_wall_wooden.png",
@ -20,7 +22,7 @@ if minetest.get_modpath("default") then
}) })
signs_lib.register_sign("default:sign_wall_steel", { signs_lib.register_sign("default:sign_wall_steel", {
description = "Steel wall sign", description = S("Steel Wall Sign"),
inventory_image = "signs_lib_sign_wall_steel_inv.png", inventory_image = "signs_lib_sign_wall_steel_inv.png",
tiles = { tiles = {
"signs_lib_sign_wall_steel.png", "signs_lib_sign_wall_steel.png",

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 B

8
util/nonascii-ua Normal file
View File

@ -0,0 +1,8 @@
ґ
і
ї
є
Ґ
І
Ї
Є