diff --git a/.luacheckrc b/.luacheckrc index be8e4bbf..2be56e80 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -20,5 +20,8 @@ read_globals = { -- Overwrites minetest.handle_node_drops 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. files["mods/default/legacy.lua"].global = false diff --git a/game_api.txt b/game_api.txt index 52c64f4c..fda371c6 100644 --- a/game_api.txt +++ b/game_api.txt @@ -424,7 +424,7 @@ Give Initial Stuff 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)` * 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. * 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 { @@ -467,7 +473,7 @@ The player API can register player models and update the player's appearence -- = {x = , y = }, foo = {x = 0, y = 19}, bar = {x = 20, y = 39}, - -- ... + -- ... }, collisionbox = {-0.3, 0.0, -0.3, 0.3, 1.7, 0.3}, -- In nodes from feet position stepheight = 0.6, -- In nodes diff --git a/mods/beds/beds.lua b/mods/beds/beds.lua index 276c05e5..dc044a35 100644 --- a/mods/beds/beds.lua +++ b/mods/beds/beds.lua @@ -79,10 +79,10 @@ beds.register_bed("beds:bed", { } }, nodebox = { - bottom = {-0.5, -0.5, -0.5, 0.5, 0.06, 0.5}, - top = {-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.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 = { {"wool:white", "wool:white", "wool:white"}, {"group:wood", "group:wood", "group:wood"} diff --git a/mods/beds/functions.lua b/mods/beds/functions.lua index 0b79bfb5..6ee0474c 100644 --- a/mods/beds/functions.lua +++ b/mods/beds/functions.lua @@ -90,7 +90,13 @@ local function lay_down(player, pos, bed_pos, state, skip) local yaw, param2 = get_look_yaw(bed_pos) player:set_look_horizontal(yaw) 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_pos(p) default.player_attached[name] = true diff --git a/mods/beds/locale/beds.zh_TW.tr b/mods/beds/locale/beds.zh_TW.tr new file mode 100644 index 00000000..4e7d6875 --- /dev/null +++ b/mods/beds/locale/beds.zh_TW.tr @@ -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.=你只能在晚上睡覺。 + diff --git a/mods/binoculars/locale/binoculars.zh_TW.tr b/mods/binoculars/locale/binoculars.zh_TW.tr new file mode 100644 index 00000000..bbe3b390 --- /dev/null +++ b/mods/binoculars/locale/binoculars.zh_TW.tr @@ -0,0 +1,3 @@ +# textdomain: binoculars +Binoculars=望遠鏡 +Use with 'Zoom' key=與“縮放”鍵一起使用 diff --git a/mods/boats/locale/boats.zh_CN.tr b/mods/boats/locale/boats.zh_CN.tr index 5fee7767..254f2dfc 100644 --- a/mods/boats/locale/boats.zh_CN.tr +++ b/mods/boats/locale/boats.zh_CN.tr @@ -1,4 +1,4 @@ # textdomain: boats -Boat cruise mode on=船巡航模式开 -Boat cruise mode off=船巡航模式关 +Boat cruise mode on=巡航模式开启 +Boat cruise mode off=巡航模式关闭 Boat=船 diff --git a/mods/boats/locale/boats.zh_TW.tr b/mods/boats/locale/boats.zh_TW.tr new file mode 100644 index 00000000..97b34711 --- /dev/null +++ b/mods/boats/locale/boats.zh_TW.tr @@ -0,0 +1,4 @@ +# textdomain: boats +Boat cruise mode on=巡航模式開啟 +Boat cruise mode off=巡航模式關閉 +Boat=船 diff --git a/mods/bones/locale/bones.zh_TW.tr b/mods/bones/locale/bones.zh_TW.tr new file mode 100644 index 00000000..1a94d2f1 --- /dev/null +++ b/mods/bones/locale/bones.zh_TW.tr @@ -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的骨骸 diff --git a/mods/bucket/init.lua b/mods/bucket/init.lua index 2cf431ca..ebdf2e74 100644 --- a/mods/bucket/init.lua +++ b/mods/bucket/init.lua @@ -225,3 +225,16 @@ minetest.register_craft({ 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 diff --git a/mods/bucket/locale/bucket.zh_CN.tr b/mods/bucket/locale/bucket.zh_CN.tr index 24660e4d..fda5bfcd 100644 --- a/mods/bucket/locale/bucket.zh_CN.tr +++ b/mods/bucket/locale/bucket.zh_CN.tr @@ -2,4 +2,4 @@ Empty Bucket=空桶 Water Bucket=水桶 River Water Bucket=河水桶 -Lava Bucket=熔岩桶 +Lava Bucket=岩浆桶 diff --git a/mods/bucket/locale/bucket.zh_TW.tr b/mods/bucket/locale/bucket.zh_TW.tr new file mode 100644 index 00000000..965d6575 --- /dev/null +++ b/mods/bucket/locale/bucket.zh_TW.tr @@ -0,0 +1,5 @@ +# textdomain: bucket +Empty Bucket=空桶 +Water Bucket=水桶 +River Water Bucket=河水桶 +Lava Bucket=岩漿桶 diff --git a/mods/bucket/mod.conf b/mods/bucket/mod.conf index 1c60a099..fef46873 100644 --- a/mods/bucket/mod.conf +++ b/mods/bucket/mod.conf @@ -1,3 +1,4 @@ name = bucket description = Minetest Game mod: bucket depends = default +optional_depends = dungeon_loot diff --git a/mods/butterflies/locale/butterflies.zh_TW.tr b/mods/butterflies/locale/butterflies.zh_TW.tr new file mode 100644 index 00000000..8d927c18 --- /dev/null +++ b/mods/butterflies/locale/butterflies.zh_TW.tr @@ -0,0 +1,4 @@ +# textdomain: butterflies +White Butterfly=白蝴蝶 +Red Butterfly=紅蝴蝶 +Violet Butterfly=紫蝴蝶 diff --git a/mods/carts/cart_entity.lua b/mods/carts/cart_entity.lua index 3c131a66..02ff6cde 100644 --- a/mods/carts/cart_entity.lua +++ b/mods/carts/cart_entity.lua @@ -414,7 +414,7 @@ minetest.register_craftitem("carts:cart", { end 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 and creative.is_enabled_for(placer:get_player_name())) then diff --git a/mods/carts/init.lua b/mods/carts/init.lua index a5aa9cb5..69d59d9f 100644 --- a/mods/carts/init.lua +++ b/mods/carts/init.lua @@ -19,3 +19,10 @@ carts.path_distance_max = 3 dofile(carts.modpath.."/functions.lua") dofile(carts.modpath.."/rails.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 diff --git a/mods/carts/locale/carts.zh_CN.tr b/mods/carts/locale/carts.zh_CN.tr index 06c0cdd7..953cdefc 100644 --- a/mods/carts/locale/carts.zh_CN.tr +++ b/mods/carts/locale/carts.zh_CN.tr @@ -1,6 +1,6 @@ # textdomain: carts Cart=矿车 (Sneak+Click to pick up)=(潜行+单击以捡起) -Rail=铁路 -Powered Rail=动力铁路 -Brake Rail=制动铁路 +Rail=铁轨 +Powered Rail=动力铁轨 +Brake Rail=制动铁轨 diff --git a/mods/carts/locale/carts.zh_TW.tr b/mods/carts/locale/carts.zh_TW.tr new file mode 100644 index 00000000..f6300d4a --- /dev/null +++ b/mods/carts/locale/carts.zh_TW.tr @@ -0,0 +1,6 @@ +# textdomain: carts +Cart=礦車 +(Sneak+Click to pick up)=(潛行+單擊以撿起) +Rail=鐵軌 +Powered Rail=動力鐵軌 +Brake Rail=制動鐵軌 diff --git a/mods/carts/mod.conf b/mods/carts/mod.conf index 20357e3e..0eab35c3 100644 --- a/mods/carts/mod.conf +++ b/mods/carts/mod.conf @@ -1,3 +1,4 @@ name = carts description = Carts (formerly boost_cart) depends = default, player_api +optional_depends = dungeon_loot diff --git a/mods/creative/inventory.lua b/mods/creative/inventory.lua index 5b36f533..2e93e5ff 100644 --- a/mods/creative/inventory.lua +++ b/mods/creative/inventory.lua @@ -25,7 +25,9 @@ function creative.init_creative_inventory(player) player_inventory[player_name] = { size = 0, 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, { @@ -74,6 +76,12 @@ function creative.update_creative_inventory(player_name, tab_content) creative.init_creative_inventory(minetest.get_player_by_name(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 creative_list = {} @@ -119,8 +127,7 @@ function creative.register_tab(name, title, items) local player_name = player:get_player_name() creative.update_creative_inventory(player_name, items) local inv = player_inventory[player_name] - local start_i = inv.start_i or 0 - local pagenum = math.floor(start_i / (4*8) + 1) + local pagenum = math.floor(inv.start_i / (4*8) + 1) local pagemax = math.ceil(inv.size / (4*8)) local esc = minetest.formspec_escape return sfinv.make_formspec(player, context, @@ -143,7 +150,7 @@ function creative.register_tab(name, title, items) "field_close_on_enter[creative_filter;false]" .. "field[0.3,4.2;2.8,1.2;creative_filter;;" .. esc(inv.filter) .. "]" .. "listring[detached:creative_" .. player_name .. ";main]" .. - "list[detached:creative_" .. player_name .. ";main;0,0;8,4;" .. tostring(start_i) .. "]" .. + "list[detached:creative_" .. player_name .. ";main;0,0;8,4;" .. tostring(inv.start_i) .. "]" .. creative.formspec_add, true) end, on_enter = function(self, player, context) @@ -161,13 +168,11 @@ function creative.register_tab(name, title, items) if fields.creative_clear then inv.start_i = 0 inv.filter = "" - creative.update_creative_inventory(player_name, items) sfinv.set_player_inventory_formspec(player, context) elseif fields.creative_search or fields.key_enter_field == "creative_filter" then inv.start_i = 0 inv.filter = fields.creative_filter:lower() - creative.update_creative_inventory(player_name, items) sfinv.set_player_inventory_formspec(player, context) elseif not fields.quit then local start_i = inv.start_i or 0 diff --git a/mods/creative/locale/creative.zh_TW.tr b/mods/creative/locale/creative.zh_TW.tr new file mode 100644 index 00000000..c5746d40 --- /dev/null +++ b/mods/creative/locale/creative.zh_TW.tr @@ -0,0 +1,10 @@ +# textdomain: creative +Allow player to use creative inventory=允許玩家使用創造模式物品欄 +Search=搜索 +Reset=重置 +Previous page=上一頁 +Next page=下一頁 +All=所有 +Nodes=節點 +Tools=工具 +Items=物品 diff --git a/mods/default/chests.lua b/mods/default/chests.lua index b401d916..3fe9c1a0 100644 --- a/mods/default/chests.lua +++ b/mods/default/chests.lua @@ -46,7 +46,8 @@ function default.chest.chest_lid_close(pn) local node = minetest.get_node(pos) minetest.after(0.2, minetest.swap_node, pos, { name = "default:" .. swap, 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 default.chest.open_chests = {} @@ -128,7 +129,7 @@ function default.chest.register_chest(name, d) end 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 minetest.swap_node(pos, { name = "default:" .. name .. "_open", @@ -199,7 +200,7 @@ function default.chest.register_chest(name, d) end def.on_rightclick = function(pos, node, clicker) 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 minetest.swap_node(pos, { name = "default:" .. name .. "_open", diff --git a/mods/default/functions.lua b/mods/default/functions.lua index 18ba561b..f67eadff 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -141,7 +141,7 @@ default.cool_lava = function(pos, node) minetest.set_node(pos, {name = "default:stone"}) end 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 if minetest.settings:get_bool("enable_lavacooling") ~= false then diff --git a/mods/default/item_entity.lua b/mods/default/item_entity.lua index 2a61f08e..85454365 100644 --- a/mods/default/item_entity.lua +++ b/mods/default/item_entity.lua @@ -20,7 +20,7 @@ local item = { minetest.sound_play("default_item_smoke", { pos = p, max_hear_distance = 8, - }) + }, true) minetest.add_particlespawner({ amount = 3, time = 0.1, diff --git a/mods/default/locale/default.zh_CN.tr b/mods/default/locale/default.zh_CN.tr index 9fb4be95..ddd94713 100644 --- a/mods/default/locale/default.zh_CN.tr +++ b/mods/default/locale/default.zh_CN.tr @@ -1,8 +1,8 @@ # textdomain: default -Locked Chest=锁着的箱子 -Locked Chest (owned by @1)=锁着的箱子(由@1拥有) -You do not own this chest.=您不拥有该箱子。 -a locked chest=一个锁着的箱子 +Locked Chest=已上锁的箱子 +Locked Chest (owned by @1)=已上锁的箱子(属于@1所有) +You do not own this chest.=这个箱子不属于你所有。 +a locked chest=一个已上锁的箱子 Chest=箱子 Stick=棒 Paper=纸 @@ -11,20 +11,20 @@ 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=金矿 +Coal Lump=煤块 +Iron Lump=铁块 +Copper Lump=铜块 +Tin Lump=锡块 +Mese Crystal=黄石晶体 +Gold Lump=金块 Diamond=钻石 -Clay Lump=粘土矿 +Clay Lump=粘土块 Steel Ingot=铁锭 Copper Ingot=铜锭 Tin Ingot=锡锭 Bronze Ingot=青铜锭 Gold Ingot=金锭 -Mese Crystal Fragment=黄石水晶碎片 +Mese Crystal Fragment=黄石晶体碎片 Clay Brick=粘土砖 Obsidian Shard=黑曜石碎片 Flint=燧石 @@ -34,50 +34,50 @@ Furnace is empty=熔炉是空的 @1%=@1% Empty=空 Not cookable=不可烹饪 -Furnace active=熔炉活跃 -Furnace inactive=熔炉非活跃 +Furnace active=熔炉正在运转 +Furnace inactive=熔炉未使用 (Item: @1; Fuel: @2)=(项目:@1;燃料:@2) Furnace=熔炉 Stone=石 Cobblestone=鹅卵石 Stone Brick=石砖 -Stone Block=石块 -Mossy Cobblestone=生苔的鹅卵石 +Stone Block=石方块 +Mossy Cobblestone=苔藓覆盖的鹅卵石 Desert Stone=沙漠石 Desert Cobblestone=沙漠鹅卵石 Desert Stone Brick=沙漠鹅卵石砖 -Desert Stone Block=沙漠鹅卵石块 +Desert Stone Block=沙漠鹅卵石方块 Sandstone=砂岩 Sandstone Brick=砂岩砖 -Sandstone Block=砂岩块 +Sandstone Block=砂岩方块 Desert Sandstone=沙漠砂岩 Desert Sandstone Brick=沙漠砂岩砖 -Desert Sandstone Block=沙漠砂岩块 +Desert Sandstone Block=沙漠砂岩方块 Silver Sandstone=银砂岩 Silver Sandstone Brick=银砂岩砖 -Silver Sandstone Block=银砂岩块 +Silver Sandstone Block=银砂岩方块 Obsidian=黑曜石 Obsidian Brick=黑曜石砖 -Obsidian Block=黑曜石块 +Obsidian Block=黑曜石方块 Dirt=土 Dirt with Grass=带草的土 Dirt with Grass and Footsteps=带草的土及脚印 -Dirt with Dry Grass=土和干草 -Dirt with Snow=土和雪 +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 Stones=带石头的多年冻土 Permafrost with Moss=生苔的多年冻土 Sand=沙 Desert Sand=沙漠沙 Silver Sand=银沙 -Gravel=砾石 +Gravel=沙砾 Clay=粘土 Snow=雪 -Snow Block=雪块 +Snow Block=雪方块 Ice=冰 Cave Ice=洞穴冰 Apple Tree=苹果树 @@ -103,26 +103,26 @@ Aspen Tree=白杨树 Aspen Wood Planks=白杨树木板 Aspen Tree Leaves=白杨树叶 Aspen Tree Sapling=白杨树树苗 -Coal Ore=煤矿石 -Coal Block=煤块 +Coal Ore=煤炭矿石 +Coal Block=煤炭方块 Iron Ore=铁矿石 -Steel Block=钢块 +Steel Block=钢方块 Copper Ore=铜矿石 -Copper Block=铜块 +Copper Block=铜方块 Tin Ore=锡矿石 -Tin Block=锡块 -Bronze Block=青铜块 +Tin Block=锡方块 +Bronze Block=青铜方块 Mese Ore=黄石矿石 -Mese Block=黄石块 +Mese Block=黄石方块 Gold Ore=金矿石 -Gold Block=金块 +Gold Block=金方块 Diamond Ore=钻石矿石 -Diamond Block=钻石块 +Diamond Block=钻石方块 Cactus=仙人掌 Large Cactus Seedling=大仙人掌苗 Papyrus=莎草纸 Dry Shrub=干灌木 -Jungle Grass=莦 +Jungle Grass=丛林草 Grass=草 Dry Grass=干草 Fern=蕨 @@ -148,20 +148,20 @@ Orange Coral=橙珊瑚 Coral Skeleton=珊瑚骨架 Water Source=水方块 Flowing Water=流动的水 -River Water Source=河流水方块 -Flowing River Water=流动的河流水 -Lava Source=融岩方块 -Flowing Lava=流动的融岩 +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=相思木围栏 +Wooden Ladder=木梯子 +Steel Ladder=铁梯子 +Apple Wood Fence=苹果木栅栏 +Acacia Wood Fence=相思木栅栏 Jungle Wood Fence=丛林木栅栏 Pine Wood Fence=松木栅栏 Aspen Wood Fence=白杨木栅栏 @@ -172,7 +172,7 @@ Pine Wood Fence Rail=松木栏杆 Aspen Wood Fence Rail=白杨木栏杆 Glass=玻璃 Obsidian Glass=黑曜石玻璃 -Brick Block=砖块 +Brick Block=砖方块 Mese Lamp=黄石灯 Mese Post Light=黄石柱灯 Cloud=云 diff --git a/mods/default/locale/default.zh_TW.tr b/mods/default/locale/default.zh_TW.tr new file mode 100644 index 00000000..6b06b8a8 --- /dev/null +++ b/mods/default/locale/default.zh_TW.tr @@ -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" diff --git a/mods/default/mapgen.lua b/mods/default/mapgen.lua index afca9f8e..8c161d1e 100644 --- a/mods/default/mapgen.lua +++ b/mods/default/mapgen.lua @@ -2143,8 +2143,10 @@ function default.register_decorations() -- Papyrus + -- Dirt version for rainforest swamp + minetest.register_decoration({ - name = "default:papyrus", + name = "default:papyrus_on_dirt", deco_type = "schematic", place_on = {"default:dirt"}, sidelen = 16, @@ -2156,10 +2158,32 @@ function default.register_decorations() octaves = 3, persist = 0.7 }, - biomes = {"savanna_shore", "rainforest_swamp"}, + biomes = {"rainforest_swamp"}, y_max = 0, y_min = 0, - schematic = minetest.get_modpath("default") .. "/schematics/papyrus.mts", + 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"}, + y_max = 0, + y_min = 0, + schematic = minetest.get_modpath("default") .. + "/schematics/papyrus_on_dry_dirt.mts", }) -- Bush diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index c752d3bf..cd465934 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -2234,7 +2234,7 @@ minetest.register_node("default:water_flowing", { type = "vertical_frames", aspect_w = 16, aspect_h = 16, - length = 0.8, + length = 0.5, }, }, { @@ -2244,7 +2244,7 @@ minetest.register_node("default:water_flowing", { type = "vertical_frames", aspect_w = 16, aspect_h = 16, - length = 0.8, + length = 0.5, }, }, }, @@ -2330,7 +2330,7 @@ minetest.register_node("default:river_water_flowing", { type = "vertical_frames", aspect_w = 16, aspect_h = 16, - length = 0.8, + length = 0.5, }, }, { @@ -2340,7 +2340,7 @@ minetest.register_node("default:river_water_flowing", { type = "vertical_frames", aspect_w = 16, aspect_h = 16, - length = 0.8, + length = 0.5, }, }, }, diff --git a/mods/default/schematics/papyrus.mts b/mods/default/schematics/papyrus_on_dirt.mts similarity index 100% rename from mods/default/schematics/papyrus.mts rename to mods/default/schematics/papyrus_on_dirt.mts diff --git a/mods/default/schematics/papyrus_on_dry_dirt.mts b/mods/default/schematics/papyrus_on_dry_dirt.mts new file mode 100644 index 00000000..36265802 Binary files /dev/null and b/mods/default/schematics/papyrus_on_dry_dirt.mts differ diff --git a/mods/default/torch.lua b/mods/default/torch.lua index 85035a5e..c06dee8f 100644 --- a/mods/default/torch.lua +++ b/mods/default/torch.lua @@ -11,7 +11,8 @@ local function on_flood(pos, oldnode, newnode) nodedef.groups.igniter and nodedef.groups.igniter > 0) then minetest.sound_play( "default_cool_lava", - {pos = pos, max_hear_distance = 16, gain = 0.1} + {pos = pos, max_hear_distance = 16, gain = 0.1}, + true ) end -- Remove the torch node @@ -70,6 +71,7 @@ minetest.register_node("default:torch", { end, floodable = true, on_flood = on_flood, + on_rotate = false }) minetest.register_node("default:torch_wall", { @@ -93,6 +95,7 @@ minetest.register_node("default:torch_wall", { sounds = default.node_sound_wood_defaults(), floodable = true, on_flood = on_flood, + on_rotate = false }) minetest.register_node("default:torch_ceiling", { @@ -116,6 +119,7 @@ minetest.register_node("default:torch_ceiling", { sounds = default.node_sound_wood_defaults(), floodable = true, on_flood = on_flood, + on_rotate = false }) minetest.register_lbm({ diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 85af0ef8..ee4a188c 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -176,10 +176,10 @@ function doors.door_toggle(pos, node, clicker) if state % 2 == 0 then 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 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 minetest.swap_node(pos, { @@ -340,7 +340,7 @@ function doors.register(name, def) itemstack:take_item() 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), placer, node, itemstack, pointed_thing) @@ -550,12 +550,12 @@ function doors.trapdoor_toggle(pos, node, clicker) if string.sub(node.name, -5) == "_open" then 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, string.len(node.name) - 5), param1 = node.param1, param2 = node.param2}) else 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", param1 = node.param1, param2 = node.param2}) end @@ -744,7 +744,7 @@ function doors.register_fencegate(name, def) local node_def = minetest.registered_nodes[node.name] minetest.swap_node(pos, {name = node_def.gate, param2 = node.param2}) minetest.sound_play(node_def.sound, {pos = pos, gain = 0.3, - max_hear_distance = 8}) + max_hear_distance = 8}, true) return itemstack end, selection_box = { diff --git a/mods/doors/locale/doors.zh_CN.tr b/mods/doors/locale/doors.zh_CN.tr index 75e68732..52945588 100644 --- a/mods/doors/locale/doors.zh_CN.tr +++ b/mods/doors/locale/doors.zh_CN.tr @@ -1,14 +1,14 @@ # textdomain: doors Hidden Door Segment=隐藏门段 Owned by @1=由@1拥有 -You do not own this locked door.=您不拥有此锁着的门。 -a locked door=一扇锁着的门 +You do not own this locked door.=这个门不属于你所有。 +a locked door=一扇已上锁的门 Wooden Door=木门 Steel Door=铁门 Glass Door=玻璃门 Obsidian Glass Door=黑曜石玻璃门 -You do not own this trapdoor.=您不拥有此活板门。 -a locked trapdoor=一扇上锁的活板门 +You do not own this trapdoor.=这个活板门不属于你所有。 +a locked trapdoor=一扇已上锁的活板门 Wooden Trapdoor=木活板门 Steel Trapdoor=铁活板门 Apple Wood Fence Gate=用苹果树做的木栅栏门 diff --git a/mods/doors/locale/doors.zh_TW.tr b/mods/doors/locale/doors.zh_TW.tr new file mode 100644 index 00000000..47959eec --- /dev/null +++ b/mods/doors/locale/doors.zh_TW.tr @@ -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=白楊木柵欄門 diff --git a/mods/dungeon_loot/loot.lua b/mods/dungeon_loot/loot.lua index 7eb08cd8..a5a40973 100644 --- a/mods/dungeon_loot/loot.lua +++ b/mods/dungeon_loot/loot.lua @@ -1,26 +1,13 @@ -dungeon_loot.registered_loot = { - -- buckets - {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"}}, +-- Loot from the `default` mod is registered here, +-- with the rest being registered in the respective mods +dungeon_loot.registered_loot = { -- various items {name = "default:stick", chance = 0.6, count = {3, 6}}, {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 - {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 = "farming:seed_cotton", chance = 0.4, count = {1, 4}, - types = {"normal"}}, {name = "default:cactus", chance = 0.4, count = {1, 4}, types = {"sandstone", "desert"}}, diff --git a/mods/dungeon_loot/mapgen.lua b/mods/dungeon_loot/mapgen.lua index 624e9a85..b2c80fa8 100644 --- a/mods/dungeon_loot/mapgen.lua +++ b/mods/dungeon_loot/mapgen.lua @@ -89,20 +89,20 @@ local function populate_chest(pos, rand, dungeontype) amount = rand:next(loot.count[1], loot.count[2]) end - if itemdef then - if itemdef.tool_capabilities then - for n = 1, amount do - local wear = rand:next(0.20 * 65535, 0.75 * 65535) -- 20% to 75% wear - table.insert(items, ItemStack({name = loot.name, wear = wear})) - 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})) + if not itemdef then + minetest.log("warning", "Registered loot item " .. loot.name .. " does not exist") + elseif itemdef.tool_capabilities then + for n = 1, amount do + local wear = rand:next(0.20 * 65535, 0.75 * 65535) -- 20% to 75% wear + table.insert(items, ItemStack({name = loot.name, wear = wear})) 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 diff --git a/mods/dye/locale/dye.zh_CN.tr b/mods/dye/locale/dye.zh_CN.tr index 076df8f4..8dcf3117 100644 --- a/mods/dye/locale/dye.zh_CN.tr +++ b/mods/dye/locale/dye.zh_CN.tr @@ -2,8 +2,8 @@ White Dye=白染料 Grey Dye=灰染料 Dark Grey Dye=暗灰染料 -Black Dye=染料 -Violet Dye=染料 +Black Dye=黑染料 +Violet Dye=紫染料 Blue Dye=蓝染料 Cyan Dye=青染料 Dark Green Dye=暗绿染料 @@ -13,4 +13,4 @@ Brown Dye=棕染料 Orange Dye=橙染料 Red Dye=红染料 Magenta Dye=品红染料 -Pink Dye=淡红染料 +Pink Dye=粉红染料 diff --git a/mods/dye/locale/dye.zh_TW.tr b/mods/dye/locale/dye.zh_TW.tr new file mode 100644 index 00000000..cc60a219 --- /dev/null +++ b/mods/dye/locale/dye.zh_TW.tr @@ -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=粉紅染料 diff --git a/mods/farming/api.lua b/mods/farming/api.lua index c2c549e4..91d557c7 100644 --- a/mods/farming/api.lua +++ b/mods/farming/api.lua @@ -59,7 +59,7 @@ farming.hoe_on_use = function(itemstack, user, pointed_thing, uses) minetest.sound_play("default_dig_crumbly", { pos = pt.under, gain = 0.5, - }) + }, true) if not (creative and creative.is_enabled_for 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)) -- tool break sound 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 return itemstack @@ -176,6 +177,8 @@ farming.place_seed = function(itemstack, placer, pointed_thing, plantname) end -- 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}) tick(pt.above) if not (creative and creative.is_enabled_for diff --git a/mods/farming/init.lua b/mods/farming/init.lua index e6dfd579..96672fa1 100644 --- a/mods/farming/init.lua +++ b/mods/farming/init.lua @@ -144,3 +144,13 @@ minetest.register_craft({ recipe = "farming:hoe_wood", 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 diff --git a/mods/farming/locale/farming.zh_CN.tr b/mods/farming/locale/farming.zh_CN.tr index d9a0ff71..d8562884 100644 --- a/mods/farming/locale/farming.zh_CN.tr +++ b/mods/farming/locale/farming.zh_CN.tr @@ -1,10 +1,10 @@ # textdomain: farming -Wooden Hoe=木锄 -Stone Hoe=石锄 -Steel Hoe=铁锄 -Bronze Hoe=青铜锄 -Mese Hoe=Mese锄 -Diamond Hoe=钻石锄 +Wooden Hoe=木锄头 +Stone Hoe=石锄头 +Steel Hoe=铁锄头 +Bronze Hoe=青铜锄头 +Mese Hoe=黄石锄头 +Diamond Hoe=钻石锄头 Wheat Seed=小麦种子 Flour=面粉 Bread=面包 diff --git a/mods/farming/locale/farming.zh_TW.tr b/mods/farming/locale/farming.zh_TW.tr new file mode 100644 index 00000000..f1b7a7a6 --- /dev/null +++ b/mods/farming/locale/farming.zh_TW.tr @@ -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=棉 diff --git a/mods/farming/mod.conf b/mods/farming/mod.conf index c26c28fc..9a76a6a7 100644 --- a/mods/farming/mod.conf +++ b/mods/farming/mod.conf @@ -1,3 +1,4 @@ name = farming description = Minetest Game mod: farming depends = default, wool, stairs +optional_depends = dungeon_loot diff --git a/mods/fire/init.lua b/mods/fire/init.lua index 2bb3f91d..cf250f55 100644 --- a/mods/fire/init.lua +++ b/mods/fire/init.lua @@ -34,7 +34,7 @@ local function flood_flame(pos, oldnode, newnode) if not (nodedef and nodedef.groups and nodedef.groups.igniter and nodedef.groups.igniter > 0) then minetest.sound_play("fire_extinguish_flame", - {pos = pos, max_hear_distance = 16, gain = 0.15}) + {pos = pos, max_hear_distance = 16, gain = 0.15}, true) end -- Remove the flame return false @@ -128,7 +128,8 @@ minetest.register_tool("fire:flint_and_steel", { local sound_pos = pointed_thing.above or user:get_pos() minetest.sound_play( "fire_flint_and_steel", - {pos = sound_pos, gain = 0.5, max_hear_distance = 8} + {pos = sound_pos, gain = 0.5, max_hear_distance = 8}, + true ) local player_name = user:get_player_name() if pointed_thing.type == "node" then @@ -155,7 +156,8 @@ minetest.register_tool("fire:flint_and_steel", { itemstack:add_wear(1000) -- Tool break sound if itemstack:get_count() == 0 and wdef.sound and wdef.sound.breaks then - minetest.sound_play(wdef.sound.breaks, {pos = sound_pos, gain = 0.5}) + minetest.sound_play(wdef.sound.breaks, {pos = sound_pos, + gain = 0.5}, true) end return itemstack end diff --git a/mods/fireflies/locale/fireflies.zh_CN.tr b/mods/fireflies/locale/fireflies.zh_CN.tr index 6e43bf53..5971785a 100644 --- a/mods/fireflies/locale/fireflies.zh_CN.tr +++ b/mods/fireflies/locale/fireflies.zh_CN.tr @@ -2,4 +2,4 @@ Firefly=萤火虫 Hidden Firefly=隐藏的萤火虫 Bug Net=虫网 -Firefly in a Bottle=瓶中的萤火虫 +Firefly in a Bottle=放在瓶子里的萤火虫 diff --git a/mods/fireflies/locale/fireflies.zh_TW.tr b/mods/fireflies/locale/fireflies.zh_TW.tr new file mode 100644 index 00000000..af754a91 --- /dev/null +++ b/mods/fireflies/locale/fireflies.zh_TW.tr @@ -0,0 +1,5 @@ +# textdomain: fireflies +Firefly=螢火蟲 +Hidden Firefly=隱藏的螢火蟲 +Bug Net=蟲網 +Firefly in a Bottle=放在瓶子裡的螢火蟲 diff --git a/mods/flowers/locale/flowers.zh_CN.tr b/mods/flowers/locale/flowers.zh_CN.tr index d36411c0..3139dfbc 100644 --- a/mods/flowers/locale/flowers.zh_CN.tr +++ b/mods/flowers/locale/flowers.zh_CN.tr @@ -4,9 +4,9 @@ Orange Tulip=橙郁金香 Yellow Dandelion=黄蒲公英 Green Chrysanthemum=绿菊花 Blue Geranium=蓝天竺葵 -Viola=堇菜 +Viola=三色堇 White Dandelion=白蒲公英 Black Tulip=黑郁金香 Red Mushroom=红蘑菇 Brown Mushroom=棕蘑菇 -Waterlily=荷花 +Waterlily=睡莲 diff --git a/mods/flowers/locale/flowers.zh_TW.tr b/mods/flowers/locale/flowers.zh_TW.tr new file mode 100644 index 00000000..a3a3ec5a --- /dev/null +++ b/mods/flowers/locale/flowers.zh_TW.tr @@ -0,0 +1,12 @@ +# textdomain: flowers +Red Rose=紅玫瑰 +Orange Tulip=橙鬱金香 +Yellow Dandelion=黃蒲公英 +Green Chrysanthemum=綠菊花 +Blue Geranium=藍天竺葵 +Viola=三色堇 +White Dandelion=白蒲公英 +Black Tulip=黑鬱金香 +Red Mushroom=紅蘑菇 +Brown Mushroom=棕蘑菇 +Waterlily=睡蓮 diff --git a/mods/game_commands/locale/game_commands.zh_CN.tr b/mods/game_commands/locale/game_commands.zh_CN.tr index dc549b73..3c69dfb7 100644 --- a/mods/game_commands/locale/game_commands.zh_CN.tr +++ b/mods/game_commands/locale/game_commands.zh_CN.tr @@ -1,4 +1,4 @@ # textdomain: game_commands Kill yourself to respawn=杀死自己并重生 -No static_spawnpoint defined=static_spawnpoint未定义 +No static_spawnpoint defined=static_spawnpoint 未定义 You need to be online to be killed!=您需要在线才能被杀死! diff --git a/mods/game_commands/locale/game_commands.zh_TW.tr b/mods/game_commands/locale/game_commands.zh_TW.tr new file mode 100644 index 00000000..34e148d2 --- /dev/null +++ b/mods/game_commands/locale/game_commands.zh_TW.tr @@ -0,0 +1,4 @@ +# textdomain: game_commands +Kill yourself to respawn=殺死自己並重生 +No static_spawnpoint defined=static_spawnpoint 未定義 +You need to be online to be killed!=您需要在線才能被殺死! diff --git a/mods/map/locale/map.zh_CN.tr b/mods/map/locale/map.zh_CN.tr index ce9b5f68..cec95bb7 100644 --- a/mods/map/locale/map.zh_CN.tr +++ b/mods/map/locale/map.zh_CN.tr @@ -1,3 +1,3 @@ # textdomain: map -Mapping Kit=制地图套件 -Use with 'Minimap' key=与“小地图”键一起使用 +Mapping Kit=地图绘制工具包 +Use with 'Minimap' key=与“迷你地图”键一起使用 diff --git a/mods/map/locale/map.zh_TW.tr b/mods/map/locale/map.zh_TW.tr new file mode 100644 index 00000000..a0981245 --- /dev/null +++ b/mods/map/locale/map.zh_TW.tr @@ -0,0 +1,3 @@ +# textdomain: map +Mapping Kit=地圖繪製工具包 +Use with 'Minimap' key=與“迷你地圖”鍵一起使用 diff --git a/mods/player_api/api.lua b/mods/player_api/api.lua index 0afd6790..4cb3944b 100644 --- a/mods/player_api/api.lua +++ b/mods/player_api/api.lua @@ -96,6 +96,15 @@ end) local player_set_animation = player_api.set_animation local player_attached = player_api.player_attached +-- Prevent knockback for attached players +local old_calculate_knockback = minetest.calculate_knockback +function minetest.calculate_knockback(player, ...) + if player_attached[player:get_player_name()] then + return 0 + end + return old_calculate_knockback(player, ...) +end + -- Check each player and apply animations minetest.register_globalstep(function(dtime) for _, player in pairs(minetest.get_connected_players()) do diff --git a/mods/screwdriver/locale/screwdriver.zh_CN.tr b/mods/screwdriver/locale/screwdriver.zh_CN.tr index 2531d3de..caddf798 100644 --- a/mods/screwdriver/locale/screwdriver.zh_CN.tr +++ b/mods/screwdriver/locale/screwdriver.zh_CN.tr @@ -1,3 +1,3 @@ # textdomain: screwdriver -Screwdriver=Screwdriver +Screwdriver=螺丝刀 (left-click rotates face, right-click rotates axis)=(左键单击旋转面,右键单击旋转轴) diff --git a/mods/screwdriver/locale/screwdriver.zh_TW.tr b/mods/screwdriver/locale/screwdriver.zh_TW.tr new file mode 100644 index 00000000..e638bfa0 --- /dev/null +++ b/mods/screwdriver/locale/screwdriver.zh_TW.tr @@ -0,0 +1,3 @@ +# textdomain: screwdriver +Screwdriver=螺絲刀 +(left-click rotates face, right-click rotates axis)=(左鍵單擊旋轉面,右鍵單擊旋轉軸) diff --git a/mods/sethome/locale/sethome.zh_CN.tr b/mods/sethome/locale/sethome.zh_CN.tr index 7cd8c5aa..9e3780a7 100644 --- a/mods/sethome/locale/sethome.zh_CN.tr +++ b/mods/sethome/locale/sethome.zh_CN.tr @@ -1,8 +1,8 @@ # textdomain: sethome Can use /sethome and /home=可以使用/sethome和/home -Teleport you to your home point=传送您到您的家 -Teleported to home!=传送到家了! +Teleport you to your home point=传送您到您家的地点 +Teleported to home!=已传送到家! Set a home using /sethome=使用/sethome设定家 -Set your home point=设定您的家 -Home set!=家设定了! -Player not found!=找不到玩家! +Set your home point=设定您家的地点 +Home set!=已设定家! +Player not found!=未找到玩家! diff --git a/mods/sethome/locale/sethome.zh_TW.tr b/mods/sethome/locale/sethome.zh_TW.tr new file mode 100644 index 00000000..43e14aaa --- /dev/null +++ b/mods/sethome/locale/sethome.zh_TW.tr @@ -0,0 +1,8 @@ +# textdomain: sethome +Can use /sethome and /home=可以使用/sethome和/home +Teleport you to your home point=傳送您到您家的地點 +Teleported to home!=已傳送到家! +Set a home using /sethome=使用/sethome設定家 +Set your home point=設定您家的地點 +Home set!=已設定家! +Player not found!=未找到玩家! diff --git a/mods/sfinv/locale/sfinv.zh_TW.tr b/mods/sfinv/locale/sfinv.zh_TW.tr new file mode 100644 index 00000000..251362ff --- /dev/null +++ b/mods/sfinv/locale/sfinv.zh_TW.tr @@ -0,0 +1,2 @@ +# textdomain:sfinv +Crafting=合成 diff --git a/mods/stairs/locale/stairs.fr.tr b/mods/stairs/locale/stairs.fr.tr index 2dd6594c..81b575e6 100644 --- a/mods/stairs/locale/stairs.fr.tr +++ b/mods/stairs/locale/stairs.fr.tr @@ -142,4 +142,4 @@ Ice Slab=Dalle de glace Snow Block Stair=Escalier en bloc de neige Inner Snow Block Stair=Escalier intérieur en bloc de neige Outer Snow Block Stair=Escalier extérieur en bloc de neige -Snow Block Slab=Escalier en bloc de neige +Snow Block Slab=Dalle en bloc de neige diff --git a/mods/stairs/locale/stairs.zh_CN.tr b/mods/stairs/locale/stairs.zh_CN.tr index 0a95776c..060ccaf7 100644 --- a/mods/stairs/locale/stairs.zh_CN.tr +++ b/mods/stairs/locale/stairs.zh_CN.tr @@ -1,145 +1,149 @@ # textdomain: stairs Glass Stair=玻璃楼梯 -Glass Slab=玻璃平板 -Inner Glass Stair=内玻璃楼梯 -Outer Glass Stair=外玻璃楼梯 +Glass Slab=玻璃台阶 +Inner Glass Stair=玻璃楼梯(内) +Outer Glass Stair=玻璃楼梯(外) Obsidian Glass Stair=黑曜石玻璃楼梯 -Obsidian Glass Slab=黑曜石玻璃平板 -Inner Obsidian Glass Stair=内黑曜石玻璃楼梯 -Outer Obsidian Glass Stair=外黑曜石玻璃楼梯 -Wooden Stair=木楼梯 -Inner Wooden Stair=内木楼梯 -Outer Wooden Stair=外木楼梯 -Wooden Slab=木平板 +Obsidian Glass Slab=黑曜石玻璃台阶 +Inner Obsidian Glass Stair=黑曜石玻璃楼梯(内) +Outer Obsidian Glass Stair=黑曜石玻璃楼梯(外) +Wooden Stair=木制楼梯 +Inner Wooden Stair=木楼梯(内) +Outer Wooden Stair=木楼梯(外) +Wooden Slab=木制台阶 Jungle Wood Stair=丛林木楼梯 -Inner Jungle Wood Stair=内丛林木楼梯 -Outer Jungle Wood Stair=外丛林木楼梯 -Jungle Wood Slab=丛林木平板 +Inner Jungle Wood Stair=丛林木楼梯(内) +Outer Jungle Wood Stair=丛林木楼梯(外) +Jungle Wood Slab=丛林木台阶 Pine Wood Stair=松木楼梯 -Inner Pine Wood Stair=内松木楼梯 -Outer Pine Wood Stair=外松木楼梯 -Pine Wood Slab=松木平板 -Acacia Wood Stair=相思木楼梯 -Inner Acacia Wood Stair=内相思木楼梯 -Outer Acacia Wood Stair=外相思木楼梯 -Acacia Wood Slab=相思木平板 +Inner Pine Wood Stair=松木楼梯(内) +Outer Pine Wood Stair=松木楼梯(外) +Pine Wood Slab=松木台阶 +Acacia Wood Stair=金合欢木楼梯 +Inner Acacia Wood Stair=金合欢木楼梯(内) +Outer Acacia Wood Stair=金合欢木楼梯(外) +Acacia Wood Slab=金合欢木台阶 Aspen Wood Stair=白杨木楼梯 -Inner Aspen Wood Stair=内白杨木楼梯 -Outer Aspen Wood Stair=外白杨木楼梯 -Aspen Wood Slab=白杨木平板 +Inner Aspen Wood Stair=白杨木楼梯(内) +Outer Aspen Wood Stair=白杨木楼梯(外) +Aspen Wood Slab=白杨木台阶 +Blue Stained Stair=蓝木楼梯 +Inner Blue Stained Stair=蓝木楼梯(内) +Outer Blue Stained Stair=蓝木楼梯(外) +Blue Stained Slab=蓝木台阶 Stone Stair=石楼梯 -Inner Stone Stair=内石楼梯 -Outer Stone Stair=外石楼梯 -Stone Slab=石平板 -Cobblestone Stair=鹅卵石楼梯 -Inner Cobblestone Stair=内鹅卵石楼梯 -Outer Cobblestone Stair=外鹅卵石楼梯 -Cobblestone Slab=鹅卵石平板 -Mossy Cobblestone Stair=生苔的鹅卵石楼梯 -Inner Mossy Cobblestone Stair=内生苔的鹅卵石楼梯 -Outer Mossy Cobblestone Stair=外生苔的鹅卵石楼梯 -Mossy Cobblestone Slab=生苔的鹅卵石平板 +Inner Stone Stair=石楼梯(内) +Outer Stone Stair=石楼梯(外) +Stone Slab=石台阶 +Cobblestone Stair=圆石楼梯 +Inner Cobblestone Stair=圆石楼梯(内) +Outer Cobblestone Stair=圆石楼梯(外) +Cobblestone Slab=圆石台阶 +Mossy Cobblestone Stair=苔石楼梯 +Inner Mossy Cobblestone Stair=苔石楼梯(内) +Outer Mossy Cobblestone Stair=苔石楼梯(外) +Mossy Cobblestone Slab=苔石台阶 Stone Brick Stair=石砖楼梯 -Inner Stone Brick Stair=内石砖楼梯 -Outer Stone Brick Stair=外石砖楼梯 -Stone Brick Slab=石砖平板 +Inner Stone Brick Stair=石砖楼梯(内) +Outer Stone Brick Stair=石砖楼梯(外) +Stone Brick Slab=石砖台阶 Stone Block Stair=石块楼梯 -Inner Stone Block Stair=内石块楼梯 -Outer Stone Block Stair=外石块楼梯 -Stone Block Slab=石块平板 +Inner Stone Block Stair=石块楼梯(内) +Outer Stone Block Stair=石块楼梯(外) +Stone Block Slab=石块台阶 Desert Stone Stair=沙漠石楼梯 -Inner Desert Stone Stair=内沙漠石楼梯 -Outer Desert Stone Stair=外沙漠石楼梯 -Desert Stone Slab=沙漠石平板 -Desert Cobblestone Stair=沙漠鹅卵石楼梯 -Inner Desert Cobblestone Stair=内沙漠鹅卵石 -Outer Desert Cobblestone Stair=外沙漠鹅卵石 -Desert Cobblestone Slab=沙漠鹅卵石平板 +Inner Desert Stone Stair=沙漠石楼梯(内) +Outer Desert Stone Stair=沙漠石楼梯(外) +Desert Stone Slab=沙漠石台阶 +Desert Cobblestone Stair=沙漠圆石楼梯 +Inner Desert Cobblestone Stair=沙漠圆石楼梯(内) +Outer Desert Cobblestone Stair=沙漠圆石楼梯(外) +Desert Cobblestone Slab=沙漠圆石台阶 Desert Stone Brick Stair=沙漠石砖楼梯 -Inner Desert Stone Brick Stair=内沙漠石砖楼梯 -Outer Desert Stone Brick Stair=外沙漠石砖楼梯 -Desert Stone Brick Slab=沙漠石砖平板 +Inner Desert Stone Brick Stair=沙漠石砖楼梯(内) +Outer Desert Stone Brick Stair=沙漠石砖楼梯(外) +Desert Stone Brick Slab=沙漠石砖台阶 Desert Stone Block Stair=沙漠石块楼梯 -Inner Desert Stone Block Stair=内沙漠石块楼梯 -Outer Desert Stone Block Stair=外沙漠石块楼梯 -Desert Stone Block Slab=沙漠石块平板 -Sandstone Stair=砂岩楼梯 -Inner Sandstone Stair=内砂岩楼梯 -Outer Sandstone Stair=外砂岩楼梯 -Sandstone Slab=砂岩平板 -Sandstone Brick Stair=砂岩砖楼梯 -Inner Sandstone Brick Stair=内砂岩砖楼梯 -Outer Sandstone Brick Stair=外砂岩砖楼梯 -Sandstone Brick Slab=砂岩砖平板 -Sandstone Block Stair=砂岩块楼梯 -Inner Sandstone Block Stair=内砂岩块楼梯 -Outer Sandstone Block Stair=外砂岩块楼梯 -Sandstone Block Slab=砂岩块平板 -Desert Sandstone Stair=沙漠砂岩楼梯 -Inner Desert Sandstone Stair=内沙漠砂岩楼梯 -Outer Desert Sandstone Stair=外沙漠砂岩楼梯 -Desert Sandstone Slab=沙漠砂岩平板 -Desert Sandstone Brick Stair=沙漠砂岩砖楼梯 -Inner Desert Sandstone Brick Stair=内沙漠砂岩砖楼梯 -Outer Desert Sandstone Brick Stair=外沙漠砂岩砖楼梯 -Desert Sandstone Brick Slab=沙漠砂岩砖平板 -Desert Sandstone Block Stair=沙漠砂岩块楼梯 -Inner Desert Sandstone Block Stair=内沙漠砂岩块楼梯 -Outer Desert Sandstone Block Stair=外沙漠砂岩块楼梯 -Desert Sandstone Block Slab=沙漠砂岩块平板 -Silver Sandstone Stair=银砂岩楼梯 -Inner Silver Sandstone Stair=内银砂岩楼梯 -Outer Silver Sandstone Stair=外银砂岩楼梯 -Silver Sandstone Slab=银砂岩平板 -Silver Sandstone Brick Stair=银砂岩砖楼梯 -Inner Silver Sandstone Brick Stair=内银砂岩砖楼梯 -Outer Silver Sandstone Brick Stair=外银砂岩砖楼梯 -Silver Sandstone Brick Slab=银砂岩砖平板 -Silver Sandstone Block Stair=银砂岩块楼梯 -Inner Silver Sandstone Block Stair=内银砂岩块楼梯 -Outer Silver Sandstone Block Stair=外银砂岩块楼梯 -Silver Sandstone Block Slab=银砂岩块平板 +Inner Desert Stone Block Stair=沙漠石块楼梯(内) +Outer Desert Stone Block Stair=沙漠石块楼梯(外) +Desert Stone Block Slab=沙漠石块台阶 +Sandstone Stair=沙石楼梯 +Inner Sandstone Stair=沙石楼梯(内) +Outer Sandstone Stair=沙石楼梯(外) +Sandstone Slab=沙石台阶 +Sandstone Brick Stair=沙石砖楼梯 +Inner Sandstone Brick Stair=沙石砖楼梯(内) +Outer Sandstone Brick Stair=沙石砖楼梯(外) +Sandstone Brick Slab=沙石砖台阶 +Sandstone Block Stair=沙石块楼梯 +Inner Sandstone Block Stair=沙石块楼梯(内) +Outer Sandstone Block Stair=沙石块楼梯(外) +Sandstone Block Slab=沙石块台阶 +Desert Sandstone Stair=沙漠沙石楼梯 +Inner Desert Sandstone Stair=沙漠沙石楼梯(内) +Outer Desert Sandstone Stair=沙漠沙石楼梯(外) +Desert Sandstone Slab=沙漠沙石台阶 +Desert Sandstone Brick Stair=沙漠沙石砖楼梯 +Inner Desert Sandstone Brick Stair=沙漠沙石砖楼梯(内) +Outer Desert Sandstone Brick Stair=沙漠沙石砖楼梯(外) +Desert Sandstone Brick Slab=沙漠沙石砖台阶 +Desert Sandstone Block Stair=沙漠沙石块楼梯 +Inner Desert Sandstone Block Stair=沙漠沙石块楼梯(内) +Outer Desert Sandstone Block Stair=沙漠沙石块楼梯(外) +Desert Sandstone Block Slab=沙漠沙石块台阶 +Silver Sandstone Stair=银沙石楼梯 +Inner Silver Sandstone Stair=银沙石楼梯(内) +Outer Silver Sandstone Stair=银沙石楼梯(外) +Silver Sandstone Slab=银沙石台阶 +Silver Sandstone Brick Stair=银沙石砖楼梯 +Inner Silver Sandstone Brick Stair=银沙石砖楼梯(内) +Outer Silver Sandstone Brick Stair=银沙石砖楼梯(外) +Silver Sandstone Brick Slab=银沙石砖台阶 +Silver Sandstone Block Stair=银沙石块楼梯 +Inner Silver Sandstone Block Stair=银沙石块楼梯(内) +Outer Silver Sandstone Block Stair=银沙石块楼梯(外) +Silver Sandstone Block Slab=银沙石块台阶 Obsidian Stair=黑曜石楼梯 -Inner Obsidian Stair=内黑曜石楼梯 -Outer Obsidian Stair=外黑曜石楼梯 -Obsidian Slab=黑曜石平板 +Inner Obsidian Stair=黑曜石楼梯(内) +Outer Obsidian Stair=黑曜石楼梯(外) +Obsidian Slab=黑曜石台阶 Obsidian Brick Stair=黑曜石砖楼梯 -Inner Obsidian Brick Stair=内黑曜石砖楼梯 -Outer Obsidian Brick Stair=外黑曜石砖楼梯 -Obsidian Brick Slab=黑曜石砖平板 +Inner Obsidian Brick Stair=黑曜石砖楼梯(内) +Outer Obsidian Brick Stair=黑曜石砖楼梯(外) +Obsidian Brick Slab=黑曜石砖台阶 Obsidian Block Stair=黑曜石块楼梯 -Inner Obsidian Block Stair=内黑曜石块楼梯 -Outer Obsidian Block Stair=外黑曜石块楼梯 -Obsidian Block Slab=黑曜石块平板 +Inner Obsidian Block Stair=黑曜石块楼梯(内) +Outer Obsidian Block Stair=黑曜石块楼梯(外) +Obsidian Block Slab=黑曜石块台阶 Brick Stair=砖楼梯 -Inner Brick Stair=内砖楼梯 -Outer Brick Stair=外砖楼梯 -Brick Slab=砖平板 -Steel Block Stair=钢楼梯 -Inner Steel Block Stair=内钢楼梯 -Outer Steel Block Stair=外钢楼梯 -Steel Block Slab=钢平板 -Tin Block Stair=锡楼梯 -Inner Tin Block Stair=内锡楼梯 -Outer Tin Block Stair=外锡楼梯 -Tin Block Slab=锡平板 -Copper Block Stair=铜楼梯 -Inner Copper Block Stair=内铜楼梯 -Outer Copper Block Stair=外铜楼梯 -Copper Block Slab=铜平板 -Bronze Block Stair=青铜楼梯 -Inner Bronze Block Stair=内青铜楼梯 -Outer Bronze Block Stair=外青铜楼梯 -Bronze Block Slab=青铜平板 -Gold Block Stair=金楼梯 -Inner Gold Block Stair=内金楼梯 -Outer Gold Block Stair=外金楼梯 -Gold Block Slab=金平板 -Ice Stair=冰楼梯 -Inner Ice Stair=内冰楼梯 -Outer Ice Stair=外冰楼梯 -Ice Slab=冰平板 +Inner Brick Stair=砖楼梯(内) +Outer Brick Stair=砖楼梯(外) +Brick Slab=砖制台阶 +Steel Block Stair=铁块楼梯 +Inner Steel Block Stair=铁块楼梯(内) +Outer Steel Block Stair=铁块楼梯(外) +Steel Block Slab=铁块台阶 +Tin Block Stair=锡块楼梯 +Inner Tin Block Stair=锡块楼梯(内) +Outer Tin Block Stair=锡块楼梯(外) +Tin Block Slab=锡块台阶 +Copper Block Stair=铜块楼梯 +Inner Copper Block Stair=铜块楼梯(内) +Outer Copper Block Stair=铜块楼梯(外) +Copper Block Slab=铜块台阶 +Bronze Block Stair=青铜块楼梯 +Inner Bronze Block Stair=青铜块楼梯(内) +Outer Bronze Block Stair=青铜块楼梯(外) +Bronze Block Slab=青铜块台阶 +Gold Block Stair=金块楼梯 +Inner Gold Block Stair=金块楼梯(内) +Outer Gold Block Stair=金块楼梯(外) +Gold Block Slab=金块台阶 +Ice Stair=冰阶梯 +Inner Ice Stair=冰块楼梯(内) +Outer Ice Stair=冰块楼梯(外) +Ice Slab=冰台阶 Snow Block Stair=雪块楼梯 -Inner Snow Block Stair=内雪块楼梯 -Outer Snow Block Stair=外雪块楼梯 -Snow Block Slab=雪块平板 +Inner Snow Block Stair=雪块楼梯(内) +Outer Snow Block Stair=雪块楼梯(外) +Snow Block Slab=雪块台阶 diff --git a/mods/stairs/locale/stairs.zh_TW.tr b/mods/stairs/locale/stairs.zh_TW.tr new file mode 100644 index 00000000..00c43e22 --- /dev/null +++ b/mods/stairs/locale/stairs.zh_TW.tr @@ -0,0 +1,149 @@ +# textdomain: stairs +Glass Stair=玻璃樓梯 +Glass Slab=玻璃臺階 +Inner Glass Stair=玻璃樓梯(內) +Outer Glass Stair=玻璃樓梯(外) +Obsidian Glass Stair=黑曜石玻璃樓梯 +Obsidian Glass Slab=黑曜石玻璃臺階 +Inner Obsidian Glass Stair=黑曜石玻璃樓梯(內) +Outer Obsidian Glass Stair=黑曜石玻璃樓梯(外) +Wooden Stair=木製樓梯 +Inner Wooden Stair=木樓梯(內) +Outer Wooden Stair=木樓梯(外) +Wooden Slab=木製臺階 +Jungle Wood Stair=叢林木樓梯 +Inner Jungle Wood Stair=叢林木樓梯(內) +Outer Jungle Wood Stair=叢林木樓梯(外) +Jungle Wood Slab=叢林木臺階 +Pine Wood Stair=松木樓梯 +Inner Pine Wood Stair=松木樓梯(內) +Outer Pine Wood Stair=松木樓梯(外) +Pine Wood Slab=松木臺階 +Acacia Wood Stair=金合歡木樓梯 +Inner Acacia Wood Stair=金合歡木樓梯(內) +Outer Acacia Wood Stair=金合歡木樓梯(外) +Acacia Wood Slab=金合歡木臺階 +Aspen Wood Stair=白楊木樓梯 +Inner Aspen Wood Stair=白楊木樓梯(內) +Outer Aspen Wood Stair=白楊木樓梯(外) +Aspen Wood Slab=白楊木臺階 +Blue Stained Stair=藍木樓梯 +Inner Blue Stained Stair=藍木樓梯(內) +Outer Blue Stained Stair=藍木樓梯(外) +Blue Stained Slab=藍木臺階 +Stone Stair=石樓梯 +Inner Stone Stair=石樓梯(內) +Outer Stone Stair=石樓梯(外) +Stone Slab=石臺階 +Cobblestone Stair=圓石樓梯 +Inner Cobblestone Stair=圓石樓梯(內) +Outer Cobblestone Stair=圓石樓梯(外) +Cobblestone Slab=圓石臺階 +Mossy Cobblestone Stair=苔石樓梯 +Inner Mossy Cobblestone Stair=苔石樓梯(內) +Outer Mossy Cobblestone Stair=苔石樓梯(外) +Mossy Cobblestone Slab=苔石臺階 +Stone Brick Stair=石磚樓梯 +Inner Stone Brick Stair=石磚樓梯(內) +Outer Stone Brick Stair=石磚樓梯(外) +Stone Brick Slab=石磚臺階 +Stone Block Stair=石塊樓梯 +Inner Stone Block Stair=石塊樓梯(內) +Outer Stone Block Stair=石塊樓梯(外) +Stone Block Slab=石塊臺階 +Desert Stone Stair=沙漠石樓梯 +Inner Desert Stone Stair=沙漠石樓梯(內) +Outer Desert Stone Stair=沙漠石樓梯(外) +Desert Stone Slab=沙漠石臺階 +Desert Cobblestone Stair=沙漠圓石樓梯 +Inner Desert Cobblestone Stair=沙漠圓石樓梯(內) +Outer Desert Cobblestone Stair=沙漠圓石樓梯(外) +Desert Cobblestone Slab=沙漠圓石臺階 +Desert Stone Brick Stair=沙漠石磚樓梯 +Inner Desert Stone Brick Stair=沙漠石磚樓梯(內) +Outer Desert Stone Brick Stair=沙漠石磚樓梯(外) +Desert Stone Brick Slab=沙漠石磚臺階 +Desert Stone Block Stair=沙漠石塊樓梯 +Inner Desert Stone Block Stair=沙漠石塊樓梯(內) +Outer Desert Stone Block Stair=沙漠石塊樓梯(外) +Desert Stone Block Slab=沙漠石塊臺階 +Sandstone Stair=沙石樓梯 +Inner Sandstone Stair=沙石樓梯(內) +Outer Sandstone Stair=沙石樓梯(外) +Sandstone Slab=沙石臺階 +Sandstone Brick Stair=沙石磚樓梯 +Inner Sandstone Brick Stair=沙石磚樓梯(內) +Outer Sandstone Brick Stair=沙石磚樓梯(外) +Sandstone Brick Slab=沙石磚臺階 +Sandstone Block Stair=沙石塊樓梯 +Inner Sandstone Block Stair=沙石塊樓梯(內) +Outer Sandstone Block Stair=沙石塊樓梯(外) +Sandstone Block Slab=沙石塊臺階 +Desert Sandstone Stair=沙漠沙石樓梯 +Inner Desert Sandstone Stair=沙漠沙石樓梯(內) +Outer Desert Sandstone Stair=沙漠沙石樓梯(外) +Desert Sandstone Slab=沙漠沙石臺階 +Desert Sandstone Brick Stair=沙漠沙石磚樓梯 +Inner Desert Sandstone Brick Stair=沙漠沙石磚樓梯(內) +Outer Desert Sandstone Brick Stair=沙漠沙石磚樓梯(外) +Desert Sandstone Brick Slab=沙漠沙石磚臺階 +Desert Sandstone Block Stair=沙漠沙石塊樓梯 +Inner Desert Sandstone Block Stair=沙漠沙石塊樓梯(內) +Outer Desert Sandstone Block Stair=沙漠沙石塊樓梯(外) +Desert Sandstone Block Slab=沙漠沙石塊臺階 +Silver Sandstone Stair=銀沙石樓梯 +Inner Silver Sandstone Stair=銀沙石樓梯(內) +Outer Silver Sandstone Stair=銀沙石樓梯(外) +Silver Sandstone Slab=銀沙石臺階 +Silver Sandstone Brick Stair=銀沙石磚樓梯 +Inner Silver Sandstone Brick Stair=銀沙石磚樓梯(內) +Outer Silver Sandstone Brick Stair=銀沙石磚樓梯(外) +Silver Sandstone Brick Slab=銀沙石磚臺階 +Silver Sandstone Block Stair=銀沙石塊樓梯 +Inner Silver Sandstone Block Stair=銀沙石塊樓梯(內) +Outer Silver Sandstone Block Stair=銀沙石塊樓梯(外) +Silver Sandstone Block Slab=銀沙石塊臺階 +Obsidian Stair=黑曜石樓梯 +Inner Obsidian Stair=黑曜石樓梯(內) +Outer Obsidian Stair=黑曜石樓梯(外) +Obsidian Slab=黑曜石臺階 +Obsidian Brick Stair=黑曜石磚樓梯 +Inner Obsidian Brick Stair=黑曜石磚樓梯(內) +Outer Obsidian Brick Stair=黑曜石磚樓梯(外) +Obsidian Brick Slab=黑曜石磚臺階 +Obsidian Block Stair=黑曜石塊樓梯 +Inner Obsidian Block Stair=黑曜石塊樓梯(內) +Outer Obsidian Block Stair=黑曜石塊樓梯(外) +Obsidian Block Slab=黑曜石塊臺階 +Brick Stair=磚樓梯 +Inner Brick Stair=磚樓梯(內) +Outer Brick Stair=磚樓梯(外) +Brick Slab=磚制臺階 +Steel Block Stair=鐵塊樓梯 +Inner Steel Block Stair=鐵塊樓梯(內) +Outer Steel Block Stair=鐵塊樓梯(外) +Steel Block Slab=鐵塊臺階 +Tin Block Stair=錫塊樓梯 +Inner Tin Block Stair=錫塊樓梯(內) +Outer Tin Block Stair=錫塊樓梯(外) +Tin Block Slab=錫塊臺階 +Copper Block Stair=銅塊樓梯 +Inner Copper Block Stair=銅塊樓梯(內) +Outer Copper Block Stair=銅塊樓梯(外) +Copper Block Slab=銅塊臺階 +Bronze Block Stair=青銅塊樓梯 +Inner Bronze Block Stair=青銅塊樓梯(內) +Outer Bronze Block Stair=青銅塊樓梯(外) +Bronze Block Slab=青銅塊臺階 +Gold Block Stair=金塊樓梯 +Inner Gold Block Stair=金塊樓梯(內) +Outer Gold Block Stair=金塊樓梯(外) +Gold Block Slab=金塊臺階 +Ice Stair=冰階梯 +Inner Ice Stair=冰塊樓梯(內) +Outer Ice Stair=冰塊樓梯(外) +Ice Slab=冰臺階 +Snow Block Stair=雪塊樓梯 +Inner Snow Block Stair=雪塊樓梯(內) +Outer Snow Block Stair=雪塊樓梯(外) +Snow Block Slab=雪塊臺階 diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index 0e061fa6..6565f852 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -163,9 +163,8 @@ local function entity_physics(pos, radius, drops) local damage = (4 / dist) * radius if obj:is_player() then - -- currently the engine has no method to set - -- player velocity. See #2960 - -- instead, we knock the player back 1.0 node, and slightly upwards + -- we knock the player back 1.0 node, and slightly upwards + -- TODO: switch to add_player_velocity() introduced in 5.1 local dir = vector.normalize(vector.subtract(obj_pos, pos)) local moveoff = vector.multiply(dir, dist + 1.0) local newpos = vector.add(pos, moveoff) @@ -174,31 +173,35 @@ local function entity_physics(pos, radius, drops) obj:set_hp(obj:get_hp() - damage) else - local do_damage = true - local do_knockback = true - local entity_drops = {} local luaobj = obj:get_luaentity() - local objdef = minetest.registered_entities[luaobj.name] - if objdef and objdef.on_blast then - do_damage, do_knockback, entity_drops = objdef.on_blast(luaobj, damage) - end + -- object might have disappeared somehow + if luaobj then + local do_damage = true + local do_knockback = true + local entity_drops = {} + local objdef = minetest.registered_entities[luaobj.name] - if do_knockback then - local obj_vel = obj:get_velocity() - obj:set_velocity(calc_velocity(pos, obj_pos, - obj_vel, radius * 10)) - end - if do_damage then - if not obj:get_armor_groups().immortal then - obj:punch(obj, 1.0, { - full_punch_interval = 1.0, - damage_groups = {fleshy = damage}, - }, nil) + if objdef and objdef.on_blast then + do_damage, do_knockback, entity_drops = objdef.on_blast(luaobj, damage) + end + + if do_knockback then + local obj_vel = obj:get_velocity() + obj:set_velocity(calc_velocity(pos, obj_pos, + obj_vel, radius * 10)) + end + if do_damage then + if not obj:get_armor_groups().immortal then + obj:punch(obj, 1.0, { + full_punch_interval = 1.0, + damage_groups = {fleshy = damage}, + }, nil) + end + end + for _, item in pairs(entity_drops) do + add_drop(drops, item) end - end - for _, item in pairs(entity_drops) do - add_drop(drops, item) end end end @@ -274,7 +277,7 @@ function tnt.burn(pos, nodename) def.on_ignite(pos) elseif minetest.get_item_group(name, "tnt") > 0 then minetest.swap_node(pos, {name = name .. "_burning"}) - minetest.sound_play("tnt_ignite", {pos = pos}) + minetest.sound_play("tnt_ignite", {pos = pos}, true) minetest.get_node_timer(pos):start(1) end end @@ -403,7 +406,7 @@ function tnt.boom(pos, def) end local sound = def.sound or "tnt_explode" minetest.sound_play(sound, {pos = pos, gain = 2.5, - max_hear_distance = math.min(def.radius * 20, 128)}) + max_hear_distance = math.min(def.radius * 20, 128)}, true) local drops, radius = tnt_explode(pos, def.radius, def.ignore_protection, def.ignore_on_blast, owner, def.explode_center) -- append entity drops @@ -541,7 +544,8 @@ minetest.register_node("tnt:gunpowder_burning", { -- unaffected by explosions on_blast = function() end, on_construct = function(pos) - minetest.sound_play("tnt_gunpowder_burning", {pos = pos, gain = 2}) + minetest.sound_play("tnt_gunpowder_burning", {pos = pos, + gain = 2}, true) minetest.get_node_timer(pos):start(1) end, }) @@ -672,7 +676,7 @@ function tnt.register_tnt(def) -- unaffected by explosions on_blast = function() end, on_construct = function(pos) - minetest.sound_play("tnt_ignite", {pos = pos}) + minetest.sound_play("tnt_ignite", {pos = pos}, true) minetest.get_node_timer(pos):start(4) minetest.check_for_falling(pos) end, diff --git a/mods/tnt/locale/tnt.zh_CN.tr b/mods/tnt/locale/tnt.zh_CN.tr index dcc1532c..0a3294e5 100644 --- a/mods/tnt/locale/tnt.zh_CN.tr +++ b/mods/tnt/locale/tnt.zh_CN.tr @@ -1,4 +1,4 @@ # textdomain: tnt Gun Powder=火药粉 TNT Stick=炸药棒 -TNT=炸药 +TNT=炸药包 diff --git a/mods/tnt/locale/tnt.zh_TW.tr b/mods/tnt/locale/tnt.zh_TW.tr new file mode 100644 index 00000000..c1b3caf3 --- /dev/null +++ b/mods/tnt/locale/tnt.zh_TW.tr @@ -0,0 +1,4 @@ +# textdomain: tnt +Gun Powder=火藥粉 +TNT Stick=炸藥棒 +TNT=炸藥包 diff --git a/mods/vessels/init.lua b/mods/vessels/init.lua index b330efc2..71a06893 100644 --- a/mods/vessels/init.lua +++ b/mods/vessels/init.lua @@ -228,3 +228,10 @@ minetest.register_craft({ recipe = "vessels:shelf", burntime = 30, }) + +-- Register glass fragments as dungeon loot +if minetest.global_exists("dungeon_loot") then + dungeon_loot.register({ + name = "vessels:glass_fragments", chance = 0.35, count = {1, 4} + }) +end diff --git a/mods/vessels/locale/vessels.zh_CN.tr b/mods/vessels/locale/vessels.zh_CN.tr index 0604cbd3..f91ccd85 100644 --- a/mods/vessels/locale/vessels.zh_CN.tr +++ b/mods/vessels/locale/vessels.zh_CN.tr @@ -2,7 +2,7 @@ Vessels Shelf=容器架 Empty Glass Bottle=空玻璃瓶 Empty Drinking Glass=空水杯 -Empty Heavy Steel Bottle=空重钢瓶 +Empty Heavy Steel Bottle=空重型钢瓶 Glass Fragments=玻璃碎片 Empty Vessels Shelf=空容器架 Vessels Shelf (@1 items)=容器架(@1项) diff --git a/mods/vessels/locale/vessels.zh_TW.tr b/mods/vessels/locale/vessels.zh_TW.tr new file mode 100644 index 00000000..7936c88c --- /dev/null +++ b/mods/vessels/locale/vessels.zh_TW.tr @@ -0,0 +1,8 @@ +# textdomain: vessels +Vessels Shelf=容器架 +Empty Glass Bottle=空玻璃瓶 +Empty Drinking Glass=空水杯 +Empty Heavy Steel Bottle=空重型鋼瓶 +Glass Fragments=玻璃碎片 +Empty Vessels Shelf=空容器架 +Vessels Shelf (@1 items)=容器架(@1項) diff --git a/mods/vessels/mod.conf b/mods/vessels/mod.conf index 7551b54a..eba9076f 100644 --- a/mods/vessels/mod.conf +++ b/mods/vessels/mod.conf @@ -1,3 +1,4 @@ name = vessels description = Minetest Game mod: vessels depends = default +optional_depends = dungeon_loot diff --git a/mods/walls/locale/walls.zh_CN.tr b/mods/walls/locale/walls.zh_CN.tr index eeee1164..f590e825 100644 --- a/mods/walls/locale/walls.zh_CN.tr +++ b/mods/walls/locale/walls.zh_CN.tr @@ -1,4 +1,4 @@ # textdomain: walls Cobblestone Wall=鹅卵石墙 -Mossy Cobblestone Wall=生苔的鹅卵石墙 +Mossy Cobblestone Wall=苔藓覆盖的鹅卵石墙 Desert Cobblestone Wall=沙漠鹅卵石墙 diff --git a/mods/walls/locale/walls.zh_TW.tr b/mods/walls/locale/walls.zh_TW.tr new file mode 100644 index 00000000..ba1285f6 --- /dev/null +++ b/mods/walls/locale/walls.zh_TW.tr @@ -0,0 +1,4 @@ +# textdomain: walls +Cobblestone Wall=鵝卵石牆 +Mossy Cobblestone Wall=苔蘚覆蓋的鵝卵石牆 +Desert Cobblestone Wall=沙漠鵝卵石牆 diff --git a/mods/wool/locale/wool.zh_CN.tr b/mods/wool/locale/wool.zh_CN.tr index 3bea711b..caac9ee2 100644 --- a/mods/wool/locale/wool.zh_CN.tr +++ b/mods/wool/locale/wool.zh_CN.tr @@ -13,4 +13,4 @@ Brown Wool=棕羊毛 Orange Wool=橙羊毛 Red Wool=红羊毛 Magenta Wool=品红羊毛 -Pink Wool=淡红羊毛 +Pink Wool=粉红羊毛 diff --git a/mods/wool/locale/wool.zh_TW.tr b/mods/wool/locale/wool.zh_TW.tr new file mode 100644 index 00000000..290a1fed --- /dev/null +++ b/mods/wool/locale/wool.zh_TW.tr @@ -0,0 +1,16 @@ +# textdomain: wool +White Wool=白羊毛 +Grey Wool=灰羊毛 +Dark Grey Wool=暗灰羊毛 +Black Wool=黑羊毛 +Violet Wool=紫羊毛 +Blue Wool=藍羊毛 +Cyan Wool=青羊毛 +Dark Green Wool=暗綠羊毛 +Green Wool=綠羊毛 +Yellow Wool=黃羊毛 +Brown Wool=棕羊毛 +Orange Wool=橙羊毛 +Red Wool=紅羊毛 +Magenta Wool=品紅羊毛 +Pink Wool=粉紅羊毛 diff --git a/mods/xpanes/init.lua b/mods/xpanes/init.lua index 758fbbb7..4f4f0f56 100644 --- a/mods/xpanes/init.lua +++ b/mods/xpanes/init.lua @@ -106,12 +106,12 @@ function xpanes.register_pane(name, def) wield_image = def.wield_image, paramtype2 = "facedir", tiles = { - def.textures[3], - def.textures[3], - def.textures[3], - def.textures[3], - def.textures[1], - def.textures[1] + def.textures[3], + def.textures[3], + def.textures[3], + def.textures[3], + def.textures[1], + def.textures[1] }, groups = flatgroups, drop = "xpanes:" .. name .. "_flat", @@ -137,7 +137,11 @@ function xpanes.register_pane(name, def) is_ground_content = false, sunlight_propagates = true, description = def.description, - tiles = {def.textures[3], def.textures[3], def.textures[1]}, + tiles = { + def.textures[3], + def.textures[3], + def.textures[1] + }, groups = groups, drop = "xpanes:" .. name .. "_flat", sounds = def.sounds, @@ -161,7 +165,7 @@ end xpanes.register_pane("pane", { description = S("Glass Pane"), - textures = {"default_glass.png","xpanes_pane_half.png","xpanes_edge.png"}, + textures = {"default_glass.png", "", "xpanes_edge.png"}, inventory_image = "default_glass.png", wield_image = "default_glass.png", sounds = default.node_sound_glass_defaults(), @@ -174,7 +178,7 @@ xpanes.register_pane("pane", { xpanes.register_pane("obsidian_pane", { description = S("Obsidian Glass Pane"), - textures = {"default_obsidian_glass.png","xpanes_pane_half.png","xpanes_edge_obsidian.png"}, + textures = {"default_obsidian_glass.png", "", "xpanes_edge_obsidian.png"}, inventory_image = "default_obsidian_glass.png", wield_image = "default_obsidian_glass.png", sounds = default.node_sound_glass_defaults(), @@ -187,7 +191,7 @@ xpanes.register_pane("obsidian_pane", { xpanes.register_pane("bar", { description = S("Steel Bars"), - textures = {"xpanes_bar.png","xpanes_bar.png","xpanes_bar_top.png"}, + textures = {"xpanes_bar.png", "", "xpanes_bar_top.png"}, inventory_image = "xpanes_bar.png", wield_image = "xpanes_bar.png", groups = {cracky=2}, diff --git a/mods/xpanes/locale/xpanes.zh_CN.tr b/mods/xpanes/locale/xpanes.zh_CN.tr index 9cdb251a..7b1871c9 100644 --- a/mods/xpanes/locale/xpanes.zh_CN.tr +++ b/mods/xpanes/locale/xpanes.zh_CN.tr @@ -1,6 +1,6 @@ # textdomain: xpanes -Glass Pane=玻璃板 -Obsidian Glass Pane=黑曜石玻璃板 +Glass Pane=玻璃窗 +Obsidian Glass Pane=黑曜石玻璃窗 Steel Bars=钢筋 Steel Bar Door=钢筋门 Steel Bar Trapdoor=钢筋活板门 diff --git a/mods/xpanes/locale/xpanes.zh_TW.tr b/mods/xpanes/locale/xpanes.zh_TW.tr new file mode 100644 index 00000000..97ee7a28 --- /dev/null +++ b/mods/xpanes/locale/xpanes.zh_TW.tr @@ -0,0 +1,6 @@ +# textdomain: xpanes +Glass Pane=玻璃窗 +Obsidian Glass Pane=黑曜石玻璃窗 +Steel Bars=鋼筋 +Steel Bar Door=鋼筋門 +Steel Bar Trapdoor=鋼筋活板門 diff --git a/mods/xpanes/textures/xpanes_bar_top.png b/mods/xpanes/textures/xpanes_bar_top.png index 7b74508f..2955d72c 100644 Binary files a/mods/xpanes/textures/xpanes_bar_top.png and b/mods/xpanes/textures/xpanes_bar_top.png differ diff --git a/mods/xpanes/textures/xpanes_pane_half.png b/mods/xpanes/textures/xpanes_pane_half.png deleted file mode 100644 index 4e846dfa..00000000 Binary files a/mods/xpanes/textures/xpanes_pane_half.png and /dev/null differ diff --git a/mods/xpanes/textures/xpanes_space.png b/mods/xpanes/textures/xpanes_space.png deleted file mode 100644 index 331e3658..00000000 Binary files a/mods/xpanes/textures/xpanes_space.png and /dev/null differ diff --git a/schematic_tables.txt b/schematic_tables.txt index a33300f7..eff2d359 100644 --- a/schematic_tables.txt +++ b/schematic_tables.txt @@ -2100,7 +2100,7 @@ mts_save("large_cactus", { -- Papyrus -mts_save("papyrus", { +mts_save("papyrus_on_dirt", { size = {x = 1, y = 7, z = 1}, data = { {name = "default:dirt", prob = 255, force_place = true}, @@ -2117,6 +2117,23 @@ mts_save("papyrus", { }, }) +mts_save("papyrus_on_dry_dirt", { + size = {x = 1, y = 7, z = 1}, + data = { + {name = "default:dry_dirt", prob = 255, force_place = true}, + {name = "default:dry_dirt", prob = 255, force_place = true}, + {name = "default:papyrus", prob = 255}, + {name = "default:papyrus", prob = 255}, + {name = "default:papyrus", prob = 255}, + {name = "default:papyrus", prob = 255}, + {name = "default:papyrus", prob = 255}, + }, + yslice_prob = { + {ypos = 2, prob = 127}, + {ypos = 3, prob = 127}, + }, +}) + -- Bush