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

View File

@ -324,7 +324,7 @@ Allows creation of new fences with "fencelike" drawtype.
name = "default:fence_wood", name = "default:fence_wood",
description = "Wooden Fence", description = "Wooden Fence",
texture = "default_wood.png", 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}, groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults(), 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) -- ^ Always provide a plant texture for each step, format: modname_plantname_i.png (i = stepnumber)
minlight = 13, -- Minimum light to grow minlight = 13, -- Minimum light to grow
maxlight = default.LIGHT_MAX -- Maximum 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 * `name` Player you wish to teleport to their home position
* return value: false if player cannot be sent home, otherwise true * 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 Sfinv API
--------- ---------
@ -1169,3 +1199,29 @@ the log.
* after logging the action, the original callback (if any) is called * after logging the action, the original callback (if any) is called
* `def` See [Node definition] * `def` See [Node definition]
* `name` Description of the node in the log message * `name` Description of the node in the log message
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 @@
-- Removes a node without calling on on_destruct()
local reverse = true -- 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 function destruct_bed(pos, n)
local node = minetest.get_node(pos) local node = minetest.get_node(pos)
@ -12,15 +17,11 @@ local function destruct_bed(pos, n)
local dir = minetest.facedir_to_dir(node.param2) local dir = minetest.facedir_to_dir(node.param2)
other = vector.add(pos, dir) other = vector.add(pos, dir)
end end
local oname = minetest.get_node(other).name
if reverse then if minetest.get_item_group(oname, "bed") ~= 0 then
reverse = not reverse remove_no_destruct(other)
minetest.remove_node(other)
minetest.check_for_falling(other)
beds.remove_spawns_at(pos) beds.remove_spawns_at(pos)
beds.remove_spawns_at(other) beds.remove_spawns_at(other)
else
reverse = not reverse
end end
end end
@ -113,6 +114,7 @@ function beds.register_bed(name, def)
on_rotate = function(pos, node, user, _, new_param2) on_rotate = function(pos, node, user, _, new_param2)
local dir = minetest.facedir_to_dir(node.param2) local dir = minetest.facedir_to_dir(node.param2)
-- old position of the top node
local p = vector.add(pos, dir) local p = vector.add(pos, dir)
local node2 = minetest.get_node_or_nil(p) local node2 = minetest.get_node_or_nil(p)
if not node2 or minetest.get_item_group(node2.name, "bed") ~= 2 or 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 if new_param2 % 32 > 3 then
return false return false
end end
-- new position of the top node
local newp = vector.add(pos, minetest.facedir_to_dir(new_param2)) local newp = vector.add(pos, minetest.facedir_to_dir(new_param2))
local node3 = minetest.get_node_or_nil(newp) local node3 = minetest.get_node_or_nil(newp)
local node_def = node3 and minetest.registered_nodes[node3.name] local node_def = node3 and minetest.registered_nodes[node3.name]
@ -137,8 +140,7 @@ function beds.register_bed(name, def)
return false return false
end end
node.param2 = new_param2 node.param2 = new_param2
-- do not remove_node here - it will trigger destroy_bed() remove_no_destruct(p)
minetest.set_node(p, {name = "air"})
minetest.set_node(pos, node) minetest.set_node(pos, node)
minetest.set_node(newp, {name = name .. "_top", param2 = new_param2}) minetest.set_node(newp, {name = name .. "_top", param2 = new_param2})
return true return true

View File

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

View File

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

View File

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

View File

@ -1,8 +1,8 @@
# textdomain: beds # textdomain: beds
Fancy Bed=Детализированная Кровать Fancy Bed=Красивая кровать
Simple Bed=Обычная Кровать Simple Bed=Простая кровать
This bed is already occupied!=Эта кровать уже занята! This bed is already occupied!=Эта кровать уже занята!
You have to stop moving before going to bed!=Нельзя воспользоваться кроватью на ходу! You have to stop moving before going to bed!=Вам нужно перестать двигаться чтобы лечь!
Good morning.=Доброе утро. Good morning.=Доброе утро.
@1 of @2 players are in bed=@1 из @2 игроков в кровати @1 of @2 players are in bed=@1 из @2 игроков в кровати
Force night skip=Пропустить ночь Force night skip=Пропустить ночь

View File

