Merge remote-tracking branch 'upstream/master' into dev

This commit is contained in:
bri cassa 2023-11-26 13:53:43 +01:00
commit 127629a029
87 changed files with 755 additions and 737 deletions

View File

@ -1,6 +1,10 @@
unused_args = false unused_args = false
allow_defined_top = true allow_defined_top = true
globals = {
"default"
}
read_globals = { read_globals = {
"DIR_DELIM", "DIR_DELIM",
"minetest", "minetest",

View File

@ -1028,6 +1028,27 @@ Trees
* `default.grow_blueberry_bush(pos)` * `default.grow_blueberry_bush(pos)`
* Grows a blueberry bush at pos * Grows a blueberry bush at pos
* `default.on_grow_failed(pos)`
* Reset the node timer to 300 seconds, used as default callback when the growth of a sapling fails
* `default.sapling_growth_defs`
* Table that contains all the definitions for the growable saplings, see `default.register_sapling_growth`
* `default.register_sapling_growth(name, def)`
* Register a new sapling growth configuration. Useful to add custom sapling and trees to the game in a compact way.
default.register_sapling_growth(
"default:sapling", -- Name of the sapling
{
can_grow = default.can_grow, -- Function called to determine whether the sapling can grow, should return a boolean
on_grow_failed = default.on_grow_failed, -- Function called when the growth fails
grow = function(pos) -- Function called when the growth has success. This should replace the sapling with a tree.
}
)
* `default.grow_sapling(pos)`
* Attempt to grow a sapling at the given position. Useful as on_timer callback.
Carts Carts
----- -----
@ -1142,8 +1163,9 @@ the log.
`default.set_inventory_action_loggers(def, name)` `default.set_inventory_action_loggers(def, name)`
* sets the callbacks `on_metadata_inventory_move`, * hooks the callbacks `on_metadata_inventory_move`,
`on_metadata_inventory_put` and `on_metadata_inventory_take` `on_metadata_inventory_put` and `on_metadata_inventory_take`
that log corresponding actions that log corresponding actions
* after logging the action, the original callback (if any) is called
* `def` See [Node definition] * `def` See [Node definition]
* `name` Description of the node in the log message * `name` Description of the node in the log message

View File

@ -115,8 +115,8 @@ function beds.register_bed(name, def)
local dir = minetest.facedir_to_dir(node.param2) local dir = minetest.facedir_to_dir(node.param2)
local p = vector.add(pos, dir) local p = vector.add(pos, dir)
local node2 = minetest.get_node_or_nil(p) local node2 = minetest.get_node_or_nil(p)
if not node2 or not minetest.get_item_group(node2.name, "bed") == 2 or if not node2 or minetest.get_item_group(node2.name, "bed") ~= 2 or
not node.param2 == node2.param2 then node.param2 ~= node2.param2 then
return false return false
end end
if minetest.is_protected(p, user:get_player_name()) then if minetest.is_protected(p, user:get_player_name()) then

View File

@ -65,7 +65,7 @@ beds.register_bed("beds:bed", {
"beds_bed_top_bottom.png^[transformR90", "beds_bed_top_bottom.png^[transformR90",
"beds_bed_under.png", "beds_bed_under.png",
"beds_bed_side_bottom_r.png", "beds_bed_side_bottom_r.png",
"beds_bed_side_bottom_r.png^[transformfx", "beds_bed_side_bottom_r.png^[transformFX",
"beds_transparent.png", "beds_transparent.png",
"beds_bed_side_bottom.png" "beds_bed_side_bottom.png"
}, },
@ -73,7 +73,7 @@ beds.register_bed("beds:bed", {
"beds_bed_top_top.png^[transformR90", "beds_bed_top_top.png^[transformR90",
"beds_bed_under.png", "beds_bed_under.png",
"beds_bed_side_top_r.png", "beds_bed_side_top_r.png",
"beds_bed_side_top_r.png^[transformfx", "beds_bed_side_top_r.png^[transformFX",
"beds_bed_side_top.png", "beds_bed_side_top.png",
"beds_transparent.png", "beds_transparent.png",
} }

View File

@ -181,6 +181,26 @@ function beds.skip_night()
minetest.set_timeofday(0.23) minetest.set_timeofday(0.23)
end end
local update_scheduled = false
local function schedule_update()
if update_scheduled then
-- there already is an update scheduled; don't schedule more to prevent races
return
end
update_scheduled = true
minetest.after(2, function()
update_scheduled = false
if not is_sp then
update_formspecs(is_night_skip_enabled())
end
if is_night_skip_enabled() then
-- skip the night and let all players stand up
beds.skip_night()
beds.kick_players()
end
end)
end
function beds.on_rightclick(pos, player) function beds.on_rightclick(pos, player)
local name = player:get_player_name() local name = player:get_player_name()
local ppos = player:get_pos() local ppos = player:get_pos()
@ -206,17 +226,8 @@ function beds.on_rightclick(pos, player)
update_formspecs(false) update_formspecs(false)
end end
-- skip the night and let all players stand up
if check_in_beds() then if check_in_beds() then
minetest.after(2, function() schedule_update()
if not is_sp then
update_formspecs(is_night_skip_enabled())
end
if is_night_skip_enabled() then
beds.skip_night()
beds.kick_players()
end
end)
end end
end end
@ -249,13 +260,7 @@ minetest.register_on_leaveplayer(function(player)
lay_down(player, nil, nil, false, true) lay_down(player, nil, nil, false, true)
beds.player[name] = nil beds.player[name] = nil
if check_in_beds() then if check_in_beds() then
minetest.after(2, function() schedule_update()
update_formspecs(is_night_skip_enabled())
if is_night_skip_enabled() then
beds.skip_night()
beds.kick_players()
end
end)
end end
end) end)

View File

@ -1,10 +1,10 @@
# textdomain: beds # textdomain: beds
Fancy Bed=Деталізована Постіль Fancy Bed=Гарне ліжко
Simple Bed=Звичайна Постіль Simple Bed=Просте ліжко
This bed is already occupied!=Ця постіль вже зайнята! This bed is already occupied!=Це ліжко вже зайняте!
You have to stop moving before going to bed!=Не можна скористатись постіллю на ходу! You have to stop moving before going to bed!=Зупиніться перед тим як лягти!
Good morning.=Доброго ранку. Good morning.=Доброго ранку.
@1 of @2 players are in bed=@1 з @2 гравців в ліжку @1 of @2 players are in bed=@1 з @2 гравців(-я) у ліжку
Force night skip=Пропустити ніч Force night skip=Пропустити ніч
You can only sleep at night.=Ви можете спати тільки вночі. You can only sleep at night.=Ви можете спати лише вночі.
Leave Bed=Встати з ліжка Leave Bed=Встати з ліжка

View File

@ -1,3 +1,3 @@
# textdomain: binoculars # textdomain: binoculars
Binoculars=Teropong Binoculars=Teropong
Use with 'Zoom' key=Pakai dengan tombol 'Zum' Use with 'Zoom' key=Gunakan dengan tombol 'Zum'

View File

@ -1,3 +1,3 @@
# textdomain: binoculars # textdomain: binoculars
Binoculars=Бінокль Binoculars=Бінокль
Use with 'Zoom' key=Використовується з правами 'Zoom' Use with 'Zoom' key=Використовується клавішею 'Наближення'

View File

@ -28,7 +28,7 @@ local bones_formspec =
local share_bones_time = tonumber(minetest.settings:get("share_bones_time")) or 1200 local share_bones_time = tonumber(minetest.settings:get("share_bones_time")) or 1200
local share_bones_time_early = tonumber(minetest.settings:get("share_bones_time_early")) or share_bones_time / 4 local share_bones_time_early = tonumber(minetest.settings:get("share_bones_time_early")) or share_bones_time / 4
minetest.register_node("bones:bones", { local bones_def = {
description = S("Bones"), description = S("Bones"),
tiles = { tiles = {
"bones_top.png^[transform2", "bones_top.png^[transform2",
@ -130,7 +130,11 @@ minetest.register_node("bones:bones", {
end, end,
on_blast = function(pos) on_blast = function(pos)
end, end,
}) }
default.set_inventory_action_loggers(bones_def, "bones")
minetest.register_node("bones:bones", bones_def)
local function may_replace(pos, player) local function may_replace(pos, player)
local node_name = minetest.get_node(pos).name local node_name = minetest.get_node(pos).name
@ -224,7 +228,7 @@ minetest.register_on_dieplayer(function(player)
-- check if it's possible to place bones, if not find space near player -- check if it's possible to place bones, if not find space near player
if bones_mode == "bones" and not may_replace(pos, player) then if bones_mode == "bones" and not may_replace(pos, player) then
local air = minetest.find_node_near(pos, 1, {"air"}) local air = minetest.find_node_near(pos, 1, {"air"})
if air and not minetest.is_protected(air, player_name) then if air then
pos = air pos = air
else else
bones_mode = "drop" bones_mode = "drop"

View File

@ -1,8 +1,8 @@
# textdomain: bones # textdomain: bones
Bones=Кістки Bones=Кістки
@1's old bones=старі кістки @1 @1's old bones=Старі кістки @1
@1 died at @2.=@1 помер в @2. @1 died at @2.=@1 загинув на координатах @2.
@1 died at @2, and dropped their inventory.=@1 помер в @2, та загубив вміст свого інвентарю. @1 died at @2, and dropped their inventory.=@1 загинув на координатах @2 та втратив вміст свого інвентарю.
@1 died at @2, and bones were placed.=@1 помер в @2, розміщені кістки. @1 died at @2, and bones were placed.=@1 загинув на координатах @2, було розміщено кістки.
@1's fresh bones=нові кістки @1 @1's fresh bones=Свіжі кістки @1
@1's bones=кістки @1 @1's bones=Кістки @1

View File

@ -1,5 +1,5 @@
# textdomain: bucket # textdomain: bucket
Empty Bucket=Пусте Відро Empty Bucket=Порожнє відро
Water Bucket=Відро З Водою Water Bucket=Відро з водою
River Water Bucket=Відро З Річною Водою River Water Bucket=Відро з річковою водою
Lava Bucket=Відро З Лавою Lava Bucket=Відро з лавою

View File

@ -1,4 +1,4 @@
# textdomain: butterflies # textdomain: butterflies
White Butterfly=Білий Метелик White Butterfly=Білий метелик
Red Butterfly=Червоний Метелик Red Butterfly=Червоний метелик
Violet Butterfly=Фіолетовий Метелик Violet Butterfly=Фіолетовий метелик

View File

@ -1,6 +1,6 @@
# textdomain: carts # textdomain: carts
Cart=Вагонетка Cart=Вагонетка
(Sneak+Click to pick up)=(Пригніться та клікніть по вагонетці, щоб забрати) (Sneak+Click to pick up)=(Пригніться та натисніть, щоби підібрати)
Rail=Рейки Rail=Рейки
Powered Rail=Задіяні Рейки Powered Rail=Електричні рейки
Brake Rail=Гальмівні Рейки Brake Rail=Гальмівні рейки

View File

@ -1,5 +1,6 @@
# textdomain: creative # textdomain: creative
Allow player to use creative inventory=Spieler erlauben, das Kreativinventar zu benutzen Allow player to use creative inventory=Spieler erlauben, das Kreativinventar zu benutzen
No items to show.=Keine Gegenstände vorhanden.
Search=Suchen Search=Suchen
Reset=Zurücksetzen Reset=Zurücksetzen
Previous page=Vorherige Seite Previous page=Vorherige Seite

View File

@ -1,5 +1,6 @@
# textdomain: creative # textdomain: creative
Allow player to use creative inventory=Permesi ke la ludanto uzu la kreeman stokon Allow player to use creative inventory=Permesi ke la ludanto uzu la kreeman stokon
No items to show.=
Search=Serĉi Search=Serĉi
Reset=Rekomencigi Reset=Rekomencigi
Previous page=Antaŭa paĝo Previous page=Antaŭa paĝo

View File

@ -1,7 +1,8 @@
# textdomain: creative # textdomain: creative
Allow player to use creative inventory=Permitir al jugador usar el inventario creativo Allow player to use creative inventory=Permitir al jugador usar el inventario creativo
No items to show.=Sin artículos que mostrar.
Search=Buscar Search=Buscar
Reset=Resetear Reset=Reiniciar
Previous page=Pág. siguiente Previous page=Pág. siguiente
Next page=Pág. anterior Next page=Pág. anterior
All=Todos All=Todos

View File

@ -1,5 +1,6 @@
# textdomain: creative # textdomain: creative
Allow player to use creative inventory=Permettre aux joueurs d'utiliser l'inventaire du mode créatif Allow player to use creative inventory=Permettre aux joueurs d'utiliser l'inventaire du mode créatif
No items to show.=
Search=Rechercher Search=Rechercher
Reset=Réinitialiser Reset=Réinitialiser
Previous page=Page précédente Previous page=Page précédente

View File

@ -1,5 +1,6 @@
# textdomain: creative # textdomain: creative
Allow player to use creative inventory=Bolehkan pemain memakai inventaris kreatif Allow player to use creative inventory=Bolehkan pemain menggunakan inventaris kreatif
No items to show.=Tiada barang untuk ditampilkan.
Search=Cari Search=Cari
Reset=Atur ulang Reset=Atur ulang
Previous page=Halaman sebelumnya Previous page=Halaman sebelumnya

View File

@ -1,5 +1,6 @@
# textdomain: creative # textdomain: creative
Allow player to use creative inventory=Permette al giocatore di usare l'inventario creativo Allow player to use creative inventory=Permette al giocatore di usare l'inventario creativo
No items to show.=
Search=Cerca Search=Cerca
Reset=Azzera Reset=Azzera
Previous page=Pagina precedente Previous page=Pagina precedente

View File

@ -1,5 +1,6 @@
# textdomain: creative # textdomain: creative
Allow player to use creative inventory=プレーヤーにクリエイティブ インベントリーの使用を許可する Allow player to use creative inventory=プレーヤーにクリエイティブ インベントリーの使用を許可する
No items to show.=
Search=検索 Search=検索
Reset=リセット Reset=リセット
Previous page=前のページ Previous page=前のページ

View File

@ -1,5 +1,6 @@
# textdomain: creative # textdomain: creative
Allow player to use creative inventory=zifre le ka pilno le finti ke dacti liste Allow player to use creative inventory=zifre le ka pilno le finti ke dacti liste
No items to show.=
Search=sisku Search=sisku
Reset=kraga'igau Reset=kraga'igau
Previous page=lidne Previous page=lidne

View File

@ -1,5 +1,6 @@
# textdomain: creative # textdomain: creative
Allow player to use creative inventory=Benarkan pemain menggunakan inventori kreatif Allow player to use creative inventory=Benarkan pemain menggunakan inventori kreatif
No items to show.=
Search=Cari Search=Cari
Reset=Set semula Reset=Set semula
Previous page=Halaman sebelumnya Previous page=Halaman sebelumnya

View File

@ -1,5 +1,6 @@
# textdomain: creative # textdomain: creative
Allow player to use creative inventory=Zezwól graczom na używanie kreatywnego ekwipunku Allow player to use creative inventory=Zezwól graczom na używanie kreatywnego ekwipunku
No items to show.=
Search=Wyszukaj Search=Wyszukaj
Reset=Zresetuj Reset=Zresetuj
Previous page=Poprzednia strona Previous page=Poprzednia strona

View File

@ -1,5 +1,6 @@
# textdomain: creative # textdomain: creative
Allow player to use creative inventory=Permitir o jogador usar o inventário criativo Allow player to use creative inventory=Permitir o jogador usar o inventário criativo
No items to show.=
Search=Pesquisar Search=Pesquisar
Reset=Redefinir Reset=Redefinir
Previous page=Página anterior Previous page=Página anterior

View File

@ -1,5 +1,6 @@
# textdomain: creative # textdomain: creative
Allow player to use creative inventory=Разрешить игроку использовать творческий инвентарь Allow player to use creative inventory=Разрешить игроку использовать творческий инвентарь
No items to show.=
Search=Поиск Search=Поиск
Reset=Сброс Reset=Сброс
Previous page=Предыдущая страница Previous page=Предыдущая страница

View File

@ -1,5 +1,6 @@
# textdomain: creative # textdomain: creative
Allow player to use creative inventory=Povolí hráčovi použivať kreatívny inventár Allow player to use creative inventory=Povolí hráčovi použivať kreatívny inventár
No items to show.=
Search=Hľadaj Search=Hľadaj
Reset=Vrátiť späť Reset=Vrátiť späť
Previous page=Predchádzajúca stránka Previous page=Predchádzajúca stránka

View File

@ -1,5 +1,6 @@
# textdomain: creative # textdomain: creative
Allow player to use creative inventory=Tillåt spelare att använda kreativa saker Allow player to use creative inventory=Tillåt spelare att använda kreativa saker
No items to show.=
Search=Sök Search=Sök
Reset=Återställ Reset=Återställ
Previous page=Förra sida Previous page=Förra sida

View File

@ -1,5 +1,6 @@
# textdomain: creative # textdomain: creative
Allow player to use creative inventory=Дозволити гравцеві використати творчий інвентар Allow player to use creative inventory=Дозволити гравцю використовувати творчий інвентар
No items to show.=Немає результатів.
Search=Пошук Search=Пошук
Reset=Скинути Reset=Скинути
Previous page=Попередня сторінка Previous page=Попередня сторінка

View File

@ -1,5 +1,6 @@
# textdomain: creative # textdomain: creative
Allow player to use creative inventory=允许玩家使用创造模式物品栏 Allow player to use creative inventory=允许玩家使用创造模式物品栏
No items to show.=
Search=搜索 Search=搜索
Reset=重置 Reset=重置
Previous page=上一页 Previous page=上一页

View File

@ -1,5 +1,6 @@
# textdomain: creative # textdomain: creative
Allow player to use creative inventory=允許玩家使用創造模式物品欄 Allow player to use creative inventory=允許玩家使用創造模式物品欄
No items to show.=
Search=搜索 Search=搜索
Reset=重置 Reset=重置
Previous page=上一頁 Previous page=上一頁

View File

@ -1,5 +1,6 @@
# textdomain: creative # textdomain: creative
Allow player to use creative inventory= Allow player to use creative inventory=
No items to show.=
Search= Search=
Reset= Reset=
Previous page= Previous page=

View File

@ -38,16 +38,23 @@ function default.chest.chest_lid_close(pn)
default.chest.open_chests[pn] = nil default.chest.open_chests[pn] = nil
for k, v in pairs(default.chest.open_chests) do for k, v in pairs(default.chest.open_chests) do
if v.pos.x == pos.x and v.pos.y == pos.y and v.pos.z == pos.z then if vector.equals(v.pos, pos) then
-- another player is also looking at the chest
return true return true
end end
end end
local node = minetest.get_node(pos) local node = minetest.get_node(pos)
minetest.after(0.2, minetest.swap_node, pos, { name = swap, minetest.after(0.2, function()
param2 = node.param2 }) local current_node = minetest.get_node(pos)
minetest.sound_play(sound, {gain = 0.3, pos = pos, if current_node.name ~= swap .. "_open" then
max_hear_distance = 10}, true) -- the chest has already been replaced, don't try to replace what's there.
return
end
minetest.swap_node(pos, {name = swap, param2 = node.param2})
minetest.sound_play(sound, {gain = 0.3, pos = pos,
max_hear_distance = 10}, true)
end)
end end
default.chest.open_chests = {} default.chest.open_chests = {}

View File

@ -744,16 +744,23 @@ function default.log_player_action(player, ...)
minetest.log("action", msg) minetest.log("action", msg)
end end
local nop = function() end
function default.set_inventory_action_loggers(def, name) function default.set_inventory_action_loggers(def, name)
local on_move = def.on_metadata_inventory_move or nop
def.on_metadata_inventory_move = function(pos, from_list, from_index, def.on_metadata_inventory_move = function(pos, from_list, from_index,
to_list, to_index, count, player) to_list, to_index, count, player)
default.log_player_action(player, "moves stuff in", name, "at", pos) default.log_player_action(player, "moves stuff in", name, "at", pos)
return on_move(pos, from_list, from_index, to_list, to_index, count, player)
end end
local on_put = def.on_metadata_inventory_put or nop
def.on_metadata_inventory_put = function(pos, listname, index, stack, player) def.on_metadata_inventory_put = function(pos, listname, index, stack, player)
default.log_player_action(player, "moves", stack:get_name(), "to", name, "at", pos) default.log_player_action(player, "moves", stack:get_name(), stack:get_count(), "to", name, "at", pos)
return on_put(pos, listname, index, stack, player)
end end
local on_take = def.on_metadata_inventory_take or nop
def.on_metadata_inventory_take = function(pos, listname, index, stack, player) def.on_metadata_inventory_take = function(pos, listname, index, stack, player)
default.log_player_action(player, "takes", stack:get_name(), "from", name, "at", pos) default.log_player_action(player, "takes", stack:get_name(), stack:get_count(), "from", name, "at", pos)
return on_take(pos, listname, index, stack, player)
end end
end end

View File

@ -19,7 +19,7 @@ Licenses of media (textures, models and sounds)
----------------------------------------------- -----------------------------------------------
Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
Copyright (C) 2010-2018: Copyright (C) 2010-2023:
celeron55, Perttu Ahola <celeron55@gmail.com> celeron55, Perttu Ahola <celeron55@gmail.com>
Cisoun Cisoun
@ -52,6 +52,7 @@ Copyright (C) 2010-2018:
random-geek random-geek
Extex101 Extex101
An0n3m0us An0n3m0us
Lopano
You are free to: You are free to:
Share — copy and redistribute the material in any medium or format. Share — copy and redistribute the material in any medium or format.

View File

@ -108,7 +108,7 @@ Acacia Tree Sapling=Akazienbaumsetzling
Aspen Tree=Espenbaum Aspen Tree=Espenbaum
Aspen Wood Planks=Espenholzplanken Aspen Wood Planks=Espenholzplanken
Aspen Tree Leaves=Espenbaumblätter Aspen Tree Leaves=Espenbaumblätter
Aspen Tree Sapling=Esepenbaumsetzling Aspen Tree Sapling=Espenbaumsetzling
Coal Ore=Kohleerz Coal Ore=Kohleerz
Coal Block=Kohleblock Coal Block=Kohleblock
Iron Ore=Eisenerz Iron Ore=Eisenerz

View File

@ -111,7 +111,7 @@ Aspen Tree Leaves=Feuilles de tremble
Aspen Tree Sapling=Pousse de tremble Aspen Tree Sapling=Pousse de tremble
Coal Ore=Minerai de charbon Coal Ore=Minerai de charbon
Coal Block=Bloc de charbon Coal Block=Bloc de charbon
Iron Ore=Bloc de fer Iron Ore=Minerai de fer
Steel Block=Bloc d'acier Steel Block=Bloc d'acier
Copper Ore=Minerai de cuivre Copper Ore=Minerai de cuivre
Copper Block=Bloc de cuivre Copper Block=Bloc de cuivre

View File

@ -1,44 +1,44 @@
# textdomain: default # textdomain: default
Locked Chest=Заблокована Скриня Locked Chest=Замкнена скриня
Locked Chest (owned by @1)=Заблокована Скриня (власник: @1) Locked Chest (owned by @1)=Замкнена скриня (власник — @1)
You do not own this chest.=Ви не власник цієї скрині. You do not own this chest.=Ви не власник цієї скрині.
a locked chest=заблокована скриня a locked chest=замкнена скриня
Chest=Скриня Chest=Скриня
Write=Писати Write=Писати
Read=Читати Read=Читати
Title:=Заголовок: Title:=Заголовок:
Contents:=Вміст: Contents:=Вміст:
Save=Зберегти Save=Зберегти
by @1=@1 by @1=Автор: @1
Page @1 of @2=Сторінка @1 з @2 Page @1 of @2=Сторінка @1 з @2
The book you were writing to mysteriously disappeared.= The book you were writing to mysteriously disappeared.=Книга, в яку ви писали, загадковим чином зникла.
"@1" by @2="@1" @2 "@1" by @2=@2 — "@1"
Blueberries=Чорниці Blueberries=Чорниці
Book=Книга Book=Книга
Book with Text=Книга З Текстом Book with Text=Книга з текстом
Bronze Ingot=Бронзовий Злиток Bronze Ingot=Бронзовий злиток
Clay Brick=Глиняна Цегла Clay Brick=Глиняна цегла
Clay Lump=Шматок Глини Clay Lump=Шматок глини
Coal Lump=Шматок Вугілля Coal Lump=Шматок вугілля
Copper Ingot=Мідний Злиток Copper Ingot=Мідний злиток
Copper Lump=Шматок Меді Copper Lump=Шматок міді
Diamond=Алмаз Diamond=Діамант
Flint=Кремінь Flint=Кремінь
Gold Ingot=Золотий Злиток Gold Ingot=Золотий злиток
Gold Lump=Шматок Золота Gold Lump=Шматок золота
Iron Lump=Шматок Заліза Iron Lump=Шматок заліза
Mese Crystal=Кристал Месе Mese Crystal=Кристал Месе
Mese Crystal Fragment=Уламок Кристалу Месе Mese Crystal Fragment=Уламок кристалу Месе
Obsidian Shard=Обсидіановий Уламок Obsidian Shard=Обсидіановий уламок
Paper=Папір Paper=Папір
Steel Ingot=Залізний Злиток Steel Ingot=Сталевий злиток
Stick=Палка Stick=Палиця
Tin Ingot=Шматок Олова Tin Ingot=Олов'яний злиток
Tin Lump=Уламок Олова Tin Lump=Шматок олова
Furnace is empty=Пічка Порожня Furnace is empty=Піч порожня
100% (output full)=100% (повне приготування) 100% (output full)=100% (піч переповнена)
@1%=@1% @1%=@1%
Not cookable=Не може бути приготовлено Not cookable=Не може бути приготовано
Empty=Порожньо Empty=Порожньо
Furnace active=Піч запалена Furnace active=Піч запалена
Furnace inactive=Піч не запалена Furnace inactive=Піч не запалена
@ -46,170 +46,170 @@ Furnace inactive=Піч не запалена
Furnace=Піч Furnace=Піч
Stone=Камінь Stone=Камінь
Cobblestone=Кругляк Cobblestone=Кругляк
Stone Brick=Кам'яна Цегла Stone Brick=Кам'яна цегла
Stone Block=Кам'яний Блок Stone Block=Блок каменю
Mossy Cobblestone=Моховий Кругляк Mossy Cobblestone=Моховитий кругляк
Desert Stone=Пустельний Камінь Desert Stone=Пустельний камінь
Desert Cobblestone=Пустельний Камінь Desert Cobblestone=Пустельний кругляк
Desert Stone Brick=Пустельна Кам'яна Цегла Desert Stone Brick=Цегла з пустельного каменю
Desert Stone Block=Пустельний Кам'яний Блок Desert Stone Block=Блок пустельного каменю
Sandstone=Піщаник Sandstone=Пісковик
Sandstone Brick=Цегла З Піщанику Sandstone Brick=Пісковикова цегла
Sandstone Block=Блок З Піщанику Sandstone Block=Блок пісковику
Desert Sandstone=Пустельний Піщаник Desert Sandstone=Пустельний пісковик
Desert Sandstone Brick=Пустельна Цегла З Піщанику Desert Sandstone Brick=Цегла з пустельного пісковику
Desert Sandstone Block=Пустельний Блок З Піщанику Desert Sandstone Block=Блок пустельного пісковику
Silver Sandstone=Срібний Піщаник Silver Sandstone=Срібний пісковик
Silver Sandstone Brick=Цегла Із Срібного Піщанику Silver Sandstone Brick=Цегла зі срібного пісковику
Silver Sandstone Block=Блок Із Срібного Піщанику Silver Sandstone Block=Блок срібного пісковику
Obsidian=Обсидіан Obsidian=Обсидіан
Obsidian Brick=Обсидіанова Цегла Obsidian Brick=Обсидіанова цегла
Obsidian Block=Обсидіановий Блок Obsidian Block=Блок обсидіану
Dirt=Земля Dirt=Земля
Dirt with Grass=Земля З Травою Dirt with Grass=Земля з травою
Dirt with Grass and Footsteps=Земля З Травою Та Слідами Dirt with Grass and Footsteps=Земля з травою та слідами
Dirt with Savanna Grass=Земля Із Саванною Травою Dirt with Savanna Grass=Земля із саванною травою
Dirt with Snow=Земля Зі Снігом Dirt with Snow=Земля зі снігом
Dirt with Rainforest Litter=Земля Із Тропічною Підстилкою Dirt with Rainforest Litter=Земля з тропічно-лісовою підстилкою
Dirt with Coniferous Litter=Земля Із Сосновою Підстилкою Dirt with Coniferous Litter=Земля з хвойно-лісовою підстилкою
Savanna Dirt=Саваннова Земля Savanna Dirt=Саванна земля
Savanna Dirt with Savanna Grass=Саваннова Земля Із Травою Savanna Dirt with Savanna Grass=Саванна земля із саванною травою
Permafrost=Заморожений Ґрунт Permafrost=Вічна мерзлота
Permafrost with Stones=Заморожений Ґрунт Із Камінням Permafrost with Stones=Вічна мерзлота з камінням
Permafrost with Moss=Заморожений Ґрунт Із Мохом Permafrost with Moss=Вічна мерзлота з мохом
Sand=Пісок Sand=Пісок
Desert Sand=Пустельний Пісок Desert Sand=Пустельний пісок
Silver Sand=Срібний Пісок Silver Sand=Срібний пісок
Gravel=Гравій Gravel=Гравій
Clay=Глиняний Блок Clay=Глина
Snow=Сніг Snow=Сніг
Snow Block=Сніговий Блок Snow Block=Блок снігу
Ice=Лід Ice=Крига
Cave Ice=Печерний Лід Cave Ice=Печерова крига
Apple Tree=Стовбур Яблуні Apple Tree=Стовбур яблуні
Apple Wood Planks=Яблуневі Дошки Apple Wood Planks=Яблуневі дошки
Apple Tree Sapling=Саджанець Яблуні Apple Tree Sapling=Саджанець яблуні
Apple Tree Leaves=Яблуневе Листя Apple Tree Leaves=Яблуневе листя
Apple=Яблуко Apple=Яблуко
Apple Marker=Яблучна Мітка Apple Marker=Мітка яблука
Jungle Tree=Стовбур Тропічного Дерева Jungle Tree=Стовбур тропічного дерева
Jungle Wood Planks=Дошки З Тропічного Дерева Jungle Wood Planks=Дошки з тропічного дерева
Jungle Tree Leaves=Листя Тропічного Дерева Jungle Tree Leaves=Листя тропічного дерева
Jungle Tree Sapling=Саджанець Тропічного Дерева Jungle Tree Sapling=Саджанець тропічного дерева
Emergent Jungle Tree Sapling=Саджанець Тропічного Дерева, Що Виріс Emergent Jungle Tree Sapling=Молодий саджанець тропічного дерева
Pine Tree=Сосновий Стовбур Pine Tree=Сосновий стовбур
Pine Wood Planks=Соснові Дошки Pine Wood Planks=Соснові дошки
Pine Needles=Соснова Хвоя Pine Needles=Соснова хвоя
Pine Tree Sapling=Саджанець Сосни Pine Tree Sapling=Саджанець сосни
Acacia Tree=Стовбур Акації Acacia Tree=Акацієвий стовбур
Acacia Wood Planks=Дошки Акації Acacia Wood Planks=Акацієві дошки
Acacia Tree Leaves=Листя Акації Acacia Tree Leaves=Акацієве листя
Acacia Tree Sapling=Саджанець Акації Acacia Tree Sapling=Саджанець акації
Aspen Tree=Стовбур Осики Aspen Tree=Осиковий стовбур
Aspen Wood Planks=Осикові Дошки Aspen Wood Planks=Осикові дошки
Aspen Tree Leaves=Осикове Листя Aspen Tree Leaves=Осикове листя
Aspen Tree Sapling=Саджанець Осики Aspen Tree Sapling=Саджанець осики
Coal Ore=Поклади Вугілля Coal Ore=Поклади вугілля
Coal Block=Вугільний Блок Coal Block=Блок вугілля
Iron Ore=Залізна Руда Iron Ore=Поклади заліза
Steel Block=Сталевий Блок Steel Block=Блок сталі
Copper Ore=Мідна Руда Copper Ore=Поклади міді
Copper Block=Мідний Блок Copper Block=Блок міді
Tin Ore=Олов'яна Руда Tin Ore=Поклади олова
Tin Block=Олов'яний Блок Tin Block=Блок олова
Bronze Block=Бронзовий Блок Bronze Block=Блок бронзи
Mese Ore=Месева Руда Mese Ore=Поклади Месе
Mese Block=Месевий Блок Mese Block=Блок Месе
Gold Ore=Золота Руда Gold Ore=Поклади золота
Gold Block=Золотий Блок Gold Block=Блок золота
Diamond Ore=Поклади Алмазу Diamond Ore=Поклади діамантів
Diamond Block=Алмазний Блок Diamond Block=Блок діамантів
Cactus=Кактус Cactus=Кактус
Large Cactus Seedling=Саджанець Кактуса Large Cactus Seedling=Великий саджанець кактуса
Papyrus=Папірус Papyrus=Папірус
Dry Shrub=Сухий Кущ Dry Shrub=Сухий кущ
Jungle Grass=Тропічна Трава Jungle Grass=Тропічна трава
Grass=Трава Grass=Трава
Savanna Grass=Саваннова Трава Savanna Grass=Саванна трава
Fern=Папороть Fern=Папороть
Marram Grass=Пісколюб Marram Grass=Пляжна трава
Bush Stem=Стебла Куща Bush Stem=Стебла куща
Bush Leaves=Листя Куща Bush Leaves=Листя куща
Bush Sapling=Саджанець Куща Bush Sapling=Саджанець куща
Blueberry Bush Leaves with Berries=Кущ Чорниці З Ягодами Blueberry Bush Leaves with Berries=Кущ чорниці з ягодами
Blueberry Bush Leaves=Кущ Чорниці Blueberry Bush Leaves=Кущ чорниці
Blueberry Bush Sapling=Саджанець Куща Чорниці Blueberry Bush Sapling=Саджанець куща чорниці
Acacia Bush Stem=Стебла Куща Акації Acacia Bush Stem=Стебла акацієвого куща
Acacia Bush Leaves=Листя Куща Акації Acacia Bush Leaves=Листя акацієвого куща
Acacia Bush Sapling=Саджанець Куща Акації Acacia Bush Sapling=Саджанець акацієвого куща
Pine Bush Stem=Стебла Хвойного Куща Pine Bush Stem=Стебла соснового куща
Pine Bush Needles=Хвоя Куща Pine Bush Needles=Хвоя соснового куща
Pine Bush Sapling=Саджанець Хвойного Куща Pine Bush Sapling=Саджанець соснового куща
Kelp=Ламінарія Kelp=Ламінарія
Green Coral=Зелений Корал Green Coral=Зелений корал
Pink Coral=Рожевий Корал Pink Coral=Рожевий корал
Cyan Coral=Блакитний Корал Cyan Coral=Блакитний корал
Brown Coral=Коричневий Корал Brown Coral=Коричневий корал
Orange Coral=Помаранчевий Корал Orange Coral=Помаранчевий корал
Coral Skeleton=Кораловий Остов Coral Skeleton=Скелет корала
Water Source=Водне Джерело Water Source=Водне джерело
Flowing Water=Проточна Вода Flowing Water=Проточна вода
River Water Source=Річкове Водне Джерело River Water Source=Річкове водне джерело
Flowing River Water=Проточна Річна Вода Flowing River Water=Проточна річкова вода
Lava Source=Лавове Джерело Lava Source=Лавове джерело
Flowing Lava=Проточна Лава Flowing Lava=Проточна лава
Empty Bookshelf=Порожня Книжкова Полиця Empty Bookshelf=Порожня книжкова полиця
Bookshelf (@1 written, @2 empty books)=Книжкова Полиця (@1 книг з записами, @2 чисті книги) Bookshelf (@1 written, @2 empty books)=Книжкова полиця (книги: @1 з текстом, @2 без тексту)
Bookshelf=Книжкова Полиця Bookshelf=Книжкова полиця
Text too long=Текст надто довгий Text too long=Текст занадто довгий
"@1"="@1" "@1"="@1"
Wooden Sign=Дерев'яна Табличка Wooden Sign=Дерев'яна табличка
Steel Sign=Сталева Табличка Steel Sign=Сталева табличка
Wooden Ladder=Дерев'яна Драбина Wooden Ladder=Дерев'яна драбина
Steel Ladder=Сталеві Сходи Steel Ladder=Сталева драбина
Apple Wood Fence=Яблуневий Дерев'яний Паркан Apple Wood Fence=Яблуневий паркан
Acacia Wood Fence=Дерев'яний Паркан З Акації Acacia Wood Fence=Акацієвий паркан
Jungle Wood Fence=Дерев'яний Паркан З Тропічного Дерева Jungle Wood Fence=Паркан із тропічного дерева
Pine Wood Fence=Сосновий Дерев'яний Паркан Pine Wood Fence=Сосновий паркан
Aspen Wood Fence=Осиковий Дерев'яний Паркан Aspen Wood Fence=Осиковий паркан
Apple Wood Fence Rail=Яблуневий Дерев'яний Рейковий Паркан Apple Wood Fence Rail=Яблуневий рейковий паркан
Acacia Wood Fence Rail=Дерев'яний Рейковий Паркан З Акації Acacia Wood Fence Rail=Акацієвий рейковий паркан
Jungle Wood Fence Rail=Дерев'яний Рейковий Паркан З Тропічного Дерева Jungle Wood Fence Rail=Рейковий паркан з тропічного дерева
Pine Wood Fence Rail=Сосновий Дерев'яний Рейковий Паркан Pine Wood Fence Rail=Сосновий рейковий паркан
Aspen Wood Fence Rail=Осиковий Дерев'яний Рейковий Паркан Aspen Wood Fence Rail=Осиковий рейковий паркан
Glass=Скло Glass=Скло
Obsidian Glass=Обсидіанове Скло Obsidian Glass=Обсидіанове скло
Brick Block=Цегляний Блок Brick Block=Цегляний блок
Mese Lamp=Месе Лампа Mese Lamp=Месеампа
Apple Wood Mese Post Light=Стовповий Месе Світильник З Яблуні Apple Wood Mese Post Light=Яблуневий стовповий Месе-світильник
Acacia Wood Mese Post Light=Стовповий Месе Світильник З Акації Acacia Wood Mese Post Light=Акацієвий стовповий Месе-світильник
Jungle Wood Mese Post Light=Стовповий Месе Світильник Із Тропічного Дерева Jungle Wood Mese Post Light=Стовповий Месе-світильник із тропічного дерева
Pine Wood Mese Post Light=Стовповий Месе Світильник Із Сосни Pine Wood Mese Post Light=Сосновий стовповий Месе-світильник
Aspen Wood Mese Post Light=Стовповий Месе Світильник З Осики Aspen Wood Mese Post Light=Осиковий стовповий Месе-світильник
Cloud=Хмара Cloud=Хмара
Wooden Pickaxe=Дерев'яна Кірка Wooden Pickaxe=Дерев'яне кайло
Stone Pickaxe=Кам'яна Кірка Stone Pickaxe=Кам'яне кайло
Bronze Pickaxe=Бронзова Кірка Bronze Pickaxe=Бронзове кайло
Steel Pickaxe=Сталева Кірка Steel Pickaxe=Сталеве кайло
Mese Pickaxe=Месе Кірка Mese Pickaxe=Месе-кайло
Diamond Pickaxe=Алмазна Кірка Diamond Pickaxe=Діамантове кайло
Wooden Shovel=Дерев'янна Лопата Wooden Shovel=Дерев'яна лопата
Stone Shovel=Кам'яна Лопата Stone Shovel=Кам'яна лопата
Bronze Shovel=Бронзова Лопата Bronze Shovel=Бронзова лопата
Steel Shovel=Сталева Лопата Steel Shovel=Сталева лопата
Mese Shovel=Месе Лопата Mese Shovel=Месеопата
Diamond Shovel=Алмазна Лопата Diamond Shovel=Діамантова лопата
Wooden Axe=Дерев'яна Сокира Wooden Axe=Дерев'яна сокира
Stone Axe=Кам'яна Сокира Stone Axe=Кам'яна сокира
Bronze Axe=Бронзова Сокира Bronze Axe=Бронзова сокира
Steel Axe=Сталева Сокира Steel Axe=Сталева сокира
Mese Axe=Месе Сокира Mese Axe=Месе-сокира
Diamond Axe=Алмазна Сокира Diamond Axe=Діамантова сокира
Wooden Sword=Дерев'яний Меч Wooden Sword=Дерев'яний меч
Stone Sword=Кам'яний Меч Stone Sword=Кам'яний меч
Bronze Sword=Бронзовий Меч Bronze Sword=Бронзовий меч
Steel Sword=Сталевий Меч Steel Sword=Сталевий меч
Mese Sword=Месе Меч Mese Sword=Месееч
Diamond Sword=Алмазний Меч Diamond Sword=Діамантовий меч
Torch=Факел Torch=Смолоскип
@1 will intersect protection on growth.=@1 перетне захист за зростанням. @1 will intersect protection on growth.=@1 перетне захист коли виросте.

View File

@ -2024,7 +2024,7 @@ minetest.register_node("default:sand_with_kelp", {
return itemstack return itemstack
end, end,
after_destruct = function(pos, oldnode) after_dig_node = function(pos, oldnode, oldmetadata, digger)
minetest.set_node(pos, {name = "default:sand"}) minetest.set_node(pos, {name = "default:sand"})
end end
}) })
@ -2099,7 +2099,7 @@ minetest.register_node("default:coral_green", {
on_place = coral_on_place, on_place = coral_on_place,
after_destruct = function(pos, oldnode) after_dig_node = function(pos, oldnode, oldmetadata, digger)
minetest.set_node(pos, {name = "default:coral_skeleton"}) minetest.set_node(pos, {name = "default:coral_skeleton"})
end, end,
}) })
@ -2130,7 +2130,7 @@ minetest.register_node("default:coral_pink", {
on_place = coral_on_place, on_place = coral_on_place,
after_destruct = function(pos, oldnode) after_dig_node = function(pos, oldnode, oldmetadata, digger)
minetest.set_node(pos, {name = "default:coral_skeleton"}) minetest.set_node(pos, {name = "default:coral_skeleton"})
end, end,
}) })
@ -2161,7 +2161,7 @@ minetest.register_node("default:coral_cyan", {
on_place = coral_on_place, on_place = coral_on_place,
after_destruct = function(pos, oldnode) after_dig_node = function(pos, oldnode, oldmetadata, digger)
minetest.set_node(pos, {name = "default:coral_skeleton"}) minetest.set_node(pos, {name = "default:coral_skeleton"})
end, end,
}) })
@ -2549,6 +2549,15 @@ local default_bookshelf_def = {
end end
return 0 return 0
end, end,
on_metadata_inventory_put = function(pos)
update_bookshelf(pos)
end,
on_metadata_inventory_take = function(pos)
update_bookshelf(pos)
end,
on_metadata_inventory_move = function(pos)
update_bookshelf(pos)
end,
on_blast = function(pos) on_blast = function(pos)
local drops = {} local drops = {}
default.get_inventory_drops(pos, "books", drops) default.get_inventory_drops(pos, "books", drops)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 247 B

After

Width:  |  Height:  |  Size: 312 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 327 B

After

Width:  |  Height:  |  Size: 336 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 514 B

After

Width:  |  Height:  |  Size: 610 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 449 B

After

Width:  |  Height:  |  Size: 463 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 135 B

After

Width:  |  Height:  |  Size: 388 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 238 B

After

Width:  |  Height:  |  Size: 224 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 236 B

After

Width:  |  Height:  |  Size: 221 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 398 B

After

Width:  |  Height:  |  Size: 447 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 426 B

After

Width:  |  Height:  |  Size: 481 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 676 B

After

Width:  |  Height:  |  Size: 641 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 590 B

After

Width:  |  Height:  |  Size: 630 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 253 B

After

Width:  |  Height:  |  Size: 560 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -26,6 +26,10 @@ function default.can_grow(pos)
return true return true
end end
function default.on_grow_failed(pos)
minetest.get_node_timer(pos):start(300)
end
-- 'is snow nearby' function -- 'is snow nearby' function
@ -34,84 +38,6 @@ local function is_snow_nearby(pos)
end end
-- Grow sapling
function default.grow_sapling(pos)
if not default.can_grow(pos) then
-- try again 5 min later
minetest.get_node_timer(pos):start(300)
return
end
local mg_name = minetest.get_mapgen_setting("mg_name")
local node = minetest.get_node(pos)
if node.name == "default:sapling" then
minetest.log("action", "A sapling grows into a tree at "..
minetest.pos_to_string(pos))
if mg_name == "v6" then
default.grow_tree(pos, random(1, 4) == 1)
else
default.grow_new_apple_tree(pos)
end
elseif node.name == "default:junglesapling" then
minetest.log("action", "A jungle sapling grows into a tree at "..
minetest.pos_to_string(pos))
if mg_name == "v6" then
default.grow_jungle_tree(pos)
else
default.grow_new_jungle_tree(pos)
end
elseif node.name == "default:pine_sapling" then
minetest.log("action", "A pine sapling grows into a tree at "..
minetest.pos_to_string(pos))
local snow = is_snow_nearby(pos)
if mg_name == "v6" then
default.grow_pine_tree(pos, snow)
elseif snow then
default.grow_new_snowy_pine_tree(pos)
else
default.grow_new_pine_tree(pos)
end
elseif node.name == "default:acacia_sapling" then
minetest.log("action", "An acacia sapling grows into a tree at "..
minetest.pos_to_string(pos))
default.grow_new_acacia_tree(pos)
elseif node.name == "default:aspen_sapling" then
minetest.log("action", "An aspen sapling grows into a tree at "..
minetest.pos_to_string(pos))
default.grow_new_aspen_tree(pos)
elseif node.name == "default:bush_sapling" then
minetest.log("action", "A bush sapling grows into a bush at "..
minetest.pos_to_string(pos))
default.grow_bush(pos)
elseif node.name == "default:blueberry_bush_sapling" then
minetest.log("action", "A blueberry bush sapling grows into a bush at "..
minetest.pos_to_string(pos))
default.grow_blueberry_bush(pos)
elseif node.name == "default:acacia_bush_sapling" then
minetest.log("action", "An acacia bush sapling grows into a bush at "..
minetest.pos_to_string(pos))
default.grow_acacia_bush(pos)
elseif node.name == "default:pine_bush_sapling" then
minetest.log("action", "A pine bush sapling grows into a bush at "..
minetest.pos_to_string(pos))
default.grow_pine_bush(pos)
elseif node.name == "default:emergent_jungle_sapling" then
minetest.log("action", "An emergent jungle sapling grows into a tree at "..
minetest.pos_to_string(pos))
default.grow_new_emergent_jungle_tree(pos)
end
end
minetest.register_lbm({
name = "default:convert_saplings_to_node_timer",
nodenames = {"default:sapling", "default:junglesapling",
"default:pine_sapling", "default:acacia_sapling",
"default:aspen_sapling"},
action = function(pos)
minetest.get_node_timer(pos):start(math.random(300, 1500))
end
})
-- --
-- Tree generation -- Tree generation
@ -209,7 +135,6 @@ function default.grow_tree(pos, is_apple_tree, bad)
vm:update_map() vm:update_map()
end end
-- Jungle tree -- Jungle tree
function default.grow_jungle_tree(pos, bad) function default.grow_jungle_tree(pos, bad)
@ -604,3 +529,78 @@ function default.sapling_on_place(itemstack, placer, pointed_thing,
return itemstack return itemstack
end end
-- Grow sapling
default.sapling_growth_defs = {}
function default.register_sapling_growth(name, def)
default.sapling_growth_defs[name] = {
can_grow = def.can_grow or default.can_grow,
on_grow_failed = def.on_grow_failed or default.on_grow_failed,
grow = assert(def.grow)
}
end
function default.grow_sapling(pos)
local node = minetest.get_node(pos)
local sapling_def = default.sapling_growth_defs[node.name]
if not sapling_def then
minetest.log("warning", "default.grow_sapling called on undefined sapling " .. node.name)
return
end
if not sapling_def.can_grow(pos) then
sapling_def.on_grow_failed(pos)
return
end
minetest.log("action", "Growing sapling " .. node.name .. " at " .. minetest.pos_to_string(pos))
sapling_def.grow(pos)
end
local function register_sapling_growth(nodename, grow)
default.register_sapling_growth("default:" .. nodename, {grow = grow})
end
if minetest.get_mapgen_setting("mg_name") == "v6" then
register_sapling_growth("sapling", function(pos)
default.grow_tree(pos, random(1, 4) == 1)
end)
register_sapling_growth("junglesapling", default.grow_jungle_tree)
register_sapling_growth("pine_sapling", function(pos)
local snow = is_snow_nearby(pos)
default.grow_pine_tree(pos, snow)
end)
else
register_sapling_growth("sapling", default.grow_new_apple_tree)
register_sapling_growth("junglesapling", default.grow_new_jungle_tree)
register_sapling_growth("pine_sapling", function(pos)
local snow = is_snow_nearby(pos)
if snow then
default.grow_new_snowy_pine_tree(pos)
else
default.grow_new_pine_tree(pos)
end
end)
end
register_sapling_growth("acacia_sapling", default.grow_new_acacia_tree)
register_sapling_growth("aspen_sapling", default.grow_new_aspen_tree)
register_sapling_growth("bush_sapling", default.grow_bush)
register_sapling_growth("blueberry_bush_sapling", default.grow_blueberry_bush)
register_sapling_growth("acacia_bush_sapling", default.grow_acacia_bush)
register_sapling_growth("pine_bush_sapling", default.grow_pine_bush)
register_sapling_growth("emergent_jungle_sapling", default.grow_new_emergent_jungle_tree)
-- Backwards compatibility for saplings that used to use ABMs; does not need to include newer saplings.
minetest.register_lbm({
name = "default:convert_saplings_to_node_timer",
nodenames = {"default:sapling", "default:junglesapling",
"default:pine_sapling", "default:acacia_sapling",
"default:aspen_sapling"},
action = function(pos)
minetest.get_node_timer(pos):start(math.random(300, 1500))
end
})

View File

@ -19,6 +19,10 @@ local function replace_old_owner_information(pos)
end end
end end
local function is_doors_upper_node(pos)
return minetest.get_node(pos).name == "doors:hidden"
end
-- returns an object to a door object or nil -- returns an object to a door object or nil
function doors.get(pos) function doors.get(pos)
local node_name = minetest.get_node(pos).name local node_name = minetest.get_node(pos).name
@ -388,8 +392,11 @@ function doors.register(name, def)
end end
end end
def.after_dig_node = function(pos, node, meta, digger) def.after_dig_node = function(pos, node, meta, digger)
minetest.remove_node({x = pos.x, y = pos.y + 1, z = pos.z}) local above = pos:offset(0, 1, 0)
minetest.check_for_falling({x = pos.x, y = pos.y + 1, z = pos.z}) if is_doors_upper_node(above) then
minetest.remove_node(above)
end
minetest.check_for_falling(above)
end end
def.on_rotate = function(pos, node, user, mode, new_param2) def.on_rotate = function(pos, node, user, mode, new_param2)
return false return false
@ -427,14 +434,20 @@ function doors.register(name, def)
else else
def.on_blast = function(pos, intensity) def.on_blast = function(pos, intensity)
minetest.remove_node(pos) minetest.remove_node(pos)
local above = pos:offset(0, 1, 0)
-- hidden node doesn't get blasted away. -- hidden node doesn't get blasted away.
minetest.remove_node({x = pos.x, y = pos.y + 1, z = pos.z}) if is_doors_upper_node(above) then
minetest.remove_node(above)
end
return {name} return {name}
end end
end end
def.on_destruct = function(pos) def.on_destruct = function(pos)
minetest.remove_node({x = pos.x, y = pos.y + 1, z = pos.z}) local above = pos:offset(0, 1, 0)
if is_doors_upper_node(above) then
minetest.remove_node(above)
end
end end
def.drawtype = "mesh" def.drawtype = "mesh"

View File

@ -1,18 +1,18 @@
# textdomain: doors # textdomain: doors
Hidden Door Segment=Захована Частина Дверей Hidden Door Segment=Прихована частина дверей
Owned by @1=Власник: @1 Owned by @1=Власник: @1
You do not own this locked door.=Ви не власник цих заблокованих дверей. You do not own this locked door.=Ви — не власник цих замкнених дверей.
a locked door=заблоковані двері a locked door=замкнені двері
Wooden Door=Дерев'яні двері Wooden Door=Дерев'яні двері
Steel Door=Сталеві Двері Steel Door=Сталеві двері
Glass Door=Скляні двері Glass Door=Скляні двері
Obsidian Glass Door=Двері З Обсидіанового Скла Obsidian Glass Door=Двері з обсидіанового скла
You do not own this trapdoor.=Ви не є власником цього люка. You do not own this trapdoor.=Ви не власник цього люка.
a locked trapdoor=заблокований люк a locked trapdoor=замкнений люк
Wooden Trapdoor=Дерев'яний Люк Wooden Trapdoor=Дерев'яний люк
Steel Trapdoor=Сталевий Люк Steel Trapdoor=Сталевий люк
Apple Wood Fence Gate=Яблунева Дерев'яна Хвіртка Apple Wood Fence Gate=Яблунева хвіртка
Acacia Wood Fence Gate=Дерев'яна Хвіртка З Акації Acacia Wood Fence Gate=Акацієва хвіртка
Jungle Wood Fence Gate=Дерев'яна Хвіртка З Тропічного Дерева Jungle Wood Fence Gate=Хвіртка з тропічного дерева
Pine Wood Fence Gate=Соснова Дерев'яна Хвіртка Pine Wood Fence Gate=Соснова хвіртка
Aspen Wood Fence Gate=Осикова Дерев'яна Хвіртка Aspen Wood Fence Gate=Осикова хвіртка

View File

@ -1,16 +1,16 @@
# textdomain: dye # textdomain: dye
White Dye=Біла Фарба White Dye=Білий барвник
Grey Dye=Сіра Фарба Grey Dye=Сірий барвник
Dark Grey Dye=Темно-Сіра фарба Dark Grey Dye=Темно-сірий барвник
Black Dye=Чорна Фарба Black Dye=Чорний барвник
Violet Dye=Фіолетова Фарба Violet Dye=Фіолетовий барвник
Blue Dye=Синя Фарба Blue Dye=Синій барвник
Cyan Dye=Синьо-Зелена Фарба Cyan Dye=Синьо-зелений барвник
Dark Green Dye=Темно-Зелена Фарба Dark Green Dye=Темно-зелений барвник
Green Dye=Зелена Фарба Green Dye=Зелений барвник
Yellow Dye=Жовта Фарба Yellow Dye=Жовтий барвник
Brown Dye=Коричнева Фарба Brown Dye=Коричневий барвник
Orange Dye=Помаранчева Фарба Orange Dye=Помаранчевий барвник
Red Dye=Червона Фарба Red Dye=Червоний барвник
Magenta Dye=Пурпурна Фарба Magenta Dye=Пурпурний барвник
Pink Dye=Рожева Фарба Pink Dye=Рожевий барвник

View File

@ -1,28 +1,28 @@
# textdomain: farming # textdomain: farming
Hoe=Мотига Hoe=Мотика
Seed=Насіння Seed=Насіння
Wooden Hoe=Дерев'яна Мотига Wooden Hoe=Дерев'яна мотика
Stone Hoe=Кам'яна Мотига Stone Hoe=Кам'яна мотика
Steel Hoe=Сталева Мотига Steel Hoe=Сталева мотика
Bronze Hoe=Бронзова Мотига Bronze Hoe=Бронзова мотика
Mese Hoe=Месе Мотига Mese Hoe=Месе-мотика
Diamond Hoe=Алмазна Мотига Diamond Hoe=Діамантова мотика
Wheat Seed=Насіння Пшениці Wheat Seed=Насіння пшениці
Wheat=Пшениця Wheat=Пшениця
Flour=Мука Flour=Борошно
Bread=Хліб Bread=Хліб
Cotton Seed=Насіння Бавовнику Cotton Seed=Насіння бавовнику
Cotton=Бавовна Cotton=Бавовна
String=Нитка String=Нитка
Soil=Ґрунт Soil=Ґрунт
Wet Soil=Вологий Ґрунт Wet Soil=Вологий ґрунт
Savanna Soil=Саванновий Ґрунт Savanna Soil=Саванний ґрунт
Wet Savanna Soil=Вологий Саванновий Ґрунт Wet Savanna Soil=Вологий саванний ґрунт
Desert Sand Soil=Пустинний Піщаний Ґрунт Desert Sand Soil=Пустельний піщаний ґрунт
Wet Desert Sand Soil=Вологий Пустельний Піщаний Ґрунт Wet Desert Sand Soil=Вологий пустельний піщаний ґрунт
Straw=Солома Straw=Солома
Straw Stair=Солом'яна Сходинка Straw Stair=Солом'яна сходинка
Inner Straw Stair=Кутова Солом'яна Сходинка (Внутрішній Кут) Inner Straw Stair=Кутова солом'яна сходинка (внутрішній кут)
Outer Straw Stair=Кутова Солом'яна Сходинка (Зовнішній Кут) Outer Straw Stair=Кутова солом'яна сходинка (зовнішній кут)
Straw Slab=Солом'яна Плита Straw Slab=Солом'яна плита
Wild Cotton=Дикий Бавовник Wild Cotton=Дикий бавовник

View File

@ -6,5 +6,4 @@ Flint and Steel=Briquet à silex en acier
##### not used anymore ##### ##### not used anymore #####
# textdomain: fire
Permanent Flame=Flamme permanente Permanent Flame=Flamme permanente

View File

@ -6,5 +6,4 @@ Flint and Steel=Acciarino
##### not used anymore ##### ##### not used anymore #####
# textdomain: fire
Permanent Flame=Fiamma permanente Permanent Flame=Fiamma permanente

View File

@ -6,5 +6,4 @@ Flint and Steel=Pemetik Api
##### not used anymore ##### ##### not used anymore #####
# textdomain: fire
Permanent Flame=Api Abadi Permanent Flame=Api Abadi

View File

@ -6,5 +6,4 @@ Flint and Steel=Огниво
##### not used anymore ##### ##### not used anymore #####
# textdomain: fire
Permanent Flame=Вечный Огонь Permanent Flame=Вечный Огонь

View File

@ -1,4 +1,4 @@
# textdomain: fire # textdomain: fire
Fire=Вогонь Fire=Вогонь
Permanent Fire=Вічний Вогонь Permanent Fire=Вічний вогонь
Flint and Steel=Кремінь і Сталь Flint and Steel=Кресало

View File

@ -1,5 +1,5 @@
# textdomain: fireflies # textdomain: fireflies
Firefly=Світлячок Firefly=Світляк
Hidden Firefly=Світлячок, що причаївся Hidden Firefly=Світляк, що причаївся
Bug Net=Сачок Для Ловлі Комах Bug Net=Сачок
Firefly in a Bottle=Світлячок у Пляшці Firefly in a Bottle=Світляк у пляшці

View File

@ -1,12 +1,12 @@
# textdomain: flowers # textdomain: flowers
Red Rose=Червона Троянда Red Rose=Червона троянда
Orange Tulip=Помаранчевий Тюльпан Orange Tulip=Помаранчевий тюльпан
Yellow Dandelion=Жовта Кульбабка Yellow Dandelion=Жовта кульбаба
Green Chrysanthemum=Зелена Хризантема Green Chrysanthemum=Зелена хризантема
Blue Geranium=Синій Геран Blue Geranium=Синій журавець
Viola=Фіалка Viola=Фіалка
White Dandelion=Біла Кульбабка White Dandelion=Біла кульбаба
Black Tulip=Чорний Тюльпан Black Tulip=Чорний тюльпан
Red Mushroom=Мухомор Red Mushroom=Червоний гриб
Brown Mushroom=Коричневий Гриб Brown Mushroom=Коричневий гриб
Waterlily=Водяна Лілія Waterlily=Латаття

View File

@ -1,4 +1,4 @@
# textdomain: game_commands # textdomain: game_commands
Kill yourself to respawn=Bunuh diri untuk bangkit kembali Kill yourself to respawn=Bunuh diri untuk bangkit kembali
No static_spawnpoint defined=Tiada static_spawnpoint (titik bangkit statis) yang diatur No static_spawnpoint defined=Tidak ada static_spawnpoint (titik bangkit statis) yang diatur
You need to be online to be killed!=Anda harus daring untuk dibunuh! You need to be online to be killed!=Anda harus daring untuk dibunuh!

View File

@ -1,4 +1,4 @@
# textdomain: game_commands # textdomain: game_commands
Kill yourself to respawn=Вбийте себе щоб відродися Kill yourself to respawn=Вбити себе, щоб відродитися
No static_spawnpoint defined=static_spawnpoint не визначений No static_spawnpoint defined=Немає визначеного static_spawnpoint
You need to be online to be killed!=Ви повинні бути онлайн, щоб вбити себе! You need to be online to be killed!=Ви повинні бути онлайн, щоби Вас було вбито!

View File

@ -1,4 +1,4 @@
# textdomain: keys # textdomain: keys
Key=Ключ Key=Ключ
Key to @1's @2=Ключ до @2 від @1 Key to @1's @2=Ключ з биркою "@2, власником якого(-ої/-их) є @1"
Skeleton Key=Ключ Кістяка Skeleton Key=Заготовка ключа

View File

@ -1,3 +1,3 @@
# textdomain: map # textdomain: map
Mapping Kit=Kit de carthographie Mapping Kit=Kit de carthographie
Use with 'Minimap' key=Utiliser avec le bouton « Minimap » Use with 'Minimap' key=Utiliser avec le bouton « Mini-carte »

View File

@ -1,3 +1,3 @@
# textdomain: map # textdomain: map
Mapping Kit=Alat Pemetaan Mapping Kit=Alat Pemetaan
Use with 'Minimap' key=Pakai dengan tombol 'Peta Mini' Use with 'Minimap' key=Gunakan dengan tombol 'Peta Mini'

View File

@ -1,3 +1,3 @@
# textdomain: map # textdomain: map
Mapping Kit=Картографічний Комплект Mapping Kit=Картографічний набір
Use with 'Minimap' key=Використовуйте за допомогою ключа 'Minimap' Use with 'Minimap' key=Використовується клавішею 'Мінімапа'

View File

@ -34,7 +34,7 @@ G=G
Any item belonging to the group(s): @1=Barang apa pun yang termasuk grup: @1 Any item belonging to the group(s): @1=Barang apa pun yang termasuk grup: @1
Unknown Item=Barang Tak Diketahui Unknown Item=Barang Tak Diketahui
Fuel=Bahan Bakar Fuel=Bahan Bakar
Usage @1 of @2=Pemakaian @1 dari @2 Usage @1 of @2=Penggunaan @1 dari @2
Recipe @1 of @2=Resep @1 dari @2 Recipe @1 of @2=Resep @1 dari @2
Previous recipe=Resep sebelumnya Previous recipe=Resep sebelumnya
Next recipe=Resep selanjutnya Next recipe=Resep selanjutnya
@ -45,9 +45,9 @@ Search=Cari
Reset=Atur ulang Reset=Atur ulang
Previous page=Halaman sebelumnya Previous page=Halaman sebelumnya
Next page=Halaman selanjutnya Next page=Halaman selanjutnya
No items to show.=Tiada barang untuk ditampilkan. No items to show.=Tidak ada barang untuk ditampilkan.
No usages.=Tiada pemakaian. No usages.=Tidak ada penggunaan.
Click again to show recipes.=Klik lagi untuk menampilkan resep. Click again to show recipes.=Klik lagi untuk menampilkan resep.
No recipes.=Tiada resep. No recipes.=Tidak ada resep.
Click again to show usages.=Klik lagi untuk menampilkan pemakaian. Click again to show usages.=Klik lagi untuk menampilkan penggunaan.
Recipes=Resep Recipes=Resep

View File

@ -1,10 +1,10 @@
# textdomain: mtg_craftguide # textdomain: mtg_craftguide
Any coal=Будь-яке вугілля Any coal=Будь-яке вугілля
Any sand=Будь-якій пісок Any sand=Будь-який пісок
Any wool=Будь-яка вовна Any wool=Будь-яка вовна
Any stick=Будь-яка паличка Any stick=Будь-яка палиця
Any vessel=Будь-який посуд Any vessel=Будь-який посуд
Any wood planks=Будь-які дерев'яні палички Any wood planks=Будь-які дошки
Any kind of stone block=Будь-який кам'яний блок Any kind of stone block=Будь-який кам'яний блок
Any red flower=Будь-яка червона квітка Any red flower=Будь-яка червона квітка
Any blue flower=Будь-яка синя квітка Any blue flower=Будь-яка синя квітка
@ -14,40 +14,40 @@ Any white flower=Будь-яка біла квітка
Any orange flower=Будь-яка помаранчева квітка Any orange flower=Будь-яка помаранчева квітка
Any violet flower=Будь-яка фіолетова квітка Any violet flower=Будь-яка фіолетова квітка
Any yellow flower=Будь-яка жовта квітка Any yellow flower=Будь-яка жовта квітка
Any red dye=Будь-яка червона фарба Any red dye=Будь-який червоний барвник
Any blue dye=Будь-яка синя фарба Any blue dye=Будь-який синій барвник
Any cyan dye=Будь-яка синьо-зелена фарба Any cyan dye=Будь-який синьо-зелений барвник
Any grey dye=Будь-яка сіра фарба Any grey dye=Будь-який сірий барвник
Any pink dye=Будь-яка рожева фарба Any pink dye=Будь-який рожевий барвник
Any black dye=Будь-яка чорна фарба Any black dye=Будь-який чорний барвник
Any brown dye=Будь-яка коричнева фарба Any brown dye=Будь-який коричневий барвник
Any green dye=Будь-яка зелена фарба Any green dye=Будь-який зелений барвник
Any white dye=Будь-яка біла фарба Any white dye=Будь-який білий барвник
Any orange dye=Будь-яка помаранчева фарба Any orange dye=Будь-який помаранчевий барвник
Any violet dye=Будь-яка фіолетова фарба Any violet dye=Будь-який фіолетовий барвник
Any yellow dye=Будь-яка жовта фарба Any yellow dye=Будь-який жовтий барвник
Any magenta dye=Будь-який пурпурна фарба Any magenta dye=Будь-який пурпурний барвник
Any dark grey dye=Будь-яка темно-сіра фарба Any dark grey dye=Будь-який темно-сірий барвник
Any dark green dye=Будь-яка темно-зелена фарба Any dark green dye=Будь-який темно-зелений барвник
# Label for group ingredients # Label for group ingredients
G= G=Г
Any item belonging to the group(s): @1=Будь-який предмет з груп(и): @1 Any item belonging to the group(s): @1=Будь-який предмет з груп(и): @1
Unknown Item=Невідомий предмет Unknown Item=Невідомий предмет
Fuel=Паливо Fuel=Паливо
Usage @1 of @2=Використано @1 з @2 Usage @1 of @2=Матеріал: @1 з @2
Recipe @1 of @2=Рецепт @1 з @2 Recipe @1 of @2=Рецепт: @1 з @2
Previous recipe=Попередній рецепт Previous recipe=Попередній рецепт
Next recipe=Наступний рецепт Next recipe=Наступний рецепт
Recipe is too big to be displayed.=Рецепт занадто великий для показу. Recipe is too big to be displayed.=Рецепт завеликий для показу.
Shapeless=Безформний Shapeless=Безформний
Cooking time: @1=Час виготовлення: @1 Cooking time: @1=Час виготовлення: @1
Search=Пошук Search=Пошук
Reset=Скинути Reset=Скинути
Previous page=Попередня сторінка Previous page=Попередня сторінка
Next page=Наступна сторінка Next page=Наступна сторінка
No items to show.=Немає елементів для показу. No items to show.=Немає результатів.
No usages.=Не використовується. No usages.=Не використовується.
Click again to show recipes.=Натисніть ще раз, щоб показати рецепти. Click again to show recipes.=Натисніть ще раз для рецептів.
No recipes.=Немає рецептів. No recipes.=Немає рецептів.
Click again to show usages.=Натисніть ще раз, щоб показати використання. Click again to show usages.=Натисніть ще раз для використань.
Recipes=Рецепти Recipes=Рецепти

View File

@ -1,3 +1,3 @@
# textdomain: screwdriver # textdomain: screwdriver
Screwdriver=Викрутка Screwdriver=Викрутка
(left-click rotates face, right-click rotates axis)=(клік лівою кнопкою миші повертає край, клік правою кнопкою миші - вісь) (left-click rotates face, right-click rotates axis)=(ЛКМ повертає грань, ПКМ — вісь)

View File

@ -1,5 +1,5 @@
# textdomain: sethome # textdomain: sethome
This command can only be executed in-game!= This command can only be executed in-game!=Cette commande peut seulement être exécutée en jeu !
Can use /sethome and /home=Peut utiliser /sethome et /home Can use /sethome and /home=Peut utiliser /sethome et /home
Teleport you to your home point=Vous téléporter à votre domicile Teleport you to your home point=Vous téléporter à votre domicile
Teleported to home!=Téléporté à votre domicile ! Teleported to home!=Téléporté à votre domicile !

View File

@ -1,6 +1,6 @@
# textdomain: sethome # textdomain: sethome
This command can only be executed in-game!= This command can only be executed in-game!=Perintah ini hanya bisa dijalankan dalam permainan!
Can use /sethome and /home=Boleh pakai /sethome dan /home Can use /sethome and /home=Boleh gunakan /sethome dan /home
Teleport you to your home point=Teleportasi ke rumah Anda Teleport you to your home point=Teleportasi ke rumah Anda
Teleported to home!=Teleportasi ke rumah! Teleported to home!=Teleportasi ke rumah!
Set a home using /sethome=Atur letak rumah dengan /sethome Set a home using /sethome=Atur letak rumah dengan /sethome

View File

@ -1,9 +1,9 @@
# textdomain: sethome # textdomain: sethome
This command can only be executed in-game!= This command can only be executed in-game!=Ця команда може бути виконана тільки у грі!
Can use /sethome and /home=Можливість використання /sethome та /home Can use /sethome and /home=Можливість використання /sethome та /home
Teleport you to your home point=Ви телепортуєтесь у свою домашню точку Teleport you to your home point=Телепортуватися до домашньої точки
Teleported to home!=Ви телепортувались додому! Teleported to home!=Телепортовано додому!
Set a home using /sethome=Встановіть домашню точку, використовуючи /sethome Set a home using /sethome=Встановіть домашню точку, використовуючи /sethome
Set your home point=Встановіть домашню точку Set your home point=Встановити домашню точку
Home set!=Домашня точка встановлена! Home set!=Домашню точку встановлено!
Player not found!=Гравець не визначений! Player not found!=Гравця не знайдено!

View File

@ -1,2 +1,2 @@
# textdomain: sfinv # textdomain: sfinv
Crafting=Крафтинг Crafting=Майстрування

View File

@ -63,16 +63,19 @@ local function warn_if_exists(nodename)
end end
end end
-- get node settings to use for stairs -- Set backface culling and world-aligned textures
local function get_node_vars(nodename) local function set_textures(images, worldaligntex)
local stair_images = {}
local def = minetest.registered_nodes[nodename] for i, image in ipairs(images) do
stair_images[i] = type(image) == "string" and {name = image} or table.copy(image)
if def then if stair_images[i].backface_culling == nil then
return def.light_source, def.use_texture_alpha, def.sunlight_propagates stair_images[i].backface_culling = true
end
if worldaligntex and stair_images[i].align_style == nil then
stair_images[i].align_style = "world"
end
end end
return stair_images
return nil, nil, nil
end end
-- Register stair -- Register stair
@ -80,29 +83,8 @@ end
function stairs.register_stair(subname, recipeitem, groups, images, description, function stairs.register_stair(subname, recipeitem, groups, images, description,
sounds, worldaligntex) sounds, worldaligntex)
local light_source, texture_alpha, sunlight = get_node_vars(recipeitem) local def = minetest.registered_nodes[recipeitem] or {}
local stair_images = set_textures(images, worldaligntex)
-- Set backface culling and world-aligned textures
local stair_images = {}
for i, image in ipairs(images) do
if type(image) == "string" then
stair_images[i] = {
name = image,
backface_culling = true,
}
if worldaligntex then
stair_images[i].align_style = "world"
end
else
stair_images[i] = table.copy(image)
if stair_images[i].backface_culling == nil then
stair_images[i].backface_culling = true
end
if worldaligntex and stair_images[i].align_style == nil then
stair_images[i].align_style = "world"
end
end
end
local new_groups = table.copy(groups) local new_groups = table.copy(groups)
new_groups.stair = 1 new_groups.stair = 1
warn_if_exists("stairs:stair_" .. subname) warn_if_exists("stairs:stair_" .. subname)
@ -110,14 +92,14 @@ function stairs.register_stair(subname, recipeitem, groups, images, description,
description = description, description = description,
drawtype = "nodebox", drawtype = "nodebox",
tiles = stair_images, tiles = stair_images,
use_texture_alpha = texture_alpha, use_texture_alpha = def.use_texture_alpha,
sunlight_propagates = sunlight, sunlight_propagates = def.sunlight_propagates,
light_source = light_source, light_source = def.light_source,
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
is_ground_content = false, is_ground_content = false,
groups = new_groups, groups = new_groups,
sounds = sounds, sounds = sounds or def.sounds,
node_box = { node_box = {
type = "fixed", type = "fixed",
fixed = { fixed = {
@ -184,25 +166,8 @@ end
function stairs.register_slab(subname, recipeitem, groups, images, description, function stairs.register_slab(subname, recipeitem, groups, images, description,
sounds, worldaligntex) sounds, worldaligntex)
local light_source, texture_alpha, sunlight = get_node_vars(recipeitem) local def = minetest.registered_nodes[recipeitem] or {}
local slab_images = set_textures(images, worldaligntex)
-- Set world-aligned textures
local slab_images = {}
for i, image in ipairs(images) do
if type(image) == "string" then
slab_images[i] = {
name = image,
}
if worldaligntex then
slab_images[i].align_style = "world"
end
else
slab_images[i] = table.copy(image)
if worldaligntex and image.align_style == nil then
slab_images[i].align_style = "world"
end
end
end
local new_groups = table.copy(groups) local new_groups = table.copy(groups)
new_groups.slab = 1 new_groups.slab = 1
warn_if_exists("stairs:slab_" .. subname) warn_if_exists("stairs:slab_" .. subname)
@ -210,14 +175,14 @@ function stairs.register_slab(subname, recipeitem, groups, images, description,
description = description, description = description,
drawtype = "nodebox", drawtype = "nodebox",
tiles = slab_images, tiles = slab_images,
use_texture_alpha = texture_alpha, use_texture_alpha = def.use_texture_alpha,
sunlight_propagates = sunlight, sunlight_propagates = def.sunlight_propagates,
light_source = light_source, light_source = def.light_source,
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
is_ground_content = false, is_ground_content = false,
groups = new_groups, groups = new_groups,
sounds = sounds, sounds = sounds or def.sounds,
node_box = { node_box = {
type = "fixed", type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
@ -324,29 +289,8 @@ end
function stairs.register_stair_inner(subname, recipeitem, groups, images, function stairs.register_stair_inner(subname, recipeitem, groups, images,
description, sounds, worldaligntex, full_description) description, sounds, worldaligntex, full_description)
local light_source, texture_alpha, sunlight = get_node_vars(recipeitem) local def = minetest.registered_nodes[recipeitem] or {}
local stair_images = set_textures(images, worldaligntex)
-- Set backface culling and world-aligned textures
local stair_images = {}
for i, image in ipairs(images) do
if type(image) == "string" then
stair_images[i] = {
name = image,
backface_culling = true,
}
if worldaligntex then
stair_images[i].align_style = "world"
end
else
stair_images[i] = table.copy(image)
if stair_images[i].backface_culling == nil then
stair_images[i].backface_culling = true
end
if worldaligntex and stair_images[i].align_style == nil then
stair_images[i].align_style = "world"
end
end
end
local new_groups = table.copy(groups) local new_groups = table.copy(groups)
new_groups.stair = 1 new_groups.stair = 1
if full_description then if full_description then
@ -359,14 +303,14 @@ function stairs.register_stair_inner(subname, recipeitem, groups, images,
description = description, description = description,
drawtype = "nodebox", drawtype = "nodebox",
tiles = stair_images, tiles = stair_images,
use_texture_alpha = texture_alpha, use_texture_alpha = def.use_texture_alpha,
sunlight_propagates = sunlight, sunlight_propagates = def.sunlight_propagates,
light_source = light_source, light_source = def.light_source,
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
is_ground_content = false, is_ground_content = false,
groups = new_groups, groups = new_groups,
sounds = sounds, sounds = sounds or def.sounds,
node_box = { node_box = {
type = "fixed", type = "fixed",
fixed = { fixed = {
@ -416,29 +360,8 @@ end
function stairs.register_stair_outer(subname, recipeitem, groups, images, function stairs.register_stair_outer(subname, recipeitem, groups, images,
description, sounds, worldaligntex, full_description) description, sounds, worldaligntex, full_description)
local light_source, texture_alpha, sunlight = get_node_vars(recipeitem) local def = minetest.registered_nodes[recipeitem] or {}
local stair_images = set_textures(images, worldaligntex)
-- Set backface culling and world-aligned textures
local stair_images = {}
for i, image in ipairs(images) do
if type(image) == "string" then
stair_images[i] = {
name = image,
backface_culling = true,
}
if worldaligntex then
stair_images[i].align_style = "world"
end
else
stair_images[i] = table.copy(image)
if stair_images[i].backface_culling == nil then
stair_images[i].backface_culling = true
end
if worldaligntex and stair_images[i].align_style == nil then
stair_images[i].align_style = "world"
end
end
end
local new_groups = table.copy(groups) local new_groups = table.copy(groups)
new_groups.stair = 1 new_groups.stair = 1
if full_description then if full_description then
@ -451,14 +374,14 @@ function stairs.register_stair_outer(subname, recipeitem, groups, images,
description = description, description = description,
drawtype = "nodebox", drawtype = "nodebox",
tiles = stair_images, tiles = stair_images,
use_texture_alpha = texture_alpha, use_texture_alpha = def.use_texture_alpha,
sunlight_propagates = sunlight, sunlight_propagates = def.sunlight_propagates,
light_source = light_source, light_source = def.light_source,
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
is_ground_content = false, is_ground_content = false,
groups = new_groups, groups = new_groups,
sounds = sounds, sounds = sounds or def.sounds,
node_box = { node_box = {
type = "fixed", type = "fixed",
fixed = { fixed = {

View File

@ -1,145 +1,145 @@
# textdomain: stairs # textdomain: stairs
Glass Stair=Скляна Сходинка Glass Stair=Скляна сходинка
Glass Slab=Скляна Плита Glass Slab=Скляна плита
Inner Glass Stair=Кутова Скляна Сходинка (Внутрішній Кут) Inner Glass Stair=Кутова скляна сходинка (внутрішній кут)
Outer Glass Stair=Кутова Скляна Сходинка (Зовнішній Кут) Outer Glass Stair=Кутова скляна сходинка (зовнішній кут)
Obsidian Glass Stair=Скляна Сходинка З Обсидіану Obsidian Glass Stair=Сходинка з обсидіанового скла
Obsidian Glass Slab=Скляна Плита З Обсидіану Obsidian Glass Slab=Плита з обсидіанового скла
Inner Obsidian Glass Stair=Кутова Скляна Сходинка З Обсидіану (Внутрішній Кут) Inner Obsidian Glass Stair=Кутова сходинка з обсидіанового скла (внутрішній кут)
Outer Obsidian Glass Stair=Кутова Скляна Сходинка З Обсидіану (Зовнішній Кут) Outer Obsidian Glass Stair=Кутова сходинка з обсидіанового скла (зовнішній кут)
Wooden Stair=Яблунева Дерев'яна Сходинка Wooden Stair=Дерев'яна сходинка
Inner Wooden Stair=Кутова Яблунева Дерев'яна Сходинка (Внутрішній Кут) Inner Wooden Stair=Кутова дерев'яна сходинка (внутрішній кут)
Outer Wooden Stair=Кутова Яблунева Дерев'яна Сходинка (Внутрішній Кут) Outer Wooden Stair=Кутова дерев'яна сходинка (зовнішній кут)
Wooden Slab=Яблунева Дерев'яна Плита Wooden Slab=Дерев'яна плита
Jungle Wood Stair=Дерев'яна Сходинка З Тропічного Дерева Jungle Wood Stair=Сходинка з тропічного дерева
Inner Jungle Wood Stair=Кутова Дерев'яна Сходинка З Тропічного Дерева (Внутрішній Кут) Inner Jungle Wood Stair=Кутова сходинка з тропічного дерева (внутрішній кут)
Outer Jungle Wood Stair=Кутова Дерев'яна Сходинка З Тропічного Дерева (Зовнішній Кут) Outer Jungle Wood Stair=Кутова сходинка з тропічного дерева (зовнішній кут)
Jungle Wood Slab=Дерев'яна Плита З Тропічного Дерева Jungle Wood Slab=Плита з тропічного дерева
Pine Wood Stair=Дерев'яна Сходинка З Сосни Pine Wood Stair=Соснова сходинка
Inner Pine Wood Stair=Кутова Дерев'яна Сходинка З Сосни (Внутрішній Кут) Inner Pine Wood Stair=Кутова соснова сходинка (внутрішній кут)
Outer Pine Wood Stair=Кутова Дерев'яна Сходинка З Сосни (Зовнішній Кут) Outer Pine Wood Stair=Кутова соснова сходинка (зовнішній кут)
Pine Wood Slab=Дерев'яна Плита З Сосни Pine Wood Slab=Соснова плита
Acacia Wood Stair=Дерев'яна Сходинка З Акації Acacia Wood Stair=Акацієва сходинка
Inner Acacia Wood Stair=Кутова Дерев'яна Сходинка З Акації (Внутрішній Кут) Inner Acacia Wood Stair=Кутова акацієва сходинка (внутрішній кут)
Outer Acacia Wood Stair=Кутова Дерев'яна Сходинка З Акації (Зовнішній Кут) Outer Acacia Wood Stair=Кутова акацієва сходинка (зовнішній кут)
Acacia Wood Slab=Дерев'яна Плита З Акації Acacia Wood Slab=Акацієва плита
Aspen Wood Stair=Дерев'яна Сходинка З Осики Aspen Wood Stair=Осикова сходинка
Inner Aspen Wood Stair=Кутова Дерев'яна Сходинка З Осики (Внутрішній Кут) Inner Aspen Wood Stair=Кутова осикова сходинка (внутрішній кут)
Outer Aspen Wood Stair=Кутова Дерев'яна Сходинка З Осики (Зовнішній Кут) Outer Aspen Wood Stair=Кутова осикова сходинка (зовнішній кут)
Aspen Wood Slab=Дерев'яна Плита З Осики Aspen Wood Slab=Осикова плита
Stone Stair=Кам'яна Сходинка Stone Stair=Кам'яна сходинка
Inner Stone Stair=Кутова Кам'яна Сходинка (Внутрішній Кут) Inner Stone Stair=Кутова кам'яна сходинка (внутрішній кут)
Outer Stone Stair=Кутова Кам'яна Сходинка (Зовнішній Кут) Outer Stone Stair=Кутова кам'яна сходинка (зовнішній кут)
Stone Slab=Кам'яна Плита Stone Slab=Кам'яна плита
Cobblestone Stair=Сходинка З Кругляку Cobblestone Stair=Круглякова сходинка
Inner Cobblestone Stair=Кутова Сходинка З Кругляку (Внутрішній Кут) Inner Cobblestone Stair=Кутова круглякова сходинка (внутрішній кут)
Outer Cobblestone Stair=Кутова Сходинка З Кругляку (Зовнішній Кут) Outer Cobblestone Stair=Кутова круглякова сходинка (зовнішній кут)
Cobblestone Slab=Плита З Кругляку Cobblestone Slab=Круглякова плита
Mossy Cobblestone Stair=Мохова Сходинка З Кругляку Mossy Cobblestone Stair=Сходинка з моховитого кругляку
Inner Mossy Cobblestone Stair=Кутова Мохова Сходинка З Кругляку (Внутрішній Кут) Inner Mossy Cobblestone Stair=Кутова сходинка з моховитого кругляку (внутрішній кут)
Outer Mossy Cobblestone Stair=Кутова Мохова Сходинка З Кругляку (Зовнішній Кут) Outer Mossy Cobblestone Stair=Кутова сходинка з моховитого кругляку (зовнішній кут)
Mossy Cobblestone Slab=Мохова Плита З Кругляку Mossy Cobblestone Slab=Плита з моховитого кругляку
Stone Brick Stair=Сходинка З Кам'яної Цегли Stone Brick Stair=Сходинка з кам'яної цегли
Inner Stone Brick Stair=Кутова Сходинка З Кам'яної Цегли (Внутрішній Кут) Inner Stone Brick Stair=Кутова сходинка з кам'яної цегли (внутрішній кут)
Outer Stone Brick Stair=Кутова Сходинка З Кам'яної Цегли (Зовнішній Кут) Outer Stone Brick Stair=Кутова сходинка з кам'яної цегли (зовнішній кут)
Stone Brick Slab=Плита З Кам'яної Цегли Stone Brick Slab=Плита з кам'яної цегли
Stone Block Stair=Сходинка З Кам'яного Блоку Stone Block Stair=Сходинка з блоку каменю
Inner Stone Block Stair=Кутова Сходинка З Кам'яного Блоку (Внутрішній Кут) Inner Stone Block Stair=Кутова сходинка з блоку каменю (внутрішній кут)
Outer Stone Block Stair=Кутова Сходинка З Кам'яного Блоку (Зовнішній Кут) Outer Stone Block Stair=Кутова сходинка з блоку каменю (зовнішній кут)
Stone Block Slab=Плита З Кам'яного Блоку Stone Block Slab=Плита з блоку каменю
Desert Stone Stair=Сходинка З Пустельного Каменю Desert Stone Stair=Сходинка з пустельного каменю
Inner Desert Stone Stair=Кутова Сходинка З Пустельного Каменю (Внутрішній Кут) Inner Desert Stone Stair=Кутова сходинка з пустельного каменю (внутрішній кут)
Outer Desert Stone Stair=Кутова Сходинка З Пустельного Каменю (Зовнішній Кут) Outer Desert Stone Stair=Кутова сходинка з пустельного каменю (зовнішній кут)
Desert Stone Slab=Плита З Пустельного Каменю Desert Stone Slab=Плита з пустельного каменю
Desert Cobblestone Stair=Сходинка З Пустельного Кругляку Desert Cobblestone Stair=Сходинка з пустельного кругляку
Inner Desert Cobblestone Stair=Кутова Сходинка З Пустельного Кругляку (Внутрішній Кут) Inner Desert Cobblestone Stair=Кутова сходинка з пустельного кругляку (внутрішній кут)
Outer Desert Cobblestone Stair=Кутова Сходинка З Пустельного Кругляку (Зовнішній Кут) Outer Desert Cobblestone Stair=Кутова сходинка з пустельного кругляку (зовнішній кут)
Desert Cobblestone Slab=Плита З Пустельного Каменю Desert Cobblestone Slab=Плита з пустельного кругляку
Desert Stone Brick Stair=Сходинка З Цегли Із Пустельного Каменю Desert Stone Brick Stair=Сходинка з цегли з пустельного каменю
Inner Desert Stone Brick Stair=Кутова Сходинка З Цегли Із Пустельного Каменю (Внутрішній Кут) Inner Desert Stone Brick Stair=Кутова сходинка з цегли з пустельного каменю (внутрішній кут)
Outer Desert Stone Brick Stair=Кутова Сходинка З Цегли Із Пустельного Каменю (Зовнішній Кут) Outer Desert Stone Brick Stair=Кутова сходинка з цегли з пустельного каменю (зовнішній кут)
Desert Stone Brick Slab=Плита З Цегли Із Пустельного Каменю Desert Stone Brick Slab=Плита з цегли з пустельного каменю
Desert Stone Block Stair=Сходинка З Пустельного Кам'яного Блоку Desert Stone Block Stair=Сходинка з блоку пустельного каменю
Inner Desert Stone Block Stair=Кутова Сходинка З Пустельного Кам'яного Блоку (Внутрішній Кут) Inner Desert Stone Block Stair=Кутова сходинка з блоку пустельного каменю (внутрішній кут)
Outer Desert Stone Block Stair=Кутова Сходинка З Пустельного Кам'яного Блоку (Зовнішній Кут) Outer Desert Stone Block Stair=Кутова сходинка з блоку пустельного каменю (зовнішній кут)
Desert Stone Block Slab=Плита З Пустельного Кам'яного Блоку Desert Stone Block Slab=Плита з блоку пустельного каменю
Sandstone Stair=Сходинка З Піщанику Sandstone Stair=Пісковикова сходинка
Inner Sandstone Stair=Кутова Сходинка З Піщанику (Внутрішній Кут) Inner Sandstone Stair=Кутова пісковикова сходинка (внутрішній кут)
Outer Sandstone Stair=Кутова Сходинка З Піщанику (Зовнішній Кут) Outer Sandstone Stair=Кутова пісковикова сходинка (зовнішній кут)
Sandstone Slab=Плита З Піщанику Sandstone Slab=Пісковикова плита
Sandstone Brick Stair=Сходинка З Цегли Із Піщанику Sandstone Brick Stair=Сходинка з пісковикової цегли
Inner Sandstone Brick Stair=Кутова Сходинка З Цегли Із Піщанику (Внутрішній Кут) Inner Sandstone Brick Stair=Кутова сходинка з пісковикової цегли (внутрішній кут)
Outer Sandstone Brick Stair=Кутова Сходинка З Цегли Із Піщанику (Зовнішній Кут) Outer Sandstone Brick Stair=Кутова сходинка з пісковикової цегли (зовнішній кут)
Sandstone Brick Slab=Плита З Цегли Із Піщанику Sandstone Brick Slab=Плита з пісковикової цегли
Sandstone Block Stair=Сходинка З Блоку Із Піщанику Sandstone Block Stair=Сходинка з блоку пісковику
Inner Sandstone Block Stair=Кутова Сходинка З Блоку Із Піщанику (Внутрішній Кут) Inner Sandstone Block Stair=Кутова сходинка з блоку пісковику (внутрішній кут)
Outer Sandstone Block Stair=Кутова Сходинка З Блоку Із Піщанику (Зовнішній Кут) Outer Sandstone Block Stair=Кутова сходинка з блоку пісковику (зовнішній кут)
Sandstone Block Slab=Плита З Блоку Із Піщанику Sandstone Block Slab=Плита з блоку пісковику
Desert Sandstone Stair=Сходинка З Пустельного Піщанику Desert Sandstone Stair=Сходинка з пустельного пісковику
Inner Desert Sandstone Stair=Кутова Сходинка З Пустельного Піщанику (Внутрішній Кут) Inner Desert Sandstone Stair=Кутова сходинка з пустельного пісковику (внутрішній кут)
Outer Desert Sandstone Stair=Кутова Сходинка З Пустельного Піщанику (Зовнішній Кут) Outer Desert Sandstone Stair=Кутова сходинка з пустельного пісковику (зовнішній кут)
Desert Sandstone Slab=Плита З Пустельного Піщанику Desert Sandstone Slab=Плита з пустельного пісковику
Desert Sandstone Brick Stair=Сходинка З Цегли Із Пустельного Піщанику Desert Sandstone Brick Stair=Сходинка з цегли з пустельного пісковику
Inner Desert Sandstone Brick Stair=Кутова Сходинка З Цегли Із Пустельного Піщанику (Внутрішній Кут) Inner Desert Sandstone Brick Stair=Кутова сходинка з цегли з пустельного пісковику (внутрішній кут)
Outer Desert Sandstone Brick Stair=Кутова Сходинка З Цегли Із Пустельного Піщанику (Зовнішній Кут) Outer Desert Sandstone Brick Stair=Кутова сходинка з цегли з пустельного пісковику (зовнішній кут)
Desert Sandstone Brick Slab=Плита З Цегли Із Пустельного Піщанику Desert Sandstone Brick Slab=Плита з цегли з пустельного пісковику
Desert Sandstone Block Stair=Сходинка З Блоку Із Пустельного Піщанику Desert Sandstone Block Stair=Сходинка з блоку пустельного пісковику
Inner Desert Sandstone Block Stair=Кутова Сходинка З Блоку Із Пустельного Піщанику (Внутрішній Кут) Inner Desert Sandstone Block Stair=Кутова сходинка з блоку пустельного пісковику (внутрішній кут)
Outer Desert Sandstone Block Stair=Кутова Сходинка З Блоку Із Пустельного Піщанику (Зовнішній Кут) Outer Desert Sandstone Block Stair=Кутова сходинка з блоку пустельного пісковику (зовнішній кут)
Desert Sandstone Block Slab=Плита З Блоку Із Пустельного Піщанику Desert Sandstone Block Slab=Плита з блоку пустельного пісковику
Silver Sandstone Stair=Сходинка З Срібного Піщанику Silver Sandstone Stair=Сходинка зі срібного пісковику
Inner Silver Sandstone Stair=Кутова Сходинка З Срібного Піщанику (Внутрішній Кут) Inner Silver Sandstone Stair=Кутова сходинка зі срібного пісковику (внутрішній кут)
Outer Silver Sandstone Stair=Кутова Сходинка З Срібного Піщанику (Зовнішній Кут) Outer Silver Sandstone Stair=Кутова сходинка зі срібного пісковику (зовнішній кут)
Silver Sandstone Slab=Плита З Срібного Піщанику Silver Sandstone Slab=Плита зі срібного пісковику
Silver Sandstone Brick Stair=Сходинка З Цегли Із Срібного Піщанику Silver Sandstone Brick Stair=Сходинка з цегли зі срібного пісковику
Inner Silver Sandstone Brick Stair=Кутова Сходинка З Цегли Із Срібного Піщанику (Внутрішній Кут) Inner Silver Sandstone Brick Stair=Кутова сходинка з цегли зі срібного пісковику (внутрішній кут)
Outer Silver Sandstone Brick Stair=Кутова Сходинка З Цегли Із Срібного Піщанику (Зовнішній Кут) Outer Silver Sandstone Brick Stair=Кутова сходинка з цегли зі срібного пісковику (зовнішній кут)
Silver Sandstone Brick Slab=Плита З Цегли Із Срібного Піщанику Silver Sandstone Brick Slab=Плита з цегли зі срібного пісковику
Silver Sandstone Block Stair=Сходинка З Блоку Із Срібного Піщанику Silver Sandstone Block Stair=Сходинка з блоку срібного пісковику
Inner Silver Sandstone Block Stair=Кутова Сходинка З Блоку Із Срібного Піщанику (Внутрішній Кут) Inner Silver Sandstone Block Stair=Кутова сходинка з блоку срібного пісковику (внутрішній кут)
Outer Silver Sandstone Block Stair=Кутова Сходинка З Блоку Із Срібного Піщанику (Зовнішній Кут) Outer Silver Sandstone Block Stair=Кутова сходинка з блоку срібного пісковику (зовнішній кут)
Silver Sandstone Block Slab=Плита З Блоку Із Срібного Піщанику Silver Sandstone Block Slab=Плита з блоку срібного пісковику
Obsidian Stair=Обсидіанова Сходинка Obsidian Stair=Обсидіанова сходинка
Inner Obsidian Stair=Кутова Обсидіанова Сходинка (Внутрішній Кут) Inner Obsidian Stair=Кутова обсидіанова сходинка (внутрішній кут)
Outer Obsidian Stair=Кутова Обсидіанова Сходинка (Зовнішній Кут) Outer Obsidian Stair=Кутова обсидіанова сходинка (зовнішній кут)
Obsidian Slab=Обсидіанова Плита Obsidian Slab=Обсидіанова плита
Obsidian Brick Stair=Сходинка З Обсидіанової Цегли Obsidian Brick Stair=Сходинка з обсидіанової цегли
Inner Obsidian Brick Stair=Кутова Сходинка З Обсидіанової Цегли (Внутрішній Кут) Inner Obsidian Brick Stair=Кутова сходинка з обсидіанової цегли (внутрішній кут)
Outer Obsidian Brick Stair=Кутова Сходинка З Обсидіанової Цегли (Зовнішній Кут) Outer Obsidian Brick Stair=Кутова сходинка з обсидіанової цегли (зовнішній кут)
Obsidian Brick Slab=Плита З Обсидіанової Цегли Obsidian Brick Slab=Плита з обсидіанової цегли
Obsidian Block Stair=Сходинка З Обсидіанового Блоку Obsidian Block Stair=Сходинка з блоку обсидіану
Inner Obsidian Block Stair=Кутова Сходинка З Обсидіанового Блоку (Внутрішній Кут) Inner Obsidian Block Stair=Кутова сходинка з блоку обсидіану (внутрішній кут)
Outer Obsidian Block Stair=Кутова Сходинка З Обсидіанового Блоку (Зовнішній Кут) Outer Obsidian Block Stair=Кутова сходинка з блоку обсидіану (зовнішній кут)
Obsidian Block Slab=Плита З Обсидіанового Блоку Obsidian Block Slab=Плита з блоку обсидіану
Brick Stair=Сходинка З Цегли Brick Stair=Цегляна сходинка
Inner Brick Stair=Кутова Сходинка З Цегли (Внутрішній Кут) Inner Brick Stair=Кутова цегляна сходинка (внутрішній кут)
Outer Brick Stair=Кутова Сходинка З Цегли (Зовнішній Кут) Outer Brick Stair=Кутова цегляна сходинка (зовнішній кут)
Brick Slab=Плита З Цегли Brick Slab=Цегляна плита
Steel Block Stair=Сходинка Із Сталевого Блоку Steel Block Stair=Сходинка з блоку сталі
Inner Steel Block Stair=Кутова Сходинка Із Сталевого Блоку (Внутрішній Кут) Inner Steel Block Stair=Кутова сходинка з блоку сталі (внутрішній кут)
Outer Steel Block Stair=Кутова Сходинка Із Сталевого Блоку (Зовнішній Кут) Outer Steel Block Stair=Кутова сходинка з блоку сталі (зовнішній кут)
Steel Block Slab=Плита Із Сталевого Блоку Steel Block Slab=Плита з блоку сталі
Tin Block Stair=Сходинка З Олов'яного Блоку Tin Block Stair=Сходинка з блоку олова
Inner Tin Block Stair=Кутова Сходинка З Олов'яного Блоку (Внутрішній Кут) Inner Tin Block Stair=Кутова сходинка з блоку олова (внутрішній кут)
Outer Tin Block Stair=Кутова Сходинка З Олов'яного Блоку (Зовнішній Кут) Outer Tin Block Stair=Кутова сходинка з блоку олова (зовнішній кут)
Tin Block Slab=Плита З Олов'яного Блоку Tin Block Slab=Плита з блоку олова
Copper Block Stair=Сходинка З Мідного Блоку Copper Block Stair=Сходинка з блоку міді
Inner Copper Block Stair=Кутова Сходинка З Мідного Блоку (Внутрішній Кут) Inner Copper Block Stair=Кутова сходинка з блоку міді (внутрішній кут)
Outer Copper Block Stair=Кутова Сходинка З Мідного Блоку (Зовнішній Кут) Outer Copper Block Stair=Кутова сходинка з блоку міді (зовнішній кут)
Copper Block Slab=Плита З Мідного Блоку Copper Block Slab=Плита з блоку міді
Bronze Block Stair=Сходинка З Бронзового Блоку Bronze Block Stair=Сходинка з блоку бронзи
Inner Bronze Block Stair=Кутова Сходинка З Бронзового Блоку (Внутрішній Кут) Inner Bronze Block Stair=Кутова сходинка з блоку бронзи (внутрішній кут)
Outer Bronze Block Stair=Кутова Сходинка З Бронзового Блоку (Зовнішній Кут) Outer Bronze Block Stair=Кутова сходинка з блоку бронзи (зовнішній кут)
Bronze Block Slab=Плита З Бронзового Блоку Bronze Block Slab=Плита з блоку бронзи
Gold Block Stair=Сходинка З Золотого Блоку Gold Block Stair=Сходинка з блоку золота
Inner Gold Block Stair=Сходинка З Золотого Блоку (Внутрішній Кут) Inner Gold Block Stair=Кутова сходинка з блоку золота (внутрішній кут)
Outer Gold Block Stair=Сходинка З Золотого Блоку (Зовнішній Кут) Outer Gold Block Stair=Кутова сходинка з блоку золота (зовнішній кут)
Gold Block Slab=Плита З Золотого Блоку Gold Block Slab=Плита з блоку золота
Ice Stair=Крижана Сходинка Ice Stair=Крижана сходинка
Inner Ice Stair=Кутова Крижана Сходинка (Внутрішній Кут) Inner Ice Stair=Кутова крижана сходинка (внутрішній кут)
Outer Ice Stair=Кутова Крижана Сходинка (Зовнішній Кут) Outer Ice Stair=Кутова крижана сходинка (зовнішній кут)
Ice Slab=Крижана Плита Ice Slab=Крижана плита
Snow Block Stair=Ступінь З Крижаного Блоку Snow Block Stair=Сходинка з блоку снігу
Inner Snow Block Stair=Кутова Ступінь З Крижаного Блоку (Внутрішній Кут) Inner Snow Block Stair=Кутова сходинка з блоку снігу (внутрішній кут)
Outer Snow Block Stair=Кутова Ступінь З Крижаного Блоку (Зовнішній Кут) Outer Snow Block Stair=Кутова сходинка з блоку снігу (зовнішній кут)
Snow Block Slab=Плита З Крижаного Блоку Snow Block Slab=Плита з блоку снігу

View File

@ -1,4 +1,4 @@
# textdomain: tnt # textdomain: tnt
Gun Powder=Порох Gun Powder=Порох
TNT Stick=Тротилова Паличка TNT Stick=Тротилова шашка
TNT=Тротил TNT=Тротил

View File

@ -81,6 +81,15 @@ local vessels_shelf_def = {
minetest.remove_node(pos) minetest.remove_node(pos)
return drops return drops
end, end,
on_metadata_inventory_put = function(pos)
update_vessels_shelf(pos)
end,
on_metadata_inventory_take = function(pos)
update_vessels_shelf(pos)
end,
on_metadata_inventory_move = function(pos)
update_vessels_shelf(pos)
end,
} }
default.set_inventory_action_loggers(vessels_shelf_def, "vessels shelf") default.set_inventory_action_loggers(vessels_shelf_def, "vessels shelf")
minetest.register_node("vessels:shelf", vessels_shelf_def) minetest.register_node("vessels:shelf", vessels_shelf_def)

View File

@ -1,8 +1,8 @@
# textdomain: vessels # textdomain: vessels
Empty Vessels Shelf=Полиця з Пустим Посудом Empty Vessels Shelf=Пуста полиця для посуду
Vessels Shelf (@1 items)=Полиця з Посудом (@1 предмета) Vessels Shelf (@1 items)=Полиця для посуду (@1 предм.)
Vessels Shelf=Полиця з Посудом Vessels Shelf=Полиця для посуду
Empty Glass Bottle=Порожня Скляна Пляшка Empty Glass Bottle=Порожня скляна пляшка
Empty Drinking Glass=Порожня Склянка Empty Drinking Glass=Порожня склянка
Empty Heavy Steel Bottle=Порожня Сталева Пляшка Empty Heavy Steel Bottle=Порожня важка сталева пляшка
Glass Fragments=Скляні Уламки Glass Fragments=Скляні уламки

View File

@ -1,4 +1,4 @@
# textdomain: walls # textdomain: walls
Cobblestone Wall=Паркан З Кругляку Cobblestone Wall=Кругляковий паркан
Mossy Cobblestone Wall=Паркан З Мохового Кругляку Mossy Cobblestone Wall=Паркан з моховитого кругляку
Desert Cobblestone Wall=Паркан З Пустельного Кругляку Desert Cobblestone Wall=Паркан з пустельного кругляку

View File

@ -1,16 +1,16 @@
# textdomain: wool # textdomain: wool
White Wool=Біла Шерсть White Wool=Біла вовна
Grey Wool=Сіра Шерсть Grey Wool=Сіра вовна
Dark Grey Wool=Темно-Сіра Шерсть Dark Grey Wool=Темно-сіра вовна
Black Wool=Чорна Шерсть Black Wool=Чорна вовна
Violet Wool=Фіолетова Шерсть Violet Wool=Фіолетова вовна
Blue Wool=Синя Шерсть Blue Wool=Синя вовна
Cyan Wool=Голуба Шерсть Cyan Wool=Синьо-зелена вовна
Dark Green Wool=Темно-Зелена Шерсть Dark Green Wool=Темно-зелена вовна
Green Wool=Зелена Шерсть Green Wool=Зелена вовна
Yellow Wool=Жовта Шерсть Yellow Wool=Жовта вовна
Brown Wool=Коричнева Шерсть Brown Wool=Коричнева вовна
Orange Wool=Оранжева Шерсть Orange Wool=Помаранчева вовна
Red Wool=Червона Шерсть Red Wool=Червона вовна
Magenta Wool=Пурпурна Шерсть Magenta Wool=Пурпурна вовна
Pink Wool=Рожева Шерсть Pink Wool=Рожева вовна

View File

@ -1,6 +1,6 @@
# textdomain: xpanes # textdomain: xpanes
Glass Pane=Скляна Панель Glass Pane=Скляна панель
Obsidian Glass Pane=Скляна Панель З Обсидіану Obsidian Glass Pane=Панель з обсидіанового скла
Steel Bars=Сталева Решітка Steel Bars=Ґрати
Steel Bar Door=Сталеві Двері З Решіткою Steel Bar Door=Двері з ґратами
Steel Bar Trapdoor=Сталевий Люк З Решіткою Steel Bar Trapdoor=Люк з ґратами