Compare commits
7 Commits
ed3a679bca
...
oob_fix
Author | SHA1 | Date | |
---|---|---|---|
3e6328ac43 | |||
64902b845d | |||
1fdff47dc8 | |||
e387808065 | |||
1c881d6f22 | |||
cd6bf1eabe | |||
1dd01e3bc6 |
1
.gitattributes
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
util/blender export-ignore
|
75
api.lua
@ -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", {
|
||||||
|
initial_properties = {
|
||||||
collisionbox = { 0, 0, 0, 0, 0, 0 },
|
collisionbox = { 0, 0, 0, 0, 0, 0 },
|
||||||
visual = "mesh",
|
visual = "mesh",
|
||||||
mesh = "signs_lib_standard_sign_entity_wall.obj",
|
mesh = "signs_lib_standard_sign_entity_wall.obj",
|
||||||
textures = {},
|
textures = {},
|
||||||
static_save = true,
|
static_save = true,
|
||||||
backface_culling = false,
|
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
|
||||||
@ -464,15 +467,6 @@ signs_lib.charwidth_wide32 = build_char_db(32)
|
|||||||
|
|
||||||
local math_max = math.max
|
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
|
-- make char texture file name
|
||||||
-- if texture file does not exist use fallback texture instead
|
-- if texture file does not exist use fallback texture instead
|
||||||
local function char_tex(font_name, ch)
|
local function char_tex(font_name, ch)
|
||||||
@ -508,6 +502,26 @@ local function char_tex_wide(font_name, ch)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- sign colour table
|
||||||
|
local colgrid = {
|
||||||
|
["0"] = "000000", -- black
|
||||||
|
["1"] = "000080", -- blue
|
||||||
|
["2"] = "008000", -- dark green
|
||||||
|
["3"] = "008080", -- dark cyan
|
||||||
|
["4"] = "800000", -- red
|
||||||
|
["5"] = "800080", -- purple
|
||||||
|
["6"] = "804000", -- brown
|
||||||
|
["7"] = "808080", -- light grey
|
||||||
|
["8"] = "404040", -- dark grey
|
||||||
|
["9"] = "8080ff", -- light blue
|
||||||
|
["A"] = "80ff80", -- green
|
||||||
|
["B"] = "80ffff", -- cyan
|
||||||
|
["C"] = "ff8080", -- skin pink
|
||||||
|
["D"] = "ff80ff", -- pink
|
||||||
|
["E"] = "ffff00", -- yellow
|
||||||
|
["F"] = "ffffff" -- white
|
||||||
|
}
|
||||||
|
|
||||||
local function make_line_texture(line, lineno, pos, line_width, line_height, cwidth_tab, font_size, colorbgw, cwidth_tab_wide, force_unicode_font)
|
local function make_line_texture(line, lineno, pos, line_width, line_height, cwidth_tab, font_size, colorbgw, cwidth_tab_wide, force_unicode_font)
|
||||||
local width = 0
|
local width = 0
|
||||||
local maxw = 0
|
local maxw = 0
|
||||||
@ -580,7 +594,7 @@ 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 - cwidth_tab[" "]) then
|
||||||
width = 0
|
width = 0
|
||||||
else
|
else
|
||||||
@ -612,7 +626,7 @@ 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 - cwidth_tab[" "]) then
|
||||||
width = 0
|
width = 0
|
||||||
else
|
else
|
||||||
@ -630,7 +644,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
|
||||||
@ -644,36 +658,25 @@ local function make_line_texture(line, lineno, pos, line_width, line_height, cwi
|
|||||||
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
|
||||||
|
|
||||||
cur_color = nil
|
|
||||||
|
|
||||||
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) > maxw) then
|
||||||
table.insert(texture, fill_line(xpos, ypos, maxw, "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))
|
|
||||||
end
|
end
|
||||||
for ch_i, ch in ipairs(word.chars) do
|
for ch_i, ch in ipairs(word.chars) do
|
||||||
if ch.col ~= cur_color then
|
|
||||||
cur_color = ch.col
|
-- colorize character texture
|
||||||
table.insert(texture, fill_line(xpos + ch.off, ypos, maxw, cur_color, font_size, colorbgw))
|
local newtex = ch.tex .. '\\^[colorize\\:#' .. colgrid[ch.col]
|
||||||
|
|
||||||
|
table.insert(texture, (":%d,%d=%s"):format(xpos + ch.off, ypos, newtex))
|
||||||
end
|
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[" "]
|
xpos = xpos + word.w + cwidth_tab[" "]
|
||||||
if xpos >= (line_width + cwidth_tab[" "]) then break 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(start_xpos, ypos + line_height, maxw, "n", font_size, colorbgw))
|
|
||||||
|
|
||||||
return table.concat(texture), lineno
|
return table.concat(texture), lineno
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -718,7 +721,7 @@ function signs_lib.make_sign_texture(lines, pos)
|
|||||||
table.insert(texture, linetex)
|
table.insert(texture, linetex)
|
||||||
lineno = ln + 1
|
lineno = ln + 1
|
||||||
end
|
end
|
||||||
table.insert(texture, "^[makealpha:0,0,0")
|
|
||||||
return table.concat(texture, "")
|
return table.concat(texture, "")
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -1278,7 +1281,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 +1300,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 +1318,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 +1346,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
|
||||||
|
@ -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
|
|
||||||
|
@ -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
|
|
||||||
|
@ -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é
|
|
||||||
|
@ -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
|
|
||||||
|
@ -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] мод табличек загружен
|
|
||||||
|
@ -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=
|
||||||
|
@ -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",
|
||||||
|
Before Width: | Height: | Size: 89 B |
Before Width: | Height: | Size: 85 B |
Before Width: | Height: | Size: 85 B |
Before Width: | Height: | Size: 85 B |
Before Width: | Height: | Size: 85 B |
Before Width: | Height: | Size: 85 B |
Before Width: | Height: | Size: 85 B |
Before Width: | Height: | Size: 89 B |
Before Width: | Height: | Size: 89 B |
Before Width: | Height: | Size: 85 B |
Before Width: | Height: | Size: 85 B |
Before Width: | Height: | Size: 85 B |
Before Width: | Height: | Size: 85 B |
Before Width: | Height: | Size: 85 B |
Before Width: | Height: | Size: 85 B |
Before Width: | Height: | Size: 89 B |
Before Width: | Height: | Size: 99 B |
Before Width: | Height: | Size: 87 B |
Before Width: | Height: | Size: 87 B |
Before Width: | Height: | Size: 87 B |
Before Width: | Height: | Size: 87 B |
Before Width: | Height: | Size: 87 B |
Before Width: | Height: | Size: 87 B |
Before Width: | Height: | Size: 99 B |
Before Width: | Height: | Size: 99 B |
Before Width: | Height: | Size: 87 B |
Before Width: | Height: | Size: 87 B |
Before Width: | Height: | Size: 87 B |
Before Width: | Height: | Size: 87 B |
Before Width: | Height: | Size: 87 B |
Before Width: | Height: | Size: 87 B |
Before Width: | Height: | Size: 98 B |
Before Width: | Height: | Size: 95 B After Width: | Height: | Size: 103 B |
Before Width: | Height: | Size: 115 B After Width: | Height: | Size: 124 B |
Before Width: | Height: | Size: 117 B After Width: | Height: | Size: 123 B |
Before Width: | Height: | Size: 115 B After Width: | Height: | Size: 125 B |
Before Width: | Height: | Size: 110 B After Width: | Height: | Size: 126 B |
Before Width: | Height: | Size: 106 B After Width: | Height: | Size: 118 B |
Before Width: | Height: | Size: 108 B After Width: | Height: | Size: 118 B |
Before Width: | Height: | Size: 110 B After Width: | Height: | Size: 118 B |
Before Width: | Height: | Size: 113 B After Width: | Height: | Size: 123 B |
Before Width: | Height: | Size: 114 B After Width: | Height: | Size: 124 B |
Before Width: | Height: | Size: 113 B After Width: | Height: | Size: 122 B |
Before Width: | Height: | Size: 105 B After Width: | Height: | Size: 117 B |
Before Width: | Height: | Size: 108 B After Width: | Height: | Size: 116 B |
Before Width: | Height: | Size: 108 B After Width: | Height: | Size: 124 B |
Before Width: | Height: | Size: 107 B After Width: | Height: | Size: 123 B |
Before Width: | Height: | Size: 107 B After Width: | Height: | Size: 120 B |
Before Width: | Height: | Size: 110 B After Width: | Height: | Size: 122 B |
Before Width: | Height: | Size: 108 B After Width: | Height: | Size: 117 B |
Before Width: | Height: | Size: 107 B After Width: | Height: | Size: 128 B |
Before Width: | Height: | Size: 108 B After Width: | Height: | Size: 128 B |
Before Width: | Height: | Size: 116 B After Width: | Height: | Size: 127 B |
Before Width: | Height: | Size: 103 B After Width: | Height: | Size: 122 B |
Before Width: | Height: | Size: 109 B After Width: | Height: | Size: 120 B |
Before Width: | Height: | Size: 104 B After Width: | Height: | Size: 116 B |
Before Width: | Height: | Size: 102 B After Width: | Height: | Size: 120 B |
Before Width: | Height: | Size: 102 B After Width: | Height: | Size: 113 B |
Before Width: | Height: | Size: 116 B After Width: | Height: | Size: 127 B |
Before Width: | Height: | Size: 105 B After Width: | Height: | Size: 118 B |
Before Width: | Height: | Size: 114 B After Width: | Height: | Size: 123 B |
Before Width: | Height: | Size: 106 B After Width: | Height: | Size: 121 B |
Before Width: | Height: | Size: 104 B After Width: | Height: | Size: 117 B |
Before Width: | Height: | Size: 108 B After Width: | Height: | Size: 125 B |
Before Width: | Height: | Size: 104 B After Width: | Height: | Size: 113 B |
Before Width: | Height: | Size: 95 B After Width: | Height: | Size: 103 B |
Before Width: | Height: | Size: 116 B After Width: | Height: | Size: 127 B |
Before Width: | Height: | Size: 108 B After Width: | Height: | Size: 122 B |
Before Width: | Height: | Size: 107 B After Width: | Height: | Size: 117 B |
Before Width: | Height: | Size: 99 B After Width: | Height: | Size: 119 B |
Before Width: | Height: | Size: 106 B After Width: | Height: | Size: 117 B |
Before Width: | Height: | Size: 99 B After Width: | Height: | Size: 116 B |
Before Width: | Height: | Size: 68 B After Width: | Height: | Size: 74 B |
Before Width: | Height: | Size: 90 B After Width: | Height: | Size: 94 B |
Before Width: | Height: | Size: 90 B After Width: | Height: | Size: 92 B |
Before Width: | Height: | Size: 98 B After Width: | Height: | Size: 115 B |
Before Width: | Height: | Size: 107 B After Width: | Height: | Size: 120 B |
Before Width: | Height: | Size: 123 B After Width: | Height: | Size: 131 B |
Before Width: | Height: | Size: 114 B After Width: | Height: | Size: 129 B |
Before Width: | Height: | Size: 88 B After Width: | Height: | Size: 91 B |
Before Width: | Height: | Size: 92 B After Width: | Height: | Size: 104 B |
Before Width: | Height: | Size: 92 B After Width: | Height: | Size: 106 B |
Before Width: | Height: | Size: 98 B After Width: | Height: | Size: 109 B |
Before Width: | Height: | Size: 95 B After Width: | Height: | Size: 97 B |
Before Width: | Height: | Size: 91 B After Width: | Height: | Size: 96 B |
Before Width: | Height: | Size: 89 B After Width: | Height: | Size: 90 B |
Before Width: | Height: | Size: 88 B After Width: | Height: | Size: 87 B |
Before Width: | Height: | Size: 90 B After Width: | Height: | Size: 104 B |
Before Width: | Height: | Size: 96 B After Width: | Height: | Size: 108 B |
Before Width: | Height: | Size: 102 B After Width: | Height: | Size: 112 B |
Before Width: | Height: | Size: 108 B After Width: | Height: | Size: 119 B |