Compare commits
25 Commits
b0808a376a
...
master
Author | SHA1 | Date | |
---|---|---|---|
0535baf7c2 | |||
90db834831 | |||
1d98c6a5cc | |||
87d65439a1 | |||
4309b3575a | |||
bb13ba6d7c | |||
3d5ba32fa0 | |||
0847176bdb | |||
4fb53b67e8 | |||
e5f73438ce | |||
e387808065 | |||
1c881d6f22 | |||
cd6bf1eabe | |||
1dd01e3bc6 | |||
ed3a679bca | |||
5ae111e1fa | |||
aff005e745 | |||
3d0e8d47e6 | |||
8aafe6608c | |||
e66863d115 | |||
4018128e84 | |||
a9858c76af | |||
60d67afab3 | |||
4dbfbec96e | |||
14efa6eeb7 |
1
.gitattributes
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
util/blender export-ignore
|
@ -12,6 +12,5 @@ read_globals = {
|
|||||||
"ItemStack", "vector", "default",
|
"ItemStack", "vector", "default",
|
||||||
|
|
||||||
-- Mod deps
|
-- Mod deps
|
||||||
"intllib",
|
|
||||||
"screwdriver",
|
"screwdriver",
|
||||||
}
|
}
|
||||||
|
4
API.md
@ -236,7 +236,7 @@ signs_lib.register_sign("basic_signs:sign_wall_glass", {
|
|||||||
allow_onpole = true,
|
allow_onpole = true,
|
||||||
allow_onpole_horizontal = true,
|
allow_onpole_horizontal = true,
|
||||||
allow_yard = true,
|
allow_yard = true,
|
||||||
use_texture_alpha = true,
|
use_texture_alpha = "blend",
|
||||||
})
|
})
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -250,7 +250,7 @@ signs_lib.register_sign("basic_signs:sign_wall_glass", {
|
|||||||
|
|
||||||
* `signs_lib.rightclick_sign(pos, node, player, itemstack, pointed_thing)`
|
* `signs_lib.rightclick_sign(pos, node, player, itemstack, pointed_thing)`
|
||||||
|
|
||||||
Open the default sign formspec, if the player has the `signslib_edit` privilege.
|
Open the default sign formspec, if the player has the `signslib_edit` privilege. (privilege can be set by `signs_lib.edit_priv` setting)
|
||||||
|
|
||||||
* `signs_lib.destruct_sign(pos)`
|
* `signs_lib.destruct_sign(pos)`
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ Without any other add-ons, this mod upgrades only the default wooden and steel s
|
|||||||
|
|
||||||
## Text formatting
|
## Text formatting
|
||||||
|
|
||||||
In general, text is rendered exactly as-written, left-to-right, top to bottom, without any translations or modifications. The standard fonts support 7-bit ASCII as well as Cyrllic.
|
In general, text is rendered exactly as-written, left-to-right, top to bottom, without any translations or modifications to a maximum of 400 chars. The standard fonts support 7-bit ASCII as well as Cyrllic.
|
||||||
|
|
||||||
That said, there are some basic text formatting options:
|
That said, there are some basic text formatting options:
|
||||||
|
|
||||||
@ -67,3 +67,4 @@ The list of loaded, sign-bearing blocks is created/populated by an LBM (and trim
|
|||||||
* `signslib_edit`
|
* `signslib_edit`
|
||||||
|
|
||||||
Allows to rotate signs and to open (and consequently edit) any default sign formspec.
|
Allows to rotate signs and to open (and consequently edit) any default sign formspec.
|
||||||
|
(privilege can be set by `signs_lib.edit_priv` setting)
|
||||||
|
147
api.lua
@ -1,6 +1,12 @@
|
|||||||
-- signs_lib api, backported from street_signs
|
-- signs_lib api, backported from street_signs
|
||||||
|
|
||||||
local S = signs_lib.gettext
|
local S = signs_lib.S
|
||||||
|
local FS = function(...) return minetest.formspec_escape(S(...)) end
|
||||||
|
local has_default_mod = minetest.get_modpath("default")
|
||||||
|
|
||||||
|
local function log(level, messagefmt, ...)
|
||||||
|
minetest.log(level, "[signs_lib] " .. messagefmt:format(...))
|
||||||
|
end
|
||||||
|
|
||||||
local function get_sign_formspec() end
|
local function get_sign_formspec() end
|
||||||
|
|
||||||
@ -21,16 +27,14 @@ signs_lib.standard_xoffs = 4
|
|||||||
signs_lib.standard_yoffs = 0
|
signs_lib.standard_yoffs = 0
|
||||||
signs_lib.standard_cpl = 35
|
signs_lib.standard_cpl = 35
|
||||||
|
|
||||||
signs_lib.standard_wood_groups = table.copy(default and minetest.registered_items["default:sign_wall_wood"].groups or {})
|
signs_lib.standard_wood_groups = table.copy(has_default_mod and minetest.registered_items["default:sign_wall_wood"].groups or {})
|
||||||
signs_lib.standard_wood_groups.sign = 1
|
|
||||||
signs_lib.standard_wood_groups.attached_node = nil
|
signs_lib.standard_wood_groups.attached_node = nil
|
||||||
|
|
||||||
signs_lib.standard_steel_groups = table.copy(default and minetest.registered_items["default:sign_wall_steel"].groups or {})
|
signs_lib.standard_steel_groups = table.copy(has_default_mod and minetest.registered_items["default:sign_wall_steel"].groups or {})
|
||||||
signs_lib.standard_steel_groups.sign = 1
|
|
||||||
signs_lib.standard_steel_groups.attached_node = nil
|
signs_lib.standard_steel_groups.attached_node = nil
|
||||||
|
|
||||||
signs_lib.standard_wood_sign_sounds = table.copy(default and minetest.registered_items["default:sign_wall_wood"].sounds or {})
|
signs_lib.standard_wood_sign_sounds = table.copy(has_default_mod and minetest.registered_items["default:sign_wall_wood"].sounds or {})
|
||||||
signs_lib.standard_steel_sign_sounds = table.copy(default and minetest.registered_items["default:sign_wall_steel"].sounds or {})
|
signs_lib.standard_steel_sign_sounds = table.copy(has_default_mod and minetest.registered_items["default:sign_wall_steel"].sounds or {})
|
||||||
|
|
||||||
signs_lib.default_text_scale = {x=10, y=10}
|
signs_lib.default_text_scale = {x=10, y=10}
|
||||||
|
|
||||||
@ -162,12 +166,23 @@ 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)
|
||||||
|
local node = minetest.get_node(self.object:get_pos())
|
||||||
|
if minetest.get_item_group(node.name, "sign") == 0 then
|
||||||
|
self.object:remove()
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
on_blast = function(self, damage)
|
||||||
|
return false, false, {}
|
||||||
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
function signs_lib.delete_objects(pos)
|
function signs_lib.delete_objects(pos)
|
||||||
@ -455,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
|
||||||
@ -568,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)
|
||||||
@ -592,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
|
||||||
@ -600,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)
|
||||||
@ -611,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
|
||||||
@ -618,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
|
||||||
@ -627,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
|
||||||
@ -636,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
|
||||||
@ -722,6 +742,7 @@ end
|
|||||||
function signs_lib.rightclick_sign(pos, node, player, itemstack, pointed_thing)
|
function signs_lib.rightclick_sign(pos, node, player, itemstack, pointed_thing)
|
||||||
|
|
||||||
if not player or not signs_lib.can_modify(pos, player) then return end
|
if not player or not signs_lib.can_modify(pos, player) then return end
|
||||||
|
if not player.get_meta then return end
|
||||||
|
|
||||||
player:get_meta():set_string("signslib:pos", minetest.pos_to_string(pos))
|
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))
|
minetest.show_formspec(player:get_player_name(), "signs_lib:sign", get_sign_formspec(pos, node.name))
|
||||||
@ -737,6 +758,15 @@ function signs_lib.destruct_sign(pos)
|
|||||||
signs_lib.delete_objects(pos)
|
signs_lib.delete_objects(pos)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function signs_lib.blast_sign(pos, intensity)
|
||||||
|
if signs_lib.can_modify(pos, "") then
|
||||||
|
local node = minetest.get_node(pos)
|
||||||
|
local drops = minetest.get_node_drops(node, "tnt:blast")
|
||||||
|
minetest.remove_node(pos)
|
||||||
|
return drops
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
local function make_infotext(text)
|
local function make_infotext(text)
|
||||||
text = trim_input(text)
|
text = trim_input(text)
|
||||||
local lines = signs_lib.split_lines_and_words(text) or {}
|
local lines = signs_lib.split_lines_and_words(text) or {}
|
||||||
@ -788,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).." ")
|
||||||
|
|
||||||
@ -798,7 +831,16 @@ end
|
|||||||
function signs_lib.can_modify(pos, player)
|
function signs_lib.can_modify(pos, player)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
local owner = meta:get_string("owner")
|
local owner = meta:get_string("owner")
|
||||||
local playername = player:get_player_name()
|
local playername
|
||||||
|
if type(player) == "userdata" then
|
||||||
|
playername = player:get_player_name()
|
||||||
|
|
||||||
|
elseif type(player) == "string" then
|
||||||
|
playername = player
|
||||||
|
|
||||||
|
else
|
||||||
|
playername = ""
|
||||||
|
end
|
||||||
|
|
||||||
if minetest.is_protected(pos, playername) then
|
if minetest.is_protected(pos, playername) then
|
||||||
minetest.record_protection_violation(pos, playername)
|
minetest.record_protection_violation(pos, playername)
|
||||||
@ -807,7 +849,7 @@ function signs_lib.can_modify(pos, player)
|
|||||||
|
|
||||||
if owner == ""
|
if owner == ""
|
||||||
or playername == owner
|
or playername == owner
|
||||||
or (minetest.check_player_privs(playername, {signslib_edit=true}))
|
or minetest.get_player_privs(playername)[signs_lib.edit_priv]
|
||||||
or (playername == minetest.settings:get("name")) then
|
or (playername == minetest.settings:get("name")) then
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
@ -904,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]
|
||||||
|
|
||||||
@ -946,7 +994,7 @@ function signs_lib.after_place_node(pos, placer, itemstack, pointed_thing, locke
|
|||||||
end
|
end
|
||||||
|
|
||||||
function signs_lib.register_fence_with_sign()
|
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()")
|
log("warning", "Attempt to call no longer used function signs_lib.register_fence_with_sign()")
|
||||||
end
|
end
|
||||||
|
|
||||||
local use_glow = function(pos, node, puncher, pointed_thing)
|
local use_glow = function(pos, node, puncher, pointed_thing)
|
||||||
@ -968,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 = {
|
||||||
@ -979,6 +1028,7 @@ function signs_lib.register_sign(name, raw_def)
|
|||||||
end
|
end
|
||||||
|
|
||||||
def.after_place_node = raw_def.after_place_node or signs_lib.after_place_node
|
def.after_place_node = raw_def.after_place_node or signs_lib.after_place_node
|
||||||
|
def.on_blast = raw_def.on_blast or signs_lib.blast_sign
|
||||||
|
|
||||||
if raw_def.entity_info then
|
if raw_def.entity_info then
|
||||||
|
|
||||||
@ -1022,6 +1072,9 @@ function signs_lib.register_sign(name, raw_def)
|
|||||||
def.groups = signs_lib.standard_wood_groups
|
def.groups = signs_lib.standard_wood_groups
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- force all signs into the sign group
|
||||||
|
def.groups.sign = def.groups.sign or 1
|
||||||
|
|
||||||
local cbox = signs_lib.make_selection_boxes(35, 25)
|
local cbox = signs_lib.make_selection_boxes(35, 25)
|
||||||
|
|
||||||
def.selection_box = raw_def.selection_box or cbox
|
def.selection_box = raw_def.selection_box or cbox
|
||||||
@ -1243,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
|
||||||
@ -1262,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
|
||||||
@ -1280,11 +1333,15 @@ 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
|
||||||
})
|
})
|
||||||
|
|
||||||
|
minetest.register_on_mods_loaded(function()
|
||||||
|
if not minetest.registered_privileges[signs_lib.edit_priv] then
|
||||||
minetest.register_privilege("signslib_edit", {})
|
minetest.register_privilege("signslib_edit", {})
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -1304,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
|
||||||
@ -1329,11 +1386,11 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
|||||||
local playername = player:get_player_name()
|
local playername = player:get_player_name()
|
||||||
|
|
||||||
if fields.text and fields.ok then
|
if fields.text and fields.ok then
|
||||||
minetest.log("action", S("@1 wrote \"@2\" to sign at @3",
|
log("action", "%s wrote %q to sign at %s",
|
||||||
(playername or ""),
|
(playername or ""),
|
||||||
fields.text:gsub('\\', '\\\\'):gsub("\n", "\\n"),
|
fields.text:gsub("\n", "\\n"),
|
||||||
pos_string
|
pos_string
|
||||||
))
|
)
|
||||||
signs_lib.update_sign(pos, fields)
|
signs_lib.update_sign(pos, fields)
|
||||||
elseif fields.wide_on or fields.wide_off or fields.uni_on or fields.uni_off then
|
elseif fields.wide_on or fields.wide_off or fields.uni_on or fields.uni_off then
|
||||||
local node = minetest.get_node(pos)
|
local node = minetest.get_node(pos)
|
||||||
@ -1357,20 +1414,20 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if change_wide then
|
if change_wide then
|
||||||
minetest.log("action", S("@1 flipped the wide-font switch to \"@2\" at @3",
|
log("action", "%s flipped the wide-font switch to %q at %s",
|
||||||
(playername or ""),
|
(playername or ""),
|
||||||
(fields.wide_on and "off" or "on"),
|
(fields.wide_on and "off" or "on"),
|
||||||
minetest.pos_to_string(pos)
|
minetest.pos_to_string(pos)
|
||||||
))
|
)
|
||||||
signs_lib.update_sign(pos, fields)
|
signs_lib.update_sign(pos, fields)
|
||||||
minetest.show_formspec(playername, "signs_lib:sign", get_sign_formspec(pos, node.name))
|
minetest.show_formspec(playername, "signs_lib:sign", get_sign_formspec(pos, node.name))
|
||||||
end
|
end
|
||||||
if change_uni then
|
if change_uni then
|
||||||
minetest.log("action", S("@1 flipped the unicode-font switch to \"@2\" at @3",
|
log("action", "%s flipped the unicode-font switch to %q at %s",
|
||||||
(playername or ""),
|
(playername or ""),
|
||||||
(fields.uni_on and "off" or "on"),
|
(fields.uni_on and "off" or "on"),
|
||||||
minetest.pos_to_string(pos)
|
minetest.pos_to_string(pos)
|
||||||
))
|
)
|
||||||
signs_lib.update_sign(pos, fields)
|
signs_lib.update_sign(pos, fields)
|
||||||
minetest.show_formspec(playername, "signs_lib:sign", get_sign_formspec(pos, node.name))
|
minetest.show_formspec(playername, "signs_lib:sign", get_sign_formspec(pos, node.name))
|
||||||
end
|
end
|
||||||
|
@ -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] = "$",
|
||||||
|
5
init.lua
@ -7,8 +7,9 @@ signs_lib = {}
|
|||||||
|
|
||||||
signs_lib.path = minetest.get_modpath(minetest.get_current_modname())
|
signs_lib.path = minetest.get_modpath(minetest.get_current_modname())
|
||||||
|
|
||||||
local S = dofile(signs_lib.path .. "/intllib.lua")
|
signs_lib.S = minetest.get_translator(minetest.get_current_modname())
|
||||||
signs_lib.gettext = S
|
|
||||||
|
signs_lib.edit_priv = minetest.settings:get("signs_lib.edit_priv") or "signslib_edit"
|
||||||
|
|
||||||
dofile(signs_lib.path.."/encoding.lua")
|
dofile(signs_lib.path.."/encoding.lua")
|
||||||
dofile(signs_lib.path.."/api.lua")
|
dofile(signs_lib.path.."/api.lua")
|
||||||
|
45
intllib.lua
@ -1,45 +0,0 @@
|
|||||||
|
|
||||||
-- Fallback functions for when `intllib` is not installed.
|
|
||||||
-- Code released under Unlicense <http://unlicense.org>.
|
|
||||||
|
|
||||||
-- Get the latest version of this file at:
|
|
||||||
-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua
|
|
||||||
|
|
||||||
local function format(str, ...)
|
|
||||||
local args = { ... }
|
|
||||||
local function repl(escape, open, num, close)
|
|
||||||
if escape == "" then
|
|
||||||
local replacement = tostring(args[tonumber(num)])
|
|
||||||
if open == "" then
|
|
||||||
replacement = replacement..close
|
|
||||||
end
|
|
||||||
return replacement
|
|
||||||
else
|
|
||||||
return "@"..open..num..close
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl))
|
|
||||||
end
|
|
||||||
|
|
||||||
local gettext, ngettext
|
|
||||||
if minetest.get_modpath("intllib") then
|
|
||||||
if intllib.make_gettext_pair then
|
|
||||||
-- New method using gettext.
|
|
||||||
gettext, ngettext = intllib.make_gettext_pair()
|
|
||||||
else
|
|
||||||
-- Old method using text files.
|
|
||||||
gettext = intllib.Getter()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Fill in missing functions.
|
|
||||||
|
|
||||||
gettext = gettext or function(msgid, ...)
|
|
||||||
return format(msgid, ...)
|
|
||||||
end
|
|
||||||
|
|
||||||
ngettext = ngettext or function(msgid, msgid_plural, n, ...)
|
|
||||||
return format(n==1 and msgid or msgid_plural, ...)
|
|
||||||
end
|
|
||||||
|
|
||||||
return gettext, ngettext
|
|
97
locale/de.po
@ -1,97 +0,0 @@
|
|||||||
# German Translation for the signs_lib mod.
|
|
||||||
# Copyright (C) 2018 Vanessa Ezekowitz
|
|
||||||
# This file is distributed under the same license as the signs_lib package.
|
|
||||||
# Xanthin, 2017.
|
|
||||||
# CodeXP <codexp@gmx.net>, 2018.
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: \n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2017-07-31 18:31+0200\n"
|
|
||||||
"PO-Revision-Date: 2018-03-24 22:00+0100\n"
|
|
||||||
"Last-Translator: CodeXP <codexp@gmx.net>\n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"Language: de\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"X-Generator: Poedit 1.8.12\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Write"
|
|
||||||
msgstr "schreiben"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Locked sign, owned by @1\n"
|
|
||||||
msgstr "gesperrter Schild, gehört @1\n"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "locked "
|
|
||||||
msgstr "gesperrt "
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
#, fuzzy
|
|
||||||
msgid "@1 wrote \"@2\" to @3sign at @4"
|
|
||||||
msgstr "@1 schrieb \"@2\" auf das @3Schild bei @4"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Sign"
|
|
||||||
msgstr "Schild"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Can edit all locked signs"
|
|
||||||
msgstr "Kann alle gesperrte Schilder bearbeiten"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Locked Sign"
|
|
||||||
msgstr "gesperrter Schild"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "green"
|
|
||||||
msgstr "grün"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "yellow"
|
|
||||||
msgstr "gelb"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "red"
|
|
||||||
msgstr "rot"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "white_red"
|
|
||||||
msgstr "weißrot"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "white_black"
|
|
||||||
msgstr "schwarzweiß"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "orange"
|
|
||||||
msgstr "orange"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "blue"
|
|
||||||
msgstr "blau"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "brown"
|
|
||||||
msgstr "braun"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Sign (@1, metal)"
|
|
||||||
msgstr "Schild (@1, Metall)"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Attempt to register unknown node as fence"
|
|
||||||
msgstr "Versuch ein unbekanntes Element als Zaun zu registrieren"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Registered @1 and @2"
|
|
||||||
msgstr "Registrierte @1 und @2"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "[MOD] signs loaded"
|
|
||||||
msgstr "[MOD] Schilder-Mod geladen"
|
|
95
locale/es.po
@ -1,95 +0,0 @@
|
|||||||
# SOME DESCRIPTIVE TITLE.
|
|
||||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
|
||||||
# This file is distributed under the same license as the PACKAGE package.
|
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: \n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2017-07-31 18:22+0200\n"
|
|
||||||
"PO-Revision-Date: 2017-07-31 18:30+0200\n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"X-Generator: Poedit 1.8.12\n"
|
|
||||||
"Last-Translator: Carlos Barraza\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
"Language: es\n"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Locked sign, owned by @1\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "locked "
|
|
||||||
msgstr "bloqueada "
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "@1 wrote \"@2\" to @3sign at @4"
|
|
||||||
msgstr "@1 escribio \"@2\" en el cartel @3en @4"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Sign"
|
|
||||||
msgstr "Letrero"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Can edit all locked signs"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
#, fuzzy
|
|
||||||
msgid "Locked Sign"
|
|
||||||
msgstr "Letrero bloqueada"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "green"
|
|
||||||
msgstr "verde"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "yellow"
|
|
||||||
msgstr "amarillo"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "red"
|
|
||||||
msgstr "rojo"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
#, fuzzy
|
|
||||||
msgid "white_red"
|
|
||||||
msgstr "rojo y blanco"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
#, fuzzy
|
|
||||||
msgid "white_black"
|
|
||||||
msgstr "negro y blanco"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "orange"
|
|
||||||
msgstr "naranja"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "blue"
|
|
||||||
msgstr "azul"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "brown"
|
|
||||||
msgstr "marrón"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
#, fuzzy
|
|
||||||
msgid "Sign (@1, metal)"
|
|
||||||
msgstr "Letrero (@1, metal)"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Attempt to register unknown node as fence"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Registered @1 and @2"
|
|
||||||
msgstr "Registrado @1 y @2"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "[MOD] signs loaded"
|
|
||||||
msgstr "[MOD] signs cargados"
|
|
91
locale/fr.po
@ -1,91 +0,0 @@
|
|||||||
# SOME DESCRIPTIVE TITLE.
|
|
||||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
|
||||||
# This file is distributed under the same license as the PACKAGE package.
|
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: \n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2017-07-31 18:13+0200\n"
|
|
||||||
"PO-Revision-Date: 2017-07-31 18:22+0200\n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"X-Generator: Poedit 1.8.12\n"
|
|
||||||
"Last-Translator: fat115 <fat115@framasoft.org>\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
|
||||||
"Language: fr\n"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Locked sign, owned by @1\n"
|
|
||||||
msgstr "Panneau verrouillé, appartient à @1\n"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "locked "
|
|
||||||
msgstr "verrouillé "
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "@1 wrote \"@2\" to @3sign at @4"
|
|
||||||
msgstr "@1 a écrit \"@2\" sur le panneau @3en @4"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Sign"
|
|
||||||
msgstr "Panneau"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Can edit all locked signs"
|
|
||||||
msgstr "Peut modifier les panneaux verrouillés"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Locked Sign"
|
|
||||||
msgstr "Panneau (verrouillé)"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "green"
|
|
||||||
msgstr "vert"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "yellow"
|
|
||||||
msgstr "jaune"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "red"
|
|
||||||
msgstr "rouge"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "white_red"
|
|
||||||
msgstr "rouge et blanc"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "white_black"
|
|
||||||
msgstr "noir et blanc"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "orange"
|
|
||||||
msgstr "orange"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "blue"
|
|
||||||
msgstr "bleu"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "brown"
|
|
||||||
msgstr "marron"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Sign (@1, metal)"
|
|
||||||
msgstr "Panneau (@1, métal)"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Attempt to register unknown node as fence"
|
|
||||||
msgstr "Tentative d'enregistrer un nœud inconnu comme barrière"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Registered @1 and @2"
|
|
||||||
msgstr "Enregistrement de @1 et @"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "[MOD] signs loaded"
|
|
||||||
msgstr "[MOD] signs chargé"
|
|
91
locale/ms.po
@ -1,91 +0,0 @@
|
|||||||
# SOME DESCRIPTIVE TITLE.
|
|
||||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
|
||||||
# This file is distributed under the same license as the PACKAGE package.
|
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: \n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2017-07-31 18:00+0200\n"
|
|
||||||
"PO-Revision-Date: 2017-11-17 02:38+0800\n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"X-Generator: Poedit 2.0.4\n"
|
|
||||||
"Last-Translator: \n"
|
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
|
||||||
"Language: ms\n"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Locked sign, owned by @1\n"
|
|
||||||
msgstr "Papan tanda berkunci, milik @1\n"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "locked "
|
|
||||||
msgstr "berkunci "
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "@1 wrote \"@2\" to @3sign at @4"
|
|
||||||
msgstr "@1 menulis \"@2\" atas papan tanda @3dekat @4"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Sign"
|
|
||||||
msgstr "Papan Tanda"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Can edit all locked signs"
|
|
||||||
msgstr "Boleh sunting semua papan tanda berkunci"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Locked Sign"
|
|
||||||
msgstr "Papan Tanda Berkunci"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "green"
|
|
||||||
msgstr "hijau"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "yellow"
|
|
||||||
msgstr "kuning"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "red"
|
|
||||||
msgstr "merah"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "white_red"
|
|
||||||
msgstr "putih_merah"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "white_black"
|
|
||||||
msgstr "putih_hitam"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "orange"
|
|
||||||
msgstr "jingga"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "blue"
|
|
||||||
msgstr "biru"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "brown"
|
|
||||||
msgstr "perang"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Sign (@1, metal)"
|
|
||||||
msgstr "Papan Tanda (@1, logam)"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Attempt to register unknown node as fence"
|
|
||||||
msgstr "Cuba untuk mendaftar nod tidak diketahui sebagai pagar"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Registered @1 and @2"
|
|
||||||
msgstr "Telah daftar @1 dan @2"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "[MOD] signs loaded"
|
|
||||||
msgstr "[MODS] signs telah dimuatkan"
|
|
94
locale/ru.po
@ -1,94 +0,0 @@
|
|||||||
# Russian Translation for the signs_lib mod.
|
|
||||||
# Copyright (C) 2018 Vanessa Ezekowitz
|
|
||||||
# This file is distributed under the same license as the signs_lib package.
|
|
||||||
# CodeXP <codexp@gmx.net>, 2018.
|
|
||||||
#
|
|
||||||
#, fuzzy
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: signs_lib\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2018-03-24 22:23+0100\n"
|
|
||||||
"PO-Revision-Date: \n"
|
|
||||||
"Last-Translator: CodeXP <codexp@gmx.net>\n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"Language: ru\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Write"
|
|
||||||
msgstr "записать"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Locked sign, owned by @1\n"
|
|
||||||
msgstr "защищенная табличка, пренадлежит @1\n"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "locked "
|
|
||||||
msgstr "защищенный "
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "@1 wrote \"@2\" to @3sign at @4"
|
|
||||||
msgstr "@1 записал \"@2\" в @3sign на @4"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Sign"
|
|
||||||
msgstr "табличка"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Can edit all locked signs"
|
|
||||||
msgstr "Может редактировать все защищенные таблички"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Locked Sign"
|
|
||||||
msgstr "защищенная табличка"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "green"
|
|
||||||
msgstr "зеленая"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "yellow"
|
|
||||||
msgstr "желтая"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "red"
|
|
||||||
msgstr "красная"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "white_red"
|
|
||||||
msgstr "краснобелая"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "white_black"
|
|
||||||
msgstr "чернобелая"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "orange"
|
|
||||||
msgstr "оранжевая"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "blue"
|
|
||||||
msgstr "синея"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "brown"
|
|
||||||
msgstr "коричневая"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Sign (@1, metal)"
|
|
||||||
msgstr "Табличка (@1, металл)"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Attempt to register unknown node as fence"
|
|
||||||
msgstr "Попытка зарегистрировать неизвестный узел как забор"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Registered @1 and @2"
|
|
||||||
msgstr "Зарегистрировано @1 для @2"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "[MOD] signs loaded"
|
|
||||||
msgstr "[MOD] мод табличек загружен"
|
|
12
locale/signs_lib.de.tr
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# textdomain: signs_lib
|
||||||
|
Locked sign, owned by @1@n=Abgeschlossenes Schild, gehört @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.=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.
|
||||||
|
There are no signs in the currently-loaded terrain.=Im derzeit geladenen Gelände befinden sich keine Schilder.
|
||||||
|
Found a total of @1 sign nodes across @2 blocks.=Insgesamt wurden @1 Schild-Nodes über @2 Kartenblöcke gefunden.
|
||||||
|
Regenerating sign entities ...=Schild-Entities werden neu erzeugt ...
|
||||||
|
Finished.=Fertig.
|
||||||
|
Write=Schreiben
|
||||||
|
Unicode font=Unicode-Schrift
|
||||||
|
Wide font=Weite Schrift
|
||||||
|
Wooden Wall Sign=Holzwandschild
|
||||||
|
Steel Wall Sign=Stahlwandschild
|
12
locale/signs_lib.es.tr
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# textdomain: signs_lib
|
||||||
|
Locked sign, owned by @1@n=Cartel bloqueado, propiedad de @1
|
||||||
|
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.
|
||||||
|
There are no signs in the currently-loaded terrain.=No hay carteles en el terreno actual cargado.
|
||||||
|
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).
|
||||||
|
Regenerating sign entities ...=Regenerando entidades de los carteles...
|
||||||
|
Finished.=Terminado
|
||||||
|
Write=Escribir
|
||||||
|
Unicode font=Fuente unicode
|
||||||
|
Wide font=Fuente ancha
|
||||||
|
Wooden Wall Sign=Cartel de Madera
|
||||||
|
Steel Wall Sign=Cartel de Acero
|
12
locale/signs_lib.fr.tr
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# textdomain: signs_lib
|
||||||
|
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=
|
||||||
|
Unicode font=
|
||||||
|
Wide font=
|
||||||
|
Wooden Wall Sign=
|
||||||
|
Steel Wall Sign=
|
12
locale/signs_lib.ms.tr
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# textdomain: signs_lib
|
||||||
|
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=
|
||||||
|
Unicode font=
|
||||||
|
Wide font=
|
||||||
|
Wooden Wall Sign=
|
||||||
|
Steel Wall Sign=
|
12
locale/signs_lib.ru.tr
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# textdomain: signs_lib
|
||||||
|
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=записать
|
||||||
|
Unicode font=
|
||||||
|
Wide font=
|
||||||
|
Wooden Wall Sign=
|
||||||
|
Steel Wall Sign=
|
14
locale/signs_lib.uk.tr
Normal 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=Сталева табличка
|
12
locale/signs_lib.zh_CN.tr
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# textdomain: signs_lib
|
||||||
|
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.=在@2个区块中发现共计@1个告示牌方块。
|
||||||
|
Regenerating sign entities ...=正在重建告示牌实体...
|
||||||
|
Finished.=完成。
|
||||||
|
Write=书写
|
||||||
|
Unicode font=Unicode字体
|
||||||
|
Wide font=宽体字体
|
||||||
|
Wooden Wall Sign=木质告示牌
|
||||||
|
Steel Wall Sign=钢质告示牌
|
@ -1,94 +0,0 @@
|
|||||||
# LANGUAGE Translation for the signs_lib mod.
|
|
||||||
# Copyright (C) 2018 Vanessa Ezekowitz
|
|
||||||
# This file is distributed under the same license as the signs_lib package.
|
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
|
||||||
#
|
|
||||||
#, fuzzy
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: signs_lib\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2018-03-24 22:23+0100\n"
|
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
|
||||||
"Language: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Write"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Locked sign, owned by @1\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "locked "
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "@1 wrote \"@2\" to @3sign at @4"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Sign"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Can edit all locked signs"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Locked Sign"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "green"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "yellow"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "red"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "white_red"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "white_black"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "orange"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "blue"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "brown"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Sign (@1, metal)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Attempt to register unknown node as fence"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "Registered @1 and @2"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: init.lua
|
|
||||||
msgid "[MOD] signs loaded"
|
|
||||||
msgstr ""
|
|
12
locale/template.txt
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# textdomain: signs_lib
|
||||||
|
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=
|
||||||
|
Unicode font=
|
||||||
|
Wide font=
|
||||||
|
Wooden Wall Sign=
|
||||||
|
Steel Wall Sign=
|
2
mod.conf
@ -1,5 +1,5 @@
|
|||||||
name = signs_lib
|
name = signs_lib
|
||||||
author = VanessaE
|
author = VanessaE
|
||||||
optional_depends = intllib, screwdriver, streetspoles, streetlamps, cottages, prefab_redo, default
|
optional_depends = screwdriver, streetspoles, streetlamps, cottages, prefab_redo, default
|
||||||
description = Adds signs with readable text.
|
description = Adds signs with readable text.
|
||||||
min_minetest_version = 5.4.0
|
min_minetest_version = 5.4.0
|
||||||
|
8
nonascii-ua.lua
Normal 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"})
|
1
settingstypes.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
signs_lib.edit_priv (Allows to rotate signs and to open (and consequently edit) any default sign formspec) string signslib_edit
|
@ -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",
|
||||||
|
BIN
textures/signs_lib_font_16px_0404.png
Normal file
After Width: | Height: | Size: 129 B |
BIN
textures/signs_lib_font_16px_0406.png
Normal file
After Width: | Height: | Size: 86 B |
BIN
textures/signs_lib_font_16px_0407.png
Normal file
After Width: | Height: | Size: 98 B |
BIN
textures/signs_lib_font_16px_0454.png
Normal file
After Width: | Height: | Size: 135 B |
BIN
textures/signs_lib_font_16px_0456.png
Normal file
After Width: | Height: | Size: 94 B |
BIN
textures/signs_lib_font_16px_0457.png
Normal file
After Width: | Height: | Size: 91 B |
BIN
textures/signs_lib_font_16px_0490.png
Normal file
After Width: | Height: | Size: 102 B |
BIN
textures/signs_lib_font_16px_0491.png
Normal file
After Width: | Height: | Size: 103 B |
BIN
textures/signs_lib_font_32px_0404.png
Normal file
After Width: | Height: | Size: 192 B |
BIN
textures/signs_lib_font_32px_0406.png
Normal file
After Width: | Height: | Size: 100 B |
BIN
textures/signs_lib_font_32px_0407.png
Normal file
After Width: | Height: | Size: 110 B |
BIN
textures/signs_lib_font_32px_0454.png
Normal file
After Width: | Height: | Size: 171 B |
BIN
textures/signs_lib_font_32px_0456.png
Normal file
After Width: | Height: | Size: 99 B |
BIN
textures/signs_lib_font_32px_0457.png
Normal file
After Width: | Height: | Size: 107 B |
BIN
textures/signs_lib_font_32px_0490.png
Normal file
After Width: | Height: | Size: 110 B |
BIN
textures/signs_lib_font_32px_0491.png
Normal file
After Width: | Height: | Size: 111 B |
8
util/nonascii-ua
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
ґ
|
||||||
|
і
|
||||||
|
ї
|
||||||
|
є
|
||||||
|
Ґ
|
||||||
|
І
|
||||||
|
Ї
|
||||||
|
Є
|