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

This commit is contained in:
bri cassa 2024-09-14 15:03:00 +02:00
commit 90e786e65b
92 changed files with 1734 additions and 1309 deletions

View File

@ -1,16 +0,0 @@
name: build
on: [push, pull_request]
jobs:
luacheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install Luarocks
run: |
sudo apt-get update -qyy
sudo apt-get install luarocks -qyy
- name: Install Luacheck
run: luarocks install --local luacheck
- name: Run Luacheck
run: $HOME/.luarocks/bin/luacheck mods

13
.github/workflows/luacheck.yml vendored Normal file
View File

@ -0,0 +1,13 @@
name: luacheck
on: [push, pull_request]
jobs:
luacheck:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Luacheck
uses: lunarmodules/luacheck@master
with:
args: mods

11
.github/workflows/test.yml vendored Normal file
View File

@ -0,0 +1,11 @@
name: test
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v4
- run: ./utils/test/run.sh

View File

@ -8,8 +8,8 @@ real goals or built-in enemy mobs.
While it provides a basic gameplay experience out of the box, it is best played
with mods.
Minetest Game is currently in maintenance-only mode, meaning it will not see new
gameplay features or anything else that breaks compatibility (See
Minetest Game is in perpetual maintenance-only mode, meaning it will not see new
gameplay features or anything else that breaks compatibility (see
[#2710](https://github.com/minetest/minetest_game/issues/2710)).
## Installation
@ -17,13 +17,13 @@ gameplay features or anything else that breaks compatibility (See
### ContentDB
* Content > Browse Online Content
* Search for Minetest Game
* Search for "[Minetest Game](https://content.minetest.net/packages/Minetest/minetest_game/)"
* Click Install
### Manually
- Unzip the archive, rename the folder to `minetest_game` and
place it in .. `minetest/games/`
place it in `.../minetest/games/`
- GNU/Linux: If you use a system-wide installation place it in `~/.minetest/games/`.
@ -33,14 +33,13 @@ For further information or help, see: [Installing Mods](https://wiki.minetest.ne
## Compatibility
The Minetest Game GitHub `master` `HEAD` is generally compatible with the GitHub
`master` `HEAD` of the Minetest engine.
As of January 2024 Minetest Game follows a **rolling release** model with new changes being automatically
published on ContentDB every day.
Additionally, when the Minetest engine is tagged to be a certain version (e.g.
`0.4.10`), Minetest Game is tagged with the version, too.
There are no stable releases or tags, all existing ones are considered legacy.
When stable releases are made, Minetest Game and the Minetest engine is packaged
and made available at [www.minetest.net](https://www.minetest.net/downloads/).
Minetest Game is always compatible to the latest stable release of the engine.
Older releases may be supported too depending on circumstances.
## Licensing

View File

@ -324,7 +324,7 @@ Allows creation of new fences with "fencelike" drawtype.
name = "default:fence_wood",
description = "Wooden Fence",
texture = "default_wood.png",
material = "default:wood",
material = "default:wood", -- `nil` if you don't want the recipe
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults(),
@ -382,6 +382,8 @@ The farming API allows you to easily register plants and hoes.
-- ^ Always provide a plant texture for each step, format: modname_plantname_i.png (i = stepnumber)
minlight = 13, -- Minimum light to grow
maxlight = default.LIGHT_MAX -- Maximum light to grow
can_grow = function(pos) -- Сalled every growth tick to check if the plant can grow, returns bool
-- (optional, checks for wet soil by default)
}
@ -632,6 +634,34 @@ set a players home position and teleport a player to home position.
* `name` Player you wish to teleport to their home position
* return value: false if player cannot be sent home, otherwise true
Spawn API
---------
The spawn mod takes care of deciding the position of new and respawning players
in the world and has an API to modify its behavior.
`spawn.get_default_pos()`
* Gets the default spawn position as decided by a biome-dependent algorithm.
* This is not influenced by settings like "static_spawnpoint" or "engine_spawn".
* return value: a vector or `nil` on failure
`spawn.add_suitable_biome(biome)`:
* Adds a biome to the list of allowed biomes for the above algorithm.
* `biome`: Name of a registered biome
`spawn.register_on_spawn(func)`:
* Registers a callback to be called when a player (re-)spawns. This can be used
to intercept the normal logic to e.g. respawn a player at his bed.
* `func`: `function(player, is_new)` with arguments
- `player`: ObjectRef
- `is_new`: true if the player is joining the server for the first time
- return value: true to skip all other spawn logic, false or nil otherwise
When a player (re-)spawns the following order is executed:
1. All spawn callbacks in order of registration.
2. If no result, teleport player to `spawn.get_default_pos()`.
3. If that fails, spawning is left up to engine.
Sfinv API
---------
@ -1169,3 +1199,29 @@ the log.
* after logging the action, the original callback (if any) is called
* `def` See [Node definition]
* `name` Description of the node in the log message
Weather API
-----------
The weather mod will constantly adjust weather effects seen by the player
(that is: cloud parameters and shadow intensity).
These can be influenced using this API.
#### `weather.get = function(player)`
* Returns the current weather effects seen by the player.
It returns a table with two keys:
* `clouds`: A table (or `nil`) with cloud data following the same format as used for `player:set_clouds()`.
* `lighting`: A table (or `nil`) with lighting data following the same format as used for `player:set_lighting()`.
* `player`: ObjectRef of the relevant player
* You can override this function to change the weather effects by simply returning different values.
Setting `clouds` or `lighting` in the result table to `nil` will *prevent* those from changing.
Utilities
---------
`default.dig_up(pos, node, digger, max_height)`
* Find all nodes above `pos` that is the same, then dig them all
* `max_height` Maximum number of nodes to iterate. Default: 100

View File

@ -1,5 +1,10 @@
local reverse = true
-- Removes a node without calling on on_destruct()
-- We use this to mess with bed nodes without causing unwanted recursion.
local function remove_no_destruct(pos)
minetest.swap_node(pos, {name = "air"})
minetest.remove_node(pos) -- Now clear the meta
minetest.check_for_falling(pos)
end
local function destruct_bed(pos, n)
local node = minetest.get_node(pos)
@ -12,15 +17,11 @@ local function destruct_bed(pos, n)
local dir = minetest.facedir_to_dir(node.param2)
other = vector.add(pos, dir)
end
if reverse then
reverse = not reverse
minetest.remove_node(other)
minetest.check_for_falling(other)
beds.remove_spawns_at(pos)
beds.remove_spawns_at(other)
else
reverse = not reverse
local oname = minetest.get_node(other).name
if minetest.get_item_group(oname, "bed") ~= 0 then
remove_no_destruct(other)
beds.remove_spawns_at(pos)
beds.remove_spawns_at(other)
end
end
@ -113,6 +114,7 @@ function beds.register_bed(name, def)
on_rotate = function(pos, node, user, _, new_param2)
local dir = minetest.facedir_to_dir(node.param2)
-- old position of the top node
local p = vector.add(pos, dir)
local node2 = minetest.get_node_or_nil(p)
if not node2 or minetest.get_item_group(node2.name, "bed") ~= 2 or
@ -126,6 +128,7 @@ function beds.register_bed(name, def)
if new_param2 % 32 > 3 then
return false
end
-- new position of the top node
local newp = vector.add(pos, minetest.facedir_to_dir(new_param2))
local node3 = minetest.get_node_or_nil(newp)
local node_def = node3 and minetest.registered_nodes[node3.name]
@ -137,8 +140,7 @@ function beds.register_bed(name, def)
return false
end
node.param2 = new_param2
-- do not remove_node here - it will trigger destroy_bed()
minetest.set_node(p, {name = "air"})
remove_no_destruct(p)
minetest.set_node(pos, node)
minetest.set_node(newp, {name = name .. "_top", param2 = new_param2})
return true

View File

@ -66,7 +66,7 @@ beds.register_bed("beds:bed", {
"beds_bed_under.png",
"beds_bed_side_bottom_r.png",
"beds_bed_side_bottom_r.png^[transformFX",
"beds_transparent.png",
"blank.png",
"beds_bed_side_bottom.png"
},
top = {
@ -75,7 +75,7 @@ beds.register_bed("beds:bed", {
"beds_bed_side_top_r.png",
"beds_bed_side_top_r.png^[transformFX",
"beds_bed_side_top.png",
"beds_transparent.png",
"blank.png",
}
},
nodebox = {

View File

@ -244,10 +244,9 @@ end
-- Callbacks
-- Only register respawn callback if respawn enabled
if enable_respawn then
-- respawn player at bed if enabled and valid position is found
minetest.register_on_respawnplayer(function(player)
local name = player:get_player_name()
local pos = beds.spawn[name]
-- Respawn player at bed if valid position is found
spawn.register_on_spawn(function(player, is_new)
local pos = beds.spawn[player:get_player_name()]
if pos then
player:set_pos(pos)
return true

View File

@ -1,6 +1,6 @@
# textdomain: beds
Fancy Bed=Luksa Lito
Simple Bed=Simpla Lito
Fancy Bed=Luksa lito
Simple Bed=Simpla lito
This bed is already occupied!=Tiu lito jam estas okupata!
You have to stop moving before going to bed!=Vi ĉesu moviĝi por enlitiĝi!
Good morning.=Bonan matenon.

View File

@ -1,8 +1,8 @@
# textdomain: beds
Fancy Bed=Детализированная Кровать
Simple Bed=Обычная Кровать
Fancy Bed=Красивая кровать
Simple Bed=Простая кровать
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.=Доброе утро.
@1 of @2 players are in bed=@1 из @2 игроков в кровати
Force night skip=Пропустить ночь

View File

@ -1,3 +1,3 @@
name = beds
description = Minetest Game mod: beds
depends = default, wool
depends = default, wool, spawn

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 B

View File

@ -1,3 +1,3 @@
# textdomain: binoculars
Binoculars=Бинокль
Use with 'Zoom' key=Используется с привилегией 'Zoom'
Use with 'Zoom' key=Используется клавишей 'Приближение'

View File

@ -16,6 +16,27 @@ local function is_owner(pos, name)
return false
end
local function drop(pos, itemstack)
local obj = minetest.add_item(pos, itemstack:take_item(itemstack:get_count()))
if obj then
obj:set_velocity({
x = math.random(-10, 10) / 9,
y = 5,
z = math.random(-10, 10) / 9,
})
end
end
local function drop_contents(pos)
local inv = minetest.get_meta(pos):get_inventory()
for i = 1, inv:get_size("main") do
local stk = inv:get_stack("main", i)
drop(pos, stk)
end
minetest.remove_node(pos)
end
local bones_formspec =
"size[8,9]" ..
"list[current_name;main;0,0.3;8,4;]" ..
@ -87,6 +108,11 @@ local bones_def = {
return
end
if not player:is_player() then
drop_contents(pos)
return
end
if minetest.get_meta(pos):get_string("infotext") == "" then
return
end
@ -171,17 +197,6 @@ local function may_replace(pos, player)
return node_definition.buildable_to
end
local drop = function(pos, itemstack)
local obj = minetest.add_item(pos, itemstack:take_item(itemstack:get_count()))
if obj then
obj:set_velocity({
x = math.random(-10, 10) / 9,
y = 5,
z = math.random(-10, 10) / 9,
})
end
end
local player_inventory_lists = { "main", "craft" }
bones.player_inventory_lists = player_inventory_lists

View File

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

View File

@ -33,6 +33,11 @@ local function check_protection(pos, name, text)
return false
end
local function log_action(pos, name, action)
minetest.log("action", (name ~= "" and name or "A mod")
.. " " .. action .. " at " .. minetest.pos_to_string(pos) .. " with a bucket")
end
-- Register a new liquid
-- source = name of the source node
-- flowing = name of the flowing node
@ -101,13 +106,13 @@ function bucket.register_liquid(source, flowing, itemname, inventory_image, name
end
end
if check_protection(lpos, user
and user:get_player_name()
or "", "place "..source) then
local pname = user and user:get_player_name() or ""
if check_protection(lpos, pname, "place "..source) then
return
end
minetest.set_node(lpos, {name = source})
log_action(lpos, pname, "placed " .. source)
return ItemStack("bucket:bucket_empty")
end
})
@ -128,16 +133,16 @@ minetest.register_craftitem("bucket:bucket_empty", {
return
end
-- Check if pointing to a liquid source
local node = minetest.get_node(pointed_thing.under)
local pos = pointed_thing.under
local node = minetest.get_node(pos)
local liquiddef = bucket.liquids[node.name]
local item_count = user:get_wielded_item():get_count()
if liquiddef ~= nil
and liquiddef.itemname ~= nil
and node.name == liquiddef.source then
if check_protection(pointed_thing.under,
user:get_player_name(),
"take ".. node.name) then
local pname = user:get_player_name()
if check_protection(pos, pname, "take ".. node.name) then
return
end
@ -152,9 +157,9 @@ minetest.register_craftitem("bucket:bucket_empty", {
if inv:room_for_item("main", {name=liquiddef.itemname}) then
inv:add_item("main", liquiddef.itemname)
else
local pos = user:get_pos()
pos.y = math.floor(pos.y + 0.5)
minetest.add_item(pos, liquiddef.itemname)
local upos = user:get_pos()
upos.y = math.floor(upos.y + 0.5)
minetest.add_item(upos, liquiddef.itemname)
end
-- set to return empty buckets minus 1
@ -166,10 +171,13 @@ minetest.register_craftitem("bucket:bucket_empty", {
local source_neighbor = false
if liquiddef.force_renew then
source_neighbor =
minetest.find_node_near(pointed_thing.under, 1, liquiddef.source)
minetest.find_node_near(pos, 1, liquiddef.source)
end
if not (source_neighbor and liquiddef.force_renew) then
minetest.add_node(pointed_thing.under, {name = "air"})
if source_neighbor and liquiddef.force_renew then
log_action(pos, pname, "picked up " .. liquiddef.source .. " (force renewed)")
else
minetest.add_node(pos, {name = "air"})
log_action(pos, pname, "picked up " .. liquiddef.source)
end
return ItemStack(giving_back)
@ -177,7 +185,7 @@ minetest.register_craftitem("bucket:bucket_empty", {
-- non-liquid nodes will have their on_punch triggered
local node_def = minetest.registered_nodes[node.name]
if node_def then
node_def.on_punch(pointed_thing.under, node, user, pointed_thing)
node_def.on_punch(pos, node, user, pointed_thing)
end
return user:get_wielded_item()
end

View File

@ -1,5 +1,5 @@
# textdomain: bucket
Empty Bucket=Malplena Sitelo
Water Bucket=Sitelo da Akvo
River Water Bucket=Sitelo da Rivera Akvo
Lava Bucket=Sitelo da Lafo
Empty Bucket=Malplena sitelo
Water Bucket=Sitelo da akvo
River Water Bucket=Sitelo da rivera akvo
Lava Bucket=Sitelo da lafo

View File

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

View File

@ -3,6 +3,9 @@
-- Load support for MT game translation.
local S = minetest.get_translator("butterflies")
-- Legacy compatibility, when pointabilities don't exist, pointable is set to true.
local pointable_compat = not minetest.features.item_specific_pointabilities
-- register butterflies
local butter_list = {
{"white", S("White Butterfly")},
@ -33,24 +36,15 @@ for i in ipairs (butter_list) do
sunlight_propagates = true,
buildable_to = true,
walkable = false,
pointable = pointable_compat,
groups = {catchable = 1},
selection_box = {
type = "fixed",
fixed = {-0.1, -0.1, -0.1, 0.1, 0.1, 0.1},
},
floodable = true,
on_place = function(itemstack, placer, pointed_thing)
local player_name = placer:get_player_name()
local pos = pointed_thing.above
if not minetest.is_protected(pos, player_name) and
not minetest.is_protected(pointed_thing.under, player_name) and
minetest.get_node(pos).name == "air" then
minetest.set_node(pos, {name = "butterflies:butterfly_"..name})
minetest.get_node_timer(pos):start(1)
itemstack:take_item()
end
return itemstack
on_construct = function(pos)
minetest.get_node_timer(pos):start(1)
end,
on_timer = function(pos, elapsed)
if minetest.get_node_light(pos) < 11 then
@ -72,18 +66,8 @@ for i in ipairs (butter_list) do
drop = "",
groups = {not_in_creative_inventory = 1},
floodable = true,
on_place = function(itemstack, placer, pointed_thing)
local player_name = placer:get_player_name()
local pos = pointed_thing.above
if not minetest.is_protected(pos, player_name) and
not minetest.is_protected(pointed_thing.under, player_name) and
minetest.get_node(pos).name == "air" then
minetest.set_node(pos, {name = "butterflies:hidden_butterfly_"..name})
minetest.get_node_timer(pos):start(1)
itemstack:take_item()
end
return itemstack
on_construct = function(pos)
minetest.get_node_timer(pos):start(1)
end,
on_timer = function(pos, elapsed)
if minetest.get_node_light(pos) >= 11 then

View File

@ -1,4 +1,4 @@
# textdomain: butterflies
White Butterfly=Blanka Papilio
Red Butterfly=Ruĝa Papilio
Violet Butterfly=Violkolora Papilio
White Butterfly=Blanka papilio
Red Butterfly=Ruĝa papilio
Violet Butterfly=Violkolora papilio

View File

@ -1,4 +1,4 @@
# textdomain: butterflies
White Butterfly=
Red Butterfly=
Violet Butterfly=
White Butterfly=Borboleta Branca
Red Butterfly=Borboleta Vermelha
Violet Butterfly=Borboleta Violeta

View File

@ -1,4 +1,4 @@
# textdomain: butterflies
White Butterfly=Белая Бабочка
Red Butterfly=Красная Бабочка
Violet Butterfly=Фиолетовая Бабочка
White Butterfly=Белая бабочка
Red Butterfly=Красная бабочка
Violet Butterfly=Фиолетовая бабочка

View File

@ -413,7 +413,8 @@ minetest.register_craftitem("carts:cart", {
minetest.sound_play({name = "default_place_node_metal", gain = 0.5},
{pos = pointed_thing.above}, true)
if not minetest.is_creative_enabled(placer:get_player_name()) then
local player_name = placer and placer:get_player_name() or ""
if not minetest.is_creative_enabled(player_name) then
itemstack:take_item()
end
return itemstack

View File

@ -2,5 +2,5 @@
Cart=Ĉaro
(Sneak+Click to pick up)=(Ŝteliri+Alklaki por reprini)
Rail=Relo
Powered Rail=Elektra Relo
Brake Rail=Bremsa Relo
Powered Rail=Elektra relo
Brake Rail=Bremsa relo

View File

@ -2,5 +2,5 @@
Cart=Вагонетка
(Sneak+Click to pick up)=(Пригнитесь и кликните по вагонетке, чтобы забрать)
Rail=Рельсы
Powered Rail=Запитанные рельсы
Powered Rail=Ускоряющие рельсы
Brake Rail=Тормозящие рельсы

View File

@ -170,6 +170,7 @@ function creative.register_tab(name, title, items)
"tooltip[creative_prev;" .. esc(S("Previous page")) .. "]" ..
"tooltip[creative_next;" .. esc(S("Next page")) .. "]" ..
"listring[current_player;main]" ..
"field_enter_after_edit[creative_filter;true]" ..
"field_close_on_enter[creative_filter;false]" ..
"field[0.3,4.2;2.8,1.2;creative_filter;;" .. esc(inv.filter) .. "]" ..
"listring[detached:creative_" .. player_name .. ";main]" ..

View File

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

View File

@ -163,12 +163,12 @@ function default.chest.register_chest(prefixed_name, d)
local itemstack = player:get_wielded_item()
local key_meta = itemstack:get_meta()
if itemstack:get_metadata() == "" then
if itemstack:get_meta():get_string("") == "" then
return
end
if key_meta:get_string("secret") == "" then
key_meta:set_string("secret", minetest.parse_json(itemstack:get_metadata()).secret)
key_meta:set_string("secret", minetest.parse_json(itemstack:get_meta():get_string("")).secret)
itemstack:set_metadata("")
end
@ -284,7 +284,7 @@ function default.chest.register_chest(prefixed_name, d)
nodenames = {name},
action = function(pos, node)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", nil)
meta:set_string("formspec", "")
local inv = meta:get_inventory()
local list = inv:get_list("default:chest")
if list then
@ -297,9 +297,10 @@ function default.chest.register_chest(prefixed_name, d)
end
-- close opened chests on load
local modname, chestname = prefixed_name:match("^(:?.-):(.*)$")
minetest.register_lbm({
label = "close opened chests on load",
name = "default:close_" .. prefixed_name:gsub(":", "_") .. "_open",
name = modname .. ":close_" .. chestname .. "_open",
nodenames = {prefixed_name .. "_open"},
run_at_every_load = true,
action = function(pos, node)

View File

@ -57,7 +57,7 @@ local function book_on_use(itemstack, user)
local page, page_max, lines, string = 1, 1, {}, ""
-- Backwards compatibility
local old_data = minetest.deserialize(itemstack:get_metadata())
local old_data = minetest.deserialize(itemstack:get_meta():get_string(""))
if old_data then
meta:from_table({ fields = old_data })
end

View File

@ -2,149 +2,149 @@
-- Sounds
--
function default.node_sound_defaults(table)
table = table or {}
table.footstep = table.footstep or
function default.node_sound_defaults(tbl)
tbl = tbl or {}
tbl.footstep = tbl.footstep or
{name = "", gain = 1.0}
table.dug = table.dug or
tbl.dug = tbl.dug or
{name = "default_dug_node", gain = 0.25}
table.place = table.place or
tbl.place = tbl.place or
{name = "default_place_node_hard", gain = 1.0}
return table
return tbl
end
function default.node_sound_stone_defaults(table)
table = table or {}
table.footstep = table.footstep or
function default.node_sound_stone_defaults(tbl)
tbl = tbl or {}
tbl.footstep = tbl.footstep or
{name = "default_hard_footstep", gain = 0.2}
table.dug = table.dug or
tbl.dug = tbl.dug or
{name = "default_hard_footstep", gain = 1.0}
default.node_sound_defaults(table)
return table
default.node_sound_defaults(tbl)
return tbl
end
function default.node_sound_dirt_defaults(table)
table = table or {}
table.footstep = table.footstep or
function default.node_sound_dirt_defaults(tbl)
tbl = tbl or {}
tbl.footstep = tbl.footstep or
{name = "default_dirt_footstep", gain = 0.25}
table.dig = table.dig or
tbl.dig = tbl.dig or
{name = "default_dig_crumbly", gain = 0.4}
table.dug = table.dug or
tbl.dug = tbl.dug or
{name = "default_dirt_footstep", gain = 1.0}
table.place = table.place or
tbl.place = tbl.place or
{name = "default_place_node", gain = 1.0}
default.node_sound_defaults(table)
return table
default.node_sound_defaults(tbl)
return tbl
end
function default.node_sound_sand_defaults(table)
table = table or {}
table.footstep = table.footstep or
function default.node_sound_sand_defaults(tbl)
tbl = tbl or {}
tbl.footstep = tbl.footstep or
{name = "default_sand_footstep", gain = 0.05}
table.dug = table.dug or
tbl.dug = tbl.dug or
{name = "default_sand_footstep", gain = 0.15}
table.place = table.place or
tbl.place = tbl.place or
{name = "default_place_node", gain = 1.0}
default.node_sound_defaults(table)
return table
default.node_sound_defaults(tbl)
return tbl
end
function default.node_sound_gravel_defaults(table)
table = table or {}
table.footstep = table.footstep or
function default.node_sound_gravel_defaults(tbl)
tbl = tbl or {}
tbl.footstep = tbl.footstep or
{name = "default_gravel_footstep", gain = 0.25}
table.dig = table.dig or
tbl.dig = tbl.dig or
{name = "default_gravel_dig", gain = 0.35}
table.dug = table.dug or
tbl.dug = tbl.dug or
{name = "default_gravel_dug", gain = 1.0}
table.place = table.place or
tbl.place = tbl.place or
{name = "default_place_node", gain = 1.0}
default.node_sound_defaults(table)
return table
default.node_sound_defaults(tbl)
return tbl
end
function default.node_sound_wood_defaults(table)
table = table or {}
table.footstep = table.footstep or
function default.node_sound_wood_defaults(tbl)
tbl = tbl or {}
tbl.footstep = tbl.footstep or
{name = "default_wood_footstep", gain = 0.15}
table.dig = table.dig or
tbl.dig = tbl.dig or
{name = "default_dig_choppy", gain = 0.4}
table.dug = table.dug or
tbl.dug = tbl.dug or
{name = "default_wood_footstep", gain = 1.0}
default.node_sound_defaults(table)
return table
default.node_sound_defaults(tbl)
return tbl
end
function default.node_sound_leaves_defaults(table)
table = table or {}
table.footstep = table.footstep or
function default.node_sound_leaves_defaults(tbl)
tbl = tbl or {}
tbl.footstep = tbl.footstep or
{name = "default_grass_footstep", gain = 0.45}
table.dug = table.dug or
tbl.dug = tbl.dug or
{name = "default_grass_footstep", gain = 0.7}
table.place = table.place or
tbl.place = tbl.place or
{name = "default_place_node", gain = 1.0}
default.node_sound_defaults(table)
return table
default.node_sound_defaults(tbl)
return tbl
end
function default.node_sound_glass_defaults(table)
table = table or {}
table.footstep = table.footstep or
function default.node_sound_glass_defaults(tbl)
tbl = tbl or {}
tbl.footstep = tbl.footstep or
{name = "default_glass_footstep", gain = 0.3}
table.dig = table.dig or
tbl.dig = tbl.dig or
{name = "default_glass_footstep", gain = 0.5}
table.dug = table.dug or
tbl.dug = tbl.dug or
{name = "default_break_glass", gain = 1.0}
default.node_sound_defaults(table)
return table
default.node_sound_defaults(tbl)
return tbl
end
function default.node_sound_ice_defaults(table)
table = table or {}
table.footstep = table.footstep or
function default.node_sound_ice_defaults(tbl)
tbl = tbl or {}
tbl.footstep = tbl.footstep or
{name = "default_ice_footstep", gain = 0.15}
table.dig = table.dig or
tbl.dig = tbl.dig or
{name = "default_ice_dig", gain = 0.5}
table.dug = table.dug or
tbl.dug = tbl.dug or
{name = "default_ice_dug", gain = 0.5}
default.node_sound_defaults(table)
return table
default.node_sound_defaults(tbl)
return tbl
end
function default.node_sound_metal_defaults(table)
table = table or {}
table.footstep = table.footstep or
function default.node_sound_metal_defaults(tbl)
tbl = tbl or {}
tbl.footstep = tbl.footstep or
{name = "default_metal_footstep", gain = 0.2}
table.dig = table.dig or
tbl.dig = tbl.dig or
{name = "default_dig_metal", gain = 0.5}
table.dug = table.dug or
tbl.dug = tbl.dug or
{name = "default_dug_metal", gain = 0.5}
table.place = table.place or
tbl.place = tbl.place or
{name = "default_place_node_metal", gain = 0.5}
default.node_sound_defaults(table)
return table
default.node_sound_defaults(tbl)
return tbl
end
function default.node_sound_water_defaults(table)
table = table or {}
table.footstep = table.footstep or
function default.node_sound_water_defaults(tbl)
tbl = tbl or {}
tbl.footstep = tbl.footstep or
{name = "default_water_footstep", gain = 0.2}
default.node_sound_defaults(table)
return table
default.node_sound_defaults(tbl)
return tbl
end
function default.node_sound_snow_defaults(table)
table = table or {}
table.footstep = table.footstep or
function default.node_sound_snow_defaults(tbl)
tbl = tbl or {}
tbl.footstep = tbl.footstep or
{name = "default_snow_footstep", gain = 0.2}
table.dig = table.dig or
tbl.dig = tbl.dig or
{name = "default_snow_footstep", gain = 0.3}
table.dug = table.dug or
tbl.dug = tbl.dug or
{name = "default_snow_footstep", gain = 0.3}
table.place = table.place or
tbl.place = tbl.place or
{name = "default_place_node", gain = 1.0}
default.node_sound_defaults(table)
return table
default.node_sound_defaults(tbl)
return tbl
end
@ -293,15 +293,32 @@ minetest.register_abm({
-- Dig upwards
--
function default.dig_up(pos, node, digger)
local in_dig_up = false
function default.dig_up(pos, node, digger, max_height)
if in_dig_up then return end -- Do not recurse
if digger == nil then return end
local np = {x = pos.x, y = pos.y + 1, z = pos.z}
local nn = minetest.get_node(np)
if nn.name == node.name then
minetest.node_dig(np, nn, digger)
max_height = max_height or 100
in_dig_up = true
for y = 1, max_height do
local up_pos = vector.offset(pos, 0, y, 0)
local up_node = minetest.get_node(up_pos)
if up_node.name ~= node.name then
break
end
if not minetest.node_dig(up_pos, up_node, digger) then
break
end
end
in_dig_up = false
end
-- errors are hard to handle, instead we rely on resetting this value the next step
minetest.register_globalstep(function()
in_dig_up = false
end)
--
-- Fence registration helper
@ -309,14 +326,6 @@ end
local fence_collision_extra = minetest.settings:get_bool("enable_fence_tall") and 3/8 or 0
function default.register_fence(name, def)
minetest.register_craft({
output = name .. " 4",
recipe = {
{ def.material, 'group:stick', def.material },
{ def.material, 'group:stick', def.material },
}
})
local fence_texture = "default_fence_overlay.png^" .. def.texture ..
"^default_fence_overlay.png^[makealpha:255,126,126"
-- Allow almost everything to be overridden
@ -364,10 +373,22 @@ function default.register_fence(name, def)
-- Always add to the fence group, even if no group provided
def.groups.fence = 1
local material = def.material
def.texture = nil
def.material = nil
minetest.register_node(name, def)
-- Register crafting recipe, trim away starting colon if any
if not material then return end
name = string.gsub(name, "^:", "")
minetest.register_craft({
output = name .. " 4",
recipe = {
{ material, 'group:stick', material },
{ material, 'group:stick', material },
}
})
end
@ -376,15 +397,6 @@ end
--
function default.register_fence_rail(name, def)
minetest.register_craft({
output = name .. " 16",
recipe = {
{ def.material, def.material },
{ "", ""},
{ def.material, def.material },
}
})
local fence_rail_texture = "default_fence_rail_overlay.png^" .. def.texture ..
"^default_fence_rail_overlay.png^[makealpha:255,126,126"
-- Allow almost everything to be overridden
@ -433,10 +445,23 @@ function default.register_fence_rail(name, def)
-- Always add to the fence group, even if no group provided
def.groups.fence = 1
local material = def.material
def.texture = nil
def.material = nil
minetest.register_node(name, def)
-- Register crafting recipe, trim away starting colon if any
if not material then return end
name = string.gsub(name, "^:", "")
minetest.register_craft({
output = name .. " 16",
recipe = {
{ material, material },
{ "", ""},
{ material, material },
}
})
end
--
@ -444,15 +469,6 @@ end
--
function default.register_mesepost(name, def)
minetest.register_craft({
output = name .. " 4",
recipe = {
{'', 'default:glass', ''},
{'default:mese_crystal', 'default:mese_crystal', 'default:mese_crystal'},
{'', def.material, ''},
}
})
local post_texture = def.texture .. "^default_mese_post_light_side.png^[makealpha:0,0,0"
local post_texture_dark = def.texture .. "^default_mese_post_light_side_dark.png^[makealpha:0,0,0"
-- Allow almost everything to be overridden
@ -480,10 +496,23 @@ function default.register_mesepost(name, def)
end
end
local material = def.material
def.texture = nil
def.material = nil
minetest.register_node(name, def)
-- Register crafting recipe, trim away starting colon if any
if not material then return end
name = string.gsub(name, "^:", "")
minetest.register_craft({
output = name .. " 4",
recipe = {
{'', 'default:glass', ''},
{'default:mese_crystal', 'default:mese_crystal', 'default:mese_crystal'},
{'', material, ''},
}
})
end
--
@ -791,7 +820,7 @@ function default.can_interact_with_node(player, pos)
local key_meta = item:get_meta()
if key_meta:get_string("secret") == "" then
local key_oldmeta = item:get_metadata()
local key_oldmeta = item:get_meta():get_string("")
if key_oldmeta == "" or not minetest.parse_json(key_oldmeta) then
return false
end

View File

@ -134,6 +134,7 @@ local function furnace_node_timer(pos, elapsed)
local fuel
local update = true
local items_smelt = 0
while elapsed > 0 and update do
update = false
@ -171,9 +172,7 @@ local function furnace_node_timer(pos, elapsed)
else
dst_full = true
end
-- Play cooling sound
minetest.sound_play("default_cool_lava",
{pos = pos, max_hear_distance = 16, gain = 0.07}, true)
items_smelt = items_smelt + 1
else
-- Item could not be cooked: probably missing fuel
update = true
@ -224,6 +223,11 @@ local function furnace_node_timer(pos, elapsed)
elapsed = elapsed - el
end
if items_smelt > 0 then
-- Play cooling sound
minetest.sound_play("default_cool_lava",
{ pos = pos, max_hear_distance = 16, gain = 0.07 * math.min(items_smelt, 7) }, true)
end
if fuel and fuel_totaltime > fuel.time then
fuel_totaltime = fuel.time
end
@ -329,7 +333,12 @@ end
-- Node definitions
--
minetest.register_node("default:furnace", {
local function apply_logger(def)
default.set_inventory_action_loggers(def, "furnace")
return def
end
minetest.register_node("default:furnace", apply_logger({
description = S("Furnace"),
tiles = {
"default_furnace_top.png", "default_furnace_bottom.png",
@ -379,9 +388,9 @@ minetest.register_node("default:furnace", {
allow_metadata_inventory_put = allow_metadata_inventory_put,
allow_metadata_inventory_move = allow_metadata_inventory_move,
allow_metadata_inventory_take = allow_metadata_inventory_take,
})
}))
minetest.register_node("default:furnace_active", {
minetest.register_node("default:furnace_active", apply_logger({
description = S("Furnace"),
tiles = {
"default_furnace_top.png", "default_furnace_bottom.png",
@ -415,7 +424,7 @@ minetest.register_node("default:furnace_active", {
allow_metadata_inventory_put = allow_metadata_inventory_put,
allow_metadata_inventory_move = allow_metadata_inventory_move,
allow_metadata_inventory_take = allow_metadata_inventory_take,
})
}))
minetest.register_craft({
output = "default:furnace",

View File

@ -77,3 +77,19 @@ dofile(default_path.."/crafting.lua")
dofile(default_path.."/mapgen.lua")
dofile(default_path.."/aliases.lua")
dofile(default_path.."/legacy.lua")
-- Smoke test that is run via ./util/test/run.sh
if minetest.settings:get_bool("minetest_game_smoke_test") then
minetest.after(0, function()
minetest.emerge_area(vector.new(0, 0, 0), vector.new(32, 32, 32))
local pos = vector.new(9, 9, 9)
local function check()
if minetest.get_node(pos).name ~= "ignore" then
minetest.request_shutdown()
return
end
minetest.after(0, check)
end
check()
end)
end

View File

@ -1,6 +1,6 @@
# textdomain: default
Locked Chest=Ŝlosita Kesto
Locked Chest (owned by @1)=Ŝlosita Kesto (de @1)
Locked Chest=Ŝlosita kesto
Locked Chest (owned by @1)=Ŝlosita kesto (de @1)
You do not own this chest.=Vi ne posedas ĉi tiun keston.
a locked chest=ŝlosita kesto
Chest=Kesto
@ -15,26 +15,26 @@ The book you were writing to mysteriously disappeared.=La libro, kiun vi skribis
"@1" by @2="@1" per @2
Blueberries=Mirteloj
Book=Libro
Book with Text=Libro kun Teksto
Bronze Ingot=Bronza Ingoto
Clay Brick=Argila Briko
Clay Lump=Argila Bulo
Coal Lump=Karba Bulo
Copper Ingot=Kupra Ingoto
Copper Lump=Kupra Bulo
Book with Text=Libro kun teksto
Bronze Ingot=Bronza ingoto
Clay Brick=Argila briko
Clay Lump=Argila bulo
Coal Lump=Karba bulo
Copper Ingot=Kupra ingoto
Copper Lump=Kupra bulo
Diamond=Diamanto
Flint=Siliko
Gold Ingot=Ora Ingoto
Gold Lump=Ora Bulo
Iron Lump=Fera Bulo
Mese Crystal=Mesea Kristalo
Mese Crystal Fragment=Mesea Kristala Ero
Obsidian Shard=Obsidiana Peceto
Gold Ingot=Ora ingoto
Gold Lump=Ora bulo
Iron Lump=Fera bulo
Mese Crystal=Mesea kristalo
Mese Crystal Fragment=Mesea kristala ero
Obsidian Shard=Obsidiana peceto
Paper=Papero
Steel Ingot=Ŝtala Ingoto
Steel Ingot=Ŝtala ingoto
Stick=Bastono
Tin Ingot=Stana Ingoto
Tin Lump=Stana Bulo
Tin Ingot=Stana ingoto
Tin Lump=Stana bulo
Furnace is empty=Forno estas malplena
100% (output full)=100% (plena eligo)
@1%=@1%
@ -46,175 +46,175 @@ Furnace inactive=Forno ne laboras
Furnace=Forno
Stone=Ŝtono
Cobblestone=Pavimŝtono
Stone Brick=Ŝtona Briko
Stone Block=Ŝtona Bloko
Mossy Cobblestone=Muska Pavimŝtono
Desert Stone=Dezerta Ŝtono
Desert Cobblestone=Dezerta Pavimŝtono
Desert Stone Brick=Dezerta Ŝtona Briko
Desert Stone Block=Dezerta Ŝtona Bloko
Stone Brick=Ŝtona briko
Stone Block=Ŝtona bloko
Mossy Cobblestone=Muska pavimŝtono
Desert Stone=Dezerta ŝtono
Desert Cobblestone=Dezerta pavimŝtono
Desert Stone Brick=Dezerta ŝtona briko
Desert Stone Block=Dezerta ŝtona bloko
Sandstone=Sablaŝtono
Sandstone Brick=Sablaŝtono Briko
Sandstone Block=Sablaŝtono Bloko
Desert Sandstone=Dezerta Sablaŝtono
Desert Sandstone Brick=Dezerta Sablaŝtono Briko
Desert Sandstone Block=Dezerta Sablaŝtono Bloko
Silver Sandstone=Arĝenta Sablaŝtono
Silver Sandstone Brick=Arĝenta Sablaŝtono Briko
Silver Sandstone Block=Arĝenta Sablaŝtono Bloko
Sandstone Brick=Sablaŝtono briko
Sandstone Block=Sablaŝtono bloko
Desert Sandstone=Dezerta sablaŝtono
Desert Sandstone Brick=Dezerta sablaŝtono briko
Desert Sandstone Block=Dezerta sablaŝtono bloko
Silver Sandstone=Arĝenta sablaŝtono
Silver Sandstone Brick=Arĝenta sablaŝtono briko
Silver Sandstone Block=Arĝenta sablaŝtono bloko
Obsidian=Obsidiano
Obsidian Brick=Obsidiana Briko
Obsidian Block=Obsidiana Bloko
Obsidian Brick=Obsidiana briko
Obsidian Block=Obsidiana bloko
Dirt=Tero
Dirt with Grass=Tero kun Herbo
Dirt with Grass and Footsteps=Tero kun Herbo kaj Piedpaŝoj
Dirt with Savanna Grass=Tero kun Savana Herbo
Dirt with Snow=Tero kun Neĝo
Dirt with Rainforest Litter=Tero kun Pluvarbara Folioj
Dirt with Coniferous Litter=Tero kun Koniferaj Folioj
Savanna Dirt=Savana Tero
Savanna Dirt with Savanna Grass=Savana Tero kun Savana Herbo
Dirt with Grass=Tero kun herbo
Dirt with Grass and Footsteps=Tero kun herbo kaj piedpaŝoj
Dirt with Savanna Grass=Tero kun savana herbo
Dirt with Snow=Tero kun neĝo
Dirt with Rainforest Litter=Tero kun pluvarbara folioj
Dirt with Coniferous Litter=Tero kun koniferaj folioj
Savanna Dirt=Savana tero
Savanna Dirt with Savanna Grass=Savana tero kun savana herbo
Permafrost=Ĉiamfrosto
Permafrost with Stones=Ĉiamfrosto kun Ŝtonoj
Permafrost with Moss=Ĉiamfrosto kun Musko
Permafrost with Stones=Ĉiamfrosto kun ŝtonoj
Permafrost with Moss=Ĉiamfrosto kun musko
Sand=Sablo
Desert Sand=Dezerta Sablo
Silver Sand=Arĝenta Sablo
Desert Sand=Dezerta sablo
Silver Sand=Arĝenta sablo
Gravel=Gruzo
Clay=Argilo
Snow=Neĝo
Snow Block=Neĝa Bloko
Snow Block=Neĝa bloko
Ice=Glacio
Cave Ice=Kaverna Glacio
Cave Ice=Kaverna glacio
Apple Tree=Pomarbo
Apple Wood Planks=Pomarbaj Lignaj Tabuloj
Apple Tree Sapling=Pomarba Arbido
Apple Tree Leaves=Pomarbaj Folioj
Apple Wood Planks=Pomarbaj lignaj tabuloj
Apple Tree Sapling=Pomarba arbido
Apple Tree Leaves=Pomarbaj folioj
Apple=Pomo
Apple Marker=Poma Marko
Jungle Tree=Ĝangala Arbo
Jungle Wood Planks=Ĝangalaj Lignaj Tabuloj
Jungle Tree Leaves=Ĝangalaj Arbaj Folioj
Jungle Tree Sapling=Ĝangala Arba Arbido
Emergent Jungle Tree Sapling=Nova Ĝangala Arba Arbido
Apple Marker=Poma marko
Jungle Tree=Ĝangala arbo
Jungle Wood Planks=Ĝangalaj lignaj tabuloj
Jungle Tree Leaves=Ĝangalaj arbaj folioj
Jungle Tree Sapling=Ĝangala arba arbido
Emergent Jungle Tree Sapling=Nova ĝangala arba arbido
Pine Tree=Pino
Pine Wood Planks=Pinaj Lignaj Tabuloj
Pine Wood Planks=Pinaj lignaj tabuloj
Pine Needles=Pinpingloj
Pine Tree Sapling=Pina Arbido
Pine Tree Sapling=Pina arbido
Acacia Tree=Akacio
Acacia Wood Planks=Akaciaj Lignaj Tabuloj
Acacia Tree Leaves=Akaciaj Folioj
Acacia Tree Sapling=Akacia Arbido
Acacia Wood Planks=Akaciaj lignaj tabuloj
Acacia Tree Leaves=Akaciaj folioj
Acacia Tree Sapling=Akacia arbido
Aspen Tree=Tremolo
Aspen Wood Planks=Tremolaj Lignaj Tabuloj
Aspen Tree Leaves=Tremolaj Folioj
Aspen Tree Sapling=Tremola Arbido
Coal Ore=Karba Minaĵo
Coal Block=Karba Bloko
Iron Ore=Fera Minaĵo
Steel Block=Ŝtala Bloko
Copper Ore=Kupra Minaĵo
Copper Block=Kupra Bloko
Tin Ore=Stana Minaĵo
Tin Block=Stana Bloko
Bronze Block=Bronza Bloko
Mese Ore=Mesea Minaĵo
Mese Block=Mesea Bloko
Gold Ore=Ora Minaĵo
Gold Block=Ora Bloko
Diamond Ore=Diamanta Minaĵo
Diamond Block=Diamanta Bloko
Aspen Wood Planks=Tremolaj lignaj tabuloj
Aspen Tree Leaves=Tremolaj folioj
Aspen Tree Sapling=Tremola arbido
Coal Ore=Karba minaĵo
Coal Block=Karba bloko
Iron Ore=Fera minaĵo
Steel Block=Ŝtala bloko
Copper Ore=Kupra minaĵo
Copper Block=Kupra bloko
Tin Ore=Stana minaĵo
Tin Block=Stana bloko
Bronze Block=Bronza bloko
Mese Ore=Mesea minaĵo
Mese Block=Mesea bloko
Gold Ore=Ora minaĵo
Gold Block=Ora bloko
Diamond Ore=Diamanta minaĵo
Diamond Block=Diamanta bloko
Cactus=Kakto
Large Cactus Seedling=Granda Kakta Kreskaĵo
Large Cactus Seedling=Granda kakta kreskaĵo
Papyrus=Papiruso
Dry Shrub=Seka Arbetaĵo
Jungle Grass=Ĝangala Herbo
Dry Shrub=Seka arbetaĵo
Jungle Grass=Ĝangala herbo
Grass=Herbo
Savanna Grass=Savana Herbo
Savanna Grass=Savana herbo
Fern=Filiko
Marram Grass=Amofilo
Bush Stem=Arbateĵa Tubo
Bush Leaves=Arbateĵaj Folioj
Bush Sapling=Arbateĵa Arbido
Blueberry Bush Leaves with Berries=Mirtelaj Arbateĵaj Folioj kaj Beroj
Blueberry Bush Leaves=Mirtelaj Arbateĵaj Folioj
Blueberry Bush Sapling=Mirtela Arbateĵa Arbido
Acacia Bush Stem=Akacia Arbateĵa Tubo
Acacia Bush Leaves=Akaciaj Arbateĵaj Folioj
Acacia Bush Sapling=Akacia Arbateĵa Arbido
Pine Bush Stem=Pina Arbateĵa Tubo
Pine Bush Needles=Pinaj Arbateĵaj Pingloj
Pine Bush Sapling=Pina Arbateĵa Arbido
Bush Stem=Arbateĵa tubo
Bush Leaves=Arbateĵaj folioj
Bush Sapling=Arbateĵa arbido
Blueberry Bush Leaves with Berries=Mirtelaj arbateĵaj folioj kaj beroj
Blueberry Bush Leaves=Mirtelaj arbateĵaj folioj
Blueberry Bush Sapling=Mirtela arbateĵa arbido
Acacia Bush Stem=Akacia arbateĵa tubo
Acacia Bush Leaves=Akaciaj arbateĵaj folioj
Acacia Bush Sapling=Akacia arbateĵa arbido
Pine Bush Stem=Pina arbateĵa tubo
Pine Bush Needles=Pinaj arbateĵaj pingloj
Pine Bush Sapling=Pina arbateĵa arbido
Kelp=Fuko
Green Coral=Verda Koralo
Pink Coral=Rozkolora Koralo
Cyan Coral=Bluverda Koralo
Brown Coral=Bruna Koralo
Orange Coral=Oranĝkolora Koralo
Coral Skeleton=Korala Framo
Water Source=Akva Fonto
Flowing Water=Flua Akvo
River Water Source=Rivera Akva Fonto
Flowing River Water=Flua Rivera Akvo
Lava Source=Lafa Fonto
Flowing Lava=Flua Lafa
Empty Bookshelf=Malplena Librobreto
Green Coral=Verda koralo
Pink Coral=Rozkolora koralo
Cyan Coral=Bluverda koralo
Brown Coral=Bruna koralo
Orange Coral=Oranĝkolora koralo
Coral Skeleton=Korala framo
Water Source=Akva fonto
Flowing Water=Flua akvo
River Water Source=Rivera akva fonto
Flowing River Water=Flua rivera akvo
Lava Source=Lafa fonto
Flowing Lava=Flua lafa
Empty Bookshelf=Malplena librobreto
Bookshelf (@1 written, @2 empty books)=Librobreto (@1 skriba(j), @2 malplena(j) libro(j))
Bookshelf=Librobreto
Text too long=Tro longa teksto
"@1"=
Wooden Sign=Ligna Signo
Steel Sign=Ŝtala Signo
Wooden Ladder=Ligna Ŝtupetaro
Steel Ladder=Ŝtala Ŝtupetaro
Apple Wood Fence=Poma Ligna Barilo
Acacia Wood Fence=Akacia Ligna Barilo
Jungle Wood Fence=Ĝangala Ligna Barilo
Pine Wood Fence=Pina Ligna Barilo
Aspen Wood Fence=Tremola Ligna Barilo
Apple Wood Fence Rail=Poma Ligna Barila Relo
Acacia Wood Fence Rail=Akacia Ligna Barila Relo
Jungle Wood Fence Rail=Ĝangala Ligna Barila Relo
Pine Wood Fence Rail=Pina Ligna Barila Relo
Aspen Wood Fence Rail=Tremola Ligna Barila Relo
Wooden Sign=Ligna signo
Steel Sign=Ŝtala signo
Wooden Ladder=Ligna ŝtupetaro
Steel Ladder=Ŝtala ŝtupetaro
Apple Wood Fence=Poma ligna barilo
Acacia Wood Fence=Akacia ligna barilo
Jungle Wood Fence=Ĝangala ligna barilo
Pine Wood Fence=Pina ligna barilo
Aspen Wood Fence=Tremola ligna barilo
Apple Wood Fence Rail=Poma ligna barila relo
Acacia Wood Fence Rail=Akacia ligna barila relo
Jungle Wood Fence Rail=Ĝangala ligna barila relo
Pine Wood Fence Rail=Pina ligna barila relo
Aspen Wood Fence Rail=Tremola ligna barila relo
Glass=Vitro
Obsidian Glass=Obsidiana Vitro
Brick Block=Brika Bloko
Mese Lamp=Mesea Lampo
Apple Wood Mese Post Light=Poma Ligna Mesea Fosta Lampo
Acacia Wood Mese Post Light=Akacia Ligna Mesea Fosta Lampo
Jungle Wood Mese Post Light=Ĝangala Ligna Mesea Fosta Lampo
Pine Wood Mese Post Light=Pina Ligna Mesea Fosta Lampo
Aspen Wood Mese Post Light=Tremola Ligna Mesea Fosta Lampo
Obsidian Glass=Obsidiana vitro
Brick Block=Brika bloko
Mese Lamp=Mesea lampo
Apple Wood Mese Post Light=Poma ligna mesea fosta lampo
Acacia Wood Mese Post Light=Akacia ligna mesea fosta lampo
Jungle Wood Mese Post Light=Ĝangala ligna mesea fosta lampo
Pine Wood Mese Post Light=Pina ligna mesea fosta lampo
Aspen Wood Mese Post Light=Tremola ligna mesea fosta lampo
Cloud=Nubo
Wooden Pickaxe=Ligna Pioĉo
Stone Pickaxe=Ŝtona Pioĉo
Bronze Pickaxe=Bronza Pioĉo
Steel Pickaxe=Ŝtala Pioĉo
Mese Pickaxe=Mesea Pioĉo
Diamond Pickaxe=Diamanta Pioĉo
Wooden Shovel=Ligna Fosilo
Stone Shovel=Ŝtona Fosilo
Bronze Shovel=Bronza Fosilo
Steel Shovel=Ŝtala Fosilo
Mese Shovel=Mesea Fosilo
Diamond Shovel=Diamanta Fosilo
Wooden Axe=Ligna Hakilo
Stone Axe=Ŝtona Hakilo
Bronze Axe=Bronza Hakilo
Steel Axe=Ŝtala Hakilo
Mese Axe=Mesea Hakilo
Diamond Axe=Diamanta Hakilo
Wooden Sword=Ligna Glavo
Stone Sword=Ŝtona Glavo
Bronze Sword=Bronza Glavo
Steel Sword=Ŝtala Glavo
Mese Sword=Mesea Glavo
Diamond Sword=Diamanta Glavo
Wooden Pickaxe=Ligna pioĉo
Stone Pickaxe=Ŝtona pioĉo
Bronze Pickaxe=Bronza pioĉo
Steel Pickaxe=Ŝtala pioĉo
Mese Pickaxe=Mesea pioĉo
Diamond Pickaxe=Diamanta pioĉo
Wooden Shovel=Ligna fosilo
Stone Shovel=Ŝtona fosilo
Bronze Shovel=Bronza fosilo
Steel Shovel=Ŝtala fosilo
Mese Shovel=Mesea fosilo
Diamond Shovel=Diamanta fosilo
Wooden Axe=Ligna hakilo
Stone Axe=Ŝtona hakilo
Bronze Axe=Bronza hakilo
Steel Axe=Ŝtala hakilo
Mese Axe=Mesea hakilo
Diamond Axe=Diamanta hakilo
Wooden Sword=Ligna glavo
Stone Sword=Ŝtona glavo
Bronze Sword=Bronza glavo
Steel Sword=Ŝtala glavo
Mese Sword=Mesea glavo
Diamond Sword=Diamanta glavo
Torch=Torĉo
@1 will intersect protection on growth.=@1 sekcos protekton dum kresko.
##### not used anymore #####
Mese Post Light=Mesea Fosta Lampo
Mese Post Light=Mesea fosta lampo

View File

@ -0,0 +1,215 @@
# textdomain: default
Locked Chest=Baú Trancado
Locked Chest (owned by @1)=Baú Trancado (pertence a @1)
You do not own this chest.=Você não é dono deste baú.
a locked chest=um baú trancado
Chest=Baú
Write=
Read=
Title:=Título:
Contents:=Conteúdo:
Save=Salvar
by @1=por @1
Page @1 of @2=Página @1 de @2
The book you were writing to mysteriously disappeared.=
"@1" by @2="@1" por @2
Blueberries=Mirtilo
Book=Livro
Book with Text=Livro com Texto
Bronze Ingot=Lingote de Bronze
Clay Brick=Tijolo de Argila
Clay Lump=Pedaço de Argila
Coal Lump=Pedaço de Carvão
Copper Ingot=Lingote de Cobre
Copper Lump=Pedaço de Cobre
Diamond=Diamante
Flint=Rocha Sílex
Gold Ingot=Lingote de Ouro
Gold Lump=Pedaço de Ouro
Iron Lump=Pedaço de Ferro
Mese Crystal=Cristal de Mese
Mese Crystal Fragment=Fragmento de Cristal de Mese
Obsidian Shard=Caco de Obsidian
Paper=Papel
Steel Ingot=Lingote de Aço
Stick=Graveto
Tin Ingot=Lingote de Estanho
Tin Lump=Pedaço de Estanho
Furnace is empty=A fornalha está vazia
100% (output full)=100% (saída cheia)
@1%=@1%
Not cookable=Não pode cozinhar
Empty=Vazio
Furnace active=Fornalha ativa
Furnace inactive=Fornalha inativa
(Item: @1; Fuel: @2)=(Item: @1; Combustível: @2)
Furnace=Fornalha
Stone=Pedra
Cobblestone=Pedregulho
Stone Brick=Tijolo de Pedra
Stone Block=Bloco de Pedra
Mossy Cobblestone=Pedregulho Musgoso
Desert Stone=Pedra do Deserto
Desert Cobblestone=Pedregulho do Deserto
Desert Stone Brick=Tijolo de Pedra do Deserto
Desert Stone Block=Bloco de Pedra do Deserto
Sandstone=Arenito
Sandstone Brick=Tijolo de Arenito
Sandstone Block=Bloco de Arenito
Desert Sandstone=Bloco de Arenito do Deserto
Desert Sandstone Brick=Tijolo de Arenito do Deserto
Desert Sandstone Block=Bloco de Arenito do Deserto
Silver Sandstone=Arenito Prateado
Silver Sandstone Brick=Tijolo de Arenito Prateado
Silver Sandstone Block=Bloco de Arenito Prateado
Obsidian=Obsidiana
Obsidian Brick=Tijolo de Obsidiana
Obsidian Block=Bloco de Obsidiana
Dirt=Terra
Dirt with Grass=Terra com Grama
Dirt with Grass and Footsteps=Terra com Grama e Pegadas
Dirt with Savanna Grass=Terra com Grama da Savana
Dirt with Snow=Terra com Neve
Dirt with Rainforest Litter=Terra com Serrapilheira Tropical
Dirt with Coniferous Litter=Terra com Serrapilheira
Savanna Dirt=Terra da Savana
Savanna Dirt with Savanna Grass=Terra da Savana com Grama da Savana
Permafrost=Terra Congelada
Permafrost with Stones=Terra Congelada com Pedras
Permafrost with Moss=Terra Congelada com Musgo
Sand=Areia
Desert Sand=Areia do Deserto
Silver Sand=Areia Prateada
Gravel=Cascalho
Clay=Argila
Snow=Neve
Snow Block=Bloco de Neve
Ice=Gelo
Cave Ice=Caverna de Gelo
Apple Tree=Macieira
Apple Wood Planks=Tábuas de Macieira
Apple Tree Sapling=Muda de Macieira
Apple Tree Leaves=Folhas de Macieira
Apple=Maçã
Apple Marker=Marcador de Maçã
Jungle Tree=Árvore da Selva
Jungle Wood Planks=Tábuas de Árvore da Selva
Jungle Tree Leaves=Folhas de Árvore da Selva
Jungle Tree Sapling=Muda de Árvore da Selva
Emergent Jungle Tree Sapling=Muda Crescida de Árvore da Selva
Pine Tree=Pinheiro
Pine Wood Planks=Tábuas de Pinheiro
Pine Needles=Agulhas de Pinheiro
Pine Tree Sapling=Muda de Pinheiro
Acacia Tree=Acácia
Acacia Wood Planks=Tábuas de Acácia
Acacia Tree Leaves=Folhas de Acácia
Acacia Tree Sapling=Mudas de Acácia
Aspen Tree=Álamo
Aspen Wood Planks=Tábuas de Álamo
Aspen Tree Leaves=Folhas de Álamo
Aspen Tree Sapling=Muda de Álamo
Coal Ore=Minério de Carvão
Coal Block=Bloco de Carvão
Iron Ore=Minério de Ferro
Steel Block=Bloco de Aço
Copper Ore=Minério de Cobre
Copper Block=Bloco de Cobre
Tin Ore=Minério de Estanho
Tin Block=Bloco de Estanho
Bronze Block=Bloco de Bronze
Mese Ore=Minério de Mese
Mese Block=Bloco de Mese
Gold Ore=Minério de Ouro
Gold Block=Bloco de Ouro
Diamond Ore=Minério de Diamante
Diamond Block=Bloco de Diamante
Cactus=Cacto
Large Cactus Seedling=Grande Muda de Cacto
Papyrus=Papiro
Dry Shrub=Arbusto Seco
Jungle Grass=Grama da Selva
Grass=Grama
Savanna Grass=Grama da Savana
Fern=Samambaia
Marram Grass=Grama de Feno
Bush Stem=Caule de Arbusto
Bush Leaves=Folhas de Arbusto
Bush Sapling=Muda de Arbusto
Blueberry Bush Leaves with Berries=Folhas de Arbusto de Mirtilo com Bagas
Blueberry Bush Leaves=Folhas de Arbusto de Mirtilo
Blueberry Bush Sapling=Muda de Arbusto de Mirtilo
Acacia Bush Stem=Caule de Arbusto de Acácia
Acacia Bush Leaves=Folhas de Arbusto de Acácia
Acacia Bush Sapling=Muda de Arbusto de Acácia
Pine Bush Stem=Caule de Arbusto de Pinheiro
Pine Bush Needles=Agulha de Arbusto de Pinheiro
Pine Bush Sapling=Muda de Arbusto de Pinheiro
Kelp=Alga
Green Coral=Coral Verde
Pink Coral=Coral Rosa
Cyan Coral=Coral Ciano
Brown Coral=Coral Marrom
Orange Coral=Coral Laranja
Coral Skeleton=Esqueleto de Coral
Water Source=Fonte de Água
Flowing Water=Água Corrente
River Water Source=Fonte de Água do Rio
Flowing River Water=Água Corrente do Rio
Lava Source=Fonte de Lava
Flowing Lava=Lava Corrente
Empty Bookshelf=Estante de Livros Vazia
Bookshelf (@1 written, @2 empty books)=Estante de Livros (@1 livros escritos, @2 livros em branco)
Bookshelf=Estante de Livros
Text too long=Texto muito longo
"@1"="@1"
Wooden Sign=Placa de Madeira
Steel Sign=Placa de Aço
Wooden Ladder=Escada de Madeira
Steel Ladder=Escada de Aço
Apple Wood Fence=Cerca de Macieira
Acacia Wood Fence=Cerca de Acácia
Jungle Wood Fence=Cerca de Madeira da Selva
Pine Wood Fence=Cerca de Pinheiro
Aspen Wood Fence=Cerca de Álamo
Apple Wood Fence Rail=Trilho de Cerca de Macieira
Acacia Wood Fence Rail=Trilho de Cerca de Acácia
Jungle Wood Fence Rail=Trilho de Cerca de Madeira da Selva
Pine Wood Fence Rail=Trilho de Cerca de Pinheiro
Aspen Wood Fence Rail=Trilho de Cerca de Álamo
Glass=Vidro
Obsidian Glass=Vidro de Obsidiana
Brick Block=Bloco de Tijolos
Mese Lamp=Lâmpada de Mese
Apple Wood Mese Post Light=Poste de Lâmpada de Mese de Macieira
Acacia Wood Mese Post Light=Poste de Lâmpada de Mese de Acácia
Jungle Wood Mese Post Light=Poste de Lâmpada de Mese de Madeira da Selva
Pine Wood Mese Post Light=Poste de Lâmpada de Mese de Pinheiro
Aspen Wood Mese Post Light=Poste de Lâmpada de Mese de Aspen
Cloud=Nuvem
Wooden Pickaxe=Picareta de Madeira
Stone Pickaxe=Picareta de Pedra
Bronze Pickaxe=Picareta de Bronze
Steel Pickaxe=Picareta de Aço
Mese Pickaxe=Picareta de Mese
Diamond Pickaxe=Picareta de Diamante
Wooden Shovel=Pá de Madeira
Stone Shovel=Pá de Pedra
Bronze Shovel=Pá de Bronze
Steel Shovel=Pá de Aço
Mese Shovel=Pá de Mese
Diamond Shovel=Pá de Diamante
Wooden Axe=Machado de Madeira
Stone Axe=Machado de Pedra
Bronze Axe=Machado de Bronze
Steel Axe=Machado de Aço
Mese Axe=Machado de Mese
Diamond Axe=Machado de Diamante
Wooden Sword=Espada de Madeira
Stone Sword=Espada de Pedra
Bronze Sword=Espada de Bronze
Steel Sword=Espada de Aço
Mese Sword=Espada de Mese
Diamond Sword=Espada de Diamante
Torch=Tocha
@1 will intersect protection on growth.=@1 cruzará a proteção no crescimento.

View File

@ -23,7 +23,7 @@ Coal Lump=Pedaço de Carvão
Copper Ingot=Lingote de Cobre
Copper Lump=Pedaço de Cobre
Diamond=Diamante
Flint=Sílex (Flint)
Flint=Rocha Sílex
Gold Ingot=Lingote de Ouro
Gold Lump=Pedaço de Ouro
Iron Lump=Pedaço de Ferro

View File

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

View File

@ -1985,8 +1985,8 @@ minetest.register_node("default:sand_with_kelp", {
on_place = function(itemstack, placer, pointed_thing)
-- Call on_rightclick if the pointed node defines it
if pointed_thing.type == "node" and placer and
not placer:get_player_control().sneak then
if pointed_thing.type == "node" and not (placer and placer:is_player()
and placer:get_player_control().sneak) then
local node_ptu = minetest.get_node(pointed_thing.under)
local def_ptu = minetest.registered_nodes[node_ptu.name]
if def_ptu and def_ptu.on_rightclick then
@ -2035,19 +2035,20 @@ minetest.register_node("default:sand_with_kelp", {
--
local function coral_on_place(itemstack, placer, pointed_thing)
if pointed_thing.type ~= "node" or not placer then
if pointed_thing.type ~= "node" then
return itemstack
end
local player_name = placer:get_player_name()
local player_name = placer and placer:get_player_name()
local pos_under = pointed_thing.under
local pos_above = pointed_thing.above
local node_under = minetest.get_node(pos_under)
local def_under = minetest.registered_nodes[node_under.name]
if def_under and def_under.on_rightclick and not placer:get_player_control().sneak then
if def_under and def_under.on_rightclick and not (
placer and placer:is_player() and placer:get_player_control().sneak) then
return def_under.on_rightclick(pos_under, node_under,
placer, itemstack, pointed_thing) or itemstack
placer, itemstack, pointed_thing)
end
if node_under.name ~= "default:coral_skeleton" or
@ -2057,9 +2058,6 @@ local function coral_on_place(itemstack, placer, pointed_thing)
if minetest.is_protected(pos_under, player_name) or
minetest.is_protected(pos_above, player_name) then
default.log_player_action(placer,
"tried to place", itemstack:get_name(),
"at protected position", pos_under)
minetest.record_protection_violation(pos_under, player_name)
return itemstack
end

View File

@ -488,16 +488,15 @@ function default.sapling_on_place(itemstack, placer, pointed_thing,
interval) then
minetest.record_protection_violation(pos, player_name)
-- Print extra information to explain
-- minetest.chat_send_player(player_name,
-- itemstack:get_definition().description .. " will intersect protection " ..
-- "on growth")
minetest.chat_send_player(player_name,
S("@1 will intersect protection on growth.",
itemstack:get_definition().description))
return itemstack
end
default.log_player_action(placer, "places node", sapling_name, "at", pos)
if placer then
default.log_player_action(placer, "places node", sapling_name, "at", pos)
end
local take_item = not minetest.is_creative_enabled(player_name)
local newnode = {name = sapling_name}

View File

@ -1,18 +1,18 @@
# textdomain: doors
Hidden Door Segment=Kaŝita Porda Segmento
Hidden Door Segment=Kaŝita porda segmento
Owned by @1=Posedita de @1
You do not own this locked door.=Vi ne posedas ĉi tiun ŝlositan pordon.
a locked door=ŝlosita pordo
Wooden Door=Ligna Pordo
Steel Door=Ŝtala Pordo
Glass Door=Vitra Pordo
Obsidian Glass Door=Obsidiana Vitra Pordo
Wooden Door=Ligna pordo
Steel Door=Ŝtala pordo
Glass Door=Vitra pordo
Obsidian Glass Door=Obsidiana vitra pordo
You do not own this trapdoor.=Vi ne posedas ĉi tiun plankpordon.
a locked trapdoor=ŝlosita plankpordo
Wooden Trapdoor=Ligna Plankpordo
Steel Trapdoor=Ŝtala Plankpordo
Apple Wood Fence Gate=Poma Ligna Barila Pordo
Acacia Wood Fence Gate=Akacia Ligna Barila Pordo
Jungle Wood Fence Gate=Ĝangala Ligna Barila Pordo
Pine Wood Fence Gate=Pina Ligna Barila Pordo
Aspen Wood Fence Gate=Tremola Ligna Barila Pordo
Wooden Trapdoor=Ligna plankpordo
Steel Trapdoor=Ŝtala plankpordo
Apple Wood Fence Gate=Poma ligna barila pordo
Acacia Wood Fence Gate=Akacia ligna barila pordo
Jungle Wood Fence Gate=Ĝangala ligna barila pordo
Pine Wood Fence Gate=Pina ligna barila pordo
Aspen Wood Fence Gate=Tremola ligna barila pordo

View File

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

View File

@ -14,7 +14,7 @@ local function random_sample(rand, list, count)
return ret
end
local function find_walls(cpos)
local function find_walls(cpos, is_temple)
local is_wall = function(node)
return node.name ~= "air" and node.name ~= "ignore"
end
@ -55,7 +55,7 @@ local function find_walls(cpos)
local biome = minetest.get_biome_data(cpos)
biome = biome and minetest.get_biome_name(biome.biome) or ""
local type = "normal"
if biome:find("desert") == 1 then
if is_temple or biome:find("desert") == 1 then
type = "desert"
elseif biome:find("sandstone_desert") == 1 then
type = "sandstone"
@ -125,6 +125,8 @@ end
minetest.register_on_generated(function(minp, maxp, blockseed)
local gennotify = minetest.get_mapgen_object("gennotify")
local poslist = gennotify["dungeon"] or {}
local n_dungeons = #poslist
-- Add MGv6 desert temples to the list too
for _, entry in ipairs(gennotify["temple"] or {}) do
table.insert(poslist, entry)
end
@ -137,7 +139,7 @@ minetest.register_on_generated(function(minp, maxp, blockseed)
-- process at most 8 rooms to keep runtime of this predictable
local num_process = math.min(#poslist, 8)
for i = 1, num_process do
local room = find_walls(poslist[i])
local room = find_walls(poslist[i], i > n_dungeons)
-- skip small rooms and everything that doesn't at least have 3 walls
if math.min(room.size.x, room.size.z) >= 4 and #room.walls >= 3 then
table.insert(candidates, room)

View File

@ -1,16 +1,16 @@
# textdomain: dye
White Dye=Blanka Tinkturo
Grey Dye=Griza Tinkturo
Dark Grey Dye=Malhela Griza Tinkturo
Black Dye=Nigra Tinkturo
Violet Dye=Violkolora Tinkturo
Blue Dye=Blua Tinkturo
Cyan Dye=Bluverda Tinkturo
Dark Green Dye=Malhela Verda Tinkturo
Green Dye=Verda Tinkturo
Yellow Dye=Flava Tinkturo
Brown Dye=Bruna Tinkturo
Orange Dye=Oranĝkolora Tinkturo
Red Dye=Ruĝa Tinkturo
Magenta Dye=Fiksina Tinkturo
Pink Dye=Rozkolora Tinkturo
White Dye=Blanka tinkturo
Grey Dye=Griza tinkturo
Dark Grey Dye=Malhela griza tinkturo
Black Dye=Nigra tinkturo
Violet Dye=Violkolora tinkturo
Blue Dye=Blua tinkturo
Cyan Dye=Bluverda tinkturo
Dark Green Dye=Malhela verda tinkturo
Green Dye=Verda tinkturo
Yellow Dye=Flava tinkturo
Brown Dye=Bruna tinkturo
Orange Dye=Oranĝkolora tinkturo
Red Dye=Ruĝa tinkturo
Magenta Dye=Fiksina tinkturo
Pink Dye=Rozkolora tinkturo

View File

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

View File

@ -178,7 +178,9 @@ farming.place_seed = function(itemstack, placer, pointed_thing, plantname)
end
-- add the node and remove 1 item from the itemstack
default.log_player_action(placer, "places node", plantname, "at", pt.above)
if placer then
default.log_player_action(placer, "places node", plantname, "at", pt.above)
end
minetest.add_node(pt.above, {name = plantname, param2 = 1})
tick(pt.above)
if not minetest.is_creative_enabled(player_name) then
@ -187,6 +189,12 @@ farming.place_seed = function(itemstack, placer, pointed_thing, plantname)
return itemstack
end
-- check if on wet soil
farming.can_grow = function(pos)
local below = minetest.get_node(pos:offset(0, -1, 0))
return minetest.get_item_group(below.name, "soil") >= 3
end
farming.grow_plant = function(pos, elapsed)
local node = minetest.get_node(pos)
local name = node.name
@ -222,9 +230,7 @@ farming.grow_plant = function(pos, elapsed)
return
end
-- check if on wet soil
local below = minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z})
if minetest.get_item_group(below.name, "soil") < 3 then
if not (def.can_grow or farming.can_grow)(pos) then
tick_again(pos)
return
end

View File

@ -1,28 +1,28 @@
# textdomain: farming
Hoe=Sarkilo
Seed=Semo
Wooden Hoe=Ligna Sarkilo
Stone Hoe=Ŝtona Sarkilo
Steel Hoe=Ŝtala Sarkilo
Bronze Hoe=Bronza Sarkilo
Mese Hoe=Mesea Sarkilo
Diamond Hoe=Diamanta Sarkilo
Wheat Seed=Tritika Semo
Wooden Hoe=Ligna sarkilo
Stone Hoe=Ŝtona sarkilo
Steel Hoe=Ŝtala sarkilo
Bronze Hoe=Bronza sarkilo
Mese Hoe=Mesea sarkilo
Diamond Hoe=Diamanta sarkilo
Wheat Seed=Tritika semo
Wheat=Tritiko
Flour=Faruno
Bread=Pano
Cotton Seed=Katuna Semo
Cotton Seed=Katuna semo
Cotton=Katuno
String=Ŝnuro
Soil=Tero
Wet Soil=Malseka Tero
Savanna Soil=Savana Tero
Wet Savanna Soil=Malseka Savana Tero
Desert Sand Soil=Dezerta Sablo Tero
Wet Desert Sand Soil=Malseka Dezerta Sablo Tero
Wet Soil=Malseka tero
Savanna Soil=Savana tero
Wet Savanna Soil=Malseka savana tero
Desert Sand Soil=Dezerta sablo tero
Wet Desert Sand Soil=Malseka dezerta sablo tero
Straw=Pajlo
Straw Stair=Pajla Ŝtupo
Inner Straw Stair=Interna Pajla Ŝtupo
Outer Straw Stair=Ekstera Pajla Ŝtupo
Straw Slab=Pajla Plato
Wild Cotton=Sovaĝa Kotonujo
Straw Stair=Pajla ŝtupo
Inner Straw Stair=Interna pajla ŝtupo
Outer Straw Stair=Ekstera pajla ŝtupo
Straw Slab=Pajla plato
Wild Cotton=Sovaĝa kotonujo

View File

@ -0,0 +1,28 @@
# textdomain: farming
Hoe=Enxada
Seed=Semente
Wooden Hoe=Enxada de Madeira
Stone Hoe=Enxada de Pedra
Steel Hoe=Enxada de Aço
Bronze Hoe=Enxada de Bronze
Mese Hoe=Enxada de Mese
Diamond Hoe=Enxada de Diamante
Wheat Seed=Semente de Trigo
Wheat=Trigo
Flour=Farinha
Bread=Pão
Cotton Seed=Semente de Algodão
Cotton=Algodão
String=Fio
Soil=Solo
Wet Soil=Solo Molhado
Savanna Soil=Solo da Savana
Wet Savanna Soil=Solo da Savana Molhado
Desert Sand Soil=Solo Arenoso do Deserto
Wet Desert Sand Soil=Solo Arenoso do Deserto Molhado
Straw=Palha
Straw Stair=Escada de Palha
Inner Straw Stair=Escada de Palha Externa
Outer Straw Stair=Escada de Palha Interna
Straw Slab=Laje de Palha
Wild Cotton=Algodão Selvagem

View File

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

View File

@ -101,13 +101,18 @@ minetest.register_tool("fire:flint_and_steel", {
return
end
if minetest.is_protected(pointed_thing.under, player_name) then
minetest.chat_send_player(player_name, "This area is protected")
minetest.record_protection_violation(pointed_thing.under, player_name)
return
end
if nodedef.on_ignite then
nodedef.on_ignite(pointed_thing.under, user)
elseif minetest.get_item_group(node_under, "flammable") >= 1
and minetest.get_node(pointed_thing.above).name == "air" then
if minetest.is_protected(pointed_thing.above, player_name) then
minetest.record_protection_violation(pointed_thing.above, player_name)
return
end
minetest.set_node(pointed_thing.above, {name = "fire:basic_flame"})
end
end

View File

@ -1,4 +1,4 @@
# textdomain: fire
Fire=Fajro
Permanent Fire=Ĉiama Fajro
Flint and Steel=Siliko kaj Ŝtalo
Permanent Fire=Ĉiama fajro
Flint and Steel=Siliko kaj ŝtalo

View File

@ -0,0 +1,4 @@
# textdomain: fire
Fire=Fogo
Permanent Fire=Fogo Permanente
Flint and Steel=Pederneira Primitiva

View File

@ -1,4 +1,4 @@
# textdomain: fire
Fire=Fogo
Permanent Fire=Fogo Permanente
Flint and Steel=Sílex e Fogo
Flint and Steel=Pederneira Primitiva

View File

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

View File

@ -3,6 +3,8 @@
-- Load support for MT game translation.
local S = minetest.get_translator("fireflies")
-- Legacy compatibility, when pointabilities don't exist, pointable is set to true.
local pointable_compat = not minetest.features.item_specific_pointabilities
minetest.register_node("fireflies:firefly", {
description = S("Firefly"),
@ -23,6 +25,7 @@ minetest.register_node("fireflies:firefly", {
sunlight_propagates = true,
buildable_to = true,
walkable = false,
pointable = pointable_compat,
groups = {catchable = 1},
selection_box = {
type = "fixed",
@ -30,18 +33,8 @@ minetest.register_node("fireflies:firefly", {
},
light_source = 6,
floodable = true,
on_place = function(itemstack, placer, pointed_thing)
local player_name = placer:get_player_name()
local pos = pointed_thing.above
if not minetest.is_protected(pos, player_name) and
not minetest.is_protected(pointed_thing.under, player_name) and
minetest.get_node(pos).name == "air" then
minetest.set_node(pos, {name = "fireflies:firefly"})
minetest.get_node_timer(pos):start(1)
itemstack:take_item()
end
return itemstack
on_construct = function(pos)
minetest.get_node_timer(pos):start(1)
end,
on_timer = function(pos, elapsed)
if minetest.get_node_light(pos) > 11 then
@ -65,18 +58,8 @@ minetest.register_node("fireflies:hidden_firefly", {
drop = "",
groups = {not_in_creative_inventory = 1},
floodable = true,
on_place = function(itemstack, placer, pointed_thing)
local player_name = placer:get_player_name()
local pos = pointed_thing.above
if not minetest.is_protected(pos, player_name) and
not minetest.is_protected(pointed_thing.under, player_name) and
minetest.get_node(pos).name == "air" then
minetest.set_node(pos, {name = "fireflies:hidden_firefly"})
minetest.get_node_timer(pos):start(1)
itemstack:take_item()
end
return itemstack
on_construct = function(pos)
minetest.get_node_timer(pos):start(1)
end,
on_timer = function(pos, elapsed)
if minetest.get_node_light(pos) <= 11 then
@ -91,27 +74,12 @@ minetest.register_node("fireflies:hidden_firefly", {
minetest.register_tool("fireflies:bug_net", {
description = S("Bug Net"),
inventory_image = "fireflies_bugnet.png",
on_use = function(itemstack, player, pointed_thing)
local player_name = player and player:get_player_name() or ""
if not pointed_thing or pointed_thing.type ~= "node" or
minetest.is_protected(pointed_thing.under, player_name) then
return
end
local node_name = minetest.get_node(pointed_thing.under).name
local inv = player:get_inventory()
if minetest.get_item_group(node_name, "catchable") == 1 then
minetest.set_node(pointed_thing.under, {name = "air"})
local stack = ItemStack(node_name.." 1")
local leftover = inv:add_item("main", stack)
if leftover:get_count() > 0 then
minetest.add_item(pointed_thing.under, node_name.." 1")
end
end
if not minetest.is_creative_enabled(player_name) then
itemstack:add_wear_by_uses(256)
return itemstack
end
end
pointabilities = {nodes = {["group:catchable"] = true}},
tool_capabilities = {
groupcaps = {
catchable = { maxlevel = 1, uses = 256, times = { [1] = 0, [2] = 0, [3] = 0 } }
},
},
})
minetest.register_craft( {

View File

@ -1,5 +1,5 @@
# textdomain: fireflies
Firefly=Lampiro
Hidden Firefly=Kaŝita Lampiro
Bug Net=Insekta Reto
Firefly in a Bottle=Lampiro en Botelo
Hidden Firefly=Kaŝita lampiro
Bug Net=Insekta reto
Firefly in a Bottle=Lampiro en botelo

View File

@ -1,5 +1,5 @@
# textdomain: fireflies
Firefly=Светлячок
Hidden Firefly=Притаившийся Светлячок
Bug Net=Сачок Для Ловли Насекомых
Firefly in a Bottle=Светлячок в Бутылке
Hidden Firefly=Притаившийся светлячок
Bug Net=Сачок
Firefly in a Bottle=Светлячок в бутылке

View File

@ -1,12 +1,12 @@
# textdomain: flowers
Red Rose=Ruĝa Rozo
Orange Tulip=Oranĝkolora Tulipo
Yellow Dandelion=Flava Leontodo
Green Chrysanthemum=Verda Krizantemo
Blue Geranium=Blua Geranio
Red Rose=Ruĝa rozo
Orange Tulip=Oranĝkolora tulipo
Yellow Dandelion=Flava leontodo
Green Chrysanthemum=Verda krizantemo
Blue Geranium=Blua geranio
Viola=Violo
White Dandelion=Blanka Leontodo
Black Tulip=Nigra Tulipo
Red Mushroom=Ruĝa Fungo
Brown Mushroom=Bruna Fungo
White Dandelion=Blanka leontodo
Black Tulip=Nigra tulipo
Red Mushroom=Ruĝa fungo
Brown Mushroom=Bruna fungo
Waterlily=Nimfeo

View File

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

View File

@ -1,4 +1,4 @@
# textdomain: game_commands
Kill yourself to respawn=Убейте себя, чтобы возродиться
No static_spawnpoint defined=static_spawnpoint не определён
You need to be online to be killed!=Вы должны быть онлайн, чтобы убить себя!
You need to be online to be killed!=Вы должны быть в сети, чтобы убить себя!

View File

@ -2,4 +2,4 @@
Key=Ŝlosilo
Key to @1's @2=Ŝlosilo por la @2 de @1
Skeleton Key=Skeleta Ŝlosilo
Skeleton Key=Skeleta ŝlosilo

View File

@ -2,4 +2,4 @@
Key=Ключ
Key to @1's @2=Ключ к @2 от @1
Skeleton Key=Ключ Скелета
Skeleton Key=Заготовка ключа

View File

@ -1,3 +1,3 @@
# textdomain: map
Mapping Kit=Mapa Ilaro
Mapping Kit=Mapa ilaro
Use with 'Minimap' key=Uzi per 'Minimapo' klavo

View File

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

View File

@ -282,6 +282,7 @@ local function get_formspec(player)
"tooltip[clear;"..esc(S("Reset")).."]"..
"tooltip[prev;"..esc(S("Previous page")).."]"..
"tooltip[next;"..esc(S("Next page")).."]"..
"field_enter_after_edit[filter;true]"..
"field_close_on_enter[filter;false]")
if #data.items == 0 then

View File

@ -33,7 +33,7 @@ Any dark green dye=Ajna malhela verda tinkturo
# Label for group ingredients
G=A
Any item belonging to the group(s): @1=Ajna objekto de la aro(j): @1
Unknown Item=Nekonata Objekto
Unknown Item=Nekonata objekto
Fuel=Brulaĵo
Usage @1 of @2=Uzo @1 el @2
Recipe @1 of @2=Recepto @1 el @2

View File

@ -5,7 +5,7 @@ Any wool=Любая шерсть
Any stick=Любая палка
Any vessel=Любой сосуд
Any wood planks=Любые доски
Any kind of stone block=Любой вид каменного блока
Any kind of stone block=Любой вид камня
Any red flower=Любой красный цветок
Any blue flower=Любой синий цветок
Any black flower=Любой чёрный цветок
@ -14,21 +14,21 @@ Any white flower=Любой белый цветок
Any orange flower=Любой оранжевый цветок
Any violet flower=Любой фиолетовый цветок
Any yellow flower=Любой жёлтый цветок
Any red dye=Любая красная краска
Any blue dye=Любая синяя краска
Any cyan dye=Любая голубая краска
Any grey dye=Любая серая краска
Any pink dye=Любая розовая краска
Any black dye=Любая чёрная краска
Any brown dye=Любая бурая краска
Any green dye=Любая зелёная краска
Any white dye=Любая белая краска
Any orange dye=Любая оранжевая краска
Any violet dye=Любая фиолетовая краска
Any yellow dye=Любая жёлтая краска
Any magenta dye=Любая пурпурная краска
Any dark grey dye=Любая тёмно-серая краска
Any dark green dye=Любая тёмно-зелёная краска
Any red dye=Любой красный краситель
Any blue dye=Любой синий краситель
Any cyan dye=Любой бирюзовый краситель
Any grey dye=Любой серый краситель
Any pink dye=Любой розовый краситель
Any black dye=Любой чёрный краситель
Any brown dye=Любой коричневый краситель
Any green dye=Любой зелёный краситель
Any white dye=Любой белый краситель
Any orange dye=Любой оранжевый краситель
Any violet dye=Любой фиолетовый краситель
Any yellow dye=Любой жёлтый краситель
Any magenta dye=Любой сиреневый краситель
Any dark grey dye=Любой тёмно-серый краситель
Any dark green dye=Любой тёмно-зелёный краситель
# Label for group ingredients
G=Г
Any item belonging to the group(s): @1=Любой предмет из групп(ы): @1
@ -39,13 +39,13 @@ Recipe @1 of @2=Рецепт @1 из @2
Previous recipe=Предыдущий рецепт
Next recipe=Следующий рецепт
Recipe is too big to be displayed.=Рецепт слишком большой для отображения.
Shapeless=Формонезависимый
Cooking time: @1=Время приготовления: @1
Shapeless=Бесформенный
Cooking time: @1=Время готовки: @1
Search=Поиск
Reset=Сброс
Previous page=Предыдущая страница
Next page=Следующая страница
No items to show.=Нет предметов для отображения.
No items to show.=Нет предметов.
No usages.=Нет использований.
Click again to show recipes.=Кликните снова чтобы увидеть рецепты.
No recipes.=Нет рецептов.

View File

@ -71,7 +71,7 @@ function player_api.set_model(player, model_name)
player_data.model = model_name
-- Clear animation data as the model has changed
-- (required for setting the `stand` animation not to be a no-op)
player_data.animation, player_data.animation_speed = nil, nil
player_data.animation, player_data.animation_speed, player_data.animation_loop = nil, nil, nil
local model = models[model_name]
if model then
@ -116,20 +116,27 @@ function player_api.set_texture(player, index, texture)
player_api.set_textures(player, textures)
end
function player_api.set_animation(player, anim_name, speed)
function player_api.set_animation(player, anim_name, speed, loop)
local player_data = get_player_data(player)
local model = models[player_data.model]
if not (model and model.animations[anim_name]) then
return
end
speed = speed or model.animation_speed
if player_data.animation == anim_name and player_data.animation_speed == speed then
if loop == nil then
loop = true
end
if player_data.animation == anim_name
and player_data.animation_speed == speed
and player_data.animation_loop == loop
then
return
end
local previous_anim = model.animations[player_data.animation] or {}
local anim = model.animations[anim_name]
player_data.animation = anim_name
player_data.animation_speed = speed
player_data.animation_loop = loop
-- If necessary change the local animation (only seen by the client of *that* player)
-- `override_local` <=> suspend local animations while this one is active
-- (this is basically a hack, proper engine feature needed...)
@ -146,7 +153,7 @@ function player_api.set_animation(player, anim_name, speed)
end
end
-- Set the animation seen by everyone else
player:set_animation(anim, speed, animation_blend)
player:set_animation(anim, speed, animation_blend, loop)
-- Update related properties if they changed
if anim._equals ~= previous_anim._equals then
player:set_properties({

View File

@ -1,3 +1,3 @@
# textdomain: screwdriver
Screwdriver=Отвёртка
(left-click rotates face, right-click rotates axis)=(клик левой кнопкой мыши вращает грань, клик правой кнопкой мыши вращает ось)
(left-click rotates face, right-click rotates axis)=(левый клик вращает грань, правый клик вращает ось)

View File

@ -6,4 +6,4 @@ Teleported to home!=Вы телепортировались домой!
Set a home using /sethome=Установите домашнюю точку, используя /sethome
Set your home point=Установите вашу домашнюю точку
Home set!=Домашняя точка установлена!
Player not found!=Игрок не обнаружен!
Player not found!=Игрок не найден!

49
mods/spawn/api.lua Normal file
View File

@ -0,0 +1,49 @@
spawn = {}
-- provide empty default implementations
function spawn.get_default_pos()
return nil
end
function spawn.add_suitable_biome(biome)
end
-- Callback registration
spawn.registered_on_spawn = {}
function spawn.register_on_spawn(func)
table.insert(spawn.registered_on_spawn, func)
end
-- Logic run on spawn
local use_engine_spawn = minetest.settings:get("static_spawnpoint") or
minetest.settings:get_bool("engine_spawn")
local function on_spawn(player, is_new)
-- Ask all callbacks first
for _, cb in ipairs(spawn.registered_on_spawn) do
if cb(player, is_new) then
return true
end
end
-- Fall back to default spawn
if not use_engine_spawn then
local pos = spawn.get_default_pos()
if pos then
player:set_pos(pos)
return true
end
end
return false
end
minetest.register_on_newplayer(function(player)
on_spawn(player, true)
end)
minetest.register_on_respawnplayer(function(player)
return on_spawn(player, false)
end)

View File

@ -1,12 +1,12 @@
-- spawn/init.lua
-- Always load the API
----------------------
dofile(minetest.get_modpath(minetest.get_current_modname()) .. "/api.lua")
-- Disable by mapgen, setting or if 'static_spawnpoint' is set
--------------------------------------------------------------
-- Disable biome-search implementation on unsuitable mapgens
------------------------------------------------------------
local mg_name = minetest.get_mapgen_setting("mg_name")
if mg_name == "v6" or mg_name == "singlenode" or
minetest.settings:get("static_spawnpoint") or
minetest.settings:get_bool("engine_spawn") then
if mg_name == "v6" or mg_name == "singlenode" then
return
end
@ -23,27 +23,35 @@ local checks = 128 * 128
local pos = {x = 0, y = 8, z = 0}
-- Table of suitable biomes
-- Table of suitable biomes and matching API function
local biome_ids = {
minetest.get_biome_id("taiga"),
minetest.get_biome_id("coniferous_forest"),
minetest.get_biome_id("deciduous_forest"),
minetest.get_biome_id("grassland"),
minetest.get_biome_id("savanna"),
}
local biome_ids = {}
function spawn.add_suitable_biome(biome)
local id = minetest.get_biome_id(biome)
assert(id ~= nil)
biome_ids[id] = true
end
for _, name in ipairs({
"taiga", "coniferous_forest", "deciduous_forest", "grassland", "savanna"
}) do
local id = minetest.get_biome_id(name)
if id then
biome_ids[id] = true
end
end
-- End of parameters
--------------------
-- Direction table
local dirs = {
{x = 0, y = 0, z = 1},
{x = -1, y = 0, z = 0},
{x = 0, y = 0, z = -1},
{x = 1, y = 0, z = 0},
vector.new(0, 0, 1),
vector.new(-1, 0, 0),
vector.new(0, 0, -1),
vector.new(1, 0, 0),
}
@ -67,8 +75,8 @@ local chunksize = tonumber(minetest.get_mapgen_setting("chunksize"))
local spawn_limit = math.max(mapgen_limit - (chunksize + 1) * 16, 0)
--Functions
-----------
-- Functions
------------
-- Get next position on square search spiral
@ -98,15 +106,11 @@ local function search()
for iter = 1, checks do
local biome_data = minetest.get_biome_data(pos)
-- Sometimes biome_data is nil
local biome = biome_data and biome_data.biome
for id_ind = 1, #biome_ids do
local biome_id = biome_ids[id_ind]
if biome == biome_id then
local spawn_y = minetest.get_spawn_level(pos.x, pos.z)
if spawn_y then
spawn_pos = {x = pos.x, y = spawn_y, z = pos.z}
return true
end
if biome_data and biome_ids[biome_data.biome] then
local spawn_y = minetest.get_spawn_level(pos.x, pos.z)
if spawn_y then
spawn_pos = vector.new(pos.x, spawn_y, pos.z)
return true
end
end
@ -121,38 +125,11 @@ local function search()
end
-- On new player spawn and player respawn
-- Search for spawn position once per server session. If successful, store
-- position and reposition players, otherwise leave them at engine spawn
-- position.
local function on_spawn(player)
function spawn.get_default_pos()
-- Search for spawn position once per server session
if not searched then
success = search()
searched = true
end
if success then
player:set_pos(spawn_pos)
end
return success
return success and spawn_pos
end
minetest.register_on_newplayer(function(player)
on_spawn(player)
end)
local enable_bed_respawn = minetest.settings:get_bool("enable_bed_respawn")
if enable_bed_respawn == nil then
enable_bed_respawn = true
end
minetest.register_on_respawnplayer(function(player)
-- Avoid respawn conflict with beds mod
if beds and enable_bed_respawn and
beds.spawn[player:get_player_name()] then
return
end
return on_spawn(player)
end)

View File

@ -1,4 +1,3 @@
name = spawn
description = Minetest Game mod: spawn
depends = default
optional_depends = beds

View File

@ -1,145 +1,145 @@
# textdomain: stairs
Glass Stair=Vitra Ŝtupo
Glass Slab=Vitra Plato
Inner Glass Stair=Interna Vitra Ŝtupo
Outer Glass Stair=Ekstera Vitra Ŝtupo
Obsidian Glass Stair=Obsidiana Vitra Ŝtupo
Obsidian Glass Slab=Obsidiana Vitra Plato
Inner Obsidian Glass Stair=Interna Obsidiana Vitra Ŝtupo
Outer Obsidian Glass Stair=Ekstera Obsidiana Vitra Ŝtupo
Wooden Stair=Ligna Ŝtupo
Inner Wooden Stair=Interna Ligna Ŝtupo
Outer Wooden Stair=Ekstera Ligna Ŝtupo
Wooden Slab=Ligna Plato
Jungle Wood Stair=Ĝangala Ligna Ŝtupo
Inner Jungle Wood Stair=Interna Ĝangala Ligna Ŝtupo
Outer Jungle Wood Stair=Ekstera Ĝangala Ligna Ŝtupo
Jungle Wood Slab=Ĝangala Ligna Plato
Pine Wood Stair=Pina Ligna Ŝtupo
Inner Pine Wood Stair=Interna Pina Ligna Ŝtupo
Outer Pine Wood Stair=Ekstera Pina Ligna Ŝtupo
Pine Wood Slab=Pina Ligna Plato
Acacia Wood Stair=Akacia Ligna Ŝtupo
Inner Acacia Wood Stair=Interna Akacia Ligna Ŝtupo
Outer Acacia Wood Stair=Ekstera Akacia Ligna Ŝtupo
Acacia Wood Slab=Akacia Ligna Plato
Aspen Wood Stair=Tremola Ligna Ŝtupo
Inner Aspen Wood Stair=Interna Tremola Ligna Ŝtupo
Outer Aspen Wood Stair=Ekstera Tremola Ligna Ŝtupo
Aspen Wood Slab=Tremola Ligna Plato
Stone Stair=Ŝtona Ŝtupo
Inner Stone Stair=Interna Ŝtona Ŝtupo
Outer Stone Stair=Ekstera Ŝtona Ŝtupo
Stone Slab=Ŝtona Plato
Cobblestone Stair=Pavimŝtona Ŝtupo
Inner Cobblestone Stair=Interna Pavimŝtona Ŝtupo
Outer Cobblestone Stair=Ekstera Pavimŝtona Ŝtupo
Cobblestone Slab=Pavimŝtona Plato
Mossy Cobblestone Stair=Muska Pavimŝtona Ŝtupo
Inner Mossy Cobblestone Stair=Interna Muska Pavimŝtona Ŝtupo
Outer Mossy Cobblestone Stair=Ekstera Muska Pavimŝtona Ŝtupo
Mossy Cobblestone Slab=Muska Pavimŝtona Plato
Stone Brick Stair=Ŝtona Brika Ŝtupo
Inner Stone Brick Stair=Interna Ŝtona Brika Ŝtupo
Outer Stone Brick Stair=Ekstera Ŝtona Brika Ŝtupo
Stone Brick Slab=Ŝtona Brika Plato
Stone Block Stair=Ŝtona Ŝtipa Ŝtupo
Inner Stone Block Stair=Interna Ŝtona Ŝtipa Ŝtupo
Outer Stone Block Stair=Ekstera Ŝtona Ŝtipa Ŝtupo
Stone Block Slab=Ŝtona Ŝtipa Plato
Desert Stone Stair=Dezerta Ŝtona Ŝtupo
Inner Desert Stone Stair=Interna Dezerta Ŝtona Ŝtupo
Outer Desert Stone Stair=Ekstera Dezerta Ŝtona Ŝtupo
Desert Stone Slab=Dezerta Ŝtona Plato
Desert Cobblestone Stair=Dezerta Pavimŝtona Ŝtupo
Inner Desert Cobblestone Stair=Interna Dezerta Pavimŝtona Ŝtupo
Outer Desert Cobblestone Stair=Ekstera Dezerta Pavimŝtona Ŝtupo
Desert Cobblestone Slab=Dezerta Pavimŝtona Plato
Desert Stone Brick Stair=Dezerta Ŝtona Brika Ŝtupo
Inner Desert Stone Brick Stair=Interna Dezerta Ŝtona Brika Ŝtupo
Outer Desert Stone Brick Stair=Ekstera Dezerta Ŝtona Brika Ŝtupo
Desert Stone Brick Slab=Dezerta Ŝtona Brika Plato
Desert Stone Block Stair=Dezerta Ŝtona Bloko Ŝtupo
Inner Desert Stone Block Stair=Interna Dezerta Ŝtona Bloko Stupo
Outer Desert Stone Block Stair=Ekstera Dezerta Ŝtona Bloko Ŝtupo
Desert Stone Block Slab=Dezerta Ŝtona Bloko Plato
Sandstone Stair=Sablŝtona Ŝtupo
Inner Sandstone Stair=Interna Ŝablŝtona Ŝtupo
Outer Sandstone Stair=Ekstera Ŝablŝtona Ŝtupo
Sandstone Slab=Ŝablŝtona Plato
Sandstone Brick Stair=Ŝablŝtona Brika Ŝtupo
Inner Sandstone Brick Stair=Interna Ŝablŝtona Brika Ŝtupo
Outer Sandstone Brick Stair=Ekstera Ŝablŝtona Brika Ŝtupo
Sandstone Brick Slab=Ŝablŝtona Brika Plato
Sandstone Block Stair=Ŝablŝtona Ŝtipa Ŝtupo
Inner Sandstone Block Stair=Interna Ŝablŝtona Ŝtipa Ŝtupo
Outer Sandstone Block Stair=Ekstera Ŝablŝtona Ŝtipa Ŝtupo
Sandstone Block Slab=Ŝablŝtona Ŝtipa Plato
Desert Sandstone Stair=Dezerta Ŝablŝtona Ŝtupo
Inner Desert Sandstone Stair=Interna Dezerta Ŝablŝtona Ŝtupo
Outer Desert Sandstone Stair=Ekstera Dezerta Ŝablŝtona Ŝtupo
Desert Sandstone Slab=Dezerta Ŝablŝtona Plato
Desert Sandstone Brick Stair=Dezerta Ŝablŝtona Brika Ŝtupo
Inner Desert Sandstone Brick Stair=Interna Dezerta Ŝablŝtona Brika Ŝtupo
Outer Desert Sandstone Brick Stair=Ekstera Dezerta Ŝablŝtona Brika Ŝtupo
Desert Sandstone Brick Slab=Dezerta Ŝablŝtona Brika Plato
Desert Sandstone Block Stair=Dezerta Ŝablŝtona Ŝtipa Ŝtupo
Inner Desert Sandstone Block Stair=Interna Dezerta Ŝablŝtona Brika Ŝtupo
Outer Desert Sandstone Block Stair=Ekstera Dezerta Ŝablŝtona Brika Ŝtupo
Desert Sandstone Block Slab=Dezerta Ŝablŝtona Ŝtipa Plato
Silver Sandstone Stair=Arĝenta Ŝablŝtona Ŝtupo
Inner Silver Sandstone Stair=Interna Arĝenta Ŝablŝtona Ŝtupo
Outer Silver Sandstone Stair=Ekstera Arĝenta Ŝablŝtona Ŝtupo
Silver Sandstone Slab=Arĝenta Ŝablŝtona Plato
Silver Sandstone Brick Stair=Arĝenta Ŝablŝtona Brika Ŝtupo
Inner Silver Sandstone Brick Stair=Interna Arĝenta Ŝablŝtona Brika Ŝtupo
Outer Silver Sandstone Brick Stair=Ekstera Arĝenta Ŝablŝtona Brika Ŝtupo
Silver Sandstone Brick Slab=Arĝenta Ŝablŝtona Brika Plato
Silver Sandstone Block Stair=Arĝenta Ŝablŝtona Ŝtipa Ŝtupo
Inner Silver Sandstone Block Stair=Interna Arĝenta Ŝablŝtona Ŝtipa Ŝtupo
Outer Silver Sandstone Block Stair=Ekstera Arĝenta Ŝablŝtona Ŝtipa Ŝtupo
Silver Sandstone Block Slab=Arĝenta Ŝablŝtona Ŝtipa Plato
Obsidian Stair=Obsidiana Ŝtupo
Inner Obsidian Stair=Interna Obsidiana Ŝtupo
Outer Obsidian Stair=Ekstera Obsidiana Ŝtupo
Obsidian Slab=Obsidiana Plato
Obsidian Brick Stair=Obsidiana Brika Ŝtupo
Inner Obsidian Brick Stair=Interna Obsidiana Brika Ŝtupo
Outer Obsidian Brick Stair=Ekstera Obsidiana Brika Ŝtupo
Obsidian Brick Slab=Obsidiana Brika Plato
Obsidian Block Stair=Obsidiana Ŝtipa Ŝtupo
Inner Obsidian Block Stair=Interna Obsidiana Ŝtipa Ŝtupo
Outer Obsidian Block Stair=Ekstera Obsidiana Ŝtipa Ŝtupo
Obsidian Block Slab=Obsidiana Ŝtipa Plato
Brick Stair=Brika Ŝtupo
Inner Brick Stair=Interna Brika Ŝtupo
Outer Brick Stair=Ekstera Brika Ŝtupo
Brick Slab=Brika Plato
Steel Block Stair=Ŝtala Ŝtipa Ŝtupo
Inner Steel Block Stair=Interna Ŝtala Ŝtipa Ŝtupo
Outer Steel Block Stair=Ekstera Ŝtala Ŝtipa Ŝtupo
Steel Block Slab=Ŝtala Ŝtipa Plato
Tin Block Stair=Stana Ŝtipa Ŝtupo
Inner Tin Block Stair=Interna Stana Ŝtipa Ŝtupo
Outer Tin Block Stair=Ekstera Stana Ŝtipa Ŝtupo
Tin Block Slab=Stana Ŝtipa Plato
Copper Block Stair=Kupra Ŝtipa Ŝtupo
Inner Copper Block Stair=Interna Kupra Ŝtipa Ŝtupo
Outer Copper Block Stair=Ekstera Kupra Ŝtipa Ŝtupo
Copper Block Slab=Kupra Ŝtipa Plato
Bronze Block Stair=Bronza Ŝtipa Ŝtupo
Inner Bronze Block Stair=Interna Bronza Ŝtipa Ŝtupo
Outer Bronze Block Stair=Ekstera Bronza Ŝtipa Ŝtupo
Bronze Block Slab=Bronza Ŝtipa Plato
Gold Block Stair=Ora Ŝtipa Ŝtupo
Inner Gold Block Stair=Interna Ora Ŝtipa Ŝtupo
Outer Gold Block Stair=Ekstera Ora Ŝtipa Ŝtupo
Gold Block Slab=Ora Ŝtipa Plato
Ice Stair=Glacia Ŝtupo
Inner Ice Stair=Interna Glacia Ŝtupo
Outer Ice Stair=Ekstera Glacia Ŝtupo
Ice Slab=Glacia Plato
Snow Block Stair=Neĝa Ŝtipa Ŝtupo
Inner Snow Block Stair=Interna Neĝa Ŝtipa Ŝtupo
Outer Snow Block Stair=Ekstera Neĝa Ŝtipa Ŝtupo
Snow Block Slab=Neĝa Ŝtipa Plato
Glass Stair=Vitra ŝtupo
Glass Slab=Vitra plato
Inner Glass Stair=Interna vitra ŝtupo
Outer Glass Stair=Ekstera vitra ŝtupo
Obsidian Glass Stair=Obsidiana vitra ŝtupo
Obsidian Glass Slab=Obsidiana vitra plato
Inner Obsidian Glass Stair=Interna obsidiana vitra ŝtupo
Outer Obsidian Glass Stair=Ekstera obsidiana vitra ŝtupo
Wooden Stair=Ligna ŝtupo
Inner Wooden Stair=Interna ligna ŝtupo
Outer Wooden Stair=Ekstera ligna ŝtupo
Wooden Slab=Ligna plato
Jungle Wood Stair=Ĝangala ligna ŝtupo
Inner Jungle Wood Stair=Interna ĝangala ligna ŝtupo
Outer Jungle Wood Stair=Ekstera ĝangala ligna ŝtupo
Jungle Wood Slab=Ĝangala ligna plato
Pine Wood Stair=Pina ligna ŝtupo
Inner Pine Wood Stair=Interna pina ligna ŝtupo
Outer Pine Wood Stair=Ekstera pina ligna ŝtupo
Pine Wood Slab=Pina ligna plato
Acacia Wood Stair=Akacia ligna ŝtupo
Inner Acacia Wood Stair=Interna akacia ligna ŝtupo
Outer Acacia Wood Stair=Ekstera akacia ligna ŝtupo
Acacia Wood Slab=Akacia ligna plato
Aspen Wood Stair=Tremola ligna ŝtupo
Inner Aspen Wood Stair=Interna tremola ligna ŝtupo
Outer Aspen Wood Stair=Ekstera tremola ligna ŝtupo
Aspen Wood Slab=Tremola ligna plato
Stone Stair=Ŝtona ŝtupo
Inner Stone Stair=Interna ŝtona ŝtupo
Outer Stone Stair=Ekstera ŝtona ŝtupo
Stone Slab=Ŝtona plato
Cobblestone Stair=Pavimŝtona ŝtupo
Inner Cobblestone Stair=Interna pavimŝtona ŝtupo
Outer Cobblestone Stair=Ekstera pavimŝtona ŝtupo
Cobblestone Slab=Pavimŝtona plato
Mossy Cobblestone Stair=Muska pavimŝtona ŝtupo
Inner Mossy Cobblestone Stair=Interna muska pavimŝtona ŝtupo
Outer Mossy Cobblestone Stair=Ekstera muska pavimŝtona ŝtupo
Mossy Cobblestone Slab=Muska pavimŝtona plato
Stone Brick Stair=Ŝtona brika ŝtupo
Inner Stone Brick Stair=Interna ŝtona brika ŝtupo
Outer Stone Brick Stair=Ekstera ŝtona brika ŝtupo
Stone Brick Slab=Ŝtona brika plato
Stone Block Stair=Ŝtona ŝtipa ŝtupo
Inner Stone Block Stair=Interna ŝtona ŝtipa ŝtupo
Outer Stone Block Stair=Ekstera ŝtona ŝtipa ŝtupo
Stone Block Slab=Ŝtona ŝtipa plato
Desert Stone Stair=Dezerta ŝtona ŝtupo
Inner Desert Stone Stair=Interna dezerta ŝtona ŝtupo
Outer Desert Stone Stair=Ekstera dezerta ŝtona ŝtupo
Desert Stone Slab=Dezerta ŝtona plato
Desert Cobblestone Stair=Dezerta pavimŝtona ŝtupo
Inner Desert Cobblestone Stair=Interna dezerta pavimŝtona ŝtupo
Outer Desert Cobblestone Stair=Ekstera dezerta pavimŝtona ŝtupo
Desert Cobblestone Slab=Dezerta pavimŝtona plato
Desert Stone Brick Stair=Dezerta ŝtona brika ŝtupo
Inner Desert Stone Brick Stair=Interna dezerta ŝtona brika ŝtupo
Outer Desert Stone Brick Stair=Ekstera dezerta ŝtona brika ŝtupo
Desert Stone Brick Slab=Dezerta ŝtona brika plato
Desert Stone Block Stair=Dezerta ŝtona bloko ŝtupo
Inner Desert Stone Block Stair=Interna dezerta ŝtona bloko ŝtupo
Outer Desert Stone Block Stair=Ekstera dezerta ŝtona bloko ŝtupo
Desert Stone Block Slab=Dezerta ŝtona bloko plato
Sandstone Stair=Sablŝtona ŝtupo
Inner Sandstone Stair=Interna ŝablŝtona ŝtupo
Outer Sandstone Stair=Ekstera ŝablŝtona ŝtupo
Sandstone Slab=Ŝablŝtona plato
Sandstone Brick Stair=Ŝablŝtona brika ŝtupo
Inner Sandstone Brick Stair=Interna ŝablŝtona brika ŝtupo
Outer Sandstone Brick Stair=Ekstera ŝablŝtona brika ŝtupo
Sandstone Brick Slab=Ŝablŝtona brika plato
Sandstone Block Stair=Ŝablŝtona ŝtipa ŝtupo
Inner Sandstone Block Stair=Interna ŝablŝtona ŝtipa ŝtupo
Outer Sandstone Block Stair=Ekstera ŝablŝtona ŝtipa ŝtupo
Sandstone Block Slab=Ŝablŝtona ŝtipa plato
Desert Sandstone Stair=Dezerta ŝablŝtona ŝtupo
Inner Desert Sandstone Stair=Interna dezerta ŝablŝtona ŝtupo
Outer Desert Sandstone Stair=Ekstera dezerta ŝablŝtona ŝtupo
Desert Sandstone Slab=Dezerta ŝablŝtona plato
Desert Sandstone Brick Stair=Dezerta ŝablŝtona brika ŝtupo
Inner Desert Sandstone Brick Stair=Interna dezerta ŝablŝtona brika ŝtupo
Outer Desert Sandstone Brick Stair=Ekstera dezerta ŝablŝtona brika ŝtupo
Desert Sandstone Brick Slab=Dezerta ŝablŝtona brika plato
Desert Sandstone Block Stair=Dezerta ŝablŝtona ŝtipa ŝtupo
Inner Desert Sandstone Block Stair=Interna dezerta ŝablŝtona brika ŝtupo
Outer Desert Sandstone Block Stair=Ekstera dezerta ŝablŝtona brika ŝtupo
Desert Sandstone Block Slab=Dezerta ŝablŝtona ŝtipa plato
Silver Sandstone Stair=Arĝenta ŝablŝtona ŝtupo
Inner Silver Sandstone Stair=Interna arĝenta ŝablŝtona ŝtupo
Outer Silver Sandstone Stair=Ekstera arĝenta ŝablŝtona ŝtupo
Silver Sandstone Slab=Arĝenta ŝablŝtona plato
Silver Sandstone Brick Stair=Arĝenta ŝablŝtona brika ŝtupo
Inner Silver Sandstone Brick Stair=Interna arĝenta ŝablŝtona brika ŝtupo
Outer Silver Sandstone Brick Stair=Ekstera arĝenta ŝablŝtona brika ŝtupo
Silver Sandstone Brick Slab=Arĝenta ŝablŝtona brika plato
Silver Sandstone Block Stair=Arĝenta ŝablŝtona ŝtipa ŝtupo
Inner Silver Sandstone Block Stair=Interna arĝenta ŝablŝtona ŝtipa ŝtupo
Outer Silver Sandstone Block Stair=Ekstera arĝenta ŝablŝtona ŝtipa ŝtupo
Silver Sandstone Block Slab=Arĝenta ŝablŝtona ŝtipa plato
Obsidian Stair=Obsidiana ŝtupo
Inner Obsidian Stair=Interna obsidiana ŝtupo
Outer Obsidian Stair=Ekstera obsidiana ŝtupo
Obsidian Slab=Obsidiana plato
Obsidian Brick Stair=Obsidiana brika ŝtupo
Inner Obsidian Brick Stair=Interna obsidiana brika ŝtupo
Outer Obsidian Brick Stair=Ekstera obsidiana brika ŝtupo
Obsidian Brick Slab=Obsidiana brika plato
Obsidian Block Stair=Obsidiana ŝtipa ŝtupo
Inner Obsidian Block Stair=Interna obsidiana ŝtipa ŝtupo
Outer Obsidian Block Stair=Ekstera obsidiana ŝtipa ŝtupo
Obsidian Block Slab=Obsidiana ŝtipa plato
Brick Stair=Brika ŝtupo
Inner Brick Stair=Interna brika ŝtupo
Outer Brick Stair=Ekstera brika ŝtupo
Brick Slab=Brika plato
Steel Block Stair=Ŝtala ŝtipa ŝtupo
Inner Steel Block Stair=Interna ŝtala ŝtipa ŝtupo
Outer Steel Block Stair=Ekstera ŝtala ŝtipa ŝtupo
Steel Block Slab=Ŝtala ŝtipa plato
Tin Block Stair=Stana ŝtipa ŝtupo
Inner Tin Block Stair=Interna stana ŝtipa ŝtupo
Outer Tin Block Stair=Ekstera stana ŝtipa ŝtupo
Tin Block Slab=Stana ŝtipa plato
Copper Block Stair=Kupra ŝtipa ŝtupo
Inner Copper Block Stair=Interna kupra ŝtipa ŝtupo
Outer Copper Block Stair=Ekstera kupra ŝtipa ŝtupo
Copper Block Slab=Kupra ŝtipa plato
Bronze Block Stair=Bronza ŝtipa ŝtupo
Inner Bronze Block Stair=Interna bronza ŝtipa ŝtupo
Outer Bronze Block Stair=Ekstera bronza ŝtipa ŝtupo
Bronze Block Slab=Bronza ŝtipa plato
Gold Block Stair=Ora ŝtipa ŝtupo
Inner Gold Block Stair=Interna ora ŝtipa ŝtupo
Outer Gold Block Stair=Ekstera ora ŝtipa ŝtupo
Gold Block Slab=Ora ŝtipa plato
Ice Stair=Glacia ŝtupo
Inner Ice Stair=Interna glacia ŝtupo
Outer Ice Stair=Ekstera glacia ŝtupo
Ice Slab=Glacia plato
Snow Block Stair=Neĝa ŝtipa ŝtupo
Inner Snow Block Stair=Interna neĝa ŝtipa ŝtupo
Outer Snow Block Stair=Ekstera neĝa ŝtipa ŝtupo
Snow Block Slab=Neĝa ŝtipa plato

View File

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

View File

@ -159,6 +159,7 @@ local function entity_physics(pos, radius, drops)
local objs = minetest.get_objects_inside_radius(pos, radius)
for _, obj in pairs(objs) do
local obj_pos = obj:get_pos()
if obj_pos then
local dist = math.max(1, vector.distance(pos, obj_pos))
local damage = (4 / dist) * radius
@ -200,6 +201,7 @@ local function entity_physics(pos, radius, drops)
end
end
end
end
end
end
@ -625,7 +627,7 @@ function tnt.register_tnt(def)
groups = {dig_immediate = 2, mesecon = 2, tnt = 1, flammable = 5},
sounds = default.node_sound_wood_defaults(),
after_place_node = function(pos, placer)
if placer:is_player() then
if placer and placer:is_player() then
local meta = minetest.get_meta(pos)
meta:set_string("owner", placer:get_player_name())
end

View File

@ -1,4 +1,4 @@
# textdomain: tnt
Gun Powder=Pulvo
TNT Stick=Dinamita Bastono
TNT Stick=Dinamita bastono
TNT=Dinamito

View File

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

View File

@ -1,8 +1,8 @@
# textdomain: vessels
Empty Vessels Shelf=Malplena Vaza Plataĵo
Vessels Shelf (@1 items)=Vaza Plataĵo (@1 objektoj)
Vessels Shelf=Vaza Plataĵo
Empty Glass Bottle=Malplena Vitra Botelo
Empty Drinking Glass=Malplena Glaso
Empty Heavy Steel Bottle=Malplena Peza Ŝtala Botelo
Glass Fragments=Vitraj Eroj
Empty Vessels Shelf=Malplena vaza plataĵo
Vessels Shelf (@1 items)=Vaza plataĵo (@1 objektoj)
Vessels Shelf=Vaza plataĵo
Empty Glass Bottle=Malplena vitra botelo
Empty Drinking Glass=Malplena glaso
Empty Heavy Steel Bottle=Malplena peza ŝtala botelo
Glass Fragments=Vitraj eroj

View File

@ -1,8 +1,8 @@
# textdomain: vessels
Empty Vessels Shelf=Полка с Пустыми Сосудами
Vessels Shelf (@1 items)=Полка с Сосудами (@1 предметы)
Vessels Shelf=Полка с Сосудами
Empty Glass Bottle=Пустая Стеклянная Бутылка
Empty Drinking Glass=Пустой Стакан
Empty Heavy Steel Bottle=Пустая Стальная Бутылка
Glass Fragments=Стеклянные Осколки
Empty Vessels Shelf=Полка с пустыми сосудами
Vessels Shelf (@1 items)=Полка с сосудами (@1 штук)
Vessels Shelf=Полка с сосудами
Empty Glass Bottle=Пустая стеклянная бутылка
Empty Drinking Glass=Пустой стакан
Empty Heavy Steel Bottle=Пустая стальная бутылка
Glass Fragments=Стеклянные осколки

View File

@ -1,4 +1,4 @@
# textdomain: walls
Cobblestone Wall=Pavimŝtona Muro
Mossy Cobblestone Wall=Muska Pavimŝtona Muro
Desert Cobblestone Wall=Dezerta Pavimŝtona Muro
Cobblestone Wall=Pavimŝtona muro
Mossy Cobblestone Wall=Muska pavimŝtona muro
Desert Cobblestone Wall=Dezerta pavimŝtona muro

View File

@ -1,4 +1,4 @@
# textdomain: walls
Cobblestone Wall=Булыжниковая Ограда
Mossy Cobblestone Wall=Мшистая Булыжниковая Ограда
Desert Cobblestone Wall=Ограда Из Пустынного Булыжника
Cobblestone Wall=Стена из булыжника
Mossy Cobblestone Wall=Стена из замшелого булыжника
Desert Cobblestone Wall=Стена из пустынного булыжника

32
mods/weather/api.lua Normal file
View File

@ -0,0 +1,32 @@
local CYCLE = 8 -- Time period of cyclic clouds update in seconds
weather = {}
-- default implementation is empty
function weather.get(player)
return {}
end
local function do_update()
for _, player in ipairs(minetest.get_connected_players()) do
local params = weather.get(player)
assert(params ~= nil, "weather.get() must not return nil")
if params.clouds then
player:set_clouds(params.clouds)
end
if params.lighting then
player:set_lighting(params.lighting)
end
end
end
local function cyclic_update()
do_update()
minetest.after(CYCLE, cyclic_update)
end
minetest.after(0, cyclic_update)
-- Update on player join to instantly alter clouds from the default
minetest.register_on_joinplayer(function(player)
do_update()
end)

View File

@ -1,10 +1,13 @@
-- Always load the API
dofile(minetest.get_modpath(minetest.get_current_modname()) .. "/api.lua")
-- Disable by mapgen or setting
local mg_name = minetest.get_mapgen_setting("mg_name")
if minetest.settings:get_bool("enable_weather") == false then
return
end
local mg_name = minetest.get_mapgen_setting("mg_name")
if mg_name == "v6" or mg_name == "singlenode" then
-- set a default shadow intensity for mgv6 and singlenode
minetest.register_on_joinplayer(function(player)
@ -14,10 +17,9 @@ if mg_name == "v6" or mg_name == "singlenode" then
return
end
-- Parameters
-- Default implementation for noise based cloud appearance
local TSCALE = 600 -- Time scale of noise variation in seconds
local CYCLE = 8 -- Time period of cyclic clouds update in seconds
local np_density = {
offset = 0.5,
@ -59,30 +61,30 @@ local np_speedz = {
lacunarity = 2,
}
-- End parameters
-- Initialise noise objects to nil
local nobj_density = nil
local nobj_thickness = nil
local nobj_speedx = nil
local nobj_speedz = nil
-- Update clouds function
local function rangelim(value, lower, upper)
return math.min(math.max(value, lower), upper)
end
local os_time_0 = os.time()
local t_offset = math.random(0, 300000)
local t_offset
do
local meta = minetest.get_mod_storage()
if meta:contains("time_offset") then
t_offset = meta:get_int("time_offset")
else
-- Use random offset so not each new world behaves the same.
t_offset = math.random(0, 300000)
meta:set_int("time_offset", t_offset)
end
end
local function update_clouds()
-- Time in seconds.
-- Add random time offset to avoid identical behaviour each server session.
local time = os.difftime(os.time(), os_time_0) - t_offset
function weather.get(player)
-- Adjusted time in seconds
local time = math.floor(minetest.get_gametime() - t_offset)
nobj_density = nobj_density or minetest.get_perlin(np_density)
nobj_thickness = nobj_thickness or minetest.get_perlin(np_thickness)
@ -94,42 +96,28 @@ local function update_clouds()
local n_speedx = nobj_speedx:get_2d({x = time, y = 0}) -- -1 to 1
local n_speedz = nobj_speedz:get_2d({x = time, y = 0}) -- -1 to 1
for _, player in ipairs(minetest.get_connected_players()) do
-- Fallback to mid-value 50 for very old worlds
local humid = minetest.get_humidity(player:get_pos()) or 50
-- Default and classic density value is 0.4, make this happen
-- at humidity midvalue 50 when n_density is at midvalue 0.5.
-- density_max = 0.25 at humid = 0.
-- density_max = 0.8 at humid = 50.
-- density_max = 1.35 at humid = 100.
local density_max = 0.8 + ((humid - 50) / 50) * 0.55
local density = rangelim(density_max, 0.2, 1.0) * n_density
player:set_clouds({
-- Range limit density_max to always have occasional
-- small scattered clouds at extreme low humidity.
-- Fallback to mid-value 50 for very old worlds
local humid = minetest.get_humidity(player:get_pos()) or 50
-- Default and classic density value is 0.4, make this happen
-- at humidity midvalue 50 when n_density is at midvalue 0.5.
-- density_max = 0.25 at humid = 0.
-- density_max = 0.8 at humid = 50.
-- density_max = 1.35 at humid = 100.
local density_max = 0.8 + ((humid - 50) / 50) * 0.55
-- Range limit density_max to always have occasional
-- small scattered clouds at extreme low humidity.
local density = rangelim(density_max, 0.2, 1.0) * n_density
return {
clouds = {
density = density,
thickness = math.max(math.floor(
rangelim(32 * humid / 100, 8, 32) * n_thickness
), 2),
speed = {x = n_speedx * 4, z = n_speedz * 4},
})
-- now adjust the shadow intensity
player:set_lighting({ shadows = { intensity = 0.7 * (1 - density) } })
end
},
lighting = {
shadows = { intensity = 0.7 * (1 - density) }
}
}
end
local function cyclic_update()
update_clouds()
minetest.after(CYCLE, cyclic_update)
end
minetest.after(0, cyclic_update)
-- Update on player join to instantly alter clouds from the default
minetest.register_on_joinplayer(function(player)
update_clouds()
end)

View File

@ -1,16 +1,16 @@
# textdomain: wool
White Wool=Blanka Lano
Grey Wool=Griza Lano
Dark Grey Wool=Malhela Griza Lano
Black Wool=Nigra Lano
Violet Wool=Violkolora Lano
Blue Wool=Blua Lano
Cyan Wool=Bluverda Lano
Dark Green Wool=Malhela Verda Lano
Green Wool=Verda Lano
Yellow Wool=Flava Lano
Brown Wool=Bruna Lano
Orange Wool=Oranĝkolora Lano
Red Wool=Ruĝa Lano
Magenta Wool=Fuksina Lano
Pink Wool=Rozkolora Lano
White Wool=Blanka lano
Grey Wool=Griza lano
Dark Grey Wool=Malhela griza lano
Black Wool=Nigra lano
Violet Wool=Violkolora lano
Blue Wool=Blua lano
Cyan Wool=Bluverda lano
Dark Green Wool=Malhela verda lano
Green Wool=Verda lano
Yellow Wool=Flava lano
Brown Wool=Bruna lano
Orange Wool=Oranĝkolora lano
Red Wool=Ruĝa lano
Magenta Wool=Fuksina lano
Pink Wool=Rozkolora lano

View File

@ -0,0 +1,16 @@
# textdomain: wool
White Wool=Tecido Branco
Grey Wool=Tecido Cinza
Dark Grey Wool=Tecido Cinza-escuro
Black Wool=Tecido Preto
Violet Wool=Tecido Violeta
Blue Wool=Tecido Azul
Cyan Wool=Tecido Ciano
Dark Green Wool=Tecido Verde-escuro
Green Wool=Tecido Verde
Yellow Wool=Tecido Amarelo
Brown Wool=Tecido Marrom
Orange Wool=Tecido Laranja
Red Wool=Tecido Vermelho
Magenta Wool=Tecido Magenta
Pink Wool=Tecido Rosa

View File

@ -1,16 +1,16 @@
# textdomain: wool
White Wool=Lã Branca
Grey Wool= Cinza
Dark Grey Wool= Cinza-escuro
Black Wool=Lã Preta
Violet Wool= Violeta
Blue Wool= Azul
Cyan Wool= Ciano
Dark Green Wool= Verde-escuro
Green Wool= Verde
Yellow Wool=Lã Amarela
Brown Wool= Marrom
Orange Wool= Laranja
Red Wool=Lã Vermelha
Magenta Wool= Magenta
Pink Wool= Rosa
White Wool=Tecido Branco
Grey Wool=Tecido Cinza
Dark Grey Wool=Tecido Cinza-escuro
Black Wool=Tecido Preto
Violet Wool=Tecido Violeta
Blue Wool=Tecido Azul
Cyan Wool=Tecido Ciano
Dark Green Wool=Tecido Verde-escuro
Green Wool=Tecido Verde
Yellow Wool=Tecido Amarelo
Brown Wool=Tecido Marrom
Orange Wool=Tecido Laranja
Red Wool=Tecido Vermelho
Magenta Wool=Tecido Magenta
Pink Wool=Tecido Rosa

View File

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

View File

@ -1,6 +1,6 @@
# textdomain: xpanes
Glass Pane=Vitra Vitraĵo
Obsidian Glass Pane=Obsidiana Vitra Vitraĵo
Steel Bars=Ŝtalaj Baraĵoj
Steel Bar Door=Ŝtala Baraĵa Pordo
Steel Bar Trapdoor=Ŝtala Baraĵa Plankpordo
Glass Pane=Vitra vitraĵo
Obsidian Glass Pane=Obsidiana vitra vitraĵo
Steel Bars=Ŝtalaj baraĵoj
Steel Bar Door=Ŝtala baraĵa pordo
Steel Bar Trapdoor=Ŝtala baraĵa plankpordo

View File

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

View File

@ -2045,9 +2045,9 @@ mts_save("aspen_log", {
-- Large cactus
local C = {name = "default:cactus", prob = 255, param2 = 20}
local R = {name = "default:cactus", prob = 255, param2 = 20, force_place = true}
local E = {name = "default:cactus", prob = 127, param2 = 20}
local C = {name = "default:cactus", prob = 255}
local R = {name = "default:cactus", prob = 255, force_place = true}
local E = {name = "default:cactus", prob = 127}
mts_save("large_cactus", {
size = {x = 5, y = 7, z = 5},

2
utils/test/minetest.conf Normal file
View File

@ -0,0 +1,2 @@
minetest_game_smoke_test = true
random_mod_load_order = true

19
utils/test/run.sh Executable file
View File

@ -0,0 +1,19 @@
#!/bin/bash -e
world=$(mktemp -d)
trap 'rm -rf "$world" || :' EXIT
[ -f game.conf ] || { echo "Must be run in game root folder." >&2; exit 1; }
chmod -R 777 "$world" # container uses unprivileged user inside
vol=(
-v "$PWD/utils/test/minetest.conf":/etc/minetest/minetest.conf
--tmpfs /var/lib/minetest/.minetest
-v "$PWD":/var/lib/minetest/.minetest/games/minetest_game
-v "$world":/var/lib/minetest/.minetest/world
)
[ -z "$DOCKER_IMAGE" ] && DOCKER_IMAGE="ghcr.io/minetest/minetest:master"
docker run --rm -i "${vol[@]}" "$DOCKER_IMAGE" --config /etc/minetest/minetest.conf --gameid minetest
test -f "$world/map.sqlite" || exit 1
exit 0