Merge remote-tracking branch 'upstream/stable-5' into nalc-dev

This commit is contained in:
Sys Quatre 2020-05-09 01:07:25 +02:00
commit 2fc9a68aa6
196 changed files with 3760 additions and 972 deletions

View File

@ -3,7 +3,7 @@ allow_defined_top = true
read_globals = { read_globals = {
"DIR_DELIM", "DIR_DELIM",
"minetest", "core", "minetest",
"dump", "dump",
"vector", "vector",
"VoxelManip", "VoxelArea", "VoxelManip", "VoxelArea",
@ -12,11 +12,16 @@ read_globals = {
"Settings", "Settings",
"unpack", "unpack",
-- Silence errors about custom table methods. -- Silence errors about custom table methods.
table = { fields = { "copy", "indexof" } } table = { fields = { "copy", "indexof" } },
-- Silence warnings about accessing undefined fields of global 'math'
math = { fields = { "sign" } }
} }
-- Overwrites minetest.handle_node_drops -- Overwrites minetest.handle_node_drops
files["mods/creative/init.lua"].globals = { "minetest" } files["mods/creative/init.lua"].globals = { "minetest" }
-- Overwrites minetest.calculate_knockback
files["mods/player_api/api.lua"].globals = { "minetest" }
-- Don't report on legacy definitions of globals. -- Don't report on legacy definitions of globals.
files["mods/default/legacy.lua"].global = false files["mods/default/legacy.lua"].global = false

View File

@ -2,8 +2,10 @@
The default game bundled in the Minetest engine. The default game bundled in the Minetest engine.
For further information, check [this forum topic](https://forum.minetest.net/viewtopic.php?f=15&t=9724). For further information, check
Also see the [Minetest Wiki](https://wiki.minetest.net/Subgames/Minetest_Game) for more information. [this forum topic](https://forum.minetest.net/viewtopic.php?f=15&t=9724).
Also see the [Minetest Wiki](https://wiki.minetest.net/Subgames/Minetest_Game)
for more information.
## Installation ## Installation
@ -13,8 +15,7 @@ place it in .. minetest/games/
- GNU/Linux: If you use a system-wide installation place - GNU/Linux: If you use a system-wide installation place
it in ~/.minetest/games/. it in ~/.minetest/games/.
The Minetest engine can be found at The Minetest engine can be found at [GitHub](https://github.com/minetest/minetest).
[GitHub](https://github.com/minetest/minetest).
For further information or help, see: For further information or help, see:
https://wiki.minetest.net/Installing_Mods https://wiki.minetest.net/Installing_Mods
@ -26,8 +27,8 @@ master HEAD of the Minetest engine.
Additionally, when the Minetest engine is tagged to be a certain version (e.g. Additionally, when the Minetest engine is tagged to be a certain version (e.g.
0.4.10), Minetest Game is tagged with the version too. 0.4.10), Minetest Game is tagged with the version too.
When stable releases are made, Minetest Game and the Minetest engine is packaged and made available at When stable releases are made, Minetest Game and the Minetest engine is packaged
https://minetest.net/downloads/ and made available at [www.minetest.net](https://www.minetest.net/downloads/).
## Licensing ## Licensing

View File

@ -424,7 +424,7 @@ Give Initial Stuff API
Players API Players API
----------- -----------
The player API can register player models and update the player's appearence The player API can register player models and update the player's appearance.
* `player_api.register_model(name, def)` * `player_api.register_model(name, def)`
* Register a new model to be used by players * Register a new model to be used by players
@ -457,6 +457,12 @@ The player API can register player models and update the player's appearence
* Any of the fields of the returned table may be nil. * Any of the fields of the returned table may be nil.
* player: PlayerRef * player: PlayerRef
* `player_api.player_attached`
* A table that maps a player name to a boolean.
* If the value for a given player is set to true, the default player
animations (walking, digging, ...) will no longer be updated.
Knockback from damage is also prevented for that player.
### Model Definition ### Model Definition
{ {
@ -467,7 +473,7 @@ The player API can register player models and update the player's appearence
-- <anim_name> = {x = <start_frame>, y = <end_frame>}, -- <anim_name> = {x = <start_frame>, y = <end_frame>},
foo = {x = 0, y = 19}, foo = {x = 0, y = 19},
bar = {x = 20, y = 39}, bar = {x = 20, y = 39},
-- ... -- ...
}, },
collisionbox = {-0.3, 0.0, -0.3, 0.3, 1.7, 0.3}, -- In nodes from feet position collisionbox = {-0.3, 0.0, -0.3, 0.3, 1.7, 0.3}, -- In nodes from feet position
stepheight = 0.6, -- In nodes stepheight = 0.6, -- In nodes
@ -1055,3 +1061,11 @@ for the wielded skeleton key.
if `nil` is returned, it is assumed that the wielder did not have if `nil` is returned, it is assumed that the wielder did not have
permissions to create a key for this node, and no key is created. permissions to create a key for this node, and no key is created.
`default.register_craft_metadata_copy(ingredient, result)`
----------------------------------------------------------
This function registers a shapeless recipe that takes `ingredient`
and `result` as input and outputs `result`.
The metadata of the input `result` is copied to the output `result`.

View File

@ -71,3 +71,7 @@ default:torch 99,default:cobble 99
# Whether river water source nodes create flowing sounds. # Whether river water source nodes create flowing sounds.
# Helps rivers create more sound, especially on level sections. # Helps rivers create more sound, especially on level sections.
#river_source_sounds = false #river_source_sounds = false
# Enable cloud variation by the 'weather' mod.
# Non-functional in V6 or Singlenode mapgens.
#enable_weather = true

View File

@ -17,6 +17,8 @@ local function destruct_bed(pos, n)
reverse = not reverse reverse = not reverse
minetest.remove_node(other) minetest.remove_node(other)
minetest.check_for_falling(other) minetest.check_for_falling(other)
beds.remove_spawns_at(pos)
beds.remove_spawns_at(other)
else else
reverse = not reverse reverse = not reverse
end end

View File

@ -79,10 +79,10 @@ beds.register_bed("beds:bed", {
} }
}, },
nodebox = { nodebox = {
bottom = {-0.5, -0.5, -0.5, 0.5, 0.06, 0.5}, bottom = {-0.5, -0.5, -0.5, 0.5, 0.0625, 0.5},
top = {-0.5, -0.5, -0.5, 0.5, 0.06, 0.5}, top = {-0.5, -0.5, -0.5, 0.5, 0.0625, 0.5},
}, },
selectionbox = {-0.5, -0.5, -0.5, 0.5, 0.06, 1.5}, selectionbox = {-0.5, -0.5, -0.5, 0.5, 0.0625, 1.5},
recipe = { recipe = {
{"wool:white", "wool:white", "wool:white"}, {"wool:white", "wool:white", "wool:white"},
{"group:wood", "group:wood", "group:wood"} {"group:wood", "group:wood", "group:wood"}

View File

@ -90,7 +90,13 @@ local function lay_down(player, pos, bed_pos, state, skip)
local yaw, param2 = get_look_yaw(bed_pos) local yaw, param2 = get_look_yaw(bed_pos)
player:set_look_horizontal(yaw) player:set_look_horizontal(yaw)
local dir = minetest.facedir_to_dir(param2) local dir = minetest.facedir_to_dir(param2)
local p = {x = bed_pos.x + dir.x / 2, y = bed_pos.y, z = bed_pos.z + dir.z / 2} -- p.y is just above the nodebox height of the 'Simple Bed' (the highest bed),
-- to avoid sinking down through the bed.
local p = {
x = bed_pos.x + dir.x / 2,
y = bed_pos.y + 0.07,
z = bed_pos.z + dir.z / 2
}
player:set_physics_override(0, 0, 0) player:set_physics_override(0, 0, 0)
player:set_pos(p) player:set_pos(p)
default.player_attached[name] = true default.player_attached[name] = true

View File

@ -2,7 +2,7 @@
-- Load support for MT game translation. -- Load support for MT game translation.
local S = minetest.get_translator("beds") local S = minetest.get_translator("beds")
local esc = minetest.formspec_escape
beds = {} beds = {}
beds.player = {} beds.player = {}
@ -14,7 +14,7 @@ beds.get_translator = S
beds.formspec = "size[8,11;true]" .. beds.formspec = "size[8,11;true]" ..
"no_prepend[]" .. "no_prepend[]" ..
"bgcolor[#080808BB;true]" .. "bgcolor[#080808BB;true]" ..
"button_exit[2,10;4,0.75;leave;" .. S("Leave Bed") .. "]" "button_exit[2,10;4,0.75;leave;" .. esc(S("Leave Bed")) .. "]"
local modpath = minetest.get_modpath("beds") local modpath = minetest.get_modpath("beds")

View File

@ -0,0 +1,8 @@
# textdomain: beds
Fancy Bed=Katil Beragam
Simple Bed=Katil Biasa
Leave Bed=Bangun
Good morning.=Selamat pagi.
@1 of @2 players are in bed=@1 daripada @2 pemain sedang tidur
Force night skip=Paksa langkau malam
You can only sleep at night.=Anda hanya boleh tidur pada waktu malam.

View File

@ -0,0 +1,8 @@
# textdomain: beds
Fancy Bed=Детализированная Кровать
Simple Bed=Обычная Кровать
Leave Bed=Встать с кровати
Good morning.=Доброе утро.
@1 of @2 players are in bed=@1 из @2 игроков в кровати
Force night skip=Пропустить ночь
You can only sleep at night.=Вы можете спать только ночью.

View File

@ -0,0 +1,8 @@
# textdomain: beds
Fancy Bed=Fin säng
Simple Bed=Enkel Säng
Leave Bed=Lämna Säng
Good morning.= God morgon.
@1 of @2 players are in bed=@1 av @2 spelar försöker sover.
Force night skip=Tvinga över natten
You can only sleep at night.=Du kan bara sova på natten.

View File

@ -0,0 +1,8 @@
# textdomain: beds
Fancy Bed=花式床
Simple Bed=简易床
Leave Bed=离开床
Good morning.=早安!
@1 of @2 players are in bed=@2位玩家中的@1位在床上
Force night skip=强制跳过夜晚
You can only sleep at night.=你只能在晚上睡觉。

View File

@ -0,0 +1,9 @@
# textdomain: beds
Fancy Bed=花式床
Simple Bed=簡易床
Leave Bed=離開床
Good morning.=早安!
@1 of @2 players are in bed=@2位玩家中的@1位在床上
Force night skip=強制跳過夜晚
You can only sleep at night.=你只能在晚上睡覺。

View File

@ -61,3 +61,12 @@ function beds.set_spawns()
end end
beds.save_spawns() beds.save_spawns()
end end
function beds.remove_spawns_at(pos)
for name, p in pairs(beds.spawn) do
if vector.equals(vector.round(p), pos) then
beds.spawn[name] = nil
end
end
beds.save_spawns()
end

View File

@ -0,0 +1,3 @@
# textdomain: binoculars
Binoculars=Binokular
Use with 'Zoom' key=Guna dengan kekunci 'Zum'

View File

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

View File

@ -0,0 +1,3 @@
# textdomain: binoculars
Binoculars=Kikare
Use with 'Zoom' key=Används med 'Zoom' knappen

View File

@ -0,0 +1,3 @@
# textdomain: binoculars
Binoculars=望远镜
Use with 'Zoom' key=与“缩放”键一起使用

View File

@ -0,0 +1,3 @@
# textdomain: binoculars
Binoculars=望遠鏡
Use with 'Zoom' key=與“縮放”鍵一起使用

View File

@ -13,15 +13,6 @@ local function is_water(pos)
end end
local function get_sign(i)
if i == 0 then
return 0
else
return i / math.abs(i)
end
end
local function get_velocity(v, yaw, y) local function get_velocity(v, yaw, y)
local x = -math.sin(yaw) * v local x = -math.sin(yaw) * v
local z = math.cos(yaw) * v local z = math.cos(yaw) * v
@ -146,7 +137,7 @@ end
function boat.on_step(self, dtime) function boat.on_step(self, dtime)
self.v = get_v(self.object:get_velocity()) * get_sign(self.v) self.v = get_v(self.object:get_velocity()) * math.sign(self.v)
if self.driver then if self.driver then
local driver_objref = minetest.get_player_by_name(self.driver) local driver_objref = minetest.get_player_by_name(self.driver)
if driver_objref then if driver_objref then
@ -157,13 +148,13 @@ function boat.on_step(self, dtime)
minetest.chat_send_player(self.driver, S("Boat cruise mode on")) minetest.chat_send_player(self.driver, S("Boat cruise mode on"))
end end
elseif ctrl.down then elseif ctrl.down then
self.v = self.v - dtime * 1.8 self.v = self.v - dtime * 2.0
if self.auto then if self.auto then
self.auto = false self.auto = false
minetest.chat_send_player(self.driver, S("Boat cruise mode off")) minetest.chat_send_player(self.driver, S("Boat cruise mode off"))
end end
elseif ctrl.up or self.auto then elseif ctrl.up or self.auto then
self.v = self.v + dtime * 1.8 self.v = self.v + dtime * 2.0
end end
if ctrl.left then if ctrl.left then
if self.v < -0.001 then if self.v < -0.001 then
@ -185,15 +176,14 @@ function boat.on_step(self, dtime)
self.object:set_pos(self.object:get_pos()) self.object:set_pos(self.object:get_pos())
return return
end end
local s = get_sign(self.v) -- We need to preserve velocity sign to properly apply drag force
self.v = self.v - dtime * 0.6 * s -- while moving backward
if s ~= get_sign(self.v) then local drag = dtime * math.sign(self.v) * (0.01 + 0.0796 * self.v * self.v)
self.object:set_velocity({x = 0, y = 0, z = 0}) -- If drag is larger than velocity, then stop horizontal movement
if math.abs(self.v) <= math.abs(drag) then
self.v = 0 self.v = 0
return else
end self.v = self.v - drag
if math.abs(self.v) > 5 then
self.v = 5 * get_sign(self.v)
end end
local p = self.object:get_pos() local p = self.object:get_pos()

View File

@ -0,0 +1,4 @@
# textdomain: boats
Boat cruise mode on=Mod bot layar makan angin dibolehkan
Boat cruise mode off=Mod bot layar makan angin dilumpuhkan
Boat=Bot

View File

@ -0,0 +1,4 @@
# textdomain: boats
Boat cruise mode on=Режим путешествия на лодке включен
Boat cruise mode off=Режим путешествия на лодке выключен
Boat=Лодка

View File

@ -0,0 +1,4 @@
# textdomain: boats
Boat cruise mode on=Båtkryssningsläge på
Boat cruise mode off=Båtkryssningsläge av
Boat=Båt

View File

@ -0,0 +1,4 @@
# textdomain: boats
Boat cruise mode on=巡航模式开启
Boat cruise mode off=巡航模式关闭
Boat=船

View File

@ -0,0 +1,4 @@
# textdomain: boats
Boat cruise mode on=巡航模式開啟
Boat cruise mode off=巡航模式關閉
Boat=船

View File

@ -0,0 +1,8 @@
# textdomain: bones
Bones=Tulang
@1's old bones=Tulang lama @1
@1 died at @2.=@1 mati di @2.
@1 died at @2, and dropped their inventory.=@1 mati di @2, dan menjatuhkan inventorinya.
@1 died at @2, and bones were placed.=@1 mati di @2, dan tulang diletakkan.
@1's fresh bones=Tulang segar @1
@1's bones=Tulang @1

View File

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

View File

@ -0,0 +1,8 @@
# textdomain: bones
Bones=Ben
@1's old bones=@1s Gamla ben
@1 died at @2.=@1 dog på @a.
@1 died at @2, and dropped their inventory.=@1 dog på @a, och tappade deras saker.
@1 died at @2, and bones were placed.=@1 dog på @2, och deras ben var placerade.
@1's fresh bones=@1s färska ben
@1's bones=@1s ben

View File

@ -0,0 +1,8 @@
# textdomain: bones
Bones=骨骸
@1's old bones=@1的旧骨骸
@1 died at @2.=@1在@2死亡。
@1 died at @2, and dropped their inventory.=@1在@2死亡丢掉了物品栏。
@1 died at @2, and bones were placed.=@1在@2死亡骨骸被放置。
@1's fresh bones=@1的新鲜骨骸
@1's bones=@1的骨骸

View File

@ -0,0 +1,8 @@
# textdomain: bones
Bones=骨骸
@1's old bones=@1的舊骨骸
@1 died at @2.=@1在@2死亡。
@1 died at @2, and dropped their inventory.=@1在@2死亡丟掉了物品欄。
@1 died at @2, and bones were placed.=@1在@2死亡骨骸被放置。
@1's fresh bones=@1的新鮮骨骸
@1's bones=@1的骨骸

View File

@ -225,3 +225,16 @@ minetest.register_craft({
replacements = {{"bucket:bucket_lava", "bucket:bucket_empty"}}, replacements = {{"bucket:bucket_lava", "bucket:bucket_empty"}},
}) })
-- Register buckets as dungeon loot
if minetest.global_exists("dungeon_loot") then
dungeon_loot.register({
{name = "bucket:bucket_empty", chance = 0.55},
-- water in deserts/ice or above ground, lava otherwise
{name = "bucket:bucket_water", chance = 0.45,
types = {"sandstone", "desert", "ice"}},
{name = "bucket:bucket_water", chance = 0.45, y = {0, 32768},
types = {"normal"}},
{name = "bucket:bucket_lava", chance = 0.45, y = {-32768, -1},
types = {"normal"}},
})
end

View File

@ -0,0 +1,5 @@
# textdomain: bucket
Empty Bucket=Baldi Kosong
Water Bucket=Baldi Air
River Water Bucket=Baldi Air Sungai
Lava Bucket=Baldi Lava

View File

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

View File

@ -0,0 +1,5 @@
# textdomain: bucket
Empty Bucket=Tom hink
Water Bucket=Vatten hink
River Water Bucket=Flodvatten hink
Lava Bucket=Lava hink

View File

@ -0,0 +1,5 @@
# textdomain: bucket
Empty Bucket=空桶
Water Bucket=水桶
River Water Bucket=河水桶
Lava Bucket=岩浆桶

View File

@ -0,0 +1,5 @@
# textdomain: bucket
Empty Bucket=空桶
Water Bucket=水桶
River Water Bucket=河水桶
Lava Bucket=岩漿桶

View File

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

0
mods/bucket/textures/bucket.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 205 B

After

Width:  |  Height:  |  Size: 205 B

View File

@ -102,7 +102,7 @@ minetest.register_decoration({
place_offset_y = 2, place_offset_y = 2,
sidelen = 80, sidelen = 80,
fill_ratio = 0.005, fill_ratio = 0.005,
biomes = {"grassland", "deciduous_forest", "floatland_grassland"}, biomes = {"grassland", "deciduous_forest"},
y_max = 31000, y_max = 31000,
y_min = 1, y_min = 1,
decoration = { decoration = {

View File

@ -0,0 +1,4 @@
# textdomain: butterflies
White Butterfly=Rama-Rama Putih
Red Butterfly=Rama-Rama Merah
Violet Butterfly=Rama-Rama Ungu

View File

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

View File

@ -0,0 +1,4 @@
# textdomain: butterflies
White Butterfly=Vit fjäril
Red Butterfly=Röd fjäril
Violet Butterfly=Violett fjäril

View File

@ -0,0 +1,4 @@
# textdomain: butterflies
White Butterfly=白蝴蝶
Red Butterfly=红蝴蝶
Violet Butterfly=紫蝴蝶

View File

@ -0,0 +1,4 @@
# textdomain: butterflies
White Butterfly=白蝴蝶
Red Butterfly=紅蝴蝶
Violet Butterfly=紫蝴蝶

View File

@ -414,7 +414,7 @@ minetest.register_craftitem("carts:cart", {
end end
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}) {pos = pointed_thing.above}, true)
if not (creative and creative.is_enabled_for if not (creative and creative.is_enabled_for
and creative.is_enabled_for(placer:get_player_name())) then and creative.is_enabled_for(placer:get_player_name())) then

View File

@ -19,3 +19,10 @@ carts.path_distance_max = 3
dofile(carts.modpath.."/functions.lua") dofile(carts.modpath.."/functions.lua")
dofile(carts.modpath.."/rails.lua") dofile(carts.modpath.."/rails.lua")
dofile(carts.modpath.."/cart_entity.lua") dofile(carts.modpath.."/cart_entity.lua")
-- Register rails as dungeon loot
if minetest.global_exists("dungeon_loot") then
dungeon_loot.register({
name = "carts:rail", chance = 0.35, count = {1, 6}
})
end

View File

@ -0,0 +1,6 @@
# textdomain: carts
Cart=Pedati
(Sneak+Click to pick up)=(Selinap+Klik untuk ambil balik)
Rail=Landasan
Powered Rail=Landasan Berkuasa
Brake Rail=Landasan Brek

View File

@ -0,0 +1,6 @@
# textdomain: carts
Cart=Вагонетка
(Sneak+Click to pick up)=(Пригнитесь и кликните по вагонетке, чтобы забрать)
Rail=Рельса
Powered Rail=Механизированная Рельса
Brake Rail=Рельса с тормозом

View File

@ -0,0 +1,6 @@
# textdomain: carts
Cart=Vagn
(Sneak+Click to pick up)=(Shift+Klicka för att plocka upp)
Rail=Räls
Powered Rail=Aktiverad räls
Brake Rail=Broms räls

View File

@ -0,0 +1,6 @@
# textdomain: carts
Cart=矿车
(Sneak+Click to pick up)=(潜行+单击以捡起)
Rail=铁轨
Powered Rail=动力铁轨
Brake Rail=制动铁轨

View File

@ -0,0 +1,6 @@
# textdomain: carts
Cart=礦車
(Sneak+Click to pick up)=(潛行+單擊以撿起)
Rail=鐵軌
Powered Rail=動力鐵軌
Brake Rail=制動鐵軌

View File

@ -1,3 +1,4 @@
name = carts name = carts
description = Carts (formerly boost_cart) description = Carts (formerly boost_cart)
depends = default, player_api depends = default, player_api
optional_depends = dungeon_loot

View File

@ -25,7 +25,9 @@ function creative.init_creative_inventory(player)
player_inventory[player_name] = { player_inventory[player_name] = {
size = 0, size = 0,
filter = "", filter = "",
start_i = 0 start_i = 0,
old_filter = nil, -- use only for caching in update_creative_inventory
old_content = nil
} }
minetest.create_detached_inventory("creative_" .. player_name, { minetest.create_detached_inventory("creative_" .. player_name, {
@ -59,22 +61,42 @@ function creative.init_creative_inventory(player)
return player_inventory[player_name] return player_inventory[player_name]
end end
local function match(s, filter)
if filter == "" then
return 0
end
if s:lower():find(filter, 1, true) then
return #s - #filter
end
return nil
end
function creative.update_creative_inventory(player_name, tab_content) function creative.update_creative_inventory(player_name, tab_content)
local creative_list = {}
local inv = player_inventory[player_name] or local inv = player_inventory[player_name] or
creative.init_creative_inventory(minetest.get_player_by_name(player_name)) creative.init_creative_inventory(minetest.get_player_by_name(player_name))
local player_inv = minetest.get_inventory({type = "detached", name = "creative_" .. player_name}) local player_inv = minetest.get_inventory({type = "detached", name = "creative_" .. player_name})
if inv.filter == inv.old_filter and tab_content == inv.old_content then
return
end
inv.old_filter = inv.filter
inv.old_content = tab_content
local items = inventory_cache[tab_content] or init_creative_cache(tab_content) local items = inventory_cache[tab_content] or init_creative_cache(tab_content)
local creative_list = {}
local order = {}
for name, def in pairs(items) do for name, def in pairs(items) do
if def.name:find(inv.filter, 1, true) or local m = match(def.description, inv.filter) or match(def.name, inv.filter)
def.description:lower():find(inv.filter, 1, true) then if m then
creative_list[#creative_list+1] = name creative_list[#creative_list+1] = name
-- Sort by description length first so closer matches appear earlier
order[name] = string.format("%02d", m) .. name
end end
end end
table.sort(creative_list) table.sort(creative_list, function(a, b) return order[a] < order[b] end)
player_inv:set_size("main", #creative_list) player_inv:set_size("main", #creative_list)
player_inv:set_list("main", creative_list) player_inv:set_list("main", creative_list)
inv.size = #creative_list inv.size = #creative_list
@ -105,21 +127,20 @@ function creative.register_tab(name, title, items)
local player_name = player:get_player_name() local player_name = player:get_player_name()
creative.update_creative_inventory(player_name, items) creative.update_creative_inventory(player_name, items)
local inv = player_inventory[player_name] local inv = player_inventory[player_name]
local start_i = inv.start_i or 0 local pagenum = math.floor(inv.start_i / (4*8) + 1)
local pagenum = math.floor(start_i / (3*8) + 1) local pagemax = math.ceil(inv.size / (4*8))
local pagemax = math.ceil(inv.size / (3*8))
local esc = minetest.formspec_escape local esc = minetest.formspec_escape
return sfinv.make_formspec(player, context, return sfinv.make_formspec(player, context,
"label[6.2,3.35;" .. minetest.colorize("#FFFF00", tostring(pagenum)) .. " / " .. tostring(pagemax) .. "]" .. "label[5.8,4.15;" .. minetest.colorize("#FFFF00", tostring(pagenum)) .. " / " .. tostring(pagemax) .. "]" ..
[[ [[
image[4.06,3.4;0.8,0.8;creative_trash_icon.png] image[4.08,4.2;0.8,0.8;creative_trash_icon.png]
listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF] listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]
list[detached:creative_trash;main;4,3.3;1,1;] list[detached:creative_trash;main;4.02,4.1;1,1;]
listring[] listring[]
image_button[5.4,3.25;0.8,0.8;creative_prev_icon.png;creative_prev;] image_button[5,4.05;0.8,0.8;creative_prev_icon.png;creative_prev;]
image_button[7.2,3.25;0.8,0.8;creative_next_icon.png;creative_next;] image_button[7.2,4.05;0.8,0.8;creative_next_icon.png;creative_next;]
image_button[2.1,3.25;0.8,0.8;creative_search_icon.png;creative_search;] image_button[2.63,4.05;0.8,0.8;creative_search_icon.png;creative_search;]
image_button[2.75,3.25;0.8,0.8;creative_clear_icon.png;creative_clear;] image_button[3.25,4.05;0.8,0.8;creative_clear_icon.png;creative_clear;]
]] .. ]] ..
"tooltip[creative_search;" .. esc(S("Search")) .. "]" .. "tooltip[creative_search;" .. esc(S("Search")) .. "]" ..
"tooltip[creative_clear;" .. esc(S("Reset")) .. "]" .. "tooltip[creative_clear;" .. esc(S("Reset")) .. "]" ..
@ -127,9 +148,9 @@ function creative.register_tab(name, title, items)
"tooltip[creative_next;" .. esc(S("Next page")) .. "]" .. "tooltip[creative_next;" .. esc(S("Next page")) .. "]" ..
"listring[current_player;main]" .. "listring[current_player;main]" ..
"field_close_on_enter[creative_filter;false]" .. "field_close_on_enter[creative_filter;false]" ..
"field[0.3,3.5;2.2,1;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]" ..
"list[detached:creative_" .. player_name .. ";main;0,0;8,3;" .. tostring(start_i) .. "]" .. "list[detached:creative_" .. player_name .. ";main;0,0;8,4;" .. tostring(inv.start_i) .. "]" ..
creative.formspec_add, true) creative.formspec_add, true)
end, end,
on_enter = function(self, player, context) on_enter = function(self, player, context)
@ -147,27 +168,25 @@ function creative.register_tab(name, title, items)
if fields.creative_clear then if fields.creative_clear then
inv.start_i = 0 inv.start_i = 0
inv.filter = "" inv.filter = ""
creative.update_creative_inventory(player_name, items)
sfinv.set_player_inventory_formspec(player, context) sfinv.set_player_inventory_formspec(player, context)
elseif fields.creative_search or elseif fields.creative_search or
fields.key_enter_field == "creative_filter" then fields.key_enter_field == "creative_filter" then
inv.start_i = 0 inv.start_i = 0
inv.filter = fields.creative_filter:lower() inv.filter = fields.creative_filter:lower()
creative.update_creative_inventory(player_name, items)
sfinv.set_player_inventory_formspec(player, context) sfinv.set_player_inventory_formspec(player, context)
elseif not fields.quit then elseif not fields.quit then
local start_i = inv.start_i or 0 local start_i = inv.start_i or 0
if fields.creative_prev then if fields.creative_prev then
start_i = start_i - 3*8 start_i = start_i - 4*8
if start_i < 0 then if start_i < 0 then
start_i = inv.size - (inv.size % (3*8)) start_i = inv.size - (inv.size % (4*8))
if inv.size == start_i then if inv.size == start_i then
start_i = math.max(0, inv.size - (3*8)) start_i = math.max(0, inv.size - (4*8))
end end
end end
elseif fields.creative_next then elseif fields.creative_next then
start_i = start_i + 3*8 start_i = start_i + 4*8
if start_i >= inv.size then if start_i >= inv.size then
start_i = 0 start_i = 0
end end

View File

@ -0,0 +1,10 @@
# textdomain: creative
Allow player to use creative inventory=Benarkan pemain menggunakan inventori kreatif
Search=Cari
Reset=Set semula
Previous page=Halaman sebelumnya
Next page=Halaman seterusnya
All=Semua
Nodes=Nod
Tools=Alatan
Items=Item

View File

@ -0,0 +1,10 @@
# textdomain: creative
Allow player to use creative inventory=Разрешить игроку использовать творческий инвентарь
Search=Поиск
Reset=Сброс
Previous page=Предыдущая страница
Next page=Следующая страница
All=Всё
Nodes=Ноды
Tools=Инструменты
Items=Предметы

View File

@ -0,0 +1,10 @@
# textdomain: creative
Allow player to use creative inventory=Tilllåt spelare att används kreativa saker
Search=Sök
Reset=Återställ
Previous page=Förra sidan
Next page=Nästa sidan
All=Alla
Nodes=Noder
Tools=Verktyg
Items=Saker

View File

@ -0,0 +1,10 @@
# textdomain: creative
Allow player to use creative inventory=允许玩家使用创造模式物品栏
Search=搜索
Reset=重置
Previous page=上一页
Next page=下一页
All=所有
Nodes=节点
Tools=工具
Items=物品

View File

@ -0,0 +1,10 @@
# textdomain: creative
Allow player to use creative inventory=允許玩家使用創造模式物品欄
Search=搜索
Reset=重置
Previous page=上一頁
Next page=下一頁
All=所有
Nodes=節點
Tools=工具
Items=物品

View File

@ -123,6 +123,8 @@ paramat (CC BY-SA 3.0):
default_fence_rail_junglewood default_fence_rail_junglewood
default_fence_rail_pine_wood default_fence_rail_pine_wood
default_fence_rail_wood -- Derived from a texture by BlockMen (CC BY-SA 3.0) default_fence_rail_wood -- Derived from a texture by BlockMen (CC BY-SA 3.0)
gui_hotbar.png
gui_hotbar_selected.png
TumeniNodes (CC BY-SA 3.0): TumeniNodes (CC BY-SA 3.0):
default_desert_cobble.png -- Derived from a texture by brunob.santos (CC BY-SA 3.0) default_desert_cobble.png -- Derived from a texture by brunob.santos (CC BY-SA 3.0)
@ -150,7 +152,10 @@ BlockMen (CC BY-SA 3.0):
default_mineral_mese.png default_mineral_mese.png
default_meselamp.png default_meselamp.png
bubble.png bubble.png
gui_*.png gui_formbg.png
gui_furnace_arrow_bg.png
gui_furnace_arrow_fg.png
gui_hb_bg.png
sofar (CC BY-SA 3.0): sofar (CC BY-SA 3.0):
default_aspen_sapling default_aspen_sapling
@ -330,6 +335,10 @@ http://freesound.org/people/Ryding/sounds/94337/
Ferk (CC0 1.0): Ferk (CC0 1.0):
default_item_smoke.ogg, based on a sound by http://opengameart.org/users/bart default_item_smoke.ogg, based on a sound by http://opengameart.org/users/bart
sonictechtonic (CC BY 3.0):
https://www.freesound.org/people/sonictechtonic/sounds/241872/
player_damage.ogg
Models Models
------ ------

View File

@ -46,7 +46,8 @@ function default.chest.chest_lid_close(pn)
local node = minetest.get_node(pos) local node = minetest.get_node(pos)
minetest.after(0.2, minetest.swap_node, pos, { name = "default:" .. swap, minetest.after(0.2, minetest.swap_node, pos, { name = "default:" .. swap,
param2 = node.param2 }) param2 = node.param2 })
minetest.sound_play(sound, {gain = 0.3, pos = pos, max_hear_distance = 10}) minetest.sound_play(sound, {gain = 0.3, pos = pos,
max_hear_distance = 10}, true)
end end
default.chest.open_chests = {} default.chest.open_chests = {}
@ -128,7 +129,7 @@ function default.chest.register_chest(name, d)
end end
minetest.sound_play(def.sound_open, {gain = 0.3, minetest.sound_play(def.sound_open, {gain = 0.3,
pos = pos, max_hear_distance = 10}) pos = pos, max_hear_distance = 10}, true)
if not default.chest.chest_lid_obstructed(pos) then if not default.chest.chest_lid_obstructed(pos) then
minetest.swap_node(pos, minetest.swap_node(pos,
{ name = "default:" .. name .. "_open", { name = "default:" .. name .. "_open",
@ -199,7 +200,7 @@ function default.chest.register_chest(name, d)
end end
def.on_rightclick = function(pos, node, clicker) def.on_rightclick = function(pos, node, clicker)
minetest.sound_play(def.sound_open, {gain = 0.3, pos = pos, minetest.sound_play(def.sound_open, {gain = 0.3, pos = pos,
max_hear_distance = 10}) max_hear_distance = 10}, true)
if not default.chest.chest_lid_obstructed(pos) then if not default.chest.chest_lid_obstructed(pos) then
minetest.swap_node(pos, { minetest.swap_node(pos, {
name = "default:" .. name .. "_open", name = "default:" .. name .. "_open",
@ -318,3 +319,39 @@ default.chest.register_chest("chest_locked", {
groups = {choppy = 2, oddly_breakable_by_hand = 2}, groups = {choppy = 2, oddly_breakable_by_hand = 2},
protected = true, protected = true,
}) })
minetest.register_craft({
output = "default:chest",
recipe = {
{"group:wood", "group:wood", "group:wood"},
{"group:wood", "", "group:wood"},
{"group:wood", "group:wood", "group:wood"},
}
})
minetest.register_craft({
output = "default:chest_locked",
recipe = {
{"group:wood", "group:wood", "group:wood"},
{"group:wood", "default:steel_ingot", "group:wood"},
{"group:wood", "group:wood", "group:wood"},
}
})
minetest.register_craft( {
type = "shapeless",
output = "default:chest_locked",
recipe = {"default:chest", "default:steel_ingot"},
})
minetest.register_craft({
type = "fuel",
recipe = "default:chest",
burntime = 30,
})
minetest.register_craft({
type = "fuel",
recipe = "default:chest_locked",
burntime = 30,
})

View File

@ -56,13 +56,6 @@ minetest.register_craft({
} }
}) })
minetest.register_craft({
output = "default:stick 4",
recipe = {
{"group:wood"},
}
})
minetest.register_craft({ minetest.register_craft({
output = "default:sign_wall_steel 3", output = "default:sign_wall_steel 3",
recipe = { recipe = {
@ -81,273 +74,6 @@ minetest.register_craft({
} }
}) })
minetest.register_craft({
output = "default:torch 4",
recipe = {
{"default:coal_lump"},
{"group:stick"},
}
})
minetest.register_craft({
output = "default:pick_wood",
recipe = {
{"group:wood", "group:wood", "group:wood"},
{"", "group:stick", ""},
{"", "group:stick", ""},
}
})
minetest.register_craft({
output = "default:pick_stone",
recipe = {
{"group:stone", "group:stone", "group:stone"},
{"", "group:stick", ""},
{"", "group:stick", ""},
}
})
minetest.register_craft({
output = "default:pick_steel",
recipe = {
{"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"},
{"", "group:stick", ""},
{"", "group:stick", ""},
}
})
minetest.register_craft({
output = "default:pick_bronze",
recipe = {
{"default:bronze_ingot", "default:bronze_ingot", "default:bronze_ingot"},
{"", "group:stick", ""},
{"", "group:stick", ""},
}
})
minetest.register_craft({
output = "default:pick_mese",
recipe = {
{"default:mese_crystal", "default:mese_crystal", "default:mese_crystal"},
{"", "group:stick", ""},
{"", "group:stick", ""},
}
})
minetest.register_craft({
output = "default:pick_diamond",
recipe = {
{"default:diamond", "default:diamond", "default:diamond"},
{"", "group:stick", ""},
{"", "group:stick", ""},
}
})
minetest.register_craft({
output = "default:shovel_wood",
recipe = {
{"group:wood"},
{"group:stick"},
{"group:stick"},
}
})
minetest.register_craft({
output = "default:shovel_stone",
recipe = {
{"group:stone"},
{"group:stick"},
{"group:stick"},
}
})
minetest.register_craft({
output = "default:shovel_steel",
recipe = {
{"default:steel_ingot"},
{"group:stick"},
{"group:stick"},
}
})
minetest.register_craft({
output = "default:shovel_bronze",
recipe = {
{"default:bronze_ingot"},
{"group:stick"},
{"group:stick"},
}
})
minetest.register_craft({
output = "default:shovel_mese",
recipe = {
{"default:mese_crystal"},
{"group:stick"},
{"group:stick"},
}
})
minetest.register_craft({
output = "default:shovel_diamond",
recipe = {
{"default:diamond"},
{"group:stick"},
{"group:stick"},
}
})
-- Axes
-- Recipes face left to match appearence in textures and inventory
minetest.register_craft({
output = "default:axe_wood",
recipe = {
{"group:wood", "group:wood"},
{"group:wood", "group:stick"},
{"", "group:stick"},
}
})
minetest.register_craft({
output = "default:axe_stone",
recipe = {
{"group:stone", "group:stone"},
{"group:stone", "group:stick"},
{"", "group:stick"},
}
})
minetest.register_craft({
output = "default:axe_steel",
recipe = {
{"default:steel_ingot", "default:steel_ingot"},
{"default:steel_ingot", "group:stick"},
{"", "group:stick"},
}
})
minetest.register_craft({
output = "default:axe_bronze",
recipe = {
{"default:bronze_ingot", "default:bronze_ingot"},
{"default:bronze_ingot", "group:stick"},
{"", "group:stick"},
}
})
minetest.register_craft({
output = "default:axe_mese",
recipe = {
{"default:mese_crystal", "default:mese_crystal"},
{"default:mese_crystal", "group:stick"},
{"", "group:stick"},
}
})
minetest.register_craft({
output = "default:axe_diamond",
recipe = {
{"default:diamond", "default:diamond"},
{"default:diamond", "group:stick"},
{"", "group:stick"},
}
})
minetest.register_craft({
output = "default:sword_wood",
recipe = {
{"group:wood"},
{"group:wood"},
{"group:stick"},
}
})
minetest.register_craft({
output = "default:sword_stone",
recipe = {
{"group:stone"},
{"group:stone"},
{"group:stick"},
}
})
minetest.register_craft({
output = "default:sword_steel",
recipe = {
{"default:steel_ingot"},
{"default:steel_ingot"},
{"group:stick"},
}
})
minetest.register_craft({
output = "default:sword_bronze",
recipe = {
{"default:bronze_ingot"},
{"default:bronze_ingot"},
{"group:stick"},
}
})
minetest.register_craft({
output = "default:sword_mese",
recipe = {
{"default:mese_crystal"},
{"default:mese_crystal"},
{"group:stick"},
}
})
minetest.register_craft({
output = "default:sword_diamond",
recipe = {
{"default:diamond"},
{"default:diamond"},
{"group:stick"},
}
})
minetest.register_craft({
output = "default:skeleton_key",
recipe = {
{"default:gold_ingot"},
}
})
minetest.register_craft({
output = "default:chest",
recipe = {
{"group:wood", "group:wood", "group:wood"},
{"group:wood", "", "group:wood"},
{"group:wood", "group:wood", "group:wood"},
}
})
minetest.register_craft({
output = "default:chest_locked",
recipe = {
{"group:wood", "group:wood", "group:wood"},
{"group:wood", "default:steel_ingot", "group:wood"},
{"group:wood", "group:wood", "group:wood"},
}
})
minetest.register_craft( {
type = "shapeless",
output = "default:chest_locked",
recipe = {"default:chest", "default:steel_ingot"},
})
minetest.register_craft({
output = "default:furnace",
recipe = {
{"group:stone", "group:stone", "group:stone"},
{"group:stone", "", "group:stone"},
{"group:stone", "group:stone", "group:stone"},
}
})
minetest.register_craft({ minetest.register_craft({
output = "default:coalblock", output = "default:coalblock",
recipe = { recipe = {
@ -357,13 +83,6 @@ minetest.register_craft({
} }
}) })
minetest.register_craft({
output = "default:coal_lump 9",
recipe = {
{"default:coalblock"},
}
})
minetest.register_craft({ minetest.register_craft({
output = "default:steelblock", output = "default:steelblock",
recipe = { recipe = {
@ -373,13 +92,6 @@ minetest.register_craft({
} }
}) })
minetest.register_craft({
output = "default:steel_ingot 9",
recipe = {
{"default:steelblock"},
}
})
minetest.register_craft({ minetest.register_craft({
output = "default:copperblock", output = "default:copperblock",
recipe = { recipe = {
@ -389,13 +101,6 @@ minetest.register_craft({
} }
}) })
minetest.register_craft({
output = "default:copper_ingot 9",
recipe = {
{"default:copperblock"},
}
})
minetest.register_craft({ minetest.register_craft({
output = "default:tinblock", output = "default:tinblock",
recipe = { recipe = {
@ -405,22 +110,6 @@ minetest.register_craft({
} }
}) })
minetest.register_craft({
output = "default:tin_ingot 9",
recipe = {
{"default:tinblock"},
}
})
minetest.register_craft({
output = "default:bronze_ingot 9",
recipe = {
{"default:copper_ingot", "default:copper_ingot", "default:copper_ingot"},
{"default:copper_ingot", "default:tin_ingot", "default:copper_ingot"},
{"default:copper_ingot", "default:copper_ingot", "default:copper_ingot"},
}
})
minetest.register_craft({ minetest.register_craft({
output = "default:bronzeblock", output = "default:bronzeblock",
recipe = { recipe = {
@ -446,13 +135,6 @@ minetest.register_craft({
} }
}) })
minetest.register_craft({
output = "default:gold_ingot 9",
recipe = {
{"default:goldblock"},
}
})
minetest.register_craft({ minetest.register_craft({
output = "default:diamondblock", output = "default:diamondblock",
recipe = { recipe = {
@ -462,13 +144,6 @@ minetest.register_craft({
} }
}) })
minetest.register_craft({
output = "default:diamond 9",
recipe = {
{"default:diamondblock"},
}
})
minetest.register_craft({ minetest.register_craft({
output = "default:sandstone", output = "default:sandstone",
recipe = { recipe = {
@ -573,13 +248,6 @@ minetest.register_craft({
} }
}) })
minetest.register_craft({
output = "default:clay_lump 4",
recipe = {
{"default:clay"},
}
})
minetest.register_craft({ minetest.register_craft({
output = "default:brick", output = "default:brick",
recipe = { recipe = {
@ -588,29 +256,6 @@ minetest.register_craft({
} }
}) })
minetest.register_craft({
output = "default:clay_brick 4",
recipe = {
{"default:brick"},
}
})
minetest.register_craft({
output = "default:paper",
recipe = {
{"default:papyrus", "default:papyrus", "default:papyrus"},
}
})
minetest.register_craft({
output = "default:book",
recipe = {
{"default:paper"},
{"default:paper"},
{"default:paper"},
}
})
minetest.register_craft({ minetest.register_craft({
output = "default:bookshelf", output = "default:bookshelf",
recipe = { recipe = {
@ -647,29 +292,6 @@ minetest.register_craft({
} }
}) })
minetest.register_craft({
output = "default:mese_crystal 9",
recipe = {
{"default:mese"},
}
})
minetest.register_craft({
output = "default:mese_crystal_fragment 9",
recipe = {
{"default:mese_crystal"},
}
})
minetest.register_craft({
output = "default:mese_crystal",
recipe = {
{"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"},
{"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"},
{"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"},
}
})
minetest.register_craft({ minetest.register_craft({
output = "default:meselamp", output = "default:meselamp",
recipe = { recipe = {
@ -687,13 +309,6 @@ minetest.register_craft({
} }
}) })
minetest.register_craft({
output = "default:obsidian_shard 9",
recipe = {
{"default:obsidian"}
}
})
minetest.register_craft({ minetest.register_craft({
output = "default:obsidian", output = "default:obsidian",
recipe = { recipe = {
@ -833,50 +448,6 @@ minetest.register_craft({
recipe = "default:desert_cobble", recipe = "default:desert_cobble",
}) })
minetest.register_craft({
type = "cooking",
output = "default:steel_ingot",
recipe = "default:iron_lump",
})
minetest.register_craft({
type = "cooking",
output = "default:copper_ingot",
recipe = "default:copper_lump",
})
minetest.register_craft({
type = "cooking",
output = "default:tin_ingot",
recipe = "default:tin_lump",
})
minetest.register_craft({
type = "cooking",
output = "default:gold_ingot",
recipe = "default:gold_lump",
})
minetest.register_craft({
type = "cooking",
output = "default:clay_brick",
recipe = "default:clay_lump",
})
minetest.register_craft({
type = "cooking",
output = "default:gold_ingot",
recipe = "default:skeleton_key",
cooktime = 5,
})
minetest.register_craft({
type = "cooking",
output = "default:gold_ingot",
recipe = "default:key",
cooktime = 5,
})
-- --
-- Fuels -- Fuels
@ -1005,7 +576,6 @@ minetest.register_craft({
burntime = 7, burntime = 7,
}) })
minetest.register_craft({ minetest.register_craft({
type = "fuel", type = "fuel",
recipe = "default:fence_aspen_wood", recipe = "default:fence_aspen_wood",
@ -1067,7 +637,6 @@ minetest.register_craft({
burntime = 7, burntime = 7,
}) })
minetest.register_craft({ minetest.register_craft({
type = "fuel", type = "fuel",
recipe = "default:bush_stem", recipe = "default:bush_stem",
@ -1134,36 +703,12 @@ minetest.register_craft({
burntime = 60, burntime = 60,
}) })
minetest.register_craft({
type = "fuel",
recipe = "default:torch",
burntime = 4,
})
minetest.register_craft({ minetest.register_craft({
type = "fuel", type = "fuel",
recipe = "default:sign_wall_wood", recipe = "default:sign_wall_wood",
burntime = 10, burntime = 10,
}) })
minetest.register_craft({
type = "fuel",
recipe = "default:chest",
burntime = 30,
})
minetest.register_craft({
type = "fuel",
recipe = "default:chest_locked",
burntime = 30,
})
minetest.register_craft({
type = "fuel",
recipe = "default:coal_lump",
burntime = 40,
})
minetest.register_craft({ minetest.register_craft({
type = "fuel", type = "fuel",
recipe = "default:coalblock", recipe = "default:coalblock",
@ -1194,57 +739,8 @@ minetest.register_craft({
burntime = 2, burntime = 2,
}) })
minetest.register_craft({
type = "fuel",
recipe = "default:paper",
burntime = 1,
})
minetest.register_craft({
type = "fuel",
recipe = "default:book",
burntime = 3,
})
minetest.register_craft({
type = "fuel",
recipe = "default:book_written",
burntime = 3,
})
minetest.register_craft({ minetest.register_craft({
type = "fuel", type = "fuel",
recipe = "default:dry_shrub", recipe = "default:dry_shrub",
burntime = 2, burntime = 2,
}) })
minetest.register_craft({
type = "fuel",
recipe = "group:stick",
burntime = 1,
})
minetest.register_craft({
type = "fuel",
recipe = "default:pick_wood",
burntime = 6,
})
minetest.register_craft({
type = "fuel",
recipe = "default:shovel_wood",
burntime = 4,
})
minetest.register_craft({
type = "fuel",
recipe = "default:axe_wood",
burntime = 6,
})
minetest.register_craft({
type = "fuel",
recipe = "default:sword_wood",
burntime = 5,
})

View File

@ -3,19 +3,6 @@
-- support for MT game translation. -- support for MT game translation.
local S = default.get_translator local S = default.get_translator
minetest.register_craftitem("default:stick", {
description = S("Stick"),
inventory_image = "default_stick.png",
groups = {stick = 1, flammable = 2},
})
minetest.register_craftitem("default:paper", {
description = S("Paper"),
inventory_image = "default_paper.png",
groups = {flammable = 3},
})
local lpp = 14 -- Lines per book's page local lpp = 14 -- Lines per book's page
local function book_on_use(itemstack, user) local function book_on_use(itemstack, user)
local player_name = user:get_player_name() local player_name = user:get_player_name()
@ -158,54 +145,9 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
player:set_wielded_item(stack) player:set_wielded_item(stack)
end) end)
minetest.register_craftitem("default:book", {
description = S("Book"),
inventory_image = "default_book.png",
groups = {book = 1, flammable = 3},
on_use = book_on_use,
})
minetest.register_craftitem("default:book_written", {
description = S("Book with Text"),
inventory_image = "default_book_written.png",
groups = {book = 1, not_in_creative_inventory = 1, flammable = 3},
stack_max = 1,
on_use = book_on_use,
})
minetest.register_craft({
type = "shapeless",
output = "default:book_written",
recipe = {"default:book", "default:book_written"}
})
minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv)
if itemstack:get_name() ~= "default:book_written" then
return
end
local original
local index
for i = 1, player:get_inventory():get_size("craft") do
if old_craft_grid[i]:get_name() == "default:book_written" then
original = old_craft_grid[i]
index = i
end
end
if not original then
return
end
local copymeta = original:get_meta():to_table()
-- copy of the book held by player's mouse cursor
itemstack:get_meta():from_table(copymeta)
-- put the book with metadata back in the craft grid
craft_inv:set_stack("craft", index, original)
end)
minetest.register_craftitem("default:skeleton_key", { minetest.register_craftitem("default:skeleton_key", {
description = S("Skeleton Key"), description = S("Skeleton Key"),
inventory_image = "default_key_skeleton.png", inventory_image = "default_key_skeleton.png",
groups = {key = 1},
on_use = function(itemstack, user, pointed_thing) on_use = function(itemstack, user, pointed_thing)
if pointed_thing.type ~= "node" then if pointed_thing.type ~= "node" then
return itemstack return itemstack
@ -258,91 +200,9 @@ minetest.register_craftitem("default:skeleton_key", {
end end
}) })
minetest.register_craftitem("default:coal_lump", { --
description = S("Coal Lump"), -- Craftitem registry
inventory_image = "default_coal_lump.png", --
groups = {coal = 1, flammable = 1}
})
minetest.register_craftitem("default:iron_lump", {
description = S("Iron Lump"),
inventory_image = "default_iron_lump.png"
})
minetest.register_craftitem("default:copper_lump", {
description = S("Copper Lump"),
inventory_image = "default_copper_lump.png"
})
minetest.register_craftitem("default:tin_lump", {
description = S("Tin Lump"),
inventory_image = "default_tin_lump.png"
})
minetest.register_craftitem("default:mese_crystal", {
description = S("Mese Crystal"),
inventory_image = "default_mese_crystal.png",
})
minetest.register_craftitem("default:gold_lump", {
description = S("Gold Lump"),
inventory_image = "default_gold_lump.png"
})
minetest.register_craftitem("default:diamond", {
description = S("Diamond"),
inventory_image = "default_diamond.png",
})
minetest.register_craftitem("default:clay_lump", {
description = S("Clay Lump"),
inventory_image = "default_clay_lump.png",
})
minetest.register_craftitem("default:steel_ingot", {
description = S("Steel Ingot"),
inventory_image = "default_steel_ingot.png"
})
minetest.register_craftitem("default:copper_ingot", {
description = S("Copper Ingot"),
inventory_image = "default_copper_ingot.png"
})
minetest.register_craftitem("default:tin_ingot", {
description = S("Tin Ingot"),
inventory_image = "default_tin_ingot.png"
})
minetest.register_craftitem("default:bronze_ingot", {
description = S("Bronze Ingot"),
inventory_image = "default_bronze_ingot.png"
})
minetest.register_craftitem("default:gold_ingot", {
description = S("Gold Ingot"),
inventory_image = "default_gold_ingot.png"
})
minetest.register_craftitem("default:mese_crystal_fragment", {
description = S("Mese Crystal Fragment"),
inventory_image = "default_mese_crystal_fragment.png",
})
minetest.register_craftitem("default:clay_brick", {
description = S("Clay Brick"),
inventory_image = "default_clay_brick.png",
})
minetest.register_craftitem("default:obsidian_shard", {
description = S("Obsidian Shard"),
inventory_image = "default_obsidian_shard.png",
})
minetest.register_craftitem("default:flint", {
description = S("Flint"),
inventory_image = "default_flint.png"
})
minetest.register_craftitem("default:blueberries", { minetest.register_craftitem("default:blueberries", {
description = S("Blueberries"), description = S("Blueberries"),
@ -350,3 +210,329 @@ minetest.register_craftitem("default:blueberries", {
groups = {food_blueberries = 1, food_berry = 1}, groups = {food_blueberries = 1, food_berry = 1},
on_use = minetest.item_eat(2), on_use = minetest.item_eat(2),
}) })
minetest.register_craftitem("default:book", {
description = S("Book"),
inventory_image = "default_book.png",
groups = {book = 1, flammable = 3},
on_use = book_on_use,
})
minetest.register_craftitem("default:book_written", {
description = S("Book with Text"),
inventory_image = "default_book_written.png",
groups = {book = 1, not_in_creative_inventory = 1, flammable = 3},
stack_max = 1,
on_use = book_on_use,
})
minetest.register_craftitem("default:bronze_ingot", {
description = S("Bronze Ingot"),
inventory_image = "default_bronze_ingot.png"
})
minetest.register_craftitem("default:clay_brick", {
description = S("Clay Brick"),
inventory_image = "default_clay_brick.png",
})
minetest.register_craftitem("default:clay_lump", {
description = S("Clay Lump"),
inventory_image = "default_clay_lump.png",
})
minetest.register_craftitem("default:coal_lump", {
description = S("Coal Lump"),
inventory_image = "default_coal_lump.png",
groups = {coal = 1, flammable = 1}
})
minetest.register_craftitem("default:copper_ingot", {
description = S("Copper Ingot"),
inventory_image = "default_copper_ingot.png"
})
minetest.register_craftitem("default:copper_lump", {
description = S("Copper Lump"),
inventory_image = "default_copper_lump.png"
})
minetest.register_craftitem("default:diamond", {
description = S("Diamond"),
inventory_image = "default_diamond.png",
})
minetest.register_craftitem("default:flint", {
description = S("Flint"),
inventory_image = "default_flint.png"
})
minetest.register_craftitem("default:gold_ingot", {
description = S("Gold Ingot"),
inventory_image = "default_gold_ingot.png"
})
minetest.register_craftitem("default:gold_lump", {
description = S("Gold Lump"),
inventory_image = "default_gold_lump.png"
})
minetest.register_craftitem("default:iron_lump", {
description = S("Iron Lump"),
inventory_image = "default_iron_lump.png"
})
minetest.register_craftitem("default:mese_crystal", {
description = S("Mese Crystal"),
inventory_image = "default_mese_crystal.png",
})
minetest.register_craftitem("default:mese_crystal_fragment", {
description = S("Mese Crystal Fragment"),
inventory_image = "default_mese_crystal_fragment.png",
})
minetest.register_craftitem("default:obsidian_shard", {
description = S("Obsidian Shard"),
inventory_image = "default_obsidian_shard.png",
})
minetest.register_craftitem("default:paper", {
description = S("Paper"),
inventory_image = "default_paper.png",
groups = {flammable = 3},
})
minetest.register_craftitem("default:steel_ingot", {
description = S("Steel Ingot"),
inventory_image = "default_steel_ingot.png"
})
minetest.register_craftitem("default:stick", {
description = S("Stick"),
inventory_image = "default_stick.png",
groups = {stick = 1, flammable = 2},
})
minetest.register_craftitem("default:tin_ingot", {
description = S("Tin Ingot"),
inventory_image = "default_tin_ingot.png"
})
minetest.register_craftitem("default:tin_lump", {
description = S("Tin Lump"),
inventory_image = "default_tin_lump.png"
})
--
-- Crafting recipes
--
minetest.register_craft({
output = "default:book",
recipe = {
{"default:paper"},
{"default:paper"},
{"default:paper"},
}
})
default.register_craft_metadata_copy("default:book", "default:book_written")
minetest.register_craft({
output = "default:bronze_ingot 9",
recipe = {
{"default:copper_ingot", "default:copper_ingot", "default:copper_ingot"},
{"default:copper_ingot", "default:tin_ingot", "default:copper_ingot"},
{"default:copper_ingot", "default:copper_ingot", "default:copper_ingot"},
}
})
minetest.register_craft({
output = "default:clay_brick 4",
recipe = {
{"default:brick"},
}
})
minetest.register_craft({
output = "default:clay_lump 4",
recipe = {
{"default:clay"},
}
})
minetest.register_craft({
output = "default:coal_lump 9",
recipe = {
{"default:coalblock"},
}
})
minetest.register_craft({
output = "default:copper_ingot 9",
recipe = {
{"default:copperblock"},
}
})
minetest.register_craft({
output = "default:diamond 9",
recipe = {
{"default:diamondblock"},
}
})
minetest.register_craft({
output = "default:gold_ingot 9",
recipe = {
{"default:goldblock"},
}
})
minetest.register_craft({
output = "default:mese_crystal",
recipe = {
{"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"},
{"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"},
{"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"},
}
})
minetest.register_craft({
output = "default:mese_crystal 9",
recipe = {
{"default:mese"},
}
})
minetest.register_craft({
output = "default:mese_crystal_fragment 9",
recipe = {
{"default:mese_crystal"},
}
})
minetest.register_craft({
output = "default:obsidian_shard 9",
recipe = {
{"default:obsidian"}
}
})
minetest.register_craft({
output = "default:paper",
recipe = {
{"default:papyrus", "default:papyrus", "default:papyrus"},
}
})
minetest.register_craft({
output = "default:skeleton_key",
recipe = {
{"default:gold_ingot"},
}
})
minetest.register_craft({
output = "default:steel_ingot 9",
recipe = {
{"default:steelblock"},
}
})
minetest.register_craft({
output = "default:stick 4",
recipe = {
{"group:wood"},
}
})
minetest.register_craft({
output = "default:tin_ingot 9",
recipe = {
{"default:tinblock"},
}
})
--
-- Cooking recipes
--
minetest.register_craft({
type = "cooking",
output = "default:clay_brick",
recipe = "default:clay_lump",
})
minetest.register_craft({
type = "cooking",
output = "default:copper_ingot",
recipe = "default:copper_lump",
})
minetest.register_craft({
type = "cooking",
output = "default:gold_ingot",
recipe = "default:gold_lump",
})
minetest.register_craft({
type = "cooking",
output = "default:gold_ingot",
recipe = "default:key",
cooktime = 5,
})
minetest.register_craft({
type = "cooking",
output = "default:gold_ingot",
recipe = "default:skeleton_key",
cooktime = 5,
})
minetest.register_craft({
type = "cooking",
output = "default:steel_ingot",
recipe = "default:iron_lump",
})
minetest.register_craft({
type = "cooking",
output = "default:tin_ingot",
recipe = "default:tin_lump",
})
--
-- Fuels
--
minetest.register_craft({
type = "fuel",
recipe = "default:book",
burntime = 3,
})
minetest.register_craft({
type = "fuel",
recipe = "default:book_written",
burntime = 3,
})
minetest.register_craft({
type = "fuel",
recipe = "default:coal_lump",
burntime = 40,
})
minetest.register_craft({
type = "fuel",
recipe = "default:paper",
burntime = 1,
})
minetest.register_craft({
type = "fuel",
recipe = "group:stick",
burntime = 1,
})

View File

@ -141,7 +141,7 @@ default.cool_lava = function(pos, node)
minetest.set_node(pos, {name = "default:stone"}) minetest.set_node(pos, {name = "default:stone"})
end end
minetest.sound_play("default_cool_lava", minetest.sound_play("default_cool_lava",
{pos = pos, max_hear_distance = 16, gain = 0.25}) {pos = pos, max_hear_distance = 16, gain = 0.25}, true)
end end
if minetest.settings:get_bool("enable_lavacooling") ~= false then if minetest.settings:get_bool("enable_lavacooling") ~= false then
@ -581,6 +581,40 @@ minetest.register_abm({
end end
}) })
--
-- Register a craft to copy the metadata of items
--
function default.register_craft_metadata_copy(ingredient, result)
minetest.register_craft({
type = "shapeless",
output = result,
recipe = {ingredient, result}
})
minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv)
if itemstack:get_name() ~= result then
return
end
local original
local index
for i = 1, #old_craft_grid do
if old_craft_grid[i]:get_name() == result then
original = old_craft_grid[i]
index = i
end
end
if not original then
return
end
local copymeta = original:get_meta():to_table()
itemstack:get_meta():from_table(copymeta)
-- put the book with metadata back in the craft grid
craft_inv:set_stack("craft", index, original)
end)
end
-- --
-- NOTICE: This method is not an official part of the API yet. -- NOTICE: This method is not an official part of the API yet.
@ -605,7 +639,7 @@ function default.can_interact_with_node(player, pos)
-- Is player wielding the right key? -- Is player wielding the right key?
local item = player:get_wielded_item() local item = player:get_wielded_item()
if item:get_name() == "default:key" then if minetest.get_item_group(item:get_name(), "key") == 1 then
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

View File

@ -352,3 +352,12 @@ minetest.register_node("default:furnace_active", {
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({
output = "default:furnace",
recipe = {
{"group:stone", "group:stone", "group:stone"},
{"group:stone", "", "group:stone"},
{"group:stone", "group:stone", "group:stone"},
}
})

View File

@ -14,11 +14,22 @@ default.get_translator = S
-- GUI related stuff -- GUI related stuff
minetest.register_on_joinplayer(function(player) minetest.register_on_joinplayer(function(player)
player:set_formspec_prepend([[ -- Set formspec prepend
local formspec = [[
bgcolor[#080808BB;true] bgcolor[#080808BB;true]
background[5,5;1,1;gui_formbg.png;true] listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF] ]]
background9[5,5;1,1;gui_formbg.png;true;10] local name = player:get_player_name()
listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF] ]]) local info = minetest.get_player_information(name)
if info.formspec_version > 1 then
formspec = formspec .. "background9[5,5;1,1;gui_formbg.png;true;10]"
else
formspec = formspec .. "background[5,5;1,1;gui_formbg.png;true]"
end
player:set_formspec_prepend(formspec)
-- Set hotbar textures
player:hud_set_hotbar_image("gui_hotbar.png")
player:hud_set_hotbar_selected_image("gui_hotbar_selected.png")
end) end)
function default.get_hotbar_bg(x,y) function default.get_hotbar_bg(x,y)

View File

@ -20,7 +20,7 @@ local item = {
minetest.sound_play("default_item_smoke", { minetest.sound_play("default_item_smoke", {
pos = p, pos = p,
max_hear_distance = 8, max_hear_distance = 8,
}) }, true)
minetest.add_particlespawner({ minetest.add_particlespawner({
amount = 3, amount = 3,
time = 0.1, time = 0.1,

View File

@ -0,0 +1,211 @@
# textdomain: default
Locked Chest=Peti Berkunci
Locked Chest (owned by @1)=Peti Berkunci (milik @1)
You do not own this chest.=Ini bukan peti milik anda.
a locked chest=peti berkunci
Chest=Peti
Stick=Serpihan Kayu
Paper=Kertas
"@1" by @2="@1" oleh @2
Book=Buku
Book with Text=Buku Bertulisan
Skeleton Key=Kunci Induk
Key to @1's @2=Kunci @2 milik @1
Coal Lump=Longgokan Batu Arang
Iron Lump=Longgokan Besi
Copper Lump=Longgokan Tembaga
Tin Lump=Longgokan Timah
Mese Crystal=Kristal Mese
Gold Lump=Longgokan Emas
Diamond=Berlian
Clay Lump=Longgokan Tanah Liat
Steel Ingot=Jongkong Keluli
Copper Ingot=Jongkong Tembaga
Tin Ingot=Jongkong Timah
Bronze Ingot=Jongkong Gangsa
Gold Ingot=Jongkong Emas
Mese Crystal Fragment=Serpihan Mese
Clay Brick=Bata Tanah Liat
Obsidian Shard=Serpihan Obsidia
Flint=Batu Api
Blueberries=Beri Biru
Furnace is empty=Relau masih kosong
100% (output full)=100% (keluaran penuh)
@1%=@1%
Empty=Kosong
Not cookable=Tidak boleh dimasak
Furnace active=Relau aktif
Furnace inactive=Relau tidak aktif
(Item: @1; Fuel: @2)=(Item: @1; Bahan api: @2)
Furnace=Relau
Stone=Batu
Cobblestone=Batu Buntar
Stone Brick=Bata Batu
Stone Block=Bongkah Batu
Mossy Cobblestone=Batu Buntar Berlumut
Desert Stone=Batu Gurun
Desert Cobblestone=Batu Buntar Gurun
Desert Stone Brick=Bata Batu Gurun
Desert Stone Block=Bongkah Batu Gurun
Sandstone=Batu Pasir
Sandstone Brick=Bata Batu Pasir
Sandstone Block=Bongkah Batu Pasir
Desert Sandstone=Batu Pasir Gurun
Desert Sandstone Brick=Bata Batu Pasir Gurun
Desert Sandstone Block=Bongkah Batu Pasir Gurun
Silver Sandstone=Batu Pasir Perak
Silver Sandstone Brick=Bata Batu Pasir Perak
Silver Sandstone Block=Bongkah Batu Pasir Perak
Obsidian=Obsidia
Obsidian Brick=Bata Obsidia
Obsidian Block=Bongkah Obsidia
Dirt=Tanah
Dirt with Grass=Tanah Berumput
Dirt with Grass and Footsteps=Tanah Berumput dan Tapak Kaki
Dirt with Dry Grass=Tanah Berumput Kering
Dirt with Snow=Tanah Bersalji
Dirt with Rainforest Litter=Tanah Bersarap Hutan Hujan
Dirt with Coniferous Litter=Tanah Bersarap Hutan Konifer
Dry Dirt=Tanah Kering
Dry Dirt with Dry Grass=Tanah Kering Berumput Kering
Permafrost=Ibun Abadi
Permafrost with Stones=Ibun Abadi Berbatu
Permafrost with Moss=Ibun Abadi Berlumut
Sand=Pasir
Desert Sand=Pasir Gurun
Silver Sand=Pasir Perak
Gravel=Kelikir
Clay=Tanah Liat
Snow=Salji
Snow Block=Bongkah Salji
Ice=Ais
Cave Ice=Ais Gua
Apple Tree=Kayu Pokok Epal
Apple Wood Planks=Papan Kayu Epal
Apple Tree Sapling=Anak Pokok Epal
Apple Tree Leaves=Daun Pokok Epal
Apple=Epal
Apple Marker=Penanda Epal
Jungle Tree=Kayu Pokok Hutan
Jungle Wood Planks=Papan Kayu Hutan
Jungle Tree Leaves=Daun Pokok Hutan
Jungle Tree Sapling=Anak Pokok Hutan
Emergent Jungle Tree Sapling=Anak Pokok Hutan Kembang
Pine Tree=Kayu Pokok Pain
Pine Wood Planks=Papan Kayu Pain
Pine Needles=Daun Pokok Pain
Pine Tree Sapling=Anak Pokok Pain
Acacia Tree=Kayu Pokok Akasia
Acacia Wood Planks=Papan Kayu Akasia
Acacia Tree Leaves=Daun Pokok Akasia
Acacia Tree Sapling=Anak Pokok Akasia
Aspen Tree=Kayu Pokok Aspen
Aspen Wood Planks=Papan Kayu Aspen
Aspen Tree Leaves=Daun Pokok Aspen
Aspen Tree Sapling=Anak Pokok Aspen
Coal Ore=Bijih Batu Arang
Coal Block=Bongkah Batu Arang
Iron Ore=Bijih Besi
Steel Block=Bongkah Keluli
Copper Ore=Bijih Tembaga
Copper Block=Bongkah Tembaga
Tin Ore=Bijih Timah
Tin Block=Bongkah Timah
Bronze Block=Bongkah Gangsa
Mese Ore=Bijih Mese
Mese Block=Bongkah Mese
Gold Ore=Bijih Emas
Gold Block=Bongkah Emas
Diamond Ore=Bijih Intan
Diamond Block=Bongkah Intan
Cactus=Kaktus
Large Cactus Seedling=Benih Kaktus Besar
Papyrus=Papirus
Dry Shrub=Pokok Renek Kering
Jungle Grass=Rumput Hutan
Grass=Rumput
Dry Grass=Rumput Kering
Fern=Paku Pakis
Marram Grass=Rumput Maram
Bush Stem=Batang Belukar
Bush Leaves=Daun Belukar
Bush Sapling=Anak Belukar
Blueberry Bush Leaves with Berries=Daun Belukar Beri Biru Berberi
Blueberry Bush Leaves=Daun Belukar Beri Biru
Blueberry Bush Sapling=Anak Belukar Beri Biru
Acacia Bush Stem=Batang Belukar Akasia
Acacia Bush Leaves=Daun Belukar Akasia
Acacia Bush Sapling=Anak Belukar Akasia
Pine Bush Stem=Batang Belukar Pain
Pine Bush Needles=Daun Belukar Pain
Pine Bush Sapling=Anak Belukar Pain
Kelp=Kelpa
Green Coral=Batu Karang Hijau
Pink Coral=Batu Karang Merah Jambu
Cyan Coral=Batu Karang Biru Kehijauan
Brown Coral=Batu Karang Perang
Orange Coral=Batu Karang Jingga
Coral Skeleton= Rangka Karang
Water Source=Sumber Air
Flowing Water=Air Mengalir
River Water Source=Sumber Air Sungai
Flowing River Water=Air Sungai Mengalir
Lava Source=Sumber Lava
Flowing Lava=Lava Mengalir
Empty Bookshelf=Rak Buku Kosong
Bookshelf (@1 written, @2 empty books)=Rak Buku (@1 buku bertulis, @2 buku kosong)
Bookshelf=Rak Buku
Text too long=Tulisan terlalu panjang
Wooden Sign=Papan Tanda Kayu
Steel Sign=Papan Tanda Keluli
Wooden Ladder=Tangga Panjat Kayu
Steel Ladder=Tangga Panjat Keluli
Apple Wood Fence=Pagar Kayu Epal
Acacia Wood Fence=Pagar Kayu Akasia
Jungle Wood Fence=Pagar Kayu Hutan
Pine Wood Fence=Pagar Kayu Pain
Aspen Wood Fence=Pagar Kayu Aspen
Apple Wood Fence Rail=Pagar Rel Kayu Epal
Acacia Wood Fence Rail=Pagar Rel Kayu Akasia
Jungle Wood Fence Rail=Pagar Rel Kayu Hutan
Pine Wood Fence Rail=Pagar Rel Kayu Pain
Aspen Wood Fence Rail=Pagar Rel Kayu Aspen
Glass=Kaca
Obsidian Glass=Kaca Obsidia
Brick Block=Bongkah Bata
Mese Lamp=Lampu Mese
Mese Post Light=Lampu Tiang Mese
Cloud=Awan
Wooden Pickaxe=Beliung Kayu
Stone Pickaxe=Beliung Batu
Bronze Pickaxe=Beliung Gangsa
Steel Pickaxe=Beliung Keluli
Mese Pickaxe=Beliung Mese
Diamond Pickaxe=Beliung Intan
Wooden Shovel=Penyodok Kayu
Stone Shovel=Penyodok Batu
Bronze Shovel=Penyodok Gangsa
Steel Shovel=Penyodok Keluli
Mese Shovel=Penyodok Mese
Diamond Shovel=Penyodok Intan
Wooden Axe=Kapak Kayu
Stone Axe=Kapak Batu
Bronze Axe=Kapak Gangsa
Steel Axe=Kapak Keluli
Mese Axe=Kapak Mese
Diamond Axe=Kapak Intan
Wooden Sword=Pedang Kayu
Stone Sword=Pedang Batu
Bronze Sword=Pedang Gangsa
Steel Sword=Pedang Keluli
Mese Sword=Pedang Mese
Diamond Sword=Pedang Intan
Key=Kunci
Torch=Obor
@1 will intersect protection on growth.=@1 akan masuk kawasan perlindungan lain apabila ia tumbuh.
Title:=Tajuk:
Contents:=Kandungan:
Save=Simpan
by @1=oleh @1
Page @1 of @2=Ms. @1 / @2
"@1"="@1"

View File

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

View File

@ -0,0 +1,211 @@
## textdomain: default
Locked Chest=Låst kista
Locked Chest (owned by @1)=Låst kista (Ägd av @1)
You do not own this chest.=Du äger inte denna kistan.
a locked chest=en låst kista
Chest=Kista
Stick=Pinne
Paper=Papper
"@1" by @2="@1" av @2
Book=Bok
Book with Text=Bok med text
Skeleton Key=Skelett Nyckel
Key to @1's @2=Nyckel till @1s @2
Coal Lump=Kol Klumo
Iron Lump=Järn Klump
Copper Lump=Koppar Klump
Tin Lump=Tenn Klump
Mese Crystal=Mese Kristall
Gold Lump=Guld Klump
Diamond=Diamant
Clay Lump=Lerklump
Steel Ingot=Stål tacka
Copper Ingot=Koppar tacka
Tin Ingot=Tenn tacka
Bronze Ingot=Brons tacka
Gold Ingot=Guld tacka
Mese Crystal Fragment=Mese Kristall Fragment
Clay Brick=Tegelsten
Obsidian Shard=Obsidian Skärva
Flint=Flinta
Blueberries=Blåbär
Furnace is empty=Ugnen är tom
100% (output full)=100% (utgången full)
@1%=@1%
Empty=Tom
Not cookable=Inte kokbar
Furnace active=Ugn aktiv
Furnace inactive=Ugn inaktiv
(Item: @1; Fuel: @2)=(Sak: @1; Bränsle: @2)
Furnace=Ugn
Stone=Sten
Cobblestone=Kullersten
Stone Brick=Stentegel
Stone Block=Sten block
Mossy Cobblestone=Mossig kullersten
Desert Stone=Öken sten
Desert Cobblestone=Öken kullersten
Desert Stone Brick=Öken stentegel
Desert Stone Block=Öken sten block
Sandstone=Sandsten
Sandstone Brick=Sandstenstegel
Sandstone Block=Sandsten block
Desert Sandstone=Öken sandsten
Desert Sandstone Brick=Öken Sandstenstegel
Desert Sandstone Block=Öken sandsten block
Silver Sandstone=Silver sandsten
Silver Sandstone Brick=Silver Sandstenstegel
Silver Sandstone Block=Silver sandsten block
Obsidian=Obsidian
Obsidian Brick=Obsidiantegel
Obsidian Block=Obsidian block
Dirt=Jord
Dirt with Grass=Jord med gräs
Dirt with Grass and Footsteps=Jord med gräs och fotsteg
Dirt with Dry Grass=Jord med torrt gräs
Dirt with Snow=Jord med snö
Dirt with Rainforest Litter=Jord med regnskogströ
Dirt with Coniferous Litter=Jord med Barrträd
Dry Dirt=Torr jord
Dry Dirt with Dry Grass=Torr jord med torrt gräs
Permafrost=Permafrost
Permafrost with Stones=Permafrost med sten
Permafrost with Moss=Permafrost med mossa
Sand=Sand
Desert Sand=Öken sand
Silver Sand=Silver sand
Gravel=Grus
Clay=Lera
Snow=Snö
Snow Block=Snö block
Ice=Is
Cave Ice=Grott Is
Apple Tree=Äpple Träd
Apple Wood Planks=Äpple Plankor
Apple Tree Sapling=Äpple Planta
Apple Tree Leaves=Äpple Löv
Apple=Äpple
Apple Marker=Äpple Markör
Jungle Tree=Djungel Träd
Jungle Wood Planks=Djungel Plankor
Jungle Tree Leaves=Djungel Löv
Jungle Tree Sapling=Djungel Planta
Emergent Jungle Tree Sapling=Nybliven Djungel Planta
Pine Tree=Tall
Pine Wood Planks= Tall Plankor
Pine Needles=Granbarr
Pine Tree Sapling=Tall Planta
Acacia Tree=Akacia Träd
Acacia Wood Planks=Akacia Plankor
Acacia Tree Leaves=Akacia Löv
Acacia Tree Sapling=Akacia Planta
Aspen Tree=Asp
Aspen Wood Planks=Asp Plankor
Aspen Tree Leaves=Asp Löv
Aspen Tree Sapling=Asp Planta
Coal Ore=Kol Malm
Coal Block=Kol Block
Iron Ore=Järn Malm
Steel Block=Stål Block
Copper Ore=Koppar Malm
Copper Block=Koppar Block
Tin Ore=Tenn Malm
Tin Block=Tenn Block
Bronze Block=Brons Block
Mese Ore=Mese Malm
Mese Block=Mese Block
Gold Ore=Guld Malm
Gold Block=Guld Block
Diamond Ore=Diamant Malm
Diamond Block=Diamant Block
Cactus=Kaktus
Large Cactus Seedling=Stor kaktusplanta
Papyrus=Papyrus
Dry Shrub=Torr Buske
Jungle Grass=Djungel Gräs
Grass=Gräs
Dry Grass=Torrt Gräs
Fern=Ormbunke
Marram Grass=Marram Gräs
Bush Stem=Busk Stam
Bush Leaves=Busk Löv
Bush Sapling=Busk Planta
Blueberry Bush Leaves with Berries=Blåbärsbusks Löv med Bär
Blueberry Bush Leaves=Blåbärsbusks Löv
Blueberry Bush Sapling=Blåbärsbusks Plantga
Acacia Bush Stem=Akacia Busks Stam
Acacia Bush Leaves=Akacia Busks Löv
Acacia Bush Sapling=Akacia Busks Planta
Pine Bush Stem=Tall Busks Stam
Pine Bush Needles=Tall Busks Granbarr
Pine Bush Sapling=Tall Busks Planta
Kelp=Brunalg
Green Coral=Grön Korall
Pink Coral=Rosa Korall
Cyan Coral=Cyan Korall
Brown Coral=Brun Korall
Orange Coral=Orange Korall
Coral Skeleton=Korall Skelett
Water Source=Vattenkälla
Flowing Water=Flödande Vatten
River Water Source=Flodvattenkälla
Flowing River Water=Flödande Flodvatten
Lava Source=Lavakälla
Flowing Lava=Flödande Lava
Empty Bookshelf=Tom Bokhylla
Bookshelf (@1 written, @2 empty books)=Bokhylla (@1 skriva, @2 tomma böcker)
Bookshelf=Bokhylla
Text too long=Text för lång
Wooden Sign=Trä Skylt
Steel Sign=Stål Skylt
Wooden Ladder=Trä Stege
Steel Ladder=Stål Stege
Apple Wood Fence=Äpple Trä Staket
Acacia Wood Fence=Akacia Trä Staket
Jungle Wood Fence=Djungel Trä Staket
Pine Wood Fence=Tall Trä Staket
Aspen Wood Fence=Asp Trä Staket
Apple Wood Fence Rail=Äpple Trä Staket Pinne
Acacia Wood Fence Rail=Akacia Trä Staket Pinne
Jungle Wood Fence Rail=Djungel Trä Staket Pinne
Pine Wood Fence Rail=Tall Trä Staket Pinne
Aspen Wood Fence Rail=Asp Trä Staket Pinne
Glass=Glas
Obsidian Glass=Obsidian Glas
Brick Block=Tegelstens Block
Mese Lamp=Mese Lampa
Mese Post Light=Mese Postljus
Cloud=Moln
Wooden Pickaxe=Trä Hacka
Stone Pickaxe=Sten Hacka
Bronze Pickaxe=Brons Hacka
Steel Pickaxe=Stål Hacka
Mese Pickaxe=Mese Hacka
Diamond Pickaxe=Diamant Hacka
Wooden Shovel=Trä Spade
Stone Shovel=Sten Spade
Bronze Shovel=Brons Spade
Steel Shovel=Stål Spade
Mese Shovel=Mese Spade
Diamond Shovel=Diamant Spade
Wooden Axe=Trä Yxa
Stone Axe=Sten Yxa
Bronze Axe=Brons Yxa
Steel Axe=Stål Yxa
Mese Axe=Mese Yxa
Diamond Axe=Diamant Yxa
Wooden Sword=Trä Svärd
Stone Sword=Sten Svärd
Bronze Sword=Brons Svärd
Steel Sword=Stål Svärd
Mese Sword=Mese Svärd
Diamond Sword=Diamant Svärd
Key=Nyckel
Torch=Fakla
@1 will intersect protection on growth.=@1 kommer korsa skyddet mot tillväxt.
Title:=Titel:
Contents:=Innehåll:
Save=Spara
by @1=av @1
Page @1 of @2=Sida @1 av @2
"@1"="@1"

View File

@ -0,0 +1,211 @@
# textdomain: default
Locked Chest=已上锁的箱子
Locked Chest (owned by @1)=已上锁的箱子(属于@1所有
You do not own this chest.=这个箱子不属于你所有。
a locked chest=一个已上锁的箱子
Chest=箱子
Stick=棒
Paper=纸
"@1" by @2="@1" by @2
Book=书
Book with Text=带文字的书
Skeleton Key=万能钥匙
Key to @1's @2=@1的@2的钥匙
Coal Lump=煤块
Iron Lump=铁块
Copper Lump=铜块
Tin Lump=锡块
Mese Crystal=黄石晶体
Gold Lump=金块
Diamond=钻石
Clay Lump=粘土块
Steel Ingot=铁锭
Copper Ingot=铜锭
Tin Ingot=锡锭
Bronze Ingot=青铜锭
Gold Ingot=金锭
Mese Crystal Fragment=黄石晶体碎片
Clay Brick=粘土砖
Obsidian Shard=黑曜石碎片
Flint=燧石
Blueberries=蓝莓
Furnace is empty=熔炉是空的
100% (output full)=100输出已满
@1%=@1%
Empty=空
Not cookable=不可烹饪
Furnace active=熔炉正在运转
Furnace inactive=熔炉未使用
(Item: @1; Fuel: @2)=(项目:@1;燃料:@2
Furnace=熔炉
Stone=石
Cobblestone=鹅卵石
Stone Brick=石砖
Stone Block=石方块
Mossy Cobblestone=苔藓覆盖的鹅卵石
Desert Stone=沙漠石
Desert Cobblestone=沙漠鹅卵石
Desert Stone Brick=沙漠鹅卵石砖
Desert Stone Block=沙漠鹅卵石方块
Sandstone=砂岩
Sandstone Brick=砂岩砖
Sandstone Block=砂岩方块
Desert Sandstone=沙漠砂岩
Desert Sandstone Brick=沙漠砂岩砖
Desert Sandstone Block=沙漠砂岩方块
Silver Sandstone=银砂岩
Silver Sandstone Brick=银砂岩砖
Silver Sandstone Block=银砂岩方块
Obsidian=黑曜石
Obsidian Brick=黑曜石砖
Obsidian Block=黑曜石方块
Dirt=土
Dirt with Grass=带草的土
Dirt with Grass and Footsteps=带草的土及脚印
Dirt with Dry Grass=带干草的土
Dirt with Snow=带雪的土
Dirt with Rainforest Litter=雨林腐土
Dirt with Coniferous Litter=针叶林腐土
Dry Dirt=干土
Dry Dirt with Dry Grass=干土和干草
Permafrost=多年冻土
Permafrost with Stones=带石头的多年冻土
Permafrost with Moss=生苔的多年冻土
Sand=沙
Desert Sand=沙漠沙
Silver Sand=银沙
Gravel=沙砾
Clay=粘土
Snow=雪
Snow Block=雪方块
Ice=冰
Cave Ice=洞穴冰
Apple Tree=苹果树
Apple Wood Planks=苹果树木板
Apple Tree Sapling=苹果树苗
Apple Tree Leaves=苹果树叶
Apple=苹果
Apple Marker=苹果标记
Jungle Tree=丛林树
Jungle Wood Planks=丛林树木板
Jungle Tree Leaves=丛林树叶
Jungle Tree Sapling=丛林树苗
Emergent Jungle Tree Sapling=应急丛林树苗
Pine Tree=松树
Pine Wood Planks=松树木板
Pine Needles=松针
Pine Tree Sapling=松树树苗
Acacia Tree=相思树
Acacia Wood Planks=相思树木板
Acacia Tree Leaves=相思树叶
Acacia Tree Sapling=相思树树苗
Aspen Tree=白杨树
Aspen Wood Planks=白杨树木板
Aspen Tree Leaves=白杨树叶
Aspen Tree Sapling=白杨树树苗
Coal Ore=煤炭矿石
Coal Block=煤炭方块
Iron Ore=铁矿石
Steel Block=钢方块
Copper Ore=铜矿石
Copper Block=铜方块
Tin Ore=锡矿石
Tin Block=锡方块
Bronze Block=青铜方块
Mese Ore=黄石矿石
Mese Block=黄石方块
Gold Ore=金矿石
Gold Block=金方块
Diamond Ore=钻石矿石
Diamond Block=钻石方块
Cactus=仙人掌
Large Cactus Seedling=大仙人掌苗
Papyrus=莎草纸
Dry Shrub=干灌木
Jungle Grass=丛林草
Grass=草
Dry Grass=干草
Fern=蕨
Marram Grass=滨草
Bush Stem=灌木
Bush Leaves=灌木叶
Bush Sapling=灌木苗
Blueberry Bush Leaves with Berries=蓝莓灌木叶与浆果
Blueberry Bush Leaves=蓝莓灌木叶
Blueberry Bush Sapling=蓝莓灌木苗
Acacia Bush Stem=相思灌木
Acacia Bush Leaves=相思灌木叶
Acacia Bush Sapling=相思灌木苗
Pine Bush Stem=松树灌木
Pine Bush Needles=松树灌木针
Pine Bush Sapling=松树灌木苗
Kelp=海带
Green Coral=绿珊瑚
Pink Coral=淡红珊瑚
Cyan Coral=青珊瑚
Brown Coral=棕珊瑚
Orange Coral=橙珊瑚
Coral Skeleton=珊瑚骨架
Water Source=水方块
Flowing Water=流动的水
River Water Source=河水方块
Flowing River Water=流动的河水
Lava Source=岩浆方块
Flowing Lava=流动的岩浆
Empty Bookshelf=空书架
Bookshelf (@1 written, @2 empty books)=书架(@1本有字的书@2本空书
Bookshelf=书架
Text too long=文字太长
Wooden Sign=木牌
Steel Sign=铁牌
Wooden Ladder=木梯子
Steel Ladder=铁梯子
Apple Wood Fence=苹果木栅栏
Acacia Wood Fence=相思木栅栏
Jungle Wood Fence=丛林木栅栏
Pine Wood Fence=松木栅栏
Aspen Wood Fence=白杨木栅栏
Apple Wood Fence Rail=苹果木栏杆
Acacia Wood Fence Rail=相思木栏杆
Jungle Wood Fence Rail=丛林木栏杆
Pine Wood Fence Rail=松木栏杆
Aspen Wood Fence Rail=白杨木栏杆
Glass=玻璃
Obsidian Glass=黑曜石玻璃
Brick Block=砖方块
Mese Lamp=黄石灯
Mese Post Light=黄石柱灯
Cloud=云
Wooden Pickaxe=木镐
Stone Pickaxe=石镐
Bronze Pickaxe=青铜镐
Steel Pickaxe=铁镐
Mese Pickaxe=黄石镐
Diamond Pickaxe=钻石镐
Wooden Shovel=木铲
Stone Shovel=石铲
Bronze Shovel=青铜铲
Steel Shovel=铁铲
Mese Shovel=黄石铲
Diamond Shovel=钻石铲
Wooden Axe=木斧
Stone Axe=石斧
Bronze Axe=青铜斧
Steel Axe=铁斧
Mese Axe=黄石斧
Diamond Axe=钻石斧
Wooden Sword=木剑
Stone Sword=石剑
Bronze Sword=青铜剑
Steel Sword=铁剑
Mese Sword=黄石剑
Diamond Sword=钻石剑
Key=钥匙
Torch=火把
@1 will intersect protection on growth.=@1将与增长的保护相交。
Title:=标题:
Contents:=内容:
Save=保存
by @1=由@1
Page @1 of @2=第@1页共@2页。
"@1"="@1"

View File

@ -0,0 +1,211 @@
# textdomain: default
Locked Chest=已上鎖的箱子
Locked Chest (owned by @1)=已上鎖的箱子(屬於@1所有
You do not own this chest.=這個箱子不屬於你所有。
a locked chest=一個已上鎖的箱子
Chest=箱子
Stick=棒
Paper=紙
"@1" by @2="@1" by @2
Book=書
Book with Text=帶文字的書
Skeleton Key=萬能鑰匙
Key to @1's @2=@1的@2的鑰匙
Coal Lump=煤塊
Iron Lump=鐵塊
Copper Lump=銅塊
Tin Lump=錫塊
Mese Crystal=黃石晶體
Gold Lump=金塊
Diamond=鑽石
Clay Lump=粘土塊
Steel Ingot=鐵錠
Copper Ingot=銅錠
Tin Ingot=錫錠
Bronze Ingot=青銅錠
Gold Ingot=金錠
Mese Crystal Fragment=黃石晶體碎片
Clay Brick=粘土磚
Obsidian Shard=黑曜石碎片
Flint=燧石
Blueberries=藍莓
Furnace is empty=熔爐是空的
100% (output full)=100輸出已滿
@1%=@1%
Empty=空
Not cookable=不可烹飪
Furnace active=熔爐正在運轉
Furnace inactive=熔爐未使用
(Item: @1; Fuel: @2)=(項目:@1;燃料:@2
Furnace=熔爐
Stone=石
Cobblestone=鵝卵石
Stone Brick=石磚
Stone Block=石方塊
Mossy Cobblestone=苔蘚覆蓋的鵝卵石
Desert Stone=沙漠石
Desert Cobblestone=沙漠鵝卵石
Desert Stone Brick=沙漠鵝卵石磚
Desert Stone Block=沙漠鵝卵石方塊
Sandstone=砂岩
Sandstone Brick=砂岩磚
Sandstone Block=砂岩方塊
Desert Sandstone=沙漠砂岩
Desert Sandstone Brick=沙漠砂岩磚
Desert Sandstone Block=沙漠砂岩方塊
Silver Sandstone=銀砂岩
Silver Sandstone Brick=銀砂岩磚
Silver Sandstone Block=銀砂岩方塊
Obsidian=黑曜石
Obsidian Brick=黑曜石磚
Obsidian Block=黑曜石方塊
Dirt=土
Dirt with Grass=帶草的土
Dirt with Grass and Footsteps=帶草的土及腳印
Dirt with Dry Grass=帶乾草的土
Dirt with Snow=帶雪的土
Dirt with Rainforest Litter=雨林腐土
Dirt with Coniferous Litter=針葉林腐土
Dry Dirt=乾土
Dry Dirt with Dry Grass=乾土和乾草
Permafrost=多年凍土
Permafrost with Stones=帶石頭的多年凍土
Permafrost with Moss=生苔的多年凍土
Sand=沙
Desert Sand=沙漠沙
Silver Sand=銀沙
Gravel=沙礫
Clay=粘土
Snow=雪
Snow Block=雪方塊
Ice=冰
Cave Ice=洞穴冰
Apple Tree=蘋果樹
Apple Wood Planks=蘋果樹木板
Apple Tree Sapling=蘋果樹苗
Apple Tree Leaves=蘋果樹葉
Apple=蘋果
Apple Marker=蘋果標記
Jungle Tree=叢林樹
Jungle Wood Planks=叢林樹木板
Jungle Tree Leaves=叢林樹葉
Jungle Tree Sapling=叢林樹苗
Emergent Jungle Tree Sapling=應急叢林樹苗
Pine Tree=松樹
Pine Wood Planks=松樹木板
Pine Needles=松針
Pine Tree Sapling=松樹樹苗
Acacia Tree=相思樹
Acacia Wood Planks=相思樹木板
Acacia Tree Leaves=相思樹葉
Acacia Tree Sapling=相思樹樹苗
Aspen Tree=白楊樹
Aspen Wood Planks=白楊樹木板
Aspen Tree Leaves=白楊樹葉
Aspen Tree Sapling=白楊樹樹苗
Coal Ore=煤炭礦石
Coal Block=煤炭方塊
Iron Ore=鐵礦石
Steel Block=鋼方塊
Copper Ore=銅礦石
Copper Block=銅方塊
Tin Ore=錫礦石
Tin Block=錫方塊
Bronze Block=青銅方塊
Mese Ore=黃石礦石
Mese Block=黃石方塊
Gold Ore=金礦石
Gold Block=金方塊
Diamond Ore=鑽石礦石
Diamond Block=鑽石方塊
Cactus=仙人掌
Large Cactus Seedling=大仙人掌苗
Papyrus=莎草紙
Dry Shrub=幹灌木
Jungle Grass=叢林草
Grass=草
Dry Grass=乾草
Fern=蕨
Marram Grass=濱草
Bush Stem=灌木
Bush Leaves=灌木葉
Bush Sapling=灌木苗
Blueberry Bush Leaves with Berries=藍莓灌木葉與漿果
Blueberry Bush Leaves=藍莓灌木葉
Blueberry Bush Sapling=藍莓灌木苗
Acacia Bush Stem=相思灌木
Acacia Bush Leaves=相思灌木葉
Acacia Bush Sapling=相思灌木苗
Pine Bush Stem=松樹灌木
Pine Bush Needles=松樹灌木針
Pine Bush Sapling=松樹灌木苗
Kelp=海帶
Green Coral=綠珊瑚
Pink Coral=淡紅珊瑚
Cyan Coral=青珊瑚
Brown Coral=棕珊瑚
Orange Coral=橙珊瑚
Coral Skeleton=珊瑚骨架
Water Source=水方塊
Flowing Water=流動的水
River Water Source=河水方塊
Flowing River Water=流動的河水
Lava Source=岩漿方塊
Flowing Lava=流動的岩漿
Empty Bookshelf=空書架
Bookshelf (@1 written, @2 empty books)=書架(@1本有字的書@2本空書
Bookshelf=書架
Text too long=文字太長
Wooden Sign=木牌
Steel Sign=鐵牌
Wooden Ladder=木梯子
Steel Ladder=鐵梯子
Apple Wood Fence=蘋果木柵欄
Acacia Wood Fence=相思木柵欄
Jungle Wood Fence=叢林木柵欄
Pine Wood Fence=松木柵欄
Aspen Wood Fence=白楊木柵欄
Apple Wood Fence Rail=蘋果木欄杆
Acacia Wood Fence Rail=相思木欄杆
Jungle Wood Fence Rail=叢林木欄杆
Pine Wood Fence Rail=松木欄杆
Aspen Wood Fence Rail=白楊木欄杆
Glass=玻璃
Obsidian Glass=黑曜石玻璃
Brick Block=磚方塊
Mese Lamp=黃石燈
Mese Post Light=黃石柱燈
Cloud=雲
Wooden Pickaxe=木鎬
Stone Pickaxe=石鎬
Bronze Pickaxe=青銅鎬
Steel Pickaxe=鐵鎬
Mese Pickaxe=黃石鎬
Diamond Pickaxe=鑽石鎬
Wooden Shovel=木鏟
Stone Shovel=石鏟
Bronze Shovel=青銅鏟
Steel Shovel=鐵鏟
Mese Shovel=黃石鏟
Diamond Shovel=鑽石鏟
Wooden Axe=木斧
Stone Axe=石斧
Bronze Axe=青銅斧
Steel Axe=鐵斧
Mese Axe=黃石斧
Diamond Axe=鑽石斧
Wooden Sword=木劍
Stone Sword=石劍
Bronze Sword=青銅劍
Steel Sword=鐵劍
Mese Sword=黃石劍
Diamond Sword=鑽石劍
Key=鑰匙
Torch=火把
@1 will intersect protection on growth.=@1將與增長的保護相交。
Title:=標題:
Contents:=內容:
Save=保存
by @1=由@1
Page @1 of @2=第@1頁共@2頁。
"@1"="@1"

View File

@ -576,7 +576,7 @@ function default.register_ores()
-- Only where default:dirt is present as surface material -- Only where default:dirt is present as surface material
biomes = {"taiga", "snowy_grassland", "grassland", "coniferous_forest", biomes = {"taiga", "snowy_grassland", "grassland", "coniferous_forest",
"deciduous_forest", "deciduous_forest_shore", "rainforest", "deciduous_forest", "deciduous_forest_shore", "rainforest",
"rainforest_swamp", "floatland_coniferous_forest"} "rainforest_swamp"}
}) })
-- Gravel -- Gravel
@ -890,7 +890,7 @@ end
-- All mapgens except mgv6 -- All mapgens except mgv6
function default.register_biomes(upper_limit) function default.register_biomes()
-- Icesheet -- Icesheet
@ -909,7 +909,7 @@ function default.register_biomes(upper_limit)
depth_riverbed = 2, depth_riverbed = 2,
node_dungeon = "default:ice", node_dungeon = "default:ice",
node_dungeon_stair = "stairs:stair_ice", node_dungeon_stair = "stairs:stair_ice",
y_max = upper_limit, y_max = 31000,
y_min = -8, y_min = -8,
heat_point = 0, heat_point = 0,
humidity_point = 73, humidity_point = 73,
@ -956,7 +956,7 @@ function default.register_biomes(upper_limit)
node_dungeon = "default:cobble", node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble", node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble", node_dungeon_stair = "stairs:stair_cobble",
y_max = upper_limit, y_max = 31000,
y_min = 47, y_min = 47,
heat_point = 0, heat_point = 0,
humidity_point = 40, humidity_point = 40,
@ -1043,7 +1043,7 @@ function default.register_biomes(upper_limit)
node_dungeon = "default:cobble", node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble", node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble", node_dungeon_stair = "stairs:stair_cobble",
y_max = upper_limit, y_max = 31000,
y_min = 4, y_min = 4,
heat_point = 25, heat_point = 25,
humidity_point = 70, humidity_point = 70,
@ -1095,7 +1095,7 @@ function default.register_biomes(upper_limit)
node_dungeon = "default:cobble", node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble", node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble", node_dungeon_stair = "stairs:stair_cobble",
y_max = upper_limit, y_max = 31000,
y_min = 4, y_min = 4,
heat_point = 20, heat_point = 20,
humidity_point = 35, humidity_point = 35,
@ -1146,7 +1146,7 @@ function default.register_biomes(upper_limit)
node_dungeon = "default:cobble", node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble", node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble", node_dungeon_stair = "stairs:stair_cobble",
y_max = upper_limit, y_max = 31000,
y_min = 6, y_min = 6,
heat_point = 50, heat_point = 50,
humidity_point = 35, humidity_point = 35,
@ -1213,7 +1213,7 @@ function default.register_biomes(upper_limit)
node_dungeon = "default:cobble", node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble", node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble", node_dungeon_stair = "stairs:stair_cobble",
y_max = upper_limit, y_max = 31000,
y_min = 6, y_min = 6,
heat_point = 45, heat_point = 45,
humidity_point = 70, humidity_point = 70,
@ -1280,7 +1280,7 @@ function default.register_biomes(upper_limit)
node_dungeon = "default:cobble", node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble", node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble", node_dungeon_stair = "stairs:stair_cobble",
y_max = upper_limit, y_max = 31000,
y_min = 1, y_min = 1,
heat_point = 60, heat_point = 60,
humidity_point = 68, humidity_point = 68,
@ -1347,7 +1347,7 @@ function default.register_biomes(upper_limit)
depth_riverbed = 2, depth_riverbed = 2,
node_dungeon = "default:desert_stone", node_dungeon = "default:desert_stone",
node_dungeon_stair = "stairs:stair_desert_stone", node_dungeon_stair = "stairs:stair_desert_stone",
y_max = upper_limit, y_max = 31000,
y_min = 4, y_min = 4,
heat_point = 92, heat_point = 92,
humidity_point = 16, humidity_point = 16,
@ -1397,7 +1397,7 @@ function default.register_biomes(upper_limit)
depth_riverbed = 2, depth_riverbed = 2,
node_dungeon = "default:sandstonebrick", node_dungeon = "default:sandstonebrick",
node_dungeon_stair = "stairs:stair_sandstone_block", node_dungeon_stair = "stairs:stair_sandstone_block",
y_max = upper_limit, y_max = 31000,
y_min = 4, y_min = 4,
heat_point = 60, heat_point = 60,
humidity_point = 0, humidity_point = 0,
@ -1446,7 +1446,7 @@ function default.register_biomes(upper_limit)
node_dungeon = "default:cobble", node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble", node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble", node_dungeon_stair = "stairs:stair_cobble",
y_max = upper_limit, y_max = 31000,
y_min = 4, y_min = 4,
heat_point = 40, heat_point = 40,
humidity_point = 0, humidity_point = 0,
@ -1496,7 +1496,7 @@ function default.register_biomes(upper_limit)
node_dungeon = "default:cobble", node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble", node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble", node_dungeon_stair = "stairs:stair_cobble",
y_max = upper_limit, y_max = 31000,
y_min = 1, y_min = 1,
heat_point = 89, heat_point = 89,
humidity_point = 42, humidity_point = 42,
@ -1563,7 +1563,7 @@ function default.register_biomes(upper_limit)
node_dungeon = "default:cobble", node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble", node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble", node_dungeon_stair = "stairs:stair_cobble",
y_max = upper_limit, y_max = 31000,
y_min = 1, y_min = 1,
heat_point = 86, heat_point = 86,
humidity_point = 65, humidity_point = 65,
@ -1619,59 +1619,6 @@ function default.register_biomes(upper_limit)
end end
-- Biomes for floatlands
-- TODO Temporary simple biomes to be replaced by special floatland biomes later.
function default.register_floatland_biomes(floatland_level, shadow_limit)
minetest.register_biome({
name = "floatland_grassland",
node_top = "default:dirt_with_grass",
depth_top = 1,
node_filler = "default:dirt",
depth_filler = 1,
node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble",
y_max = 31000,
y_min = floatland_level + 2,
heat_point = 50,
humidity_point = 25,
})
minetest.register_biome({
name = "floatland_coniferous_forest",
node_top = "default:dirt_with_coniferous_litter",
depth_top = 1,
node_filler = "default:dirt",
depth_filler = 3,
node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble",
y_max = 31000,
y_min = floatland_level + 2,
heat_point = 50,
humidity_point = 75,
})
minetest.register_biome({
name = "floatland_ocean",
node_top = "default:sand",
depth_top = 1,
node_filler = "default:sand",
depth_filler = 3,
node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble",
y_max = floatland_level + 1,
y_min = shadow_limit,
heat_point = 50,
humidity_point = 50,
})
end
-- --
-- Register decorations -- Register decorations
-- --
@ -1787,7 +1734,7 @@ local function register_grass_decoration(offset, scale, length)
octaves = 3, octaves = 3,
persist = 0.6 persist = 0.6
}, },
biomes = {"grassland", "deciduous_forest", "floatland_grassland"}, biomes = {"grassland", "deciduous_forest"},
y_max = 31000, y_max = 31000,
y_min = 1, y_min = 1,
decoration = "default:grass_" .. length, decoration = "default:grass_" .. length,
@ -1829,7 +1776,7 @@ local function register_fern_decoration(seed, length)
octaves = 3, octaves = 3,
persist = 0.7 persist = 0.7
}, },
biomes = {"coniferous_forest", "floatland_coniferous_forest"}, biomes = {"coniferous_forest"},
y_max = 31000, y_max = 31000,
y_min = 6, y_min = 6,
decoration = "default:fern_" .. length, decoration = "default:fern_" .. length,
@ -1944,11 +1891,35 @@ function default.register_decorations()
minetest.register_decoration({ minetest.register_decoration({
name = "default:jungle_tree", name = "default:jungle_tree",
deco_type = "schematic", deco_type = "schematic",
place_on = {"default:dirt_with_rainforest_litter", "default:dirt"}, place_on = {"default:dirt_with_rainforest_litter"},
sidelen = 80, sidelen = 80,
fill_ratio = 0.1, fill_ratio = 0.1,
biomes = {"rainforest", "rainforest_swamp"}, biomes = {"rainforest"},
y_max = 31000, y_max = 31000,
y_min = 1,
schematic = minetest.get_modpath("default") .. "/schematics/jungle_tree.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
-- Swamp jungle trees
minetest.register_decoration({
name = "default:jungle_tree(swamp)",
deco_type = "schematic",
place_on = {"default:dirt"},
sidelen = 16,
-- Noise tuned to place swamp trees where papyrus is absent
noise_params = {
offset = 0.0,
scale = -0.1,
spread = {x = 200, y = 200, z = 200},
seed = 354,
octaves = 1,
persist = 0.5
},
biomes = {"rainforest_swamp"},
y_max = 0,
y_min = -1, y_min = -1,
schematic = minetest.get_modpath("default") .. "/schematics/jungle_tree.mts", schematic = minetest.get_modpath("default") .. "/schematics/jungle_tree.mts",
flags = "place_center_x, place_center_z", flags = "place_center_x, place_center_z",
@ -1962,7 +1933,7 @@ function default.register_decorations()
place_offset_y = 1, place_offset_y = 1,
sidelen = 80, sidelen = 80,
fill_ratio = 0.005, fill_ratio = 0.005,
biomes = {"rainforest", "rainforest_swamp"}, biomes = {"rainforest"},
y_max = 31000, y_max = 31000,
y_min = 1, y_min = 1,
schematic = minetest.get_modpath("default") .. "/schematics/jungle_log.mts", schematic = minetest.get_modpath("default") .. "/schematics/jungle_log.mts",
@ -1987,7 +1958,7 @@ function default.register_decorations()
octaves = 3, octaves = 3,
persist = 0.66 persist = 0.66
}, },
biomes = {"taiga", "coniferous_forest", "floatland_coniferous_forest"}, biomes = {"taiga", "coniferous_forest"},
y_max = 31000, y_max = 31000,
y_min = 4, y_min = 4,
schematic = minetest.get_modpath("default") .. "/schematics/pine_tree.mts", schematic = minetest.get_modpath("default") .. "/schematics/pine_tree.mts",
@ -2007,7 +1978,7 @@ function default.register_decorations()
octaves = 3, octaves = 3,
persist = 0.66 persist = 0.66
}, },
biomes = {"taiga", "coniferous_forest", "floatland_coniferous_forest"}, biomes = {"taiga", "coniferous_forest"},
y_max = 31000, y_max = 31000,
y_min = 4, y_min = 4,
schematic = minetest.get_modpath("default") .. "/schematics/small_pine_tree.mts", schematic = minetest.get_modpath("default") .. "/schematics/small_pine_tree.mts",
@ -2021,7 +1992,7 @@ function default.register_decorations()
place_offset_y = 1, place_offset_y = 1,
sidelen = 80, sidelen = 80,
fill_ratio = 0.0018, fill_ratio = 0.0018,
biomes = {"taiga", "coniferous_forest", "floatland_coniferous_forest"}, biomes = {"taiga", "coniferous_forest"},
y_max = 31000, y_max = 31000,
y_min = 4, y_min = 4,
schematic = minetest.get_modpath("default") .. "/schematics/pine_log.mts", schematic = minetest.get_modpath("default") .. "/schematics/pine_log.mts",
@ -2172,8 +2143,10 @@ function default.register_decorations()
-- Papyrus -- Papyrus
-- Dirt version for rainforest swamp
minetest.register_decoration({ minetest.register_decoration({
name = "default:papyrus", name = "default:papyrus_on_dirt",
deco_type = "schematic", deco_type = "schematic",
place_on = {"default:dirt"}, place_on = {"default:dirt"},
sidelen = 16, sidelen = 16,
@ -2185,10 +2158,32 @@ function default.register_decorations()
octaves = 3, octaves = 3,
persist = 0.7 persist = 0.7
}, },
biomes = {"rainforest_swamp"},
y_max = 0,
y_min = 0,
schematic = minetest.get_modpath("default") .. "/schematics/papyrus_on_dirt.mts",
})
-- Dry dirt version for savanna shore
minetest.register_decoration({
name = "default:papyrus_on_dry_dirt",
deco_type = "schematic",
place_on = {"default:dry_dirt"},
sidelen = 16,
noise_params = {
offset = -0.3,
scale = 0.7,
spread = {x = 200, y = 200, z = 200},
seed = 354,
octaves = 3,
persist = 0.7
},
biomes = {"savanna_shore"}, biomes = {"savanna_shore"},
y_max = 0, y_max = 0,
y_min = 0, y_min = 0,
schematic = minetest.get_modpath("default") .. "/schematics/papyrus.mts", schematic = minetest.get_modpath("default") ..
"/schematics/papyrus_on_dry_dirt.mts",
}) })
-- Bush -- Bush
@ -2206,8 +2201,7 @@ function default.register_decorations()
octaves = 3, octaves = 3,
persist = 0.7, persist = 0.7,
}, },
biomes = {"grassland", "deciduous_forest", biomes = {"grassland", "deciduous_forest"},
"floatland_grassland"},
y_max = 31000, y_max = 31000,
y_min = 1, y_min = 1,
schematic = minetest.get_modpath("default") .. "/schematics/bush.mts", schematic = minetest.get_modpath("default") .. "/schematics/bush.mts",
@ -2479,22 +2473,9 @@ end
-- --
-- Detect mapgen, flags and parameters to select functions -- Detect mapgen to select functions
-- --
-- Get setting or default
local mgv7_spflags = minetest.get_mapgen_setting("mgv7_spflags") or
"mountains, ridges, nofloatlands, caverns"
local captures_float = string.match(mgv7_spflags, "floatlands")
local captures_nofloat = string.match(mgv7_spflags, "nofloatlands")
-- Get setting or default
-- Make global for mods to use to register floatland biomes
default.mgv7_floatland_level =
minetest.get_mapgen_setting("mgv7_floatland_level") or 1280
default.mgv7_shadow_limit =
minetest.get_mapgen_setting("mgv7_shadow_limit") or 1024
minetest.clear_registered_biomes() minetest.clear_registered_biomes()
minetest.clear_registered_ores() minetest.clear_registered_ores()
minetest.clear_registered_decorations() minetest.clear_registered_decorations()
@ -2504,19 +2485,8 @@ local mg_name = minetest.get_mapgen_setting("mg_name")
if mg_name == "v6" then if mg_name == "v6" then
default.register_mgv6_ores() default.register_mgv6_ores()
default.register_mgv6_decorations() default.register_mgv6_decorations()
-- Need to check for 'nofloatlands' because that contains
-- 'floatlands' which makes the second condition true.
elseif mg_name == "v7" and
captures_float == "floatlands" and
captures_nofloat ~= "nofloatlands" then
-- Mgv7 with floatlands and floatland biomes
default.register_biomes(default.mgv7_shadow_limit - 1)
default.register_floatland_biomes(
default.mgv7_floatland_level, default.mgv7_shadow_limit)
default.register_ores()
default.register_decorations()
else else
default.register_biomes(31000) default.register_biomes()
default.register_ores() default.register_ores()
default.register_decorations() default.register_decorations()
end end

View File

@ -2031,7 +2031,7 @@ local function coral_on_place(itemstack, placer, pointed_thing)
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:get_player_control().sneak then
return def_under.on_rightclick(pos_under, node_under.name, return def_under.on_rightclick(pos_under, node_under,
placer, itemstack, pointed_thing) or itemstack placer, itemstack, pointed_thing) or itemstack
end end
@ -2203,7 +2203,7 @@ minetest.register_node("default:water_source", {
}, },
}, },
}, },
alpha = 160, alpha = 191,
paramtype = "light", paramtype = "light",
walkable = false, walkable = false,
pointable = false, pointable = false,
@ -2234,7 +2234,7 @@ minetest.register_node("default:water_flowing", {
type = "vertical_frames", type = "vertical_frames",
aspect_w = 16, aspect_w = 16,
aspect_h = 16, aspect_h = 16,
length = 0.8, length = 0.5,
}, },
}, },
{ {
@ -2244,11 +2244,11 @@ minetest.register_node("default:water_flowing", {
type = "vertical_frames", type = "vertical_frames",
aspect_w = 16, aspect_w = 16,
aspect_h = 16, aspect_h = 16,
length = 0.8, length = 0.5,
}, },
}, },
}, },
alpha = 160, alpha = 191,
paramtype = "light", paramtype = "light",
paramtype2 = "flowingliquid", paramtype2 = "flowingliquid",
walkable = false, walkable = false,
@ -2330,7 +2330,7 @@ minetest.register_node("default:river_water_flowing", {
type = "vertical_frames", type = "vertical_frames",
aspect_w = 16, aspect_w = 16,
aspect_h = 16, aspect_h = 16,
length = 0.8, length = 0.5,
}, },
}, },
{ {
@ -2340,7 +2340,7 @@ minetest.register_node("default:river_water_flowing", {
type = "vertical_frames", type = "vertical_frames",
aspect_w = 16, aspect_w = 16,
aspect_h = 16, aspect_h = 16,
length = 0.8, length = 0.5,
}, },
}, },
}, },

Binary file not shown.

View File

Before

Width:  |  Height:  |  Size: 411 B

After

Width:  |  Height:  |  Size: 411 B

View File

Before

Width:  |  Height:  |  Size: 175 B

After

Width:  |  Height:  |  Size: 175 B

View File

@ -402,6 +402,57 @@ minetest.register_tool("default:sword_diamond", {
groups = {sword = 1} groups = {sword = 1}
}) })
--
-- Register Craft Recipies
--
local craft_ingreds = {
wood = "group:wood",
stone = "group:stone",
steel = "default:steel_ingot",
bronze = "default:bronze_ingot",
mese = "default:mese_crystal",
diamond = "default:diamond"
}
for name, mat in pairs(craft_ingreds) do
minetest.register_craft({
output = "default:pick_".. name,
recipe = {
{mat, mat, mat},
{"", "group:stick", ""},
{"", "group:stick", ""}
}
})
minetest.register_craft({
output = "default:shovel_".. name,
recipe = {
{mat},
{"group:stick"},
{"group:stick"}
}
})
minetest.register_craft({
output = "default:axe_".. name,
recipe = {
{mat, mat},
{mat, "group:stick"},
{"", "group:stick"}
}
})
minetest.register_craft({
output = "default:sword_".. name,
recipe = {
{mat},
{mat},
{"group:stick"}
}
})
end
minetest.register_tool("default:key", { minetest.register_tool("default:key", {
description = S("Key"), description = S("Key"),
inventory_image = "default_key.png", inventory_image = "default_key.png",
@ -441,3 +492,27 @@ minetest.register_tool("default:key", {
return nil return nil
end end
}) })
minetest.register_craft({
type = "fuel",
recipe = "default:pick_wood",
burntime = 6,
})
minetest.register_craft({
type = "fuel",
recipe = "default:shovel_wood",
burntime = 4,
})
minetest.register_craft({
type = "fuel",
recipe = "default:axe_wood",
burntime = 6,
})
minetest.register_craft({
type = "fuel",
recipe = "default:sword_wood",
burntime = 5,
})

View File

@ -11,7 +11,8 @@ local function on_flood(pos, oldnode, newnode)
nodedef.groups.igniter and nodedef.groups.igniter > 0) then nodedef.groups.igniter and nodedef.groups.igniter > 0) then
minetest.sound_play( minetest.sound_play(
"default_cool_lava", "default_cool_lava",
{pos = pos, max_hear_distance = 16, gain = 0.1} {pos = pos, max_hear_distance = 16, gain = 0.1},
true
) )
end end
-- Remove the torch node -- Remove the torch node
@ -70,6 +71,7 @@ minetest.register_node("default:torch", {
end, end,
floodable = true, floodable = true,
on_flood = on_flood, on_flood = on_flood,
on_rotate = false
}) })
minetest.register_node("default:torch_wall", { minetest.register_node("default:torch_wall", {
@ -93,6 +95,7 @@ minetest.register_node("default:torch_wall", {
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
floodable = true, floodable = true,
on_flood = on_flood, on_flood = on_flood,
on_rotate = false
}) })
minetest.register_node("default:torch_ceiling", { minetest.register_node("default:torch_ceiling", {
@ -116,6 +119,7 @@ minetest.register_node("default:torch_ceiling", {
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
floodable = true, floodable = true,
on_flood = on_flood, on_flood = on_flood,
on_rotate = false
}) })
minetest.register_lbm({ minetest.register_lbm({
@ -134,3 +138,17 @@ minetest.register_lbm({
end end
end end
}) })
minetest.register_craft({
output = "default:torch 4",
recipe = {
{"default:coal_lump"},
{"group:stick"},
}
})
minetest.register_craft({
type = "fuel",
recipe = "default:torch",
burntime = 4,
})

View File

@ -176,10 +176,10 @@ function doors.door_toggle(pos, node, clicker)
if state % 2 == 0 then if state % 2 == 0 then
minetest.sound_play(def.door.sounds[1], minetest.sound_play(def.door.sounds[1],
{pos = pos, gain = 0.3, max_hear_distance = 10}) {pos = pos, gain = 0.3, max_hear_distance = 10}, true)
else else
minetest.sound_play(def.door.sounds[2], minetest.sound_play(def.door.sounds[2],
{pos = pos, gain = 0.3, max_hear_distance = 10}) {pos = pos, gain = 0.3, max_hear_distance = 10}, true)
end end
minetest.swap_node(pos, { minetest.swap_node(pos, {
@ -340,7 +340,7 @@ function doors.register(name, def)
itemstack:take_item() itemstack:take_item()
end end
minetest.sound_play(def.sounds.place, {pos = pos}) minetest.sound_play(def.sounds.place, {pos = pos}, true)
on_place_node(pos, minetest.get_node(pos), on_place_node(pos, minetest.get_node(pos),
placer, node, itemstack, pointed_thing) placer, node, itemstack, pointed_thing)
@ -550,12 +550,12 @@ function doors.trapdoor_toggle(pos, node, clicker)
if string.sub(node.name, -5) == "_open" then if string.sub(node.name, -5) == "_open" then
minetest.sound_play(def.sound_close, minetest.sound_play(def.sound_close,
{pos = pos, gain = 0.3, max_hear_distance = 10}) {pos = pos, gain = 0.3, max_hear_distance = 10}, true)
minetest.swap_node(pos, {name = string.sub(node.name, 1, minetest.swap_node(pos, {name = string.sub(node.name, 1,
string.len(node.name) - 5), param1 = node.param1, param2 = node.param2}) string.len(node.name) - 5), param1 = node.param1, param2 = node.param2})
else else
minetest.sound_play(def.sound_open, minetest.sound_play(def.sound_open,
{pos = pos, gain = 0.3, max_hear_distance = 10}) {pos = pos, gain = 0.3, max_hear_distance = 10}, true)
minetest.swap_node(pos, {name = node.name .. "_open", minetest.swap_node(pos, {name = node.name .. "_open",
param1 = node.param1, param2 = node.param2}) param1 = node.param1, param2 = node.param2})
end end
@ -744,7 +744,7 @@ function doors.register_fencegate(name, def)
local node_def = minetest.registered_nodes[node.name] local node_def = minetest.registered_nodes[node.name]
minetest.swap_node(pos, {name = node_def.gate, param2 = node.param2}) minetest.swap_node(pos, {name = node_def.gate, param2 = node.param2})
minetest.sound_play(node_def.sound, {pos = pos, gain = 0.3, minetest.sound_play(node_def.sound, {pos = pos, gain = 0.3,
max_hear_distance = 8}) max_hear_distance = 8}, true)
return itemstack return itemstack
end, end,
selection_box = { selection_box = {

View File

@ -0,0 +1,18 @@
# textdomain: doors
Hidden Door Segment=Segmen Pintu Tersembunyi
Owned by @1=Milik @1
You do not own this locked door.=Anda bukan pemilik pintu berkunci ini.
a locked door=pintu berkunci
Wooden Door=Pintu Kayu
Steel Door=Pintu Keluli
Glass Door=Pintu Kaca
Obsidian Glass Door=Pintu Kaca Obsidia
You do not own this trapdoor.=Anda bukan pemilik pintu kolong ini.
a locked trapdoor=pintu kolong berkunci
Wooden Trapdoor=Pintu Kolong Kayu
Steel Trapdoor=Pintu Kolong Keluli
Apple Wood Fence Gate=Pintu Pagar Kayu Epal
Acacia Wood Fence Gate=Pintu Pagar Kayu Akasia
Jungle Wood Fence Gate=Pintu Pagar Kayu Hutan
Pine Wood Fence Gate=Pintu Pagar Kayu Pain
Aspen Wood Fence Gate=Pintu Pagar Kayu Aspen

View File

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

View File

@ -0,0 +1,19 @@
# textdomain: doors
Hidden Door Segment=Dold dörrsegment
Owned by @1=Ägd av @1
You do not own this locked door.=Du äger inte denna låsta dörr.
a locked door=en låst dörr
Wooden Door=Trä Dörr
Steel Door=Stål Dörr
Glass Door=Glas Dörr
Obsidian Glass Door=Obsidian Glas Dörr
Owned by @1=Ägd av @1
You do not own this trapdoor.=Du äger inte denna fallucka
a locked trapdoor=en låst fallucka
Wooden Trapdoor=Trä Fallucka
Steel Trapdoor=Stål Fallucka
Apple Wood Fence Gate=Äpple Trä Fallucka
Acacia Wood Fence Gate=Akacia Trä Fallucka
Jungle Wood Fence Gate=Djungel Trä Fallucka
Pine Wood Fence Gate=Tall Trä Fallucka
Aspen Wood Fence Gate=Asp Trä Fallucka

View File

@ -0,0 +1,18 @@
# textdomain: doors
Hidden Door Segment=隐藏门段
Owned by @1=由@1拥有
You do not own this locked door.=这个门不属于你所有。
a locked door=一扇已上锁的门
Wooden Door=木门
Steel Door=铁门
Glass Door=玻璃门
Obsidian Glass Door=黑曜石玻璃门
You do not own this trapdoor.=这个活板门不属于你所有。
a locked trapdoor=一扇已上锁的活板门
Wooden Trapdoor=木活板门
Steel Trapdoor=铁活板门
Apple Wood Fence Gate=用苹果树做的木栅栏门
Acacia Wood Fence Gate=相思木栅栏门
Jungle Wood Fence Gate=丛林木栅栏门
Pine Wood Fence Gate=松木栅栏门
Aspen Wood Fence Gate=白杨木栅栏门

View File

@ -0,0 +1,18 @@
# textdomain: doors
Hidden Door Segment=隱藏門段
Owned by @1=由@1擁有
You do not own this locked door.=這個門不屬於你所有。
a locked door=一扇已上鎖的門
Wooden Door=木門
Steel Door=鐵門
Glass Door=玻璃門
Obsidian Glass Door=黑曜石玻璃門
You do not own this trapdoor.=這個活板門不屬於你所有。
a locked trapdoor=一扇已上鎖的活板門
Wooden Trapdoor=木活板門
Steel Trapdoor=鐵活板門
Apple Wood Fence Gate=用蘋果樹做的木柵欄門
Acacia Wood Fence Gate=相思木柵欄門
Jungle Wood Fence Gate=叢林木柵欄門
Pine Wood Fence Gate=松木柵欄門
Aspen Wood Fence Gate=白楊木柵欄門

View File

@ -1,26 +1,13 @@
dungeon_loot.registered_loot = { -- Loot from the `default` mod is registered here,
-- buckets -- with the rest being registered in the respective mods
{name = "bucket:bucket_empty", chance = 0.55},
-- water in deserts/ice or above ground, lava otherwise
{name = "bucket:bucket_water", chance = 0.45,
types = {"sandstone", "desert", "ice"}},
{name = "bucket:bucket_water", chance = 0.45, y = {0, 32768},
types = {"normal"}},
{name = "bucket:bucket_lava", chance = 0.45, y = {-32768, -1},
types = {"normal"}},
dungeon_loot.registered_loot = {
-- various items -- various items
{name = "default:stick", chance = 0.6, count = {3, 6}}, {name = "default:stick", chance = 0.6, count = {3, 6}},
{name = "default:flint", chance = 0.4, count = {1, 3}}, {name = "default:flint", chance = 0.4, count = {1, 3}},
{name = "vessels:glass_fragments", chance = 0.35, count = {1, 4}},
{name = "carts:rail", chance = 0.35, count = {1, 6}},
-- farming / consumable -- farming / consumable
{name = "farming:string", chance = 0.5, count = {1, 8}},
{name = "farming:wheat", chance = 0.5, count = {2, 5}},
{name = "default:apple", chance = 0.4, count = {1, 4}}, {name = "default:apple", chance = 0.4, count = {1, 4}},
{name = "farming:seed_cotton", chance = 0.4, count = {1, 4},
types = {"normal"}},
{name = "default:cactus", chance = 0.4, count = {1, 4}, {name = "default:cactus", chance = 0.4, count = {1, 4},
types = {"sandstone", "desert"}}, types = {"sandstone", "desert"}},

View File

@ -89,20 +89,20 @@ local function populate_chest(pos, rand, dungeontype)
amount = rand:next(loot.count[1], loot.count[2]) amount = rand:next(loot.count[1], loot.count[2])
end end
if itemdef then if not itemdef then
if itemdef.tool_capabilities then minetest.log("warning", "Registered loot item " .. loot.name .. " does not exist")
for n = 1, amount do elseif itemdef.tool_capabilities then
local wear = rand:next(0.20 * 65535, 0.75 * 65535) -- 20% to 75% wear for n = 1, amount do
table.insert(items, ItemStack({name = loot.name, wear = wear})) local wear = rand:next(0.20 * 65535, 0.75 * 65535) -- 20% to 75% wear
end table.insert(items, ItemStack({name = loot.name, wear = wear}))
elseif itemdef.stack_max == 1 then
-- not stackable, add separately
for n = 1, amount do
table.insert(items, loot.name)
end
else
table.insert(items, ItemStack({name = loot.name, count = amount}))
end end
elseif itemdef.stack_max == 1 then
-- not stackable, add separately
for n = 1, amount do
table.insert(items, loot.name)
end
else
table.insert(items, ItemStack({name = loot.name, count = amount}))
end end
end end
end end

16
mods/dye/locale/dye.ms.tr Normal file
View File

@ -0,0 +1,16 @@
# textdomain: dye
White Dye=Pewarna Putih
Grey Dye=Pewarna Kelabu
Dark Grey Dye=Pewarna Kelabu Gelap
Black Dye=Pewarna Hitam
Violet Dye=Pewarna Ungu
Blue Dye=Pewarna Biru
Cyan Dye=Pewarna Biru Kehijauan
Dark Green Dye=Pewarna Hijau Gelap
Green Dye=Pewarna Hijau
Yellow Dye=Pewarna Kuning
Brown Dye=Pewarna Perang
Orange Dye=Pewarna Jingga
Red Dye=Pewarna Merah
Magenta Dye=Pewarna Merah Lembayung
Pink Dye=Pewarna Merah Jambu

16
mods/dye/locale/dye.ru.tr Normal file
View File

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

16
mods/dye/locale/dye.se.tr Normal file
View File

@ -0,0 +1,16 @@
# textdomain: dye
White Dye=Vit Färg
Grey Dye=Grå Färg
Dark Grey Dye=Mörk Grå Färg
Black Dye=Svart Färg
Violet Dye=Violett Färg
Blue Dye=Blå Färg
Cyan Dye=Cyan Färg
Dark Green Dye=Mörk Grön Färg
Green Dye=Grön Färg
Yellow Dye=Gul Färg
Brown Dye=Brun Färg
Orange Dye=Orange Färg
Red Dye=Röd Färg
Magenta Dye=Magenta Färg
Pink Dye=Rosa Färg

View File

@ -0,0 +1,16 @@
# textdomain: dye
White Dye=白染料
Grey Dye=灰染料
Dark Grey Dye=暗灰染料
Black Dye=黑染料
Violet Dye=紫染料
Blue Dye=蓝染料
Cyan Dye=青染料
Dark Green Dye=暗绿染料
Green Dye=绿染料
Yellow Dye=黄染料
Brown Dye=棕染料
Orange Dye=橙染料
Red Dye=红染料
Magenta Dye=品红染料
Pink Dye=粉红染料

View File

@ -0,0 +1,16 @@
# textdomain: dye
White Dye=白染料
Grey Dye=灰染料
Dark Grey Dye=暗灰染料
Black Dye=黑染料
Violet Dye=紫染料
Blue Dye=藍染料
Cyan Dye=青染料
Dark Green Dye=暗綠染料
Green Dye=綠染料
Yellow Dye=黃染料
Brown Dye=棕染料
Orange Dye=橙染料
Red Dye=紅染料
Magenta Dye=品紅染料
Pink Dye=粉紅染料

View File

@ -59,7 +59,7 @@ farming.hoe_on_use = function(itemstack, user, pointed_thing, uses)
minetest.sound_play("default_dig_crumbly", { minetest.sound_play("default_dig_crumbly", {
pos = pt.under, pos = pt.under,
gain = 0.5, gain = 0.5,
}) }, true)
if not (creative and creative.is_enabled_for if not (creative and creative.is_enabled_for
and creative.is_enabled_for(user:get_player_name())) then and creative.is_enabled_for(user:get_player_name())) then
@ -68,7 +68,8 @@ farming.hoe_on_use = function(itemstack, user, pointed_thing, uses)
itemstack:add_wear(65535/(uses-1)) itemstack:add_wear(65535/(uses-1))
-- tool break sound -- tool break sound
if itemstack:get_count() == 0 and wdef.sound and wdef.sound.breaks then if itemstack:get_count() == 0 and wdef.sound and wdef.sound.breaks then
minetest.sound_play(wdef.sound.breaks, {pos = pt.above, gain = 0.5}) minetest.sound_play(wdef.sound.breaks, {pos = pt.above,
gain = 0.5}, true)
end end
end end
return itemstack return itemstack
@ -176,6 +177,8 @@ 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
minetest.log("action", player_name .. " places node " .. plantname .. " at " ..
minetest.pos_to_string(pt.above))
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 (creative and creative.is_enabled_for if not (creative and creative.is_enabled_for

View File

@ -144,3 +144,13 @@ minetest.register_craft({
recipe = "farming:hoe_wood", recipe = "farming:hoe_wood",
burntime = 5, burntime = 5,
}) })
-- Register farming items as dungeon loot
if minetest.global_exists("dungeon_loot") then
dungeon_loot.register({
{name = "farming:string", chance = 0.5, count = {1, 8}},
{name = "farming:wheat", chance = 0.5, count = {2, 5}},
{name = "farming:seed_cotton", chance = 0.4, count = {1, 4},
types = {"normal"}},
})
end

View File

@ -0,0 +1,25 @@
# textdomain: farming
Wooden Hoe=Cangkul Kayu
Stone Hoe=Cangkul Batu
Steel Hoe=Cangkul Keluli
Bronze Hoe=Cangkul Gangsa
Mese Hoe=Cangkul Mese
Diamond Hoe=Cangkul Intan
Wheat Seed=Benih Gandum
Flour=Tepung
Bread=Roti
Cotton Seed=Benih Kapas
String=Benang
Soil=Tanih
Wet Soil=Tanih Lembap
Dry Soil=Tanih Kering
Wet Dry Soil=Tanih Kering Lembap
Desert Sand Soil=Tanih Pasir Gurun
Wet Desert Sand Soil=Tanih Pasir Gurun Lembap
Straw=Jerami
Straw Stair=Tangga Jerami
Inner Straw Stair=Tangga Jerami Dalaman
Outer Straw Stair=Tangga Jerami Luaran
Straw Slab=Papak Jerami
Wheat=Gandum
Cotton=Kapas

View File

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

View File

@ -0,0 +1,25 @@
# textdomain: farming
Wooden Hoe=Träsko
Stone Hoe=Stensko
Steel Hoe=Stålsko
Bronze Hoe=Bronssko
Mese Hoe=Mesesko
Diamond Hoe=Diamantsko
Wheat Seed=Vetefrö
Flour=Mjöl
Bread=Bröd
Cotton Seed=Bollumsfrö
String=Snöra
Soil=Odlningsmark
Wet Soil=Våt Odlningsmark
Dry Soil=Torr Odlningsmark
Wet Dry Soil=Våt Torr Odlningsmark
Desert Sand Soil=Öken Sand Odlningsmark
Wet Desert Sand Soil=Våt Öken Sand Odlningsmark
Straw=Halm
Straw Stair=Halmstrappa
Inner Straw Stair=Inre Halmstrappa
Outer Straw Stair=Yttre Halmstrappa
Straw Slab=Halmplatta
Wheat=Vete
Cotton=Bomull

View File

@ -0,0 +1,25 @@
# textdomain: farming
Wooden Hoe=木锄头
Stone Hoe=石锄头
Steel Hoe=铁锄头
Bronze Hoe=青铜锄头
Mese Hoe=黄石锄头
Diamond Hoe=钻石锄头
Wheat Seed=小麦种子
Flour=面粉
Bread=面包
Cotton Seed=棉花种子
String=线
Soil=土
Wet Soil=湿土
Dry Soil=干土
Wet Dry Soil=湿干土
Desert Sand Soil=沙漠沙土
Wet Desert Sand Soil=湿沙漠沙土
Straw=稻草
Straw Stair=稻草台阶
Inner Straw Stair=稻草内楼梯
Outer Straw Stair=稻草外楼梯
Straw Slab=稻草板
Wheat=小麦
Cotton=棉

View File

@ -0,0 +1,25 @@
# textdomain: farming
Wooden Hoe=木鋤頭
Stone Hoe=石鋤頭
Steel Hoe=鐵鋤頭
Bronze Hoe=青銅鋤頭
Mese Hoe=黃石鋤頭
Diamond Hoe=鑽石鋤頭
Wheat Seed=小麥種子
Flour=麵粉
Bread=麵包
Cotton Seed=棉花種子
String=線
Soil=土
Wet Soil=溼土
Dry Soil=乾土
Wet Dry Soil=溼乾土
Desert Sand Soil=沙漠沙土
Wet Desert Sand Soil=溼沙漠沙土
Straw=稻草
Straw Stair=稻草臺階
Inner Straw Stair=稻草內樓梯
Outer Straw Stair=稻草外樓梯
Straw Slab=稻草板
Wheat=小麥
Cotton=棉

Some files were not shown because too many files have changed in this diff Show More