@ -1,3 +1,3 @@
name = beds name = beds
description = Minetest Game mod: 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 # textdomain: binoculars
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 return false
end 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 = local bones_formspec =
"size[8,9]" .. "size[8,9]" ..
"list[current_name;main;0,0.3;8,4;]" .. "list[current_name;main;0,0.3;8,4;]" ..
@ -87,6 +108,11 @@ local bones_def = {
return return
end end
if not player:is_player() then
drop_contents(pos)
return
end
if minetest.get_meta(pos):get_string("infotext") == "" then if minetest.get_meta(pos):get_string("infotext") == "" then
return return
end end
@ -171,17 +197,6 @@ local function may_replace(pos, player)
return node_definition.buildable_to return node_definition.buildable_to
end 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" } local player_inventory_lists = { "main", "craft" }
bones.player_inventory_lists = player_inventory_lists bones.player_inventory_lists = player_inventory_lists

View File

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

View File

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

View File

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

View File

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

View File

@ -3,6 +3,9 @@
-- Load support for MT game translation. -- Load support for MT game translation.
local S = minetest.get_translator("butterflies") 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 -- register butterflies
local butter_list = { local butter_list = {
{"white", S("White Butterfly")}, {"white", S("White Butterfly")},
@ -33,24 +36,15 @@ for i in ipairs (butter_list) do
sunlight_propagates = true, sunlight_propagates = true,
buildable_to = true, buildable_to = true,
walkable = false, walkable = false,
pointable = pointable_compat,
groups = {catchable = 1}, groups = {catchable = 1},
selection_box = { selection_box = {
type = "fixed", type = "fixed",
fixed = {-0.1, -0.1, -0.1, 0.1, 0.1, 0.1}, fixed = {-0.1, -0.1, -0.1, 0.1, 0.1, 0.1},
}, },
floodable = true, floodable = true,
on_place = function(itemstack, placer, pointed_thing) on_construct = function(pos)
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) minetest.get_node_timer(pos):start(1)
itemstack:take_item()
end
return itemstack
end, end,
on_timer = function(pos, elapsed) on_timer = function(pos, elapsed)
if minetest.get_node_light(pos) < 11 then if minetest.get_node_light(pos) < 11 then
@ -72,18 +66,8 @@ for i in ipairs (butter_list) do
drop = "", drop = "",
groups = {not_in_creative_inventory = 1}, groups = {not_in_creative_inventory = 1},
floodable = true, floodable = true,
on_place = function(itemstack, placer, pointed_thing) on_construct = function(pos)
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) minetest.get_node_timer(pos):start(1)
itemstack:take_item()
end
return itemstack
end, end,
on_timer = function(pos, elapsed) on_timer = function(pos, elapsed)
if minetest.get_node_light(pos) >= 11 then if minetest.get_node_light(pos) >= 11 then

View File

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

View File

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

View File

@ -1,4 +1,4 @@
# textdomain: butterflies # textdomain: butterflies
White Butterfly=Белая Бабочка White Butterfly=Белая бабочка
Red Butterfly=Красная Бабочка Red Butterfly=Красная бабочка
Violet 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}, minetest.sound_play({name = "default_place_node_metal", gain = 0.5},
{pos = pointed_thing.above}, true) {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() itemstack:take_item()
end end
return itemstack return itemstack

View File

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

View File

@ -2,5 +2,5 @@
Cart=Вагонетка Cart=Вагонетка
(Sneak+Click to pick up)=(Пригнитесь и кликните по вагонетке, чтобы забрать) (Sneak+Click to pick up)=(Пригнитесь и кликните по вагонетке, чтобы забрать)
Rail=Рельсы Rail=Рельсы
Powered Rail=Запитанные рельсы Powered Rail=Ускоряющие рельсы
Brake 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_prev;" .. esc(S("Previous page")) .. "]" ..
"tooltip[creative_next;" .. esc(S("Next page")) .. "]" .. "tooltip[creative_next;" .. esc(S("Next page")) .. "]" ..
"listring[current_player;main]" .. "listring[current_player;main]" ..
"field_enter_after_edit[creative_filter;true]" ..
"field_close_on_enter[creative_filter;false]" .. "field_close_on_enter[creative_filter;false]" ..
"field[0.3,4.2;2.8,1.2;creative_filter;;" .. esc(inv.filter) .. "]" .. "field[0.3,4.2;2.8,1.2;creative_filter;;" .. esc(inv.filter) .. "]" ..
"listring[detached:creative_" .. player_name .. ";main]" .. "listring[detached:creative_" .. player_name .. ";main]" ..

View File

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

View File

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

View File

@ -2,149 +2,149 @@
-- Sounds -- Sounds
-- --
function default.node_sound_defaults(table) function default.node_sound_defaults(tbl)
table = table or {} tbl = tbl or {}
table.footstep = table.footstep or tbl.footstep = tbl.footstep or
{name = "", gain = 1.0} {name = "", gain = 1.0}
table.dug = table.dug or tbl.dug = tbl.dug or
{name = "default_dug_node", gain = 0.25} {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} {name = "default_place_node_hard", gain = 1.0}
return table return tbl
end end
function default.node_sound_stone_defaults(table) function default.node_sound_stone_defaults(tbl)
table = table or {} tbl = tbl or {}
table.footstep = table.footstep or tbl.footstep = tbl.footstep or
{name = "default_hard_footstep", gain = 0.2} {name = "default_hard_footstep", gain = 0.2}
table.dug = table.dug or tbl.dug = tbl.dug or
{name = "default_hard_footstep", gain = 1.0} {name = "default_hard_footstep", gain = 1.0}
default.node_sound_defaults(table) default.node_sound_defaults(tbl)
return table return tbl
end end
function default.node_sound_dirt_defaults(table) function default.node_sound_dirt_defaults(tbl)
table = table or {} tbl = tbl or {}
table.footstep = table.footstep or tbl.footstep = tbl.footstep or
{name = "default_dirt_footstep", gain = 0.25} {name = "default_dirt_footstep", gain = 0.25}
table.dig = table.dig or tbl.dig = tbl.dig or
{name = "default_dig_crumbly", gain = 0.4} {name = "default_dig_crumbly", gain = 0.4}
table.dug = table.dug or tbl.dug = tbl.dug or
{name = "default_dirt_footstep", gain = 1.0} {name = "default_dirt_footstep", gain = 1.0}
table.place = table.place or tbl.place = tbl.place or
{name = "default_place_node", gain = 1.0} {name = "default_place_node", gain = 1.0}
default.node_sound_defaults(table) default.node_sound_defaults(tbl)
return table return tbl
end end
function default.node_sound_sand_defaults(table) function default.node_sound_sand_defaults(tbl)
table = table or {} tbl = tbl or {}
table.footstep = table.footstep or tbl.footstep = tbl.footstep or
{name = "default_sand_footstep", gain = 0.05} {name = "default_sand_footstep", gain = 0.05}
table.dug = table.dug or tbl.dug = tbl.dug or
{name = "default_sand_footstep", gain = 0.15} {name = "default_sand_footstep", gain = 0.15}
table.place = table.place or tbl.place = tbl.place or
{name = "default_place_node", gain = 1.0} {name = "default_place_node", gain = 1.0}
default.node_sound_defaults(table) default.node_sound_defaults(tbl)
return table return tbl
end end
function default.node_sound_gravel_defaults(table) function default.node_sound_gravel_defaults(tbl)
table = table or {} tbl = tbl or {}
table.footstep = table.footstep or tbl.footstep = tbl.footstep or
{name = "default_gravel_footstep", gain = 0.25} {name = "default_gravel_footstep", gain = 0.25}
table.dig = table.dig or tbl.dig = tbl.dig or
{name = "default_gravel_dig", gain = 0.35} {name = "default_gravel_dig", gain = 0.35}
table.dug = table.dug or tbl.dug = tbl.dug or
{name = "default_gravel_dug", gain = 1.0} {name = "default_gravel_dug", gain = 1.0}
table.place = table.place or tbl.place = tbl.place or
{name = "default_place_node", gain = 1.0} {name = "default_place_node", gain = 1.0}
default.node_sound_defaults(table) default.node_sound_defaults(tbl)
return table return tbl
end end
function default.node_sound_wood_defaults(table) function default.node_sound_wood_defaults(tbl)
table = table or {} tbl = tbl or {}
table.footstep = table.footstep or tbl.footstep = tbl.footstep or
{name = "default_wood_footstep", gain = 0.15} {name = "default_wood_footstep", gain = 0.15}
table.dig = table.dig or tbl.dig = tbl.dig or
{name = "default_dig_choppy", gain = 0.4} {name = "default_dig_choppy", gain = 0.4}
table.dug = table.dug or tbl.dug = tbl.dug or
{name = "default_wood_footstep", gain = 1.0} {name = "default_wood_footstep", gain = 1.0}
default.node_sound_defaults(table) default.node_sound_defaults(tbl)
return table return tbl
end end
function default.node_sound_leaves_defaults(table) function default.node_sound_leaves_defaults(tbl)
table = table or {} tbl = tbl or {}
table.footstep = table.footstep or tbl.footstep = tbl.footstep or
{name = "default_grass_footstep", gain = 0.45} {name = "default_grass_footstep", gain = 0.45}
table.dug = table.dug or tbl.dug = tbl.dug or
{name = "default_grass_footstep", gain = 0.7} {name = "default_grass_footstep", gain = 0.7}
table.place = table.place or tbl.place = tbl.place or
{name = "default_place_node", gain = 1.0} {name = "default_place_node", gain = 1.0}
default.node_sound_defaults(table) default.node_sound_defaults(tbl)
return table return tbl
end end
function default.node_sound_glass_defaults(table) function default.node_sound_glass_defaults(tbl)
table = table or {} tbl = tbl or {}
table.footstep = table.footstep or tbl.footstep = tbl.footstep or
{name = "default_glass_footstep", gain = 0.3} {name = "default_glass_footstep", gain = 0.3}
table.dig = table.dig or tbl.dig = tbl.dig or
{name = "default_glass_footstep", gain = 0.5} {name = "default_glass_footstep", gain = 0.5}
table.dug = table.dug or tbl.dug = tbl.dug or
{name = "default_break_glass", gain = 1.0} {name = "default_break_glass", gain = 1.0}
default.node_sound_defaults(table) default.node_sound_defaults(tbl)
return table return tbl
end end
function default.node_sound_ice_defaults(table) function default.node_sound_ice_defaults(tbl)
table = table or {} tbl = tbl or {}
table.footstep = table.footstep or tbl.footstep = tbl.footstep or
{name = "default_ice_footstep", gain = 0.15} {name = "default_ice_footstep", gain = 0.15}
table.dig = table.dig or tbl.dig = tbl.dig or
{name = "default_ice_dig", gain = 0.5} {name = "default_ice_dig", gain = 0.5}
table.dug = table.dug or tbl.dug = tbl.dug or
{name = "default_ice_dug", gain = 0.5} {name = "default_ice_dug", gain = 0.5}
default.node_sound_defaults(table) default.node_sound_defaults(tbl)
return table return tbl
end end
function default.node_sound_metal_defaults(table) function default.node_sound_metal_defaults(tbl)
table = table or {} tbl = tbl or {}
table.footstep = table.footstep or tbl.footstep = tbl.footstep or
{name = "default_metal_footstep", gain = 0.2} {name = "default_metal_footstep", gain = 0.2}
table.dig = table.dig or tbl.dig = tbl.dig or
{name = "default_dig_metal", gain = 0.5} {name = "default_dig_metal", gain = 0.5}
table.dug = table.dug or tbl.dug = tbl.dug or
{name = "default_dug_metal", gain = 0.5} {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} {name = "default_place_node_metal", gain = 0.5}
default.node_sound_defaults(table) default.node_sound_defaults(tbl)
return table return tbl
end end
function default.node_sound_water_defaults(table) function default.node_sound_water_defaults(tbl)
table = table or {} tbl = tbl or {}
table.footstep = table.footstep or tbl.footstep = tbl.footstep or
{name = "default_water_footstep", gain = 0.2} {name = "default_water_footstep", gain = 0.2}
default.node_sound_defaults(table) default.node_sound_defaults(tbl)
return table return tbl
end end
function default.node_sound_snow_defaults(table) function default.node_sound_snow_defaults(tbl)
table = table or {} tbl = tbl or {}
table.footstep = table.footstep or tbl.footstep = tbl.footstep or
{name = "default_snow_footstep", gain = 0.2} {name = "default_snow_footstep", gain = 0.2}
table.dig = table.dig or tbl.dig = tbl.dig or
{name = "default_snow_footstep", gain = 0.3} {name = "default_snow_footstep", gain = 0.3}
table.dug = table.dug or tbl.dug = tbl.dug or
{name = "default_snow_footstep", gain = 0.3} {name = "default_snow_footstep", gain = 0.3}
table.place = table.place or tbl.place = tbl.place or
{name = "default_place_node", gain = 1.0} {name = "default_place_node", gain = 1.0}
default.node_sound_defaults(table) default.node_sound_defaults(tbl)
return table return tbl
end end
@ -293,15 +293,32 @@ minetest.register_abm({
-- Dig upwards -- 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 if digger == nil then return end
local np = {x = pos.x, y = pos.y + 1, z = pos.z} max_height = max_height or 100
local nn = minetest.get_node(np)
if nn.name == node.name then in_dig_up = true
minetest.node_dig(np, nn, digger) 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 end
if not minetest.node_dig(up_pos, up_node, digger) then
break
end
end
in_dig_up = false
end 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 -- Fence registration helper
@ -309,14 +326,6 @@ end
local fence_collision_extra = minetest.settings:get_bool("enable_fence_tall") and 3/8 or 0 local fence_collision_extra = minetest.settings:get_bool("enable_fence_tall") and 3/8 or 0
function default.register_fence(name, def) 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 .. local fence_texture = "default_fence_overlay.png^" .. def.texture ..
"^default_fence_overlay.png^[makealpha:255,126,126" "^default_fence_overlay.png^[makealpha:255,126,126"
-- Allow almost everything to be overridden -- 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 -- Always add to the fence group, even if no group provided
def.groups.fence = 1 def.groups.fence = 1
local material = def.material
def.texture = nil def.texture = nil
def.material = nil def.material = nil
minetest.register_node(name, def) 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 end
@ -376,15 +397,6 @@ end
-- --
function default.register_fence_rail(name, def) 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 .. local fence_rail_texture = "default_fence_rail_overlay.png^" .. def.texture ..
"^default_fence_rail_overlay.png^[makealpha:255,126,126" "^default_fence_rail_overlay.png^[makealpha:255,126,126"
-- Allow almost everything to be overridden -- 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 -- Always add to the fence group, even if no group provided
def.groups.fence = 1 def.groups.fence = 1
local material = def.material
def.texture = nil def.texture = nil
def.material = nil def.material = nil
minetest.register_node(name, def) 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 end
-- --
@ -444,15 +469,6 @@ end
-- --
function default.register_mesepost(name, def) 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 = 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" local post_texture_dark = def.texture .. "^default_mese_post_light_side_dark.png^[makealpha:0,0,0"
-- Allow almost everything to be overridden -- Allow almost everything to be overridden
@ -480,10 +496,23 @@ function default.register_mesepost(name, def)
end end
end end
local material = def.material
def.texture = nil def.texture = nil
def.material = nil def.material = nil
minetest.register_node(name, def) 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 end
-- --
@ -791,7 +820,7 @@ function default.can_interact_with_node(player, pos)
local key_meta = item:get_meta() local key_meta = item:get_meta()
if key_meta:get_string("secret") == "" then 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 if key_oldmeta == "" or not minetest.parse_json(key_oldmeta) then
return false return false
end end

View File

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

View File

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

View File

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

View File

@ -1985,8 +1985,8 @@ minetest.register_node("default:sand_with_kelp", {
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
-- Call on_rightclick if the pointed node defines it -- Call on_rightclick if the pointed node defines it
if pointed_thing.type == "node" and placer and if pointed_thing.type == "node" and not (placer and placer:is_player()
not placer:get_player_control().sneak then and placer:get_player_control().sneak) then
local node_ptu = minetest.get_node(pointed_thing.under) local node_ptu = minetest.get_node(pointed_thing.under)
local def_ptu = minetest.registered_nodes[node_ptu.name] local def_ptu = minetest.registered_nodes[node_ptu.name]
if def_ptu and def_ptu.on_rightclick then 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) 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 return itemstack
end 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_under = pointed_thing.under
local pos_above = pointed_thing.above local pos_above = pointed_thing.above
local node_under = minetest.get_node(pos_under) local node_under = minetest.get_node(pos_under)
local def_under = minetest.registered_nodes[node_under.name] 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, return def_under.on_rightclick(pos_under, node_under,
placer, itemstack, pointed_thing) or itemstack placer, itemstack, pointed_thing)
end end
if node_under.name ~= "default:coral_skeleton" or 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 if minetest.is_protected(pos_under, player_name) or
minetest.is_protected(pos_above, player_name) then 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) minetest.record_protection_violation(pos_under, player_name)
return itemstack return itemstack
end end

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,28 +1,28 @@
# textdomain: farming # textdomain: farming
Hoe=Sarkilo Hoe=Sarkilo
Seed=Semo Seed=Semo
Wooden Hoe=Ligna Sarkilo Wooden Hoe=Ligna sarkilo
Stone Hoe=Ŝtona Sarkilo Stone Hoe=Ŝtona sarkilo
Steel Hoe=Ŝtala Sarkilo Steel Hoe=Ŝtala sarkilo
Bronze Hoe=Bronza Sarkilo Bronze Hoe=Bronza sarkilo
Mese Hoe=Mesea Sarkilo Mese Hoe=Mesea sarkilo
Diamond Hoe=Diamanta Sarkilo Diamond Hoe=Diamanta sarkilo
Wheat Seed=Tritika Semo Wheat Seed=Tritika semo
Wheat=Tritiko Wheat=Tritiko
Flour=Faruno Flour=Faruno
Bread=Pano Bread=Pano
Cotton Seed=Katuna Semo Cotton Seed=Katuna semo
Cotton=Katuno Cotton=Katuno
String=Ŝnuro String=Ŝnuro
Soil=Tero Soil=Tero
Wet Soil=Malseka Tero Wet Soil=Malseka tero
Savanna Soil=Savana Tero Savanna Soil=Savana tero
Wet Savanna Soil=Malseka Savana Tero Wet Savanna Soil=Malseka savana tero
Desert Sand Soil=Dezerta Sablo Tero Desert Sand Soil=Dezerta sablo tero
Wet Desert Sand Soil=Malseka Dezerta Sablo Tero Wet Desert Sand Soil=Malseka dezerta sablo tero
Straw=Pajlo Straw=Pajlo
Straw Stair=Pajla Ŝtupo Straw Stair=Pajla ŝtupo
Inner Straw Stair=Interna Pajla Ŝtupo Inner Straw Stair=Interna pajla ŝtupo
Outer Straw Stair=Ekstera Pajla Ŝtupo Outer Straw Stair=Ekstera pajla ŝtupo
Straw Slab=Pajla Plato Straw Slab=Pajla plato
Wild Cotton=Sovaĝa Kotonujo 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 # textdomain: farming
Hoe=Мотыга Hoe=Мотыга
Seed=Семя Seed=Семена
Wooden Hoe=Деревянная Мотыга Wooden Hoe=Деревянная мотыга
Stone Hoe=Каменная Мотыга Stone Hoe=Каменная мотыга
Steel Hoe=Стальная Мотыга Steel Hoe=Стальная мотыга
Bronze Hoe=Бронзовая Мотыга Bronze Hoe=Бронзовая мотыга
Mese Hoe=Месе Мотыга Mese Hoe=Мезовая мотыга
Diamond Hoe=Алмазная Мотыга Diamond Hoe=Алмазная мотыга
Wheat Seed=Семена Пшеницы Wheat Seed=Семена пшеницы
Wheat=Пшеница Wheat=Пшеница
Flour=Мука Flour=Мука
Bread=Хлеб Bread=Хлеб
Cotton Seed=Семена Хлопчатника Cotton Seed=Семена хлопчатника
Cotton=Хлопок Cotton=Хлопок
String=Нить String=Нить
Soil=Почва Soil=Почва
Wet Soil=Влажная Почва Wet Soil=Влажная почва
Savanna Soil=Саванная Почва Savanna Soil=Саванная почва
Wet Savanna Soil=Влажная Саванная Почва Wet Savanna Soil=Влажная саванная почва
Desert Sand Soil=Пустынная Песчаная Почва Desert Sand Soil=Пустынная песчаная почва
Wet Desert Sand Soil=Влажная Пустынная Песчаная Почва Wet Desert Sand Soil=Влажная пустынная песчаная почва
Straw=Солома Straw=Солома
Straw Stair=Соломенная Ступень Straw Stair=Соломенные ступени
Inner Straw Stair=Угловая Соломенная Ступень (Внутренний Угол) Inner Straw Stair=Внутренние соломенные ступени
Outer Straw Stair=Угловая Соломенная Ступень (Внешний Угол) Outer Straw Stair=Внешние соломенные ступени
Straw Slab=Соломенная Плита Straw Slab=Соломенная плита
Wild Cotton=Неокультуренный Хлопчатник Wild Cotton=Дикий хлопчатник
##### not used anymore #####
Dry Soil=Сухая Почва
Wet Dry Soil=Влажная Сухая Почва

View File

@ -101,13 +101,18 @@ minetest.register_tool("fire:flint_and_steel", {
return return
end end
if minetest.is_protected(pointed_thing.under, player_name) then 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 return
end end
if nodedef.on_ignite then if nodedef.on_ignite then
nodedef.on_ignite(pointed_thing.under, user) nodedef.on_ignite(pointed_thing.under, user)
elseif minetest.get_item_group(node_under, "flammable") >= 1 elseif minetest.get_item_group(node_under, "flammable") >= 1
and minetest.get_node(pointed_thing.above).name == "air" then 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"}) minetest.set_node(pointed_thing.above, {name = "fire:basic_flame"})
end end
end end

View File

@ -1,4 +1,4 @@
# textdomain: fire # textdomain: fire
Fire=Fajro Fire=Fajro
Permanent Fire=Ĉiama Fajro Permanent Fire=Ĉiama fajro
Flint and Steel=Siliko kaj Ŝtalo 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 # textdomain: fire
Fire=Fogo Fire=Fogo
Permanent Fire=Fogo Permanente Permanent Fire=Fogo Permanente
Flint and Steel=Sílex e Fogo Flint and Steel=Pederneira Primitiva

View File

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

View File

@ -3,6 +3,8 @@
-- Load support for MT game translation. -- Load support for MT game translation.
local S = minetest.get_translator("fireflies") 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", { minetest.register_node("fireflies:firefly", {
description = S("Firefly"), description = S("Firefly"),
@ -23,6 +25,7 @@ minetest.register_node("fireflies:firefly", {
sunlight_propagates = true, sunlight_propagates = true,
buildable_to = true, buildable_to = true,
walkable = false, walkable = false,
pointable = pointable_compat,
groups = {catchable = 1}, groups = {catchable = 1},
selection_box = { selection_box = {
type = "fixed", type = "fixed",
@ -30,18 +33,8 @@ minetest.register_node("fireflies:firefly", {
}, },
light_source = 6, light_source = 6,
floodable = true, floodable = true,
on_place = function(itemstack, placer, pointed_thing) on_construct = function(pos)
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) minetest.get_node_timer(pos):start(1)
itemstack:take_item()
end
return itemstack
end, end,
on_timer = function(pos, elapsed) on_timer = function(pos, elapsed)
if minetest.get_node_light(pos) > 11 then if minetest.get_node_light(pos) > 11 then
@ -65,18 +58,8 @@ minetest.register_node("fireflies:hidden_firefly", {
drop = "", drop = "",
groups = {not_in_creative_inventory = 1}, groups = {not_in_creative_inventory = 1},
floodable = true, floodable = true,
on_place = function(itemstack, placer, pointed_thing) on_construct = function(pos)
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) minetest.get_node_timer(pos):start(1)
itemstack:take_item()
end
return itemstack
end, end,
on_timer = function(pos, elapsed) on_timer = function(pos, elapsed)
if minetest.get_node_light(pos) <= 11 then if minetest.get_node_light(pos) <= 11 then
@ -91,27 +74,12 @@ minetest.register_node("fireflies:hidden_firefly", {
minetest.register_tool("fireflies:bug_net", { minetest.register_tool("fireflies:bug_net", {
description = S("Bug Net"), description = S("Bug Net"),
inventory_image = "fireflies_bugnet.png", inventory_image = "fireflies_bugnet.png",
on_use = function(itemstack, player, pointed_thing) pointabilities = {nodes = {["group:catchable"] = true}},
local player_name = player and player:get_player_name() or "" tool_capabilities = {
if not pointed_thing or pointed_thing.type ~= "node" or groupcaps = {
minetest.is_protected(pointed_thing.under, player_name) then catchable = { maxlevel = 1, uses = 256, times = { [1] = 0, [2] = 0, [3] = 0 } }
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
}) })
minetest.register_craft( { minetest.register_craft( {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -2,4 +2,4 @@
Key=Ŝlosilo Key=Ŝlosilo
Key to @1's @2=Ŝlosilo por la @2 de @1 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=Ключ
Key to @1's @2=Ключ к @2 от @1 Key to @1's @2=Ключ к @2 от @1
Skeleton Key=Ключ Скелета Skeleton Key=Заготовка ключа

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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") local mg_name = minetest.get_mapgen_setting("mg_name")
if mg_name == "v6" or mg_name == "singlenode" or if mg_name == "v6" or mg_name == "singlenode" then
minetest.settings:get("static_spawnpoint") or
minetest.settings:get_bool("engine_spawn") then
return return
end end
@ -23,27 +23,35 @@ local checks = 128 * 128
local pos = {x = 0, y = 8, z = 0} local pos = {x = 0, y = 8, z = 0}
-- Table of suitable biomes -- Table of suitable biomes and matching API function
local biome_ids = { local biome_ids = {}
minetest.get_biome_id("taiga"),
minetest.get_biome_id("coniferous_forest"), function spawn.add_suitable_biome(biome)
minetest.get_biome_id("deciduous_forest"), local id = minetest.get_biome_id(biome)
minetest.get_biome_id("grassland"), assert(id ~= nil)
minetest.get_biome_id("savanna"), 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 -- End of parameters
-------------------- --------------------
-- Direction table -- Direction table
local dirs = { local dirs = {
{x = 0, y = 0, z = 1}, vector.new(0, 0, 1),
{x = -1, y = 0, z = 0}, vector.new(-1, 0, 0),
{x = 0, y = 0, z = -1}, vector.new(0, 0, -1),
{x = 1, y = 0, z = 0}, 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) local spawn_limit = math.max(mapgen_limit - (chunksize + 1) * 16, 0)
--Functions -- Functions
----------- ------------
-- Get next position on square search spiral -- Get next position on square search spiral
@ -98,17 +106,13 @@ local function search()
for iter = 1, checks do for iter = 1, checks do
local biome_data = minetest.get_biome_data(pos) local biome_data = minetest.get_biome_data(pos)
-- Sometimes biome_data is nil -- Sometimes biome_data is nil
local biome = biome_data and biome_data.biome if biome_data and biome_ids[biome_data.biome] then
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) local spawn_y = minetest.get_spawn_level(pos.x, pos.z)
if spawn_y then if spawn_y then
spawn_pos = {x = pos.x, y = spawn_y, z = pos.z} spawn_pos = vector.new(pos.x, spawn_y, pos.z)
return true return true
end end
end end
end
pos = next_pos() pos = next_pos()
-- Check for position being outside world edge -- Check for position being outside world edge
@ -121,38 +125,11 @@ local function search()
end end
-- On new player spawn and player respawn function spawn.get_default_pos()
-- Search for spawn position once per server session
-- 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)
if not searched then if not searched then
success = search() success = search()
searched = true searched = true
end end
if success then return success and spawn_pos
player:set_pos(spawn_pos)
end
return success
end 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 name = spawn
description = Minetest Game mod: spawn description = Minetest Game mod: spawn
depends = default depends = default
optional_depends = beds

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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 -- Disable by mapgen or setting
local mg_name = minetest.get_mapgen_setting("mg_name")
if minetest.settings:get_bool("enable_weather") == false then if minetest.settings:get_bool("enable_weather") == false then
return return
end end
local mg_name = minetest.get_mapgen_setting("mg_name")
if mg_name == "v6" or mg_name == "singlenode" then if mg_name == "v6" or mg_name == "singlenode" then
-- set a default shadow intensity for mgv6 and singlenode -- set a default shadow intensity for mgv6 and singlenode
minetest.register_on_joinplayer(function(player) minetest.register_on_joinplayer(function(player)
@ -14,10 +17,9 @@ if mg_name == "v6" or mg_name == "singlenode" then
return return
end end
-- Parameters -- Default implementation for noise based cloud appearance
local TSCALE = 600 -- Time scale of noise variation in seconds local TSCALE = 600 -- Time scale of noise variation in seconds
local CYCLE = 8 -- Time period of cyclic clouds update in seconds
local np_density = { local np_density = {
offset = 0.5, offset = 0.5,
@ -59,30 +61,30 @@ local np_speedz = {
lacunarity = 2, lacunarity = 2,
} }
-- End parameters
-- Initialise noise objects to nil
local nobj_density = nil local nobj_density = nil
local nobj_thickness = nil local nobj_thickness = nil
local nobj_speedx = nil local nobj_speedx = nil
local nobj_speedz = nil local nobj_speedz = nil
-- Update clouds function
local function rangelim(value, lower, upper) local function rangelim(value, lower, upper)
return math.min(math.max(value, lower), upper) return math.min(math.max(value, lower), upper)
end end
local os_time_0 = os.time() local t_offset
local t_offset = math.random(0, 300000) 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() function weather.get(player)
-- Time in seconds. -- Adjusted time in seconds
-- Add random time offset to avoid identical behaviour each server session. local time = math.floor(minetest.get_gametime() - t_offset)
local time = os.difftime(os.time(), os_time_0) - t_offset
nobj_density = nobj_density or minetest.get_perlin(np_density) nobj_density = nobj_density or minetest.get_perlin(np_density)
nobj_thickness = nobj_thickness or minetest.get_perlin(np_thickness) nobj_thickness = nobj_thickness or minetest.get_perlin(np_thickness)
@ -94,7 +96,6 @@ local function update_clouds()
local n_speedx = nobj_speedx:get_2d({x = time, y = 0}) -- -1 to 1 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 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 -- Fallback to mid-value 50 for very old worlds
local humid = minetest.get_humidity(player:get_pos()) or 50 local humid = minetest.get_humidity(player:get_pos()) or 50
-- Default and classic density value is 0.4, make this happen -- Default and classic density value is 0.4, make this happen
@ -103,33 +104,20 @@ local function update_clouds()
-- density_max = 0.8 at humid = 50. -- density_max = 0.8 at humid = 50.
-- density_max = 1.35 at humid = 100. -- density_max = 1.35 at humid = 100.
local density_max = 0.8 + ((humid - 50) / 50) * 0.55 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 -- Range limit density_max to always have occasional
-- small scattered clouds at extreme low humidity. -- small scattered clouds at extreme low humidity.
local density = rangelim(density_max, 0.2, 1.0) * n_density
return {
clouds = {
density = density, density = density,
thickness = math.max(math.floor( thickness = math.max(math.floor(
rangelim(32 * humid / 100, 8, 32) * n_thickness rangelim(32 * humid / 100, 8, 32) * n_thickness
), 2), ), 2),
speed = {x = n_speedx * 4, z = n_speedz * 4}, speed = {x = n_speedx * 4, z = n_speedz * 4},
}) },
-- now adjust the shadow intensity lighting = {
player:set_lighting({ shadows = { intensity = 0.7 * (1 - density) } }) shadows = { intensity = 0.7 * (1 - density) }
end }
}
end 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 # textdomain: wool
White Wool=Blanka Lano White Wool=Blanka lano
Grey Wool=Griza Lano Grey Wool=Griza lano
Dark Grey Wool=Malhela Griza Lano Dark Grey Wool=Malhela griza lano
Black Wool=Nigra Lano Black Wool=Nigra lano
Violet Wool=Violkolora Lano Violet Wool=Violkolora lano
Blue Wool=Blua Lano Blue Wool=Blua lano
Cyan Wool=Bluverda Lano Cyan Wool=Bluverda lano
Dark Green Wool=Malhela Verda Lano Dark Green Wool=Malhela verda lano
Green Wool=Verda Lano Green Wool=Verda lano
Yellow Wool=Flava Lano Yellow Wool=Flava lano
Brown Wool=Bruna Lano Brown Wool=Bruna lano
Orange Wool=Oranĝkolora Lano Orange Wool=Oranĝkolora lano
Red Wool=Ruĝa Lano Red Wool=Ruĝa lano
Magenta Wool=Fuksina Lano Magenta Wool=Fuksina lano
Pink Wool=Rozkolora 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 # textdomain: wool
White Wool=Lã Branca White Wool=Tecido Branco
Grey Wool= Cinza Grey Wool=Tecido Cinza
Dark Grey Wool= Cinza-escuro Dark Grey Wool=Tecido Cinza-escuro
Black Wool=Lã Preta Black Wool=Tecido Preto
Violet Wool= Violeta Violet Wool=Tecido Violeta
Blue Wool= Azul Blue Wool=Tecido Azul
Cyan Wool= Ciano Cyan Wool=Tecido Ciano
Dark Green Wool= Verde-escuro Dark Green Wool=Tecido Verde-escuro
Green Wool= Verde Green Wool=Tecido Verde
Yellow Wool=Lã Amarela Yellow Wool=Tecido Amarelo
Brown Wool= Marrom Brown Wool=Tecido Marrom
Orange Wool= Laranja Orange Wool=Tecido Laranja
Red Wool=Lã Vermelha Red Wool=Tecido Vermelho
Magenta Wool= Magenta Magenta Wool=Tecido Magenta
Pink Wool= Rosa Pink Wool=Tecido Rosa

View File

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

View File

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

View File

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

View File

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