From 21e5f68292c01b2419bdbe410e8ebc15a1627838 Mon Sep 17 00:00:00 2001 From: orbea Date: Sat, 4 Sep 2021 21:37:27 +0000 Subject: [PATCH 01/36] default: Improves reading and writing to books. (#2656) * Allow anyone to write to a book without any text and title. * Allows saving books without any text or title. * Adds a "Read" and "Write" tab to written owned books. Fixes #1743 --- mods/default/craftitems.lua | 119 +++++++++++++++++++++++++----------- 1 file changed, 85 insertions(+), 34 deletions(-) diff --git a/mods/default/craftitems.lua b/mods/default/craftitems.lua index efb26ef3..cf2795c3 100644 --- a/mods/default/craftitems.lua +++ b/mods/default/craftitems.lua @@ -3,6 +3,46 @@ -- support for MT game translation. local S = default.get_translator +local esc = minetest.formspec_escape +local formspec_size = "size[8,8]" + +local function formspec_core(tab) + if tab == nil then tab = 1 else tab = tostring(tab) end + return "tabheader[0,0;book_header;" .. + esc(S("Write")) .. "," .. + esc(S("Read")) .. ";" .. + tab .. ";false;false]" +end + +local function formspec_write(title, text) + return "field[0.5,1;7.5,0;title;" .. esc(S("Title:")) .. ";" .. + esc(title) .. "]" .. + "textarea[0.5,1.5;7.5,7;text;" .. esc(S("Contents:")) .. ";" .. + esc(text) .. "]" .. + "button_exit[2.5,7.5;3,1;save;" .. esc(S("Save")) .. "]" +end + +local function formspec_read(owner, title, string, text, page, page_max) + return "label[0.5,0.5;" .. esc(S("by @1", owner)) .. "]" .. + "tablecolumns[color;text]" .. + "tableoptions[background=#00000000;highlight=#00000000;border=false]" .. + "table[0.4,0;7,0.5;title;#FFFF00," .. esc(title) .. "]" .. + "textarea[0.5,1.5;7.5,7;;" .. + esc(string ~= "" and string or text) .. ";]" .. + "button[2.4,7.6;0.8,0.8;book_prev;<]" .. + "label[3.2,7.7;" .. esc(S("Page @1 of @2", page, page_max)) .. "]" .. + "button[4.9,7.6;0.8,0.8;book_next;>]" +end + +local function formspec_string(lpp, page, lines, string) + for i = ((lpp * page) - lpp) + 1, lpp * page do + if not lines[i] then break end + string = string .. lines[i] .. "\n" + end + return string +end + +local tab_number local lpp = 14 -- Lines per book's page local function book_on_use(itemstack, user) local player_name = user:get_player_name() @@ -19,8 +59,8 @@ local function book_on_use(itemstack, user) local data = meta:to_table().fields if data.owner then - title = data.title - text = data.text + title = data.title or "" + text = data.text or "" owner = data.owner for str in (text .. "\n"):gmatch("([^\n]*)[\n]") do @@ -30,37 +70,26 @@ local function book_on_use(itemstack, user) if data.page then page = data.page page_max = data.page_max - - for i = ((lpp * page) - lpp) + 1, lpp * page do - if not lines[i] then break end - string = string .. lines[i] .. "\n" - end + string = formspec_string(lpp, page, lines, string) end end local formspec - local esc = minetest.formspec_escape - if owner == player_name then - formspec = "size[8,8]" .. - "field[0.5,1;7.5,0;title;" .. esc(S("Title:")) .. ";" .. - esc(title) .. "]" .. - "textarea[0.5,1.5;7.5,7;text;" .. esc(S("Contents:")) .. ";" .. - esc(text) .. "]" .. - "button_exit[2.5,7.5;3,1;save;" .. esc(S("Save")) .. "]" + if title == "" and text == "" then + formspec = formspec_write(title, text) + elseif owner == player_name then + local tab = tab_number or 1 + if tab == 2 then + formspec = formspec_core(tab) .. + formspec_read(owner, title, string, text, page, page_max) + else + formspec = formspec_core(tab) .. formspec_write(title, text) + end else - formspec = "size[8,8]" .. - "label[0.5,0.5;" .. esc(S("by @1", owner)) .. "]" .. - "tablecolumns[color;text]" .. - "tableoptions[background=#00000000;highlight=#00000000;border=false]" .. - "table[0.4,0;7,0.5;title;#FFFF00," .. esc(title) .. "]" .. - "textarea[0.5,1.5;7.5,7;;" .. - minetest.formspec_escape(string ~= "" and string or text) .. ";]" .. - "button[2.4,7.6;0.8,0.8;book_prev;<]" .. - "label[3.2,7.7;" .. esc(S("Page @1 of @2", page, page_max)) .. "]" .. - "button[4.9,7.6;0.8,0.8;book_next;>]" + formspec = formspec_read(owner, title, string, text, page, page_max) end - minetest.show_formspec(player_name, "default:book", formspec) + minetest.show_formspec(player_name, "default:book", formspec_size .. formspec) return itemstack end @@ -69,12 +98,37 @@ local max_title_size = 80 local short_title_size = 35 minetest.register_on_player_receive_fields(function(player, formname, fields) if formname ~= "default:book" then return end + local player_name = player:get_player_name() local inv = player:get_inventory() local stack = player:get_wielded_item() + local data = stack:get_meta():to_table().fields - if fields.save and fields.title and fields.text - and fields.title ~= "" and fields.text ~= "" then - local new_stack, data + local title = data.title or "" + local text = data.text or "" + + if fields.book_header ~= nil and data.owner == player_name then + local contents + local tab = tonumber(fields.book_header) + if tab == 1 then + contents = formspec_core(tab) .. + formspec_write(title, text) + elseif tab == 2 then + local lines, string = {}, "" + for str in (text .. "\n"):gmatch("([^\n]*)[\n]") do + lines[#lines+1] = str + end + string = formspec_string(lpp, data.page, lines, string) + contents = formspec_read(player_name, title, string, + text, data.page, data.page_max) + end + tab_number = tab + local formspec = formspec_size .. formspec_core(tab) .. contents + minetest.show_formspec(player_name, "default:book", formspec) + return + end + + if fields.save and fields.title and fields.text then + local new_stack if stack:get_name() ~= "default:book_written" then local count = stack:get_count() if count == 1 then @@ -83,11 +137,9 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) stack:set_count(count - 1) new_stack = ItemStack("default:book_written") end - else - data = stack:get_meta():to_table().fields end - if data and data.owner and data.owner ~= player:get_player_name() then + if data.owner ~= player_name and title ~= "" and text ~= "" then return end @@ -117,8 +169,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end elseif fields.book_next or fields.book_prev then - local data = stack:get_meta():to_table().fields - if not data or not data.page then + if not data.page then return end From 953fcfe09e0e258600dd22b8cd1ee1ab53bd1151 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E5=93=B2=E7=BF=B0?= Date: Sun, 5 Sep 2021 05:37:39 +0800 Subject: [PATCH 02/36] Improve zh_CN translation (#2885) --- mods/beds/locale/beds.zh_CN.tr | 4 +-- mods/bones/locale/bones.zh_CN.tr | 4 +-- mods/default/locale/default.zh_CN.tr | 18 +++++------ mods/doors/locale/doors.zh_CN.tr | 6 ++-- mods/farming/locale/farming.zh_CN.tr | 10 +++--- mods/fire/locale/fire.zh_CN.tr | 2 +- .../locale/game_commands.zh_CN.tr | 2 +- mods/sethome/locale/sethome.zh_CN.tr | 2 +- mods/stairs/locale/stairs.zh_CN.tr | 32 +++++++++---------- mods/tnt/locale/tnt.zh_CN.tr | 4 +-- 10 files changed, 42 insertions(+), 42 deletions(-) diff --git a/mods/beds/locale/beds.zh_CN.tr b/mods/beds/locale/beds.zh_CN.tr index 6a06e09f..7e6cfc7a 100644 --- a/mods/beds/locale/beds.zh_CN.tr +++ b/mods/beds/locale/beds.zh_CN.tr @@ -1,8 +1,8 @@ # textdomain: beds Fancy Bed=花式床 Simple Bed=简易床 -This bed is already occupied!= -You have to stop moving before going to bed!= +This bed is already occupied!=床上已有人! +You have to stop moving before going to bed!=上床前要停止移动! Good morning.=早安! @1 of @2 players are in bed=@2位玩家中的@1位在床上 Force night skip=强制跳过夜晚 diff --git a/mods/bones/locale/bones.zh_CN.tr b/mods/bones/locale/bones.zh_CN.tr index dadf55ef..7911e37c 100644 --- a/mods/bones/locale/bones.zh_CN.tr +++ b/mods/bones/locale/bones.zh_CN.tr @@ -2,7 +2,7 @@ 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 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/default/locale/default.zh_CN.tr b/mods/default/locale/default.zh_CN.tr index 0db652d4..9726e83c 100644 --- a/mods/default/locale/default.zh_CN.tr +++ b/mods/default/locale/default.zh_CN.tr @@ -1,6 +1,6 @@ # textdomain: default Locked Chest=已上锁的箱子 -Locked Chest (owned by @1)=已上锁的箱子(属于@1所有) +Locked Chest (owned by @1)=已上锁的箱子(属于@1) You do not own this chest.=这个箱子不属于你所有。 a locked chest=一个已上锁的箱子 Chest=箱子 @@ -66,13 +66,13 @@ Obsidian Brick=黑曜石砖 Obsidian Block=黑曜石方块 Dirt=土方块 Dirt with Grass=草方块 -Dirt with Grass and Footsteps=草方块及脚印 +Dirt with Grass and Footsteps=带有脚印的草方块 Dirt with Savanna Grass=草原草方块 Dirt with Snow=雪土方块 -Dirt with Rainforest Litter=雨林腐土 -Dirt with Coniferous Litter=针叶林腐土 +Dirt with Rainforest Litter=雨林凋落物土 +Dirt with Coniferous Litter=针叶林凋落物土 Savanna Dirt=草原土 -Savanna Dirt with Savanna Grass=草原草方块(草原土) +Savanna Dirt with Savanna Grass=草原草方块 Permafrost=多年冻土 Permafrost with Stones=带石头的多年冻土 Permafrost with Moss=生苔的多年冻土 @@ -95,7 +95,7 @@ Jungle Tree=丛林树 Jungle Wood Planks=丛林树木板 Jungle Tree Leaves=丛林树叶 Jungle Tree Sapling=丛林树苗 -Emergent Jungle Tree Sapling=应急丛林树苗 +Emergent Jungle Tree Sapling=露生层丛林树苗 Pine Tree=松树 Pine Wood Planks=松树木板 Pine Needles=松针 @@ -129,13 +129,13 @@ Papyrus=莎草纸 Dry Shrub=干灌木 Jungle Grass=丛林草 Grass=草 -Savanna Grass= +Savanna Grass=草原草 Fern=蕨 Marram Grass=滨草 Bush Stem=灌木 Bush Leaves=灌木叶 Bush Sapling=灌木苗 -Blueberry Bush Leaves with Berries=蓝莓灌木叶与浆果 +Blueberry Bush Leaves with Berries=长蓝莓的蓝莓灌木叶 Blueberry Bush Leaves=蓝莓灌木叶 Blueberry Bush Sapling=蓝莓灌木苗 Acacia Bush Stem=相思灌木 @@ -212,7 +212,7 @@ Mese Sword=黄石剑 Diamond Sword=钻石剑 Key=钥匙 Torch=火把 -@1 will intersect protection on growth.=@1将与增长的保护相交。 +@1 will intersect protection on growth.=@1生长时将与保护区域相交。 ##### not used anymore ##### diff --git a/mods/doors/locale/doors.zh_CN.tr b/mods/doors/locale/doors.zh_CN.tr index 50f38c05..cf32996e 100644 --- a/mods/doors/locale/doors.zh_CN.tr +++ b/mods/doors/locale/doors.zh_CN.tr @@ -1,13 +1,13 @@ # textdomain: doors Hidden Door Segment=隐藏门段 -Owned by @1=由@1拥有 -You do not own this locked door.=这个门不属于你所有。 +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.=这个活板门不属于你所有。 +You do not own this trapdoor.=这个活板门不属于你。 a locked trapdoor=一扇已上锁的活板门 Wooden Trapdoor=木活板门 Steel Trapdoor=铁活板门 diff --git a/mods/farming/locale/farming.zh_CN.tr b/mods/farming/locale/farming.zh_CN.tr index 741ba453..33ad9be4 100644 --- a/mods/farming/locale/farming.zh_CN.tr +++ b/mods/farming/locale/farming.zh_CN.tr @@ -1,6 +1,6 @@ # textdomain: farming -Hoe= -Seed= +Hoe=锄头 +Seed=种子 Wooden Hoe=木锄头 Stone Hoe=石锄头 Steel Hoe=铁锄头 @@ -16,8 +16,8 @@ Cotton=棉 String=线 Soil=土 Wet Soil=湿土 -Savanna Soil= -Wet Savanna Soil= +Savanna Soil=草原土 +Wet Savanna Soil=湿草原土 Desert Sand Soil=沙漠沙土 Wet Desert Sand Soil=湿沙漠沙土 Straw=稻草 @@ -25,7 +25,7 @@ Straw Stair=稻草台阶 Inner Straw Stair=稻草内楼梯 Outer Straw Stair=稻草外楼梯 Straw Slab=稻草板 -Wild Cotton= +Wild Cotton=野棉花 ##### not used anymore ##### diff --git a/mods/fire/locale/fire.zh_CN.tr b/mods/fire/locale/fire.zh_CN.tr index 052089a3..7b0a4727 100644 --- a/mods/fire/locale/fire.zh_CN.tr +++ b/mods/fire/locale/fire.zh_CN.tr @@ -1,4 +1,4 @@ # textdomain: fire Fire=火焰 Permanent Fire=永久火焰 -Flint and Steel=火石和钢 +Flint and Steel=火石和划片 diff --git a/mods/game_commands/locale/game_commands.zh_CN.tr b/mods/game_commands/locale/game_commands.zh_CN.tr index 3c69dfb7..ba9a0275 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=杀死自己并重生 +Kill yourself to respawn=自杀并重生 No static_spawnpoint defined=static_spawnpoint 未定义 You need to be online to be killed!=您需要在线才能被杀死! diff --git a/mods/sethome/locale/sethome.zh_CN.tr b/mods/sethome/locale/sethome.zh_CN.tr index 9e3780a7..0af54ce7 100644 --- a/mods/sethome/locale/sethome.zh_CN.tr +++ b/mods/sethome/locale/sethome.zh_CN.tr @@ -1,6 +1,6 @@ # textdomain: sethome Can use /sethome and /home=可以使用/sethome和/home -Teleport you to your home point=传送您到您家的地点 +Teleport you to your home point=将您传送到家 Teleported to home!=已传送到家! Set a home using /sethome=使用/sethome设定家 Set your home point=设定您家的地点 diff --git a/mods/stairs/locale/stairs.zh_CN.tr b/mods/stairs/locale/stairs.zh_CN.tr index 85646657..e37ebcbb 100644 --- a/mods/stairs/locale/stairs.zh_CN.tr +++ b/mods/stairs/locale/stairs.zh_CN.tr @@ -7,10 +7,10 @@ Obsidian Glass Stair=黑曜石玻璃楼梯 Obsidian Glass Slab=黑曜石玻璃台阶 Inner Obsidian Glass Stair=黑曜石玻璃楼梯(内) Outer Obsidian Glass Stair=黑曜石玻璃楼梯(外) -Wooden Stair=木制楼梯 +Wooden Stair=木楼梯 Inner Wooden Stair=木楼梯(内) Outer Wooden Stair=木楼梯(外) -Wooden Slab=木制台阶 +Wooden Slab=木台阶 Jungle Wood Stair=丛林木楼梯 Inner Jungle Wood Stair=丛林木楼梯(内) Outer Jungle Wood Stair=丛林木楼梯(外) @@ -31,14 +31,14 @@ 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=苔石台阶 +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=石砖楼梯(外) @@ -51,10 +51,10 @@ 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 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=沙漠石砖楼梯(外) @@ -114,7 +114,7 @@ Obsidian Block Slab=黑曜石块台阶 Brick Stair=砖楼梯 Inner Brick Stair=砖楼梯(内) Outer Brick Stair=砖楼梯(外) -Brick Slab=砖制台阶 +Brick Slab=砖台阶 Steel Block Stair=铁块楼梯 Inner Steel Block Stair=铁块楼梯(内) Outer Steel Block Stair=铁块楼梯(外) @@ -135,7 +135,7 @@ Gold Block Stair=金块楼梯 Inner Gold Block Stair=金块楼梯(内) Outer Gold Block Stair=金块楼梯(外) Gold Block Slab=金块台阶 -Ice Stair=冰阶梯 +Ice Stair=冰楼梯 Inner Ice Stair=冰块楼梯(内) Outer Ice Stair=冰块楼梯(外) Ice Slab=冰台阶 diff --git a/mods/tnt/locale/tnt.zh_CN.tr b/mods/tnt/locale/tnt.zh_CN.tr index 0a3294e5..4cb2e949 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 Stick=三硝基甲苯棒 +TNT=三硝基甲苯 From 4b8b33587cdaf9b24aa4daa069fa252849cd9038 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Fri, 24 Sep 2021 21:01:52 +0200 Subject: [PATCH 03/36] Fix misuse of nodedef custom fields in fence gates Custom fields must start with an underscore, this is very relevant for `sound` which is already defined by the engine. --- mods/doors/init.lua | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 455dfe79..58105797 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -775,8 +775,8 @@ function doors.register_fencegate(name, def) sounds = def.sounds, on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) 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.15, + minetest.swap_node(pos, {name = node_def._gate, param2 = node.param2}) + minetest.sound_play(node_def._gate_sound, {pos = pos, gain = 0.15, max_hear_distance = 8}, true) return itemstack end, @@ -804,8 +804,8 @@ function doors.register_fencegate(name, def) local fence_closed = table.copy(fence) fence_closed.mesh = "doors_fencegate_closed.obj" - fence_closed.gate = name .. "_open" - fence_closed.sound = "doors_fencegate_open" + fence_closed._gate = name .. "_open" + fence_closed._gate_sound = "doors_fencegate_open" fence_closed.collision_box = { type = "fixed", fixed = {-1/2, -1/2, -1/8, 1/2, 1/2 + fence_collision_extra, 1/8} @@ -813,8 +813,8 @@ function doors.register_fencegate(name, def) local fence_open = table.copy(fence) fence_open.mesh = "doors_fencegate_open.obj" - fence_open.gate = name .. "_closed" - fence_open.sound = "doors_fencegate_close" + fence_open._gate = name .. "_closed" + fence_open._gate_sound = "doors_fencegate_close" fence_open.groups.not_in_creative_inventory = 1 fence_open.collision_box = { type = "fixed", From f2bc5e2c6726fb6da0d944ccb33d80da2ee5b268 Mon Sep 17 00:00:00 2001 From: ptah-alexs Date: Sat, 16 Oct 2021 18:40:56 +0400 Subject: [PATCH 04/36] Improve Russian translation (#2532) --- mods/beds/locale/beds.ru.tr | 4 +- mods/default/locale/default.ru.tr | 18 +++---- mods/farming/locale/farming.ru.tr | 10 ++-- mods/fire/locale/fire.ru.tr | 4 +- .../locale/mtg_craftguide.ru.tr | 53 +++++++++++++++++++ 5 files changed, 71 insertions(+), 18 deletions(-) create mode 100644 mods/mtg_craftguide/locale/mtg_craftguide.ru.tr diff --git a/mods/beds/locale/beds.ru.tr b/mods/beds/locale/beds.ru.tr index ac5bd2ee..73db735c 100644 --- a/mods/beds/locale/beds.ru.tr +++ b/mods/beds/locale/beds.ru.tr @@ -1,8 +1,8 @@ # textdomain: beds Fancy Bed=Детализированная Кровать Simple Bed=Обычная Кровать -This bed is already occupied!= -You have to stop moving before going to bed!= +This bed is already occupied!=Эта кровать уже занята! +You have to stop moving before going to bed!=Нельзя воспользоваться кроватью на ходу! Good morning.=Доброе утро. @1 of @2 players are in bed=@1 из @2 игроков в кровати Force night skip=Пропустить ночь diff --git a/mods/default/locale/default.ru.tr b/mods/default/locale/default.ru.tr index 4415f672..3ce0085d 100644 --- a/mods/default/locale/default.ru.tr +++ b/mods/default/locale/default.ru.tr @@ -67,12 +67,12 @@ Obsidian Block=Обсидиановый Блок Dirt=Земля Dirt with Grass=Земля с Травой Dirt with Grass and Footsteps=Земля с Травой и Следами -Dirt with Savanna Grass= +Dirt with Savanna Grass=Земля с Саванной Травой Dirt with Snow=Земля Со Снегом Dirt with Rainforest Litter=Земля с Тропической Подстилкой Dirt with Coniferous Litter=Земля с Сосновой Подстилкой -Savanna Dirt= -Savanna Dirt with Savanna Grass= +Savanna Dirt=Саванная Земля +Savanna Dirt with Savanna Grass=Саванная Земля с Травой Permafrost=Замороженная Почва Permafrost with Stones=Замороженная Почва с Камнями Permafrost with Moss=Замороженная Почва с Мхом @@ -129,7 +129,7 @@ Papyrus=Папирус Dry Shrub=Сухой Куст Jungle Grass=Тропическая Трава Grass=Трава -Savanna Grass= +Savanna Grass=Саванная Трава Fern=Папоротник Marram Grass=Песколюб Bush Stem=Стебли Куста @@ -180,11 +180,11 @@ Glass=Стекло Obsidian Glass=Обсидиановое Стекло Brick Block=Кирпичный Блок Mese Lamp=Месе Лампа -Apple Wood Mese Post Light= -Acacia Wood Mese Post Light= -Jungle Wood Mese Post Light= -Pine Wood Mese Post Light= -Aspen Wood Mese Post Light= +Apple Wood Mese Post Light=Столбовой Месе светильник из Яблони +Acacia Wood Mese Post Light=Столбовой Месе светильник из Акации +Jungle Wood Mese Post Light=Столбовой Месе светильник из Тропического дерева +Pine Wood Mese Post Light=Столбовой Месе светильник из Сосны +Aspen Wood Mese Post Light=Столбовой Месе светильник из Осины Cloud=Облако Wooden Pickaxe=Деревянная Кирка Stone Pickaxe=Каменная Кирка diff --git a/mods/farming/locale/farming.ru.tr b/mods/farming/locale/farming.ru.tr index a6d1b6d8..7b771392 100644 --- a/mods/farming/locale/farming.ru.tr +++ b/mods/farming/locale/farming.ru.tr @@ -1,6 +1,6 @@ # textdomain: farming -Hoe= -Seed= +Hoe=Мотыга +Seed=Семя Wooden Hoe=Деревянная Мотыга Stone Hoe=Каменная Мотыга Steel Hoe=Стальная Мотыга @@ -16,8 +16,8 @@ Cotton=Хлопок String=Нить Soil=Почва Wet Soil=Влажная Почва -Savanna Soil= -Wet Savanna Soil= +Savanna Soil=Саванная Почва +Wet Savanna Soil=Влажная Саванная Почва Desert Sand Soil=Пустынная Песчаная Почва Wet Desert Sand Soil=Влажная Пустынная Песчаная Почва Straw=Солома @@ -25,7 +25,7 @@ Straw Stair=Соломенная Ступень Inner Straw Stair=Угловая Соломенная Ступень (Внутренний Угол) Outer Straw Stair=Угловая Соломенная Ступень (Внешний Угол) Straw Slab=Соломенная Плита -Wild Cotton= +Wild Cotton=Неокультуренный Хлопок ##### not used anymore ##### diff --git a/mods/fire/locale/fire.ru.tr b/mods/fire/locale/fire.ru.tr index d2cb81f4..496e81c1 100644 --- a/mods/fire/locale/fire.ru.tr +++ b/mods/fire/locale/fire.ru.tr @@ -1,6 +1,6 @@ # textdomain: fire -Fire= -Permanent Fire= +Fire=Огонь +Permanent Fire=Вечный Огонь Flint and Steel=Огниво diff --git a/mods/mtg_craftguide/locale/mtg_craftguide.ru.tr b/mods/mtg_craftguide/locale/mtg_craftguide.ru.tr new file mode 100644 index 00000000..8c74106d --- /dev/null +++ b/mods/mtg_craftguide/locale/mtg_craftguide.ru.tr @@ -0,0 +1,53 @@ +# textdomain: mtg_craftguide +Any coal=Любой уголь +Any sand=Любой песок +Any wool=Любая шерсть +Any stick=Любая палка +Any vessel=Любой сосуд +Any wood planks=Любые деревянные палки +Any kind of stone block=Любой каменный блок +Any red flower=Любой красный цветок +Any blue flower=Любой синий цветок +Any black flower=Любой чёрный цветок +Any green flower=Любой зелёный цветок +Any white flower=Любой белый цветок +Any orange flower=Любой оранжевый цветок +Any violet flower=Любой фиолетовый цветок +Any yellow flower=Любой жёлтый цветок +Any red dye=Любая красная краска +Any blue dye=Любая синяя краска +Any cyan dye=Любая сине-зелёная краска +Any grey dye=Любая серая краска +Any pink dye=Любая розовая краска +Any black dye=Любая чёрная краска +Any brown dye=Любая коричневая краска +Any green dye=Любая зелёная краска +Any white dye=Любая белая краска +Any orange dye=Любая оранжевая краска +Any violet dye=Любая фиолетовая краска +Any yellow dye=Любая жёлтая краска +Any magenta dye=Любая пурпурная краска +Any dark grey dye=Любая тёмно-серая краска +Any dark green dye=Любая тёмно-зелёная краска +# Label for group ingredients +G= +Any item belonging to the group(s): @1=Любой предмет из групп(ы): @1 +Unknown Item=Неизвествый предмет +Fuel=Топливо +Usage @1 of @2= +Recipe @1 of @2= +Previous recipe=Предыдущий рецепт +Next recipe=Следующий рецепт +Recipe is too big to be displayed.=Рецепт слишком большой для показа +Shapeless= +Cooking time: @1=Время изготовления: @1 +Search=Поиск +Reset=Сбросить +Previous page=Предыдущая страница +Next page=Следующая страница +No items to show.=Нет элементов для отображения. +No usages.= +Click again to show recipes.=Нажмите снова для отображения рецептов. +No recipes.=Нет рецептов. +Click again to show usages.= +Recipes=Рецепты From 5273fcb3ad35502abfb7c9e5b43c0cd74ddc49fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lars=20M=C3=BCller?= <34514239+appgurueu@users.noreply.github.com> Date: Sat, 16 Oct 2021 16:41:10 +0200 Subject: [PATCH 05/36] Readd character.b3d normals (#2902) --- mods/player_api/models/character.b3d | Bin 71467 -> 73433 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/player_api/models/character.b3d b/mods/player_api/models/character.b3d index 764197d95ae32fa9614f1a17a7a553fe3dc54948..3e0827e40b5608d36019d0cfef98994d2fb9584c 100644 GIT binary patch delta 4768 zcmZu!&ud*p6rQB{(IgEO(k5|Xd~U>AFu~ZRxi_&E1!+p-kA+ZMwXaDwh2qN1yKaK6 zLYaj|rFLl*;^Hl(ya%odN^$AN3NBsbKS({_IdkUB%zFcAa_@KM`_8X9bNln**k2FF z-rCq$z4+(Sh#PUvZCrhC>lONqzu(xtap%S-pWVFU{`mc!N`IVdDgxO8zn{{&ym|4> z{iVB~Usyf!th{;u>bqN~&WaVdM(L;Bo~XY$czgZh_FfM=Wi@w?7d!el-V=MPBHRAA z2aoFOxoyB3;5G1qi|`ihXS@$B+23HFF2aQ$_-=cTo?lK4{#jE42#A5q<_4RENHxL-aozgyBZ)yl(PS6}$8`yeSDxq>CZ6W%5KoSh@h7jReIBDu4NTNg^) zcTOzqkbzoDWnlfiITw_mhSg#=;DeQGURQjM)JohxMsNk490SVw`llod0aF&bYND8-xf9D)|b}hL~-2diJIW~DPTo^I3D|i z8wG3)y1ce7hb67!4tW&2yat<{Nf>Zt=@f8VC-V&$R^yMy7ZDm3hnKmYktJf^h0rrR z**`cSi2k_aFHa=XE4a?ntH$&hym)G|Y0<^9$M~&y&1sj!S;{!sQF5_Dm;5l1cM0gw zlzTNsb3%vrv{qP-h9TpLI{_DW6t}u^;+#L4n8);zJOnydQLgynF>|)*>9C}El3Xmn zun>V29^=@{lcnlb~ zW1x6Vv@QPT$WJZferYQ9C7%SaVf>`uJ9>Vxqs45Bi#I7Q-T;SMiTm4A`8@|Zmg6%_ z+j@A0kgO<|jEoYO{fS)M?|YDok2*4P?;)f%<~>G^xKrXTe!rEa^{1!v($ys08ZyC@ zGRhSLGsTAuT*m#i>AZBRHc{LhTAo__vbcE^M_-pSfR%dq*Z(qIjAt_ETqNT+QV}HX zVEkI&mAC~Lh6GEo+*6WE&987S_0!kdTy3HpH(pYjKndJ&W5b=Kw2b@BnNYf59_2VX zql0gdG#qrpacfMI%!t9eOZNMt8Tn98 z*j)AM>Rj#Im+LF5bA8s}e-ImXHEV>^`(Ze|6};WPG_c=Sr;?A$K*w?komLH+MhCgq z*sT<=Gr1D?`y`i|gU;l{95Pr9VUeyjIR*pXQaNgpOTit({gX7hKqtw}&DABi!^vVg zOLmGohh*o;6x=V*7N<_>`nmUr3@b+0&uf?BELRW1eMjX2T}$N>bEP6RO7viKC0=I7 iaQ}FAe%c^Zx^}(eK#+ delta 891 zcmYMw&ubGw7{>A0nxu(sG@IFNdMqdiRzgY&9vee@@Zb+R>ksf^ET%n(luUZAmwGR+ z2P^&uf(oxU5xsgIFa8(8^se7cDK30?-koQ5Hk;qyDjz;p4u`}3=9Nxj5@SrU_1Ik} zclJh;(a!Ywq`Uuech=0Y`u}>hVNA)G;r0X9CCjIWlLNok?e*4}&v%^X*$#@?b@$%p z)~BV!+*03cZZyxfln0hC9gk~2-ktm$JRQG2{?kcUW^ZP3@b={P zt!FHLUQStC*(f)bYi#^3Ysr$hBohyTA|S%fWzvU(hd>b!VK30b!9$=3h_DrUICuyY zp_0ofx!&x^&1xz|HIr%8id1v?LI&<5b5^s`ujNwI=$VC7?thV|+}nB1hl7Ve5#~9c z%<4Q}r-z3?5$g10)}U{2euMLwg;WGY*o&MG2M>WFAi^%tqx>dMN;xAea6XwW@{K4K zt$0$P2#B!Fod1BnNlywC0TK2R=flB6pa_Vtm+9f)Ay5QF*cN?@?<1!zzK>J{MA(!b z4juwUK!k1c``T7qo1Xa%voZ%nSj+Qp@DL~hB5Xzv2M>WFAj0PKaPWDil3#tIgZImi N^y~i7suuBR^&j3J{|*2E From 1309953da6b316c7b36e5335feea843c5fa2168d Mon Sep 17 00:00:00 2001 From: Montandalar Date: Sat, 7 Aug 2021 10:11:18 +1000 Subject: [PATCH 06/36] Fix the creative trash slot for player 'trash' By using the inventory named just 'trash' instead of 'creative_trash' which overlaps when you name your player 'trash'. --- mods/creative/inventory.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/creative/inventory.lua b/mods/creative/inventory.lua index 46da80a1..1f9a1d50 100644 --- a/mods/creative/inventory.lua +++ b/mods/creative/inventory.lua @@ -125,7 +125,7 @@ function creative.update_creative_inventory(player_name, tab_content) end -- Create the trash field -local trash = minetest.create_detached_inventory("creative_trash", { +local trash = minetest.create_detached_inventory("trash", { -- Allow the stack to be placed and remove it in on_put() -- This allows the creative inventory to restore the stack allow_put = function(inv, listname, index, stack, player) @@ -157,7 +157,7 @@ function creative.register_tab(name, title, items) [[ image[4.08,4.2;0.8,0.8;creative_trash_icon.png] listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF] - list[detached:creative_trash;main;4.02,4.1;1,1;] + list[detached:trash;main;4.02,4.1;1,1;] listring[] image_button[5,4.05;0.8,0.8;creative_prev_icon.png;creative_prev;] image_button[7.2,4.05;0.8,0.8;creative_next_icon.png;creative_next;] From 02ec1333923bd2d8a2bada916a76082c1a04652c Mon Sep 17 00:00:00 2001 From: sfence Date: Sat, 23 Oct 2021 14:37:51 +0200 Subject: [PATCH 07/36] Prevent blocking of fuel inventory by fuel replacement (#2895) --- mods/default/furnace.lua | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/mods/default/furnace.lua b/mods/default/furnace.lua index d5703cd6..b164b8a0 100644 --- a/mods/default/furnace.lua +++ b/mods/default/furnace.lua @@ -177,8 +177,15 @@ local function furnace_node_timer(pos, elapsed) fuel_totaltime = 0 src_time = 0 else - -- Take fuel from fuel list - inv:set_stack("fuel", 1, afterfuel.items[1]) + -- prevent blocking of fuel inventory (for automatization mods) + local is_fuel = minetest.get_craft_result({method = "fuel", width = 1, items = {afterfuel.items[1]:to_string()}}) + if is_fuel.time == 0 then + table.insert(fuel.replacements, afterfuel.items[1]) + inv:set_stack("fuel", 1, "") + else + -- Take fuel from fuel list + inv:set_stack("fuel", 1, afterfuel.items[1]) + end -- Put replacements in dst list or drop them on the furnace. local replacements = fuel.replacements if replacements[1] then From 31f7d578893503aaf5cf8f81c9f92f61759c7ce0 Mon Sep 17 00:00:00 2001 From: nogajun Date: Mon, 1 Nov 2021 03:17:21 +0900 Subject: [PATCH 08/36] Add and fix Japanese translation (#2904) --- mods/beds/locale/beds.ja.tr | 10 + mods/binoculars/locale/binoculars.ja.tr | 3 + mods/boats/locale/boats.ja.tr | 4 + mods/bones/locale/bones.ja.tr | 8 + mods/bucket/locale/bucket.ja.tr | 5 + mods/butterflies/locale/butterflies.ja.tr | 4 + mods/carts/locale/carts.ja.tr | 6 + mods/creative/locale/creative.ja.tr | 10 + mods/default/locale/default.ja.tr | 215 ++++++++++++++++++ mods/doors/locale/doors.ja.tr | 18 ++ mods/dye/locale/dye.ja.tr | 16 ++ mods/farming/locale/farming.ja.tr | 28 +++ mods/fire/locale/fire.ja.tr | 4 + mods/fireflies/locale/fireflies.ja.tr | 5 + mods/flowers/locale/flowers.ja.tr | 12 + mods/game_commands/locale/game_commands.ja.tr | 4 + mods/map/locale/map.ja.tr | 3 + .../locale/mtg_craftguide.ja.tr | 53 +++++ mods/screwdriver/locale/screwdriver.ja.tr | 3 + mods/sethome/locale/sethome.ja.tr | 8 + mods/sfinv/locale/sfinv.ja.tr | 2 + mods/stairs/locale/stairs.ja.tr | 145 ++++++++++++ mods/tnt/locale/tnt.ja.tr | 4 + mods/vessels/locale/vessels.ja.tr | 8 + mods/walls/locale/walls.ja.tr | 4 + mods/wool/locale/wool.ja.tr | 16 ++ mods/xpanes/locale/xpanes.ja.tr | 6 + 27 files changed, 604 insertions(+) create mode 100644 mods/beds/locale/beds.ja.tr create mode 100644 mods/binoculars/locale/binoculars.ja.tr create mode 100644 mods/boats/locale/boats.ja.tr create mode 100644 mods/bones/locale/bones.ja.tr create mode 100644 mods/bucket/locale/bucket.ja.tr create mode 100644 mods/butterflies/locale/butterflies.ja.tr create mode 100644 mods/carts/locale/carts.ja.tr create mode 100644 mods/creative/locale/creative.ja.tr create mode 100644 mods/default/locale/default.ja.tr create mode 100644 mods/doors/locale/doors.ja.tr create mode 100644 mods/dye/locale/dye.ja.tr create mode 100644 mods/farming/locale/farming.ja.tr create mode 100644 mods/fire/locale/fire.ja.tr create mode 100644 mods/fireflies/locale/fireflies.ja.tr create mode 100644 mods/flowers/locale/flowers.ja.tr create mode 100644 mods/game_commands/locale/game_commands.ja.tr create mode 100644 mods/map/locale/map.ja.tr create mode 100644 mods/mtg_craftguide/locale/mtg_craftguide.ja.tr create mode 100644 mods/screwdriver/locale/screwdriver.ja.tr create mode 100644 mods/sethome/locale/sethome.ja.tr create mode 100644 mods/sfinv/locale/sfinv.ja.tr create mode 100644 mods/stairs/locale/stairs.ja.tr create mode 100644 mods/tnt/locale/tnt.ja.tr create mode 100644 mods/vessels/locale/vessels.ja.tr create mode 100644 mods/walls/locale/walls.ja.tr create mode 100644 mods/wool/locale/wool.ja.tr create mode 100644 mods/xpanes/locale/xpanes.ja.tr diff --git a/mods/beds/locale/beds.ja.tr b/mods/beds/locale/beds.ja.tr new file mode 100644 index 00000000..50344566 --- /dev/null +++ b/mods/beds/locale/beds.ja.tr @@ -0,0 +1,10 @@ +# textdomain: beds +Fancy Bed=ファンシーなベッド +Simple Bed=シンプルなベッド +This bed is already occupied!=ベッドはすでに使われています! +You have to stop moving before going to bed!=寝るときは動かないでください! +Good morning.=おはようございます。 +@1 of @2 players are in bed=ベッドに@1 / @2人います +Force night skip=強制的に夜をスキップします +You can only sleep at night.=夜しか寝れません。 +Leave Bed=ベッドから出ます diff --git a/mods/binoculars/locale/binoculars.ja.tr b/mods/binoculars/locale/binoculars.ja.tr new file mode 100644 index 00000000..9766f461 --- /dev/null +++ b/mods/binoculars/locale/binoculars.ja.tr @@ -0,0 +1,3 @@ +# textdomain: binoculars +Binoculars=双眼鏡 +Use with 'Zoom' key=ズームキーで使います diff --git a/mods/boats/locale/boats.ja.tr b/mods/boats/locale/boats.ja.tr new file mode 100644 index 00000000..ee2d0863 --- /dev/null +++ b/mods/boats/locale/boats.ja.tr @@ -0,0 +1,4 @@ +# textdomain: boats +Boat cruise mode on=クルージングモード・オン +Boat cruise mode off=クルージングモード・オフ +Boat=ボート diff --git a/mods/bones/locale/bones.ja.tr b/mods/bones/locale/bones.ja.tr new file mode 100644 index 00000000..8c3f7328 --- /dev/null +++ b/mods/bones/locale/bones.ja.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/locale/bucket.ja.tr b/mods/bucket/locale/bucket.ja.tr new file mode 100644 index 00000000..df3bbb63 --- /dev/null +++ b/mods/bucket/locale/bucket.ja.tr @@ -0,0 +1,5 @@ +# textdomain: bucket +Empty Bucket=空のバケツ +Water Bucket=水入りバケツ +River Water Bucket=川の水入りバケツ +Lava Bucket=溶岩入りバケツ diff --git a/mods/butterflies/locale/butterflies.ja.tr b/mods/butterflies/locale/butterflies.ja.tr new file mode 100644 index 00000000..5a22d6bf --- /dev/null +++ b/mods/butterflies/locale/butterflies.ja.tr @@ -0,0 +1,4 @@ +# textdomain: butterflies +White Butterfly=白色の蝶 +Red Butterfly=赤色の蝶 +Violet Butterfly=紫色の蝶 diff --git a/mods/carts/locale/carts.ja.tr b/mods/carts/locale/carts.ja.tr new file mode 100644 index 00000000..30c14ce2 --- /dev/null +++ b/mods/carts/locale/carts.ja.tr @@ -0,0 +1,6 @@ +# textdomain: carts +Cart=トロッコ +(Sneak+Click to pick up)=(スニークキーとクリックで乗ります) +Rail=レール +Powered Rail=パワードレール +Brake Rail=ブレーキレール diff --git a/mods/creative/locale/creative.ja.tr b/mods/creative/locale/creative.ja.tr new file mode 100644 index 00000000..1c215bbf --- /dev/null +++ b/mods/creative/locale/creative.ja.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/locale/default.ja.tr b/mods/default/locale/default.ja.tr new file mode 100644 index 00000000..232e9716 --- /dev/null +++ b/mods/default/locale/default.ja.tr @@ -0,0 +1,215 @@ +# textdomain: default +Locked Chest=鍵のかかったチェスト +Locked Chest (owned by @1)=鍵のかかったチェスト(@1所有) +You do not own this chest.=あなたはこのチェストの所有者ではありません。 +a locked chest=ロックされたチェスト +Chest=チェスト +Title:=題名 +Contents:=内容 +Save=保存 +by @1=@1著 +Page @1 of @2=@1 / @2 ページ +"@1" by @2=@2著「@1」 +Skeleton Key=スケルトンの鍵 +Key to @1's @2=@1の@2への鍵 +Blueberries=ブルーベリー +Book=本 +Book with Text=テキストが書かれた本 +Bronze Ingot=青銅インゴット +Clay Brick=粘土レンガ +Clay Lump=粘土の塊 +Coal Lump=石炭 +Copper Ingot=銅インゴット +Copper Lump=銅の塊 +Diamond=ダイヤモンド +Flint=火打ち石 +Gold Ingot=金インゴット +Gold Lump=金の塊 +Iron Lump=鉄の塊 +Mese Crystal=メセクリスタル +Mese Crystal Fragment=メセクリスタルの破片 +Obsidian Shard=黒曜石の破片 +Paper=紙 +Steel Ingot=鉄インゴット +Stick=棒 +Tin Ingot=スズインゴット +Tin Lump=スズの塊 +Furnace is empty=かまどは空です +100% (output full)=100%(フル出力) +@1%=@1% +Not cookable=調理できません +Empty=空 +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 Savanna Grass=サバンナの草のついた土 +Dirt with Snow=雪のついた土 +Dirt with Rainforest Litter=熱帯雨林のよごれた土 +Dirt with Coniferous Litter=針葉樹のよごれた土 +Savanna Dirt=サバンナの土 +Savanna Dirt with Savanna Grass=サバンナの草のついたサバンナの土 +Permafrost=永久凍土 +Permafrost with Stones=石のついた永久凍土 +Permafrost with Moss=苔のついた永久凍土 +Sand=砂 +Desert Sand=砂漠の砂 +Silver Sand=銀の砂 +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=草 +Savanna Grass=サバンナの草 +Fern=シダ +Marram Grass=マラムの草 +Bush Stem=低木の幹 +Bush Leaves=低木の葉 +Bush Sapling=低木の苗木 +Blueberry Bush Leaves with Berries=ブルーベリーの低木と実 +Blueberry Bush Leaves=ブルーベリーの低木の葉 +Blueberry Bush Sapling=ブルーベリーの低木の苗木 +Acacia Bush Stem=アカシアの低木の幹 +Acacia Bush Leaves=アカシアの低木の葉 +Acacia Bush Sapling=アカシアの低木の苗木 +Pine Bush Stem=マツの低木の幹 +Pine Bush Needles=マツの低木の葉 +Pine Bush Sapling=マツの低木の苗木 +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=テキストが長すぎます +"@1"=「@1」 +Wooden Sign=木の看板 +Steel Sign=鉄の看板 +Wooden Ladder=木のはしご +Steel Ladder=鉄のはしご +Apple Wood Fence=リンゴのフェンス +Acacia Wood Fence=アカシアのフェンス +Jungle Wood Fence=ジャングルのフェンス +Pine Wood Fence=マツのフェンス +Aspen Wood Fence=ポプラのフェンス +Apple Wood Fence Rail=リンゴのフェンスレール +Acacia Wood Fence Rail=アカシアのフェンスレール +Jungle Wood Fence Rail=ジャングルのフェンスレール +Pine Wood Fence Rail=マツのフェンスレール +Aspen Wood Fence Rail=ポプラのフェンスレール +Glass=ガラス +Obsidian Glass=黒曜石のガラス +Brick Block=レンガブロック +Mese Lamp=メセの塊 +Apple Wood Mese Post Light=リンゴのメセ灯柱 +Acacia Wood Mese Post Light=アカシアのメセ灯柱 +Jungle Wood Mese Post Light=ジャングルのメセ灯柱 +Pine Wood Mese Post Light=マツのメセ灯柱 +Aspen Wood Mese Post Light=ポプラのメセ灯柱 +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は成長するとき保護と交差します。 diff --git a/mods/doors/locale/doors.ja.tr b/mods/doors/locale/doors.ja.tr new file mode 100644 index 00000000..910e0ae1 --- /dev/null +++ b/mods/doors/locale/doors.ja.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/dye/locale/dye.ja.tr b/mods/dye/locale/dye.ja.tr new file mode 100644 index 00000000..d7ae3068 --- /dev/null +++ b/mods/dye/locale/dye.ja.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/locale/farming.ja.tr b/mods/farming/locale/farming.ja.tr new file mode 100644 index 00000000..a95d40c8 --- /dev/null +++ b/mods/farming/locale/farming.ja.tr @@ -0,0 +1,28 @@ +# textdomain: farming +Hoe=クワ +Seed=種 +Wooden Hoe=木のクワ +Stone Hoe=石のクワ +Steel Hoe=鉄のクワ +Bronze Hoe=青銅のクワ +Mese Hoe=メセのクワ +Diamond Hoe=ダイヤモンドのクワ +Wheat Seed=小麦の種 +Wheat=小麦 +Flour=小麦粉 +Bread=パン +Cotton Seed=綿の種 +Cotton=綿 +String=糸 +Soil=土壌 +Wet Soil=湿った土壌 +Savanna Soil=サバンナの土壌 +Wet Savanna Soil=湿ったサバンナの土壌 +Desert Sand Soil=砂漠の砂の土壌 +Wet Desert Sand Soil=湿った砂漠の砂の土壌 +Straw=ワラ +Straw Stair=ワラの階段 +Inner Straw Stair=へっこんだワラの階段 +Outer Straw Stair=でっぱったワラの階段 +Straw Slab=ワラのハーフブロック +Wild Cotton=天然綿 diff --git a/mods/fire/locale/fire.ja.tr b/mods/fire/locale/fire.ja.tr new file mode 100644 index 00000000..bf5fec4e --- /dev/null +++ b/mods/fire/locale/fire.ja.tr @@ -0,0 +1,4 @@ +# textdomain: fire +Fire=炎 +Permanent Fire=燃え続ける炎 +Flint and Steel=火打ち石と打ち金 diff --git a/mods/fireflies/locale/fireflies.ja.tr b/mods/fireflies/locale/fireflies.ja.tr new file mode 100644 index 00000000..4116ca2f --- /dev/null +++ b/mods/fireflies/locale/fireflies.ja.tr @@ -0,0 +1,5 @@ +# textdomain: fireflies +Firefly=ホタル +Hidden Firefly=隠されたホタル +Bug Net=虫取り網 +Firefly in a Bottle=ホタルの入った瓶 diff --git a/mods/flowers/locale/flowers.ja.tr b/mods/flowers/locale/flowers.ja.tr new file mode 100644 index 00000000..bea87e27 --- /dev/null +++ b/mods/flowers/locale/flowers.ja.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.ja.tr b/mods/game_commands/locale/game_commands.ja.tr new file mode 100644 index 00000000..b6c77dce --- /dev/null +++ b/mods/game_commands/locale/game_commands.ja.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.ja.tr b/mods/map/locale/map.ja.tr new file mode 100644 index 00000000..7205f244 --- /dev/null +++ b/mods/map/locale/map.ja.tr @@ -0,0 +1,3 @@ +# textdomain: map +Mapping Kit=地図キット +Use with 'Minimap' key=ミニマップキーで使います diff --git a/mods/mtg_craftguide/locale/mtg_craftguide.ja.tr b/mods/mtg_craftguide/locale/mtg_craftguide.ja.tr new file mode 100644 index 00000000..c6ec66ae --- /dev/null +++ b/mods/mtg_craftguide/locale/mtg_craftguide.ja.tr @@ -0,0 +1,53 @@ +# textdomain: mtg_craftguide +Any coal=石炭 +Any sand=砂 +Any wool=羊毛 +Any stick=棒 +Any vessel=瓶 +Any wood planks=板材 +Any kind of stone block=石のブロック +Any red flower=赤色の花 +Any blue flower=青色の花 +Any black flower=黒色の花 +Any green flower=緑色の花 +Any white flower=白色の花 +Any orange flower=橙色の花 +Any violet flower=紫色の花 +Any yellow flower=黄色の花 +Any red dye=赤色の染料 +Any blue dye=青色の染料 +Any cyan dye=青緑色の染料 +Any grey dye=灰色の染料 +Any pink dye=桃色の染料 +Any black dye=黒色の染料 +Any brown dye=茶色の染料 +Any green dye=緑色の染料 +Any white dye=白色の染料 +Any orange dye=橙色の染料 +Any violet dye=紫色の染料 +Any yellow dye=黄色の染料 +Any magenta dye=赤紫色の染料 +Any dark grey dye=濃灰色の染料 +Any dark green dye=濃緑色の染料 +# Label for group ingredients +G= +Any item belonging to the group(s): @1=グループに属するアイテム: @1 +Unknown Item=不明なアイテム +Fuel=燃料 +Usage @1 of @2=利用方法 @1 / @2 +Recipe @1 of @2=レシピ @1 / @2 +Previous recipe=前のレシピ +Next recipe=次のレシピ +Recipe is too big to be displayed.=レシピが大きすぎて表示できません。 +Shapeless=無形 +Cooking time: @1=調理時間: @1 +Search=検索 +Reset=リセット +Previous page=前のページ +Next page=次のページ +No items to show.=表示する項目がありません。 +No usages.=利用方法がありません。 +Click again to show recipes.=もう一度クリックするとレシピを表示します。 +No recipes.=レシピがありません。 +Click again to show usages.=もう一度クリックすると使用方法を表示します。 +Recipes=レシピ diff --git a/mods/screwdriver/locale/screwdriver.ja.tr b/mods/screwdriver/locale/screwdriver.ja.tr new file mode 100644 index 00000000..55690f25 --- /dev/null +++ b/mods/screwdriver/locale/screwdriver.ja.tr @@ -0,0 +1,3 @@ +# textdomain: screwdriver +Screwdriver=ドライバー +(left-click rotates face, right-click rotates axis)=(左クリックで面が回転。右クリックで軸が回転) diff --git a/mods/sethome/locale/sethome.ja.tr b/mods/sethome/locale/sethome.ja.tr new file mode 100644 index 00000000..3d636b59 --- /dev/null +++ b/mods/sethome/locale/sethome.ja.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.ja.tr b/mods/sfinv/locale/sfinv.ja.tr new file mode 100644 index 00000000..04122d72 --- /dev/null +++ b/mods/sfinv/locale/sfinv.ja.tr @@ -0,0 +1,2 @@ +# textdomain: sfinv +Crafting=クラフト diff --git a/mods/stairs/locale/stairs.ja.tr b/mods/stairs/locale/stairs.ja.tr new file mode 100644 index 00000000..73e2703c --- /dev/null +++ b/mods/stairs/locale/stairs.ja.tr @@ -0,0 +1,145 @@ +# textdomain: stairs +Glass Stair=ガラスの階段 +Glass Slab=ガラスのハーフブロック +Inner Glass Stair=へっこんだガラスの階段 +Outer Glass Stair=でっぱったガラスの階段 +Obsidian Glass Stair=黒曜石ガラスの階段 +Obsidian Glass Slab=黒曜石ガラスのハーフブロック +Inner Obsidian Glass Stair=へっこんだ黒曜石ガラスの階段 +Outer Obsidian Glass Stair=でっぱった黒曜石ガラスの階段 +Wooden Stair=木の階段 +Inner Wooden Stair=へっこんだ木の階段 +Outer Wooden Stair=でっぱった木の階段 +Wooden Slab=木のハーフブロック +Jungle Wood Stair=ジャングルの階段 +Inner Jungle Wood Stair=へっこんだジャングルの階段 +Outer Jungle Wood Stair=でっぱったジャングルの階段 +Jungle Wood Slab=ジャングルのハーフブロック +Pine Wood Stair=マツの木の階段 +Inner Pine Wood Stair=へっこんだマツの階段 +Outer Pine Wood Stair=でっぱったマツの階段 +Pine Wood Slab=マツのハーフブロック +Acacia Wood Stair=アカシアの階段 +Inner Acacia Wood Stair=へっこんだアカシアの階段 +Outer Acacia Wood Stair=でっぱったアカシアの階段 +Acacia Wood Slab=アカシアのハーフブロック +Aspen Wood Stair=ポプラの階段 +Inner Aspen Wood Stair=へっこんだポプラの階段 +Outer Aspen Wood Stair=でっぱったポプラの階段 +Aspen Wood Slab=ポプラのハーフブロック +Stone Stair=石の階段 +Inner Stone Stair=へっこんだ石の階段 +Outer Stone Stair=でっぱった石の階段 +Stone Slab=石のハーフブロック +Cobblestone Stair=丸石の階段 +Inner Cobblestone Stair=へっこんだ丸石の階段 +Outer Cobblestone Stair=でっぱった丸石の階段 +Cobblestone Slab=丸石のハーフブロック +Mossy Cobblestone Stair=苔むした丸石の階段 +Inner Mossy Cobblestone Stair=へっこんだ苔むした丸石の階段 +Outer Mossy Cobblestone Stair=でっぱった苔むした丸石の階段 +Mossy Cobblestone Slab=苔むした丸石のハーフブロック +Stone Brick Stair=石レンガの階段 +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/locale/tnt.ja.tr b/mods/tnt/locale/tnt.ja.tr new file mode 100644 index 00000000..d7af9f58 --- /dev/null +++ b/mods/tnt/locale/tnt.ja.tr @@ -0,0 +1,4 @@ +# textdomain: tnt +Gun Powder=火薬 +TNT Stick=ダイナマイト +TNT=TNT diff --git a/mods/vessels/locale/vessels.ja.tr b/mods/vessels/locale/vessels.ja.tr new file mode 100644 index 00000000..451489a5 --- /dev/null +++ b/mods/vessels/locale/vessels.ja.tr @@ -0,0 +1,8 @@ +# textdomain: vessels +Empty Vessels Shelf=空の瓶の棚 +Vessels Shelf (@1 items)=瓶の棚(@1 本) +Vessels Shelf=瓶の棚 +Empty Glass Bottle=空のガラス瓶 +Empty Drinking Glass=空のガラスコップ +Empty Heavy Steel Bottle=空の重い鉄瓶 +Glass Fragments=ガラスの破片 diff --git a/mods/walls/locale/walls.ja.tr b/mods/walls/locale/walls.ja.tr new file mode 100644 index 00000000..66e497d0 --- /dev/null +++ b/mods/walls/locale/walls.ja.tr @@ -0,0 +1,4 @@ +# textdomain: walls +Cobblestone Wall=丸石の壁 +Mossy Cobblestone Wall=苔むした丸石の壁 +Desert Cobblestone Wall=砂漠の丸石の壁 diff --git a/mods/wool/locale/wool.ja.tr b/mods/wool/locale/wool.ja.tr new file mode 100644 index 00000000..5051f9e7 --- /dev/null +++ b/mods/wool/locale/wool.ja.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/locale/xpanes.ja.tr b/mods/xpanes/locale/xpanes.ja.tr new file mode 100644 index 00000000..06e0bed5 --- /dev/null +++ b/mods/xpanes/locale/xpanes.ja.tr @@ -0,0 +1,6 @@ +# textdomain: xpanes +Glass Pane=板ガラス +Obsidian Glass Pane=黒曜石の板ガラス +Steel Bars=鉄棒の柵 +Steel Bar Door=鉄棒のドア +Steel Bar Trapdoor=鉄棒のトラップドア From 5875820542c739ff223a8a6ef8a3e698685b6405 Mon Sep 17 00:00:00 2001 From: LoneWolfHT Date: Sun, 31 Oct 2021 11:17:31 -0700 Subject: [PATCH 09/36] Use itemstack name when placing doors (#2888) --- mods/doors/init.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 58105797..f601b877 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -264,6 +264,7 @@ function doors.register(name, def) return itemstack end + local doorname = itemstack:get_name() local node = minetest.get_node(pointed_thing.under) local pdef = minetest.registered_nodes[node.name] if pdef and pdef.on_rightclick and @@ -315,10 +316,10 @@ function doors.register(name, def) local state = 0 if minetest.get_item_group(minetest.get_node(aside).name, "door") == 1 then state = state + 2 - minetest.set_node(pos, {name = name .. "_b", param2 = dir}) + minetest.set_node(pos, {name = doorname .. "_b", param2 = dir}) minetest.set_node(above, {name = "doors:hidden", param2 = (dir + 3) % 4}) else - minetest.set_node(pos, {name = name .. "_a", param2 = dir}) + minetest.set_node(pos, {name = doorname .. "_a", param2 = dir}) minetest.set_node(above, {name = "doors:hidden", param2 = dir}) end From 2361987421b9e00ff86fdcccca01538669f11690 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 2 Dec 2021 13:49:52 +0100 Subject: [PATCH 10/36] Update locale files --- mods/beds/locale/beds.eo.tr | 8 +- mods/carts/locale/carts.eo.tr | 4 +- mods/creative/locale/creative.eo.tr | 2 +- mods/default/locale/default.de.tr | 2 + mods/default/locale/default.eo.tr | 107 ++++++++++-------- mods/default/locale/default.es.tr | 3 +- mods/default/locale/default.fr.tr | 2 + mods/default/locale/default.id.tr | 2 + mods/default/locale/default.it.tr | 2 + mods/default/locale/default.ja.tr | 2 + mods/default/locale/default.jbo.tr | 2 + mods/default/locale/default.ms.tr | 2 + mods/default/locale/default.pt_BR.tr | 2 + mods/default/locale/default.ru.tr | 2 + mods/default/locale/default.se.tr | 3 +- mods/default/locale/default.sk.tr | 2 + mods/default/locale/default.zh_CN.tr | 2 + mods/default/locale/default.zh_TW.tr | 2 + mods/default/locale/template.txt | 2 + mods/farming/locale/farming.eo.tr | 30 ++--- .../locale/mtg_craftguide.eo.tr | 87 +++++++------- .../locale/mtg_craftguide.es.tr | 4 - 22 files changed, 154 insertions(+), 120 deletions(-) diff --git a/mods/beds/locale/beds.eo.tr b/mods/beds/locale/beds.eo.tr index 43c9ac32..0cbd4806 100644 --- a/mods/beds/locale/beds.eo.tr +++ b/mods/beds/locale/beds.eo.tr @@ -1,8 +1,10 @@ # textdomain: beds -Leave Bed=Ellitiĝu +Fancy Bed=Luksa Lito +Simple Bed=Simpla Lito +This bed is already occupied!= +You have to stop moving before going to bed!= Good morning.=Bonan matenon. @1 of @2 players are in bed=@1 el @2 ludantoj estas en lito. Force night skip=Devigu nokta salton You can only sleep at night.=Vi povas nur dormi en la nokto. -Fancy Bed=Luksa Lito -Simple Bed=Simpla Lito +Leave Bed=Ellitiĝu diff --git a/mods/carts/locale/carts.eo.tr b/mods/carts/locale/carts.eo.tr index 4498e9bb..805cc683 100644 --- a/mods/carts/locale/carts.eo.tr +++ b/mods/carts/locale/carts.eo.tr @@ -1,6 +1,6 @@ # textdomain: carts +Cart=Ĉaro +(Sneak+Click to pick up)=(Ŝteliru+Alklaku por reprini) Rail=Relo Powered Rail=Elektra Relo Brake Rail=Bremsa Relo -Cart=Ĉaro -(Sneak+Click to pick up)=(Ŝteliru+Alklaku por reprini) diff --git a/mods/creative/locale/creative.eo.tr b/mods/creative/locale/creative.eo.tr index 4d56c4aa..8df41525 100644 --- a/mods/creative/locale/creative.eo.tr +++ b/mods/creative/locale/creative.eo.tr @@ -1,4 +1,5 @@ # textdomain: creative +Allow player to use creative inventory=Permesu la ludanto uzi la krea stoko Search=Serĉu Reset=Rekomencigu Previous page=Pasinta paĝo @@ -7,4 +8,3 @@ All=Ĉio Nodes=Nodoj Tools=Iloj Items=Objektoj -Allow player to use creative inventory=Permesu la ludanto uzi la krea stoko diff --git a/mods/default/locale/default.de.tr b/mods/default/locale/default.de.tr index a1e49dc0..6d93b81a 100644 --- a/mods/default/locale/default.de.tr +++ b/mods/default/locale/default.de.tr @@ -4,6 +4,8 @@ Locked Chest (owned by @1)=Abgeschlossene Truhe (Eigentum von @1) You do not own this chest.=Ihnen gehört diese Truhe nicht. a locked chest=eine abgeschlossene Truhe Chest=Truhe +Write= +Read= Title:=Titel: Contents:=Inhalt: Save=Speichern diff --git a/mods/default/locale/default.eo.tr b/mods/default/locale/default.eo.tr index 824a6b77..7aaa0bb9 100644 --- a/mods/default/locale/default.eo.tr +++ b/mods/default/locale/default.eo.tr @@ -1,4 +1,50 @@ # textdomain: default +Locked Chest=Ŝlosita Kesto +Locked Chest (owned by @1)=Ŝlosita Kesto (de @1) +You do not own this chest.=Vi ne posedas ĉi tiu keston. +a locked chest=ŝlosita kesto +Chest=Kesto +Write= +Read= +Title:=Titolo +Contents:=Entenaĵo +Save=Konservu +by @1=per @1 +Page @1 of @2=Paĝo @1 el @2 +"@1" by @2="@1" per @2 +Skeleton Key=Skeleta Ŝlosilo +Key to @1's @2=Ŝlosilo por la @2 de @1 +Blueberries=Mirteloj +Book=Libro +Book with Text=Libro kun Teksto +Bronze Ingot=Bronza Ingoto +Clay Brick=Argila Briko +Clay Lump=Argila Bulo +Coal Lump=Karba Bulo +Copper Ingot=Kupra Ingoto +Copper Lump=Kupra Bulo +Diamond=Diamanto +Flint=Siliko +Gold Ingot=Ora Ingoto +Gold Lump=Ora Bulo +Iron Lump=Fera Bulo +Mese Crystal=Mesea Kristalo +Mese Crystal Fragment=Mesea Kristala Ero +Obsidian Shard=Obsidiana Peceto +Paper=Papero +Steel Ingot=Ŝtala Ingoto +Stick=Bastono +Tin Ingot=Stana Ingoto +Tin Lump=Stana Bulo +Furnace is empty=Forno estas malplena +100% (output full)=100% (eligo estas plena) +@1%=@1% +Not cookable=Ne povas kuiri +Empty=Malplena +Furnace active=Forno laboras +Furnace inactive=Forno ne laboras +(Item: @1; Fuel: @2)=(Objekto: @1; Brulaĵo: @2) +Furnace=Forno Stone=Ŝtono Cobblestone=Pavimŝtono Stone Brick=Ŝtona Briko @@ -117,6 +163,7 @@ Empty Bookshelf=Malplena Librobreto Bookshelf (@1 written, @2 empty books)=Librobreto (@1 skriba, @2 malplena libroj) Bookshelf=Librobreto Text too long=Teksto estas ekscesa longo +"@1"="@1" Wooden Sign=Ligna Signo Steel Sign=Ŝtala Signo Wooden Ladder=Ligna Ŝtupetaro @@ -135,10 +182,12 @@ Glass=Vitro Obsidian Glass=Obsidiana Vitro Brick Block=Brika Ŝtipo Mese Lamp=Mesea Lampo -Mese Post Light=Mesea Fosta Lampo +Apple Wood Mese Post Light= +Acacia Wood Mese Post Light= +Jungle Wood Mese Post Light= +Pine Wood Mese Post Light= +Aspen Wood Mese Post Light= Cloud=Nubo -@1 will intersect protection on growth.=@1 sekcos protekto ĉe vegeto. -Torch=Torĉo Wooden Pickaxe=Ligna Pioĉo Stone Pickaxe=Ŝtona Pioĉo Bronze Pickaxe=Bronza Pioĉo @@ -164,48 +213,10 @@ Steel Sword=Ŝtala Glavo Mese Sword=Mesea Glavo Diamond Sword=Diamanta Glavo Key=Ŝlosilo -Furnace is empty=Forno estas malplena -100% (output full)=100% (eligo estas plena) -@1%=@1% -Not cookable=Ne povas kuiri -Empty=Malplena -Furnace active=Forno laboras -Furnace inactive=Forno ne laboras -(Item: @1; Fuel: @2)=(Objekto: @1; Brulaĵo: @2) -Furnace=Forno -Title:=Titolo -Contents:=Entenaĵo -Save=Konservu -by @1=per @1 -Page @1 of @2=Paĝo @1 el @2 -"@1"="@1" -"@1" by @2="@1" per @2 -Skeleton Key=Skeleta Ŝlosilo -Key to @1's @2=Ŝlosilo por la @2 de @1 -Blueberries=Mirteloj -Book=Libro -Book with Text=Libro kun Teksto -Bronze Ingot=Bronza Ingoto -Clay Brick=Argila Briko -Clay Lump=Argila Bulo -Coal Lump=Karba Bulo -Copper Ingot=Kupra Ingoto -Copper Lump=Kupra Bulo -Diamond=Diamanto -Flint=Siliko -Gold Ingot=Ora Ingoto -Gold Lump=Ora Bulo -Iron Lump=Fera Bulo -Mese Crystal=Mesea Kristalo -Mese Crystal Fragment=Mesea Kristala Ero -Obsidian Shard=Obsidiana Peceto -Paper=Papero -Steel Ingot=Ŝtala Ingoto -Stick=Bastono -Tin Ingot=Stana Ingoto -Tin Lump=Stana Bulo -Locked Chest=Ŝlosita Kesto -Locked Chest (owned by @1)=Ŝlosita Kesto (de @1) -You do not own this chest.=Vi ne posedas ĉi tiu keston. -a locked chest=ŝlosita kesto -Chest=Kesto +Torch=Torĉo +@1 will intersect protection on growth.=@1 sekcos protekto ĉe vegeto. + + +##### not used anymore ##### + +Mese Post Light=Mesea Fosta Lampo diff --git a/mods/default/locale/default.es.tr b/mods/default/locale/default.es.tr index 094e8c61..d8b07f50 100644 --- a/mods/default/locale/default.es.tr +++ b/mods/default/locale/default.es.tr @@ -1,10 +1,11 @@ # textdomain: default - Locked Chest=Cofre cerrado Locked Chest (owned by @1)=Cofre cerrado (propiedad de @1) You do not own this chest.=Este cofre no te pertenece. a locked chest=un cofre cerrado Chest=Cofre +Write= +Read= Title:=Título: Contents:=Contenidos: Save=Guardar diff --git a/mods/default/locale/default.fr.tr b/mods/default/locale/default.fr.tr index d74cb83d..b2288f7e 100644 --- a/mods/default/locale/default.fr.tr +++ b/mods/default/locale/default.fr.tr @@ -4,6 +4,8 @@ Locked Chest (owned by @1)=Coffre verrouillé (possédé par @1) You do not own this chest.=Ce coffre ne vous appartient pas. a locked chest=un coffre verrouillé Chest=Coffre +Write= +Read= Title:=Titre : Contents:=Contenu : Save=Sauvegarder diff --git a/mods/default/locale/default.id.tr b/mods/default/locale/default.id.tr index 658f0741..3c02a050 100644 --- a/mods/default/locale/default.id.tr +++ b/mods/default/locale/default.id.tr @@ -4,6 +4,8 @@ Locked Chest (owned by @1)=Peti Terkunci (milik @1) You do not own this chest.=Anda bukan pemilik peti ini. a locked chest=peti terkunci Chest=Peti +Write= +Read= Title:=Judul: Contents:=Isi: Save=Simpan diff --git a/mods/default/locale/default.it.tr b/mods/default/locale/default.it.tr index 92029d66..d134a29f 100644 --- a/mods/default/locale/default.it.tr +++ b/mods/default/locale/default.it.tr @@ -4,6 +4,8 @@ Locked Chest (owned by @1)=Baule chiuso a chiave (di proprietà di @1) You do not own this chest.=Questo baule non ti appartiene. a locked chest=un baule chiuso a chiave Chest=Baule +Write= +Read= Title:= Contents:= Save= diff --git a/mods/default/locale/default.ja.tr b/mods/default/locale/default.ja.tr index 232e9716..07443c74 100644 --- a/mods/default/locale/default.ja.tr +++ b/mods/default/locale/default.ja.tr @@ -4,6 +4,8 @@ Locked Chest (owned by @1)=鍵のかかったチェスト(@1所有) You do not own this chest.=あなたはこのチェストの所有者ではありません。 a locked chest=ロックされたチェスト Chest=チェスト +Write= +Read= Title:=題名 Contents:=内容 Save=保存 diff --git a/mods/default/locale/default.jbo.tr b/mods/default/locale/default.jbo.tr index 6f3e7492..841142c0 100644 --- a/mods/default/locale/default.jbo.tr +++ b/mods/default/locale/default.jbo.tr @@ -4,6 +4,8 @@ Locked Chest (owned by @1)=.i ti selstela gairvau po la'o zo'i.@1.zo'i You do not own this chest.=.i do na ponse lo ti gairvau a locked chest=lo selstela gairvau Chest=lo gairvau +Write= +Read= Title:=cmene Contents:=se cukta Save=rejgau diff --git a/mods/default/locale/default.ms.tr b/mods/default/locale/default.ms.tr index 8c1ed42c..5ddfe9c8 100644 --- a/mods/default/locale/default.ms.tr +++ b/mods/default/locale/default.ms.tr @@ -4,6 +4,8 @@ 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 +Write= +Read= Title:=Tajuk: Contents:=Kandungan: Save=Simpan diff --git a/mods/default/locale/default.pt_BR.tr b/mods/default/locale/default.pt_BR.tr index 34ae20ae..2aa5dac3 100644 --- a/mods/default/locale/default.pt_BR.tr +++ b/mods/default/locale/default.pt_BR.tr @@ -4,6 +4,8 @@ Locked Chest (owned by @1)=Baú Trancado (pertence a @1) You do not own this chest.=Você não é dono deste baú. a locked chest=um baú trancado Chest=Baú +Write= +Read= Title:=Título: Contents:=Conteúdo: Save=Salvar diff --git a/mods/default/locale/default.ru.tr b/mods/default/locale/default.ru.tr index 3ce0085d..3b87dd5e 100644 --- a/mods/default/locale/default.ru.tr +++ b/mods/default/locale/default.ru.tr @@ -4,6 +4,8 @@ Locked Chest (owned by @1)=Заблокированный Сундук (влад You do not own this chest.=Вы не владелец этого сундука. a locked chest=заблокированный сундук Chest=Сундук +Write= +Read= Title:=Заголовок: Contents:=Содержимое: Save=Сохранить diff --git a/mods/default/locale/default.se.tr b/mods/default/locale/default.se.tr index 74f165f2..c6de58b9 100644 --- a/mods/default/locale/default.se.tr +++ b/mods/default/locale/default.se.tr @@ -1,10 +1,11 @@ # textdomain: default -## 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 +Write= +Read= Title:=Titel: Contents:=Innehåll: Save=Spara diff --git a/mods/default/locale/default.sk.tr b/mods/default/locale/default.sk.tr index 25f4b919..a6f7cbf5 100644 --- a/mods/default/locale/default.sk.tr +++ b/mods/default/locale/default.sk.tr @@ -4,6 +4,8 @@ Locked Chest (owned by @1)=Uzamknutá truhlica (Vlastník - @1) You do not own this chest.=Túto truhlicu nevlastníš. a locked chest=zamknutá truhlica Chest=Truhlica +Write= +Read= Title:=Názov: Contents:=Obsah: Save=Uložiť diff --git a/mods/default/locale/default.zh_CN.tr b/mods/default/locale/default.zh_CN.tr index 9726e83c..dd26fa13 100644 --- a/mods/default/locale/default.zh_CN.tr +++ b/mods/default/locale/default.zh_CN.tr @@ -4,6 +4,8 @@ Locked Chest (owned by @1)=已上锁的箱子(属于@1) You do not own this chest.=这个箱子不属于你所有。 a locked chest=一个已上锁的箱子 Chest=箱子 +Write= +Read= Title:=标题: Contents:=内容: Save=保存 diff --git a/mods/default/locale/default.zh_TW.tr b/mods/default/locale/default.zh_TW.tr index 257f0e5d..9d088d8d 100644 --- a/mods/default/locale/default.zh_TW.tr +++ b/mods/default/locale/default.zh_TW.tr @@ -4,6 +4,8 @@ Locked Chest (owned by @1)=已上鎖的箱子(屬於@1所有) You do not own this chest.=這個箱子不屬於你所有。 a locked chest=一個已上鎖的箱子 Chest=箱子 +Write= +Read= Title:=標題: Contents:=內容: Save=保存 diff --git a/mods/default/locale/template.txt b/mods/default/locale/template.txt index 8734752a..3b7b2979 100644 --- a/mods/default/locale/template.txt +++ b/mods/default/locale/template.txt @@ -4,6 +4,8 @@ Locked Chest (owned by @1)= You do not own this chest.= a locked chest= Chest= +Write= +Read= Title:= Contents:= Save= diff --git a/mods/farming/locale/farming.eo.tr b/mods/farming/locale/farming.eo.tr index 70caa100..1da4304d 100644 --- a/mods/farming/locale/farming.eo.tr +++ b/mods/farming/locale/farming.eo.tr @@ -1,4 +1,19 @@ # textdomain: farming +Hoe=Sarkilo +Seed=Semo +Wooden Hoe=Ligna Sarkilo +Stone Hoe=Ŝtona Sarkilo +Steel Hoe=Ŝtala Sarkilo +Bronze Hoe=Bronza Sarkilo +Mese Hoe=Mesea Sarkilo +Diamond Hoe=Diamanta Sarkilo +Wheat Seed=Tritika Semo +Wheat=Tritiko +Flour=Faruno +Bread=Pano +Cotton Seed=Katuna Semo +Cotton=Katuno +String=Ŝnuro Soil=Tero Wet Soil=Malseka Tero Savanna Soil=Savana Tero @@ -11,18 +26,3 @@ Inner Straw Stair=Interna Pajla Ŝtupo Outer Straw Stair=Ekstera Pajla Ŝtupo Straw Slab=Pajla Plato Wild Cotton=Sovaĝa Katuno -Wheat Seed=Tritika Semo -Wheat=Tritiko -Flour=Faruno -Bread=Pano -Cotton Seed=Katuna Semo -Cotton=Katuno -String=Ŝnuro -Wooden Hoe=Ligna Sarkilo -Stone Hoe=Ŝtona Sarkilo -Steel Hoe=Ŝtala Sarkilo -Bronze Hoe=Bronza Sarkilo -Mese Hoe=Mesea Sarkilo -Diamond Hoe=Diamanta Sarkilo -Hoe=Sarkilo -Seed=Semo diff --git a/mods/mtg_craftguide/locale/mtg_craftguide.eo.tr b/mods/mtg_craftguide/locale/mtg_craftguide.eo.tr index 428e5281..7201deb5 100644 --- a/mods/mtg_craftguide/locale/mtg_craftguide.eo.tr +++ b/mods/mtg_craftguide/locale/mtg_craftguide.eo.tr @@ -1,57 +1,54 @@ # textdomain: mtg_craftguide - -### init.lua ### - -Any black dye=Ajna nigra tinkturo -Any black flower=Ajna nigra floro -Any blue dye=Ajna blua tinkturo -Any blue flower=Ajna blua floro -Any brown dye=Ajna bruna tinkturo Any coal=Ajna karbo -Any cyan dye=Ajna bluverda tinkturo -Any dark green dye=Ajna malhela verda tinkturo -Any dark grey dye=Ajna malhela graja tinkturo -Any green dye=Ajna verda tinkturo -Any green flower=Ajna verda floro -Any grey dye=Ajna graja tinkturo -Any item belonging to the group(s): @1=Ajna objekto de la aro(j) -Any kind of stone block=Ia ŝtona ŝtipo -Any magenta dye=Ajna fuksina tinkturo -Any orange dye=Ajna oranĝa tinkturo -Any orange flower=Ajna oranĝa floro -Any pink dye=Ajna rosa tinkturo -Any red dye=Ajna ruĝa tinkturo -Any red flower=Ajna ruĝa floro Any sand=Ajna sablo +Any wool=Ajna lano Any stick=Ajna bastono Any vessel=Ajna vazo -Any violet dye=Ajna viola tinkturo -Any violet flower=Ajna viola floro -Any white dye=Ajna blanka tinkturo -Any white flower=Ajna blanka floro Any wood planks=Ajna ligna tabulo -Any wool=Ajna lano -Any yellow dye=Ajna flava tinkturo +Any kind of stone block=Ia ŝtona ŝtipo +Any red flower=Ajna ruĝa floro +Any blue flower=Ajna blua floro +Any black flower=Ajna nigra floro +Any green flower=Ajna verda floro +Any white flower=Ajna blanka floro +Any orange flower=Ajna oranĝa floro +Any violet flower=Ajna viola floro Any yellow flower=Ajna flava floro -Click again to show recipes.=Anklaku ankoraŭ por prezenti receptojn -Click again to show usages.=Anklaku ankoraŭ por prezenti utiloj -Cooking time: @1=Tempo por kuirado: @1 -Fuel=Brulaĵo +Any red dye=Ajna ruĝa tinkturo +Any blue dye=Ajna blua tinkturo +Any cyan dye=Ajna bluverda tinkturo +Any grey dye=Ajna graja tinkturo +Any pink dye=Ajna rosa tinkturo +Any black dye=Ajna nigra tinkturo +Any brown dye=Ajna bruna tinkturo +Any green dye=Ajna verda tinkturo +Any white dye=Ajna blanka tinkturo +Any orange dye=Ajna oranĝa tinkturo +Any violet dye=Ajna viola tinkturo +Any yellow dye=Ajna flava tinkturo +Any magenta dye=Ajna fuksina tinkturo +Any dark grey dye=Ajna malhela graja tinkturo +Any dark green dye=Ajna malhela verda tinkturo # Label for group ingredients G=A -Next page=Sekvinta paĝo -Next recipe=Sekvinta recepto -No items to show.=Ne estas objektoj por prezenti -No recipes.=Ne estas receptoj -No usages.=Ne estas utiloj -Previous page=Pasinta paĝo -Previous recipe=Pasinta recepto -Recipe @1 of @2=Recepto @1 el @2 -Recipe is too big to be displayed.=La recepto estas tro granda por prezenti -Recipes=Receptoj -Reset=Rekomincigu -Search=Ŝerĉu -Shapeless=Senforma +Any item belonging to the group(s): @1=Ajna objekto de la aro(j) Unknown Item=Obskura Objekto +Fuel=Brulaĵo Usage @1 of @2=Utilo @1 el @2 +Recipe @1 of @2=Recepto @1 el @2 +Previous recipe=Pasinta recepto +Next recipe=Sekvinta recepto +Recipe is too big to be displayed.=La recepto estas tro granda por prezenti +Shapeless=Senforma +Cooking time: @1=Tempo por kuirado: @1 +Search=Ŝerĉu +Reset=Rekomincigu +Previous page=Pasinta paĝo +Next page=Sekvinta paĝo +No items to show.=Ne estas objektoj por prezenti +No usages.=Ne estas utiloj +Click again to show recipes.=Anklaku ankoraŭ por prezenti receptojn +No recipes.=Ne estas receptoj +Click again to show usages.=Anklaku ankoraŭ por prezenti utiloj +Recipes=Receptoj diff --git a/mods/mtg_craftguide/locale/mtg_craftguide.es.tr b/mods/mtg_craftguide/locale/mtg_craftguide.es.tr index 6108bf01..a5b5149d 100644 --- a/mods/mtg_craftguide/locale/mtg_craftguide.es.tr +++ b/mods/mtg_craftguide/locale/mtg_craftguide.es.tr @@ -1,5 +1,4 @@ # textdomain: mtg_craftguide - Any coal=Carbón Any sand=Arena Any wool=Lana @@ -30,10 +29,7 @@ Any yellow dye=Tinte amarillo Any magenta dye=Tinte magenta Any dark grey dye=Tinte gris oscuro Any dark green dye=Tinte verde oscuro - - # Label for group ingredients - G=G Any item belonging to the group(s): @1=Objeto del grupo: @1 Unknown Item=Objeto desconocido From ad183c48eeefadfca9cddbddd388f832c856bc97 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 2 Dec 2021 13:51:00 +0100 Subject: [PATCH 11/36] Update German translation --- mods/default/locale/default.de.tr | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/default/locale/default.de.tr b/mods/default/locale/default.de.tr index 6d93b81a..c728008c 100644 --- a/mods/default/locale/default.de.tr +++ b/mods/default/locale/default.de.tr @@ -4,8 +4,8 @@ Locked Chest (owned by @1)=Abgeschlossene Truhe (Eigentum von @1) You do not own this chest.=Ihnen gehört diese Truhe nicht. a locked chest=eine abgeschlossene Truhe Chest=Truhe -Write= -Read= +Write=Schreiben +Read=Lesen Title:=Titel: Contents:=Inhalt: Save=Speichern From 3aaabce7a427f2e47910dbd04689ad4e3f59a570 Mon Sep 17 00:00:00 2001 From: An0n3m0us Date: Sun, 12 Dec 2021 15:37:50 +0000 Subject: [PATCH 12/36] Convert door model to B3D (#2906) Using a B3D model I worked out that it would be possible to have only two models (instead of the current four) for the doors and still keep all the mirroring correct when the door is open/closed. --- mods/doors/init.lua | 8 +++--- mods/doors/models/door.blend | Bin 0 -> 426304 bytes mods/doors/models/door_a.b3d | Bin 0 -> 843 bytes mods/doors/models/door_a.obj | 40 --------------------------- mods/doors/models/door_a2.obj | 50 ---------------------------------- mods/doors/models/door_b.b3d | Bin 0 -> 843 bytes mods/doors/models/door_b.obj | 50 ---------------------------------- mods/doors/models/door_b2.obj | 50 ---------------------------------- 8 files changed, 4 insertions(+), 194 deletions(-) create mode 100644 mods/doors/models/door.blend create mode 100644 mods/doors/models/door_a.b3d delete mode 100644 mods/doors/models/door_a.obj delete mode 100644 mods/doors/models/door_a2.obj create mode 100644 mods/doors/models/door_b.b3d delete mode 100644 mods/doors/models/door_b.obj delete mode 100644 mods/doors/models/door_b2.obj diff --git a/mods/doors/init.lua b/mods/doors/init.lua index f601b877..f222ecad 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -448,16 +448,16 @@ function doors.register(name, def) def.collision_box = {type = "fixed", fixed = {-1/2,-1/2,-1/2,1/2,3/2,-6/16}} def.use_texture_alpha = "clip" - def.mesh = "door_a.obj" + def.mesh = "door_a.b3d" minetest.register_node(":" .. name .. "_a", table.copy(def)) - def.mesh = "door_b.obj" + def.mesh = "door_b.b3d" minetest.register_node(":" .. name .. "_b", table.copy(def)) - def.mesh = "door_a2.obj" + def.mesh = "door_b.b3d" minetest.register_node(":" .. name .. "_c", table.copy(def)) - def.mesh = "door_b2.obj" + def.mesh = "door_a.b3d" minetest.register_node(":" .. name .. "_d", table.copy(def)) doors.registered_doors[name .. "_a"] = true diff --git a/mods/doors/models/door.blend b/mods/doors/models/door.blend new file mode 100644 index 0000000000000000000000000000000000000000..56047b160de1995b09dec63ce76609bc13137454 GIT binary patch literal 426304 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 literal 0 HcmV?d00001 diff --git a/mods/doors/models/door_a.b3d b/mods/doors/models/door_a.b3d new file mode 100644 index 0000000000000000000000000000000000000000..7f9249fe98f16cbbee55f530c6a3dfdc3421d4a1 GIT binary patch literal 843 zcmZuvyH3ME5Ii8f3Gc^WM2Qd-NDyNZ2?{{6&7(^b1QkY!5KW4Rf-ms5&?YTkKuL`h zQ6M@b%*^erVe;s88c#xiRzbO8L=71t#*UY#zP!8OLw=|c7GIm z!_}=CLm1-+XJHAEXZWrA_D!i=t{~SpG|C&;u~-rUXkE(q$)!%1T%j4|!jRpcRd<2dPc`0YH#akqMZcO(50dc{b6 zV+dn{@I0y_a*ZH)=-pO5uZCP_XtXoXka2p}Y`tPh?xUQG=^n&_@A8gM=!BD2bd*6f z!ng?A(Fga$V4%Iv{-{wh!^ZCW%fX;>Ejn^v0J(a0`HMquXt~r^Ejg>ToN9yYZJ&Fw zuUxHIPdN50S7^yut#G-vU-%oU=jW$H{Ru~{5T*Z{2z>Y7VfVXYRQQZ z7p7Xv$@L1y^OAG^$mQq#&$B)auBZQMOq=_2^JKl^9QMKJ9=tdG2kr1U%B)$#`*zoF z@PeggYZ{mW%D{}Pna=}rz$~!fYUWEo1y}@@UCn$ASOr#qbyqXr0ycpSVB6Kqe*juD B0Y3l$ literal 0 HcmV?d00001 diff --git a/mods/doors/models/door_b.obj b/mods/doors/models/door_b.obj deleted file mode 100644 index 87f1729c..00000000 --- a/mods/doors/models/door_b.obj +++ /dev/null @@ -1,50 +0,0 @@ -# Blender v2.79 (sub 0) OBJ File: '' -# www.blender.org -mtllib door_b.mtl -o door_b -v 0.499000 1.499000 -0.499000 -v 0.499000 1.499000 -0.375000 -v 0.499000 -0.499000 -0.375000 -v 0.499000 -0.499000 -0.499000 -v -0.499000 1.499000 -0.375000 -v -0.499000 -0.499000 -0.375000 -v -0.499000 1.499000 -0.499000 -v -0.499000 -0.499000 -0.499000 -vt 0.894736 1.000000 -vt 0.947368 1.000000 -vt 0.947368 0.000000 -vt 0.894736 0.000000 -vt 0.842105 1.000000 -vt 0.421053 1.000000 -vt 0.421053 0.000000 -vt 0.842105 0.000000 -vt 0.842105 1.000000 -vt 0.894736 1.000000 -vt 0.894736 0.000000 -vt 0.842105 0.000000 -vt 0.421053 1.000000 -vt 0.000000 1.000000 -vt 0.000000 0.000000 -vt 0.421053 0.000000 -vt 1.000000 0.500000 -vt 0.947368 0.500000 -vt 0.947368 1.000000 -vt 1.000000 1.000000 -vt 1.000000 0.000000 -vt 0.947368 0.000000 -vt 0.947368 0.500000 -vt 1.000000 0.500000 -vn 1.0000 0.0000 0.0000 -vn 0.0000 -0.0000 1.0000 -vn -1.0000 0.0000 0.0000 -vn 0.0000 0.0000 -1.0000 -vn 0.0000 -1.0000 0.0000 -vn 0.0000 1.0000 0.0000 -usemtl None.007 -s 1 -f 1/1/1 2/2/1 3/3/1 4/4/1 -f 2/5/2 5/6/2 6/7/2 3/8/2 -f 5/9/3 7/10/3 8/11/3 6/12/3 -f 7/13/4 1/14/4 4/15/4 8/16/4 -f 4/17/5 3/18/5 6/19/5 8/20/5 -f 7/21/6 5/22/6 2/23/6 1/24/6 diff --git a/mods/doors/models/door_b2.obj b/mods/doors/models/door_b2.obj deleted file mode 100644 index 35632a5e..00000000 --- a/mods/doors/models/door_b2.obj +++ /dev/null @@ -1,50 +0,0 @@ -# Blender v2.79 (sub 0) OBJ File: '' -# www.blender.org -mtllib door_b2.mtl -o door_b2 -v 0.499000 1.499000 -0.499000 -v 0.499000 1.499000 -0.375000 -v 0.499000 -0.499000 -0.375000 -v 0.499000 -0.499000 -0.499000 -v -0.499000 1.499000 -0.375000 -v -0.499000 -0.499000 -0.375000 -v -0.499000 1.499000 -0.499000 -v -0.499000 -0.499000 -0.499000 -vt 0.842105 1.000000 -vt 0.894737 1.000000 -vt 0.894737 0.000000 -vt 0.842105 0.000000 -vt 0.421052 1.000000 -vt 0.000001 1.000000 -vt 0.000001 0.000000 -vt 0.421052 0.000000 -vt 0.894737 1.000000 -vt 0.947368 1.000000 -vt 0.947368 0.000000 -vt 0.894737 0.000000 -vt 0.842105 1.000000 -vt 0.421052 1.000000 -vt 0.421052 0.000000 -vt 0.842105 0.000000 -vt 1.000000 0.500000 -vt 0.947368 0.500000 -vt 0.947368 1.000000 -vt 1.000000 1.000000 -vt 1.000000 0.000000 -vt 0.947368 0.000000 -vt 0.947368 0.500000 -vt 1.000000 0.500000 -vn 1.0000 0.0000 0.0000 -vn 0.0000 -0.0000 1.0000 -vn -1.0000 0.0000 0.0000 -vn 0.0000 0.0000 -1.0000 -vn 0.0000 -1.0000 0.0000 -vn 0.0000 1.0000 0.0000 -usemtl None.010 -s 1 -f 1/1/1 2/2/1 3/3/1 4/4/1 -f 2/5/2 5/6/2 6/7/2 3/8/2 -f 5/9/3 7/10/3 8/11/3 6/12/3 -f 7/13/4 1/14/4 4/15/4 8/16/4 -f 4/17/5 3/18/5 6/19/5 8/20/5 -f 7/21/6 5/22/6 2/23/6 1/24/6 From 60389a1539505d7be56c175c6ecdda2a374644d2 Mon Sep 17 00:00:00 2001 From: Daretmavi Date: Sun, 12 Dec 2021 16:38:02 +0100 Subject: [PATCH 13/36] Slovak translation update (#2905) --- mods/beds/locale/beds.sk.tr | 4 ++-- mods/boats/locale/boats.sk.tr | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/beds/locale/beds.sk.tr b/mods/beds/locale/beds.sk.tr index 37f39ddf..5f31f0fd 100644 --- a/mods/beds/locale/beds.sk.tr +++ b/mods/beds/locale/beds.sk.tr @@ -1,8 +1,8 @@ # textdomain: beds Fancy Bed=Pekná posteľ Simple Bed=Jednoduchá posteľ -This bed is already occupied!= -You have to stop moving before going to bed!= +This bed is already occupied!=Táto posteľ je už obsadená +You have to stop moving before going to bed!=Predtým ako si ľahneš do postele, sa musíš prestať pohybovať! Good morning.=Dobré ráno. @1 of @2 players are in bed=@1 z @2 hráčov sú v posteli Force night skip=Nútene preskočiť noc diff --git a/mods/boats/locale/boats.sk.tr b/mods/boats/locale/boats.sk.tr index b6ed7220..4d313cdf 100644 --- a/mods/boats/locale/boats.sk.tr +++ b/mods/boats/locale/boats.sk.tr @@ -1,4 +1,4 @@ # textdomain: boats -Boat cruise mode on=Cestovný režim loďky zapnutý -Boat cruise mode off=Cestovný režim loďky vypnutý +Boat cruise mode on=Cestovný režim loďky je zapnutý +Boat cruise mode off=Cestovný režim loďky je vypnutý Boat=Loďka From d775a9bdaeaa20f271baf07abf75cd737b3fc573 Mon Sep 17 00:00:00 2001 From: Yaman Qalieh Date: Sun, 12 Dec 2021 10:38:54 -0500 Subject: [PATCH 14/36] Pull some parent node vars for stairs and slabs (#2911) Fixes the sunlight propagation of glass stairs and slabs. Co-authored-by: tenplus1 --- game_api.txt | 6 ++++++ mods/stairs/init.lua | 35 +++++++++++++++++++++++++++-------- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/game_api.txt b/game_api.txt index 24a78e90..352f4584 100644 --- a/game_api.txt +++ b/game_api.txt @@ -723,6 +723,12 @@ Stairs API The stairs API lets you register stairs and slabs and ensures that they are registered the same way as those delivered with Minetest Game, to keep them compatible with other mods. +The following node attributes are sourced from the recipeitem: + * use_texture_alpha + * sunlight_propagates + * light_source + * If the recipeitem is a fuel, the stair/slab is also registered as a fuel of proportionate burntime. + `stairs.register_stair(subname, recipeitem, groups, images, description, sounds, worldaligntex)` * Registers a stair diff --git a/mods/stairs/init.lua b/mods/stairs/init.lua index 89e0d24a..4ba854fa 100644 --- a/mods/stairs/init.lua +++ b/mods/stairs/init.lua @@ -57,13 +57,24 @@ local function warn_if_exists(nodename) end end +-- get node settings to use for stairs +local function get_node_vars(nodename) + + local def = minetest.registered_nodes[nodename] + + if def then + return def.light_source, def.use_texture_alpha, def.sunlight_propagates + end + + return nil, nil, nil +end -- Register stair -- Node will be called stairs:stair_ function stairs.register_stair(subname, recipeitem, groups, images, description, sounds, worldaligntex) - local src_def = minetest.registered_nodes[recipeitem] + local light_source, texture_alpha, sunlight = get_node_vars(recipeitem) -- Set backface culling and world-aligned textures local stair_images = {} @@ -93,7 +104,9 @@ function stairs.register_stair(subname, recipeitem, groups, images, description, description = description, drawtype = "nodebox", tiles = stair_images, - use_texture_alpha = src_def and src_def.use_texture_alpha, + use_texture_alpha = texture_alpha, + sunlight_propagates = sunlight, + light_source = light_source, paramtype = "light", paramtype2 = "facedir", is_ground_content = false, @@ -165,7 +178,7 @@ end function stairs.register_slab(subname, recipeitem, groups, images, description, sounds, worldaligntex) - local src_def = minetest.registered_nodes[recipeitem] + local light_source, texture_alpha, sunlight = get_node_vars(recipeitem) -- Set world-aligned textures local slab_images = {} @@ -191,7 +204,9 @@ function stairs.register_slab(subname, recipeitem, groups, images, description, description = description, drawtype = "nodebox", tiles = slab_images, - use_texture_alpha = src_def and src_def.use_texture_alpha, + use_texture_alpha = texture_alpha, + sunlight_propagates = sunlight, + light_source = light_source, paramtype = "light", paramtype2 = "facedir", is_ground_content = false, @@ -303,7 +318,7 @@ end function stairs.register_stair_inner(subname, recipeitem, groups, images, description, sounds, worldaligntex, full_description) - local src_def = minetest.registered_nodes[recipeitem] + local light_source, texture_alpha, sunlight = get_node_vars(recipeitem) -- Set backface culling and world-aligned textures local stair_images = {} @@ -338,7 +353,9 @@ function stairs.register_stair_inner(subname, recipeitem, groups, images, description = description, drawtype = "nodebox", tiles = stair_images, - use_texture_alpha = src_def and src_def.use_texture_alpha, + use_texture_alpha = texture_alpha, + sunlight_propagates = sunlight, + light_source = light_source, paramtype = "light", paramtype2 = "facedir", is_ground_content = false, @@ -393,7 +410,7 @@ end function stairs.register_stair_outer(subname, recipeitem, groups, images, description, sounds, worldaligntex, full_description) - local src_def = minetest.registered_nodes[recipeitem] + local light_source, texture_alpha, sunlight = get_node_vars(recipeitem) -- Set backface culling and world-aligned textures local stair_images = {} @@ -428,7 +445,9 @@ function stairs.register_stair_outer(subname, recipeitem, groups, images, description = description, drawtype = "nodebox", tiles = stair_images, - use_texture_alpha = src_def and src_def.use_texture_alpha, + use_texture_alpha = texture_alpha, + sunlight_propagates = sunlight, + light_source = light_source, paramtype = "light", paramtype2 = "facedir", is_ground_content = false, From 78de12d6b497ae877c24829da7da435d7d2e8673 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sun, 9 Jan 2022 22:55:55 +0100 Subject: [PATCH 15/36] Fix torch models so they render correctly in `model[]` reported by @OgelGames --- mods/default/models/torch_ceiling.obj | 5 ----- mods/default/models/torch_floor.obj | 7 ------- mods/default/models/torch_wall.obj | 7 ------- 3 files changed, 19 deletions(-) diff --git a/mods/default/models/torch_ceiling.obj b/mods/default/models/torch_ceiling.obj index ea51f3ce..5df8597c 100644 --- a/mods/default/models/torch_ceiling.obj +++ b/mods/default/models/torch_ceiling.obj @@ -1,7 +1,5 @@ # Blender v2.77 (sub 0) OBJ File: 'torch_ceiling.blend' # www.blender.org -mtllib torch_ceiling.mtl -o Cube_Cube.001 v -0.062469 -0.047331 0.068152 v -0.062469 -0.559515 -0.164388 v -0.062469 0.004344 -0.045667 @@ -45,14 +43,11 @@ vn -0.0000 -0.4134 0.9105 vn -1.0000 0.0000 0.0000 vn 0.7071 0.0000 -0.7071 vn 0.7071 0.0000 0.7071 -usemtl Material.001 -s off f 3/1/1 1/2/1 5/3/1 7/4/1 f 8/5/1 4/6/1 2/7/1 6/8/1 f 3/9/2 4/6/2 8/5/2 7/10/2 f 1/11/3 3/9/3 4/6/3 2/12/3 f 5/13/2 1/11/2 2/12/2 6/14/2 f 7/10/3 8/5/3 6/14/3 5/13/3 -usemtl Material.002 f 9/15/4 10/16/4 12/17/4 11/18/4 f 13/19/5 14/20/5 16/21/5 15/22/5 diff --git a/mods/default/models/torch_floor.obj b/mods/default/models/torch_floor.obj index e2487efe..dfd25e8f 100644 --- a/mods/default/models/torch_floor.obj +++ b/mods/default/models/torch_floor.obj @@ -1,7 +1,5 @@ # Blender v2.76 (sub 11) OBJ File: 'torch_floor.blend' # www.blender.org -mtllib torch_floor.mtl -o Cube_Cube.001 v 0.062500 0.062500 -0.062500 v 0.062500 -0.500000 -0.062500 v 0.062500 0.062500 0.062500 @@ -35,16 +33,11 @@ vn 0.000000 0.000000 -1.000000 vn 1.000000 0.000000 0.000000 vn -0.707100 0.000000 -0.707100 vn -0.707100 -0.000000 0.707100 -g Cube_Cube.001_Cube_Cube.001_Material.001 -usemtl Material.001 -s off f 3/1/1 1/2/1 5/3/1 7/4/1 f 8/5/1 4/6/1 2/7/1 6/8/1 f 3/2/2 4/6/2 8/5/2 7/3/2 f 1/3/3 3/2/3 4/6/3 2/5/3 f 5/2/2 1/3/2 2/5/2 6/6/2 f 7/3/3 8/5/3 6/6/3 5/2/3 -g Cube_Cube.001_Cube_Cube.001_Material.002 -usemtl Material.002 f 9/9/4 10/10/4 12/11/4 11/12/4 f 13/12/5 14/9/5 16/10/5 15/11/5 diff --git a/mods/default/models/torch_wall.obj b/mods/default/models/torch_wall.obj index 57baa9e6..6de4b131 100644 --- a/mods/default/models/torch_wall.obj +++ b/mods/default/models/torch_wall.obj @@ -1,7 +1,5 @@ # Blender v2.76 (sub 11) OBJ File: 'torch_wall.blend' # www.blender.org -mtllib torch_wall.mtl -o Cube_Cube.001 v 0.062469 -0.195248 0.023570 v 0.062469 -0.476498 -0.463570 v 0.062469 -0.303502 0.086070 @@ -47,9 +45,6 @@ vn -0.707100 0.612400 -0.353600 vn -0.707100 -0.612400 0.353600 vn -0.707100 0.707100 -0.000000 vn -0.707100 -0.707100 -0.000000 -g Cube_Cube.001_Cube_Cube.001_Material.001 -usemtl Material.001 -s off f 3/1/1 1/2/1 5/3/1 7/4/1 f 8/5/1 4/6/1 2/7/1 6/8/1 f 3/2/2 4/6/2 8/5/2 7/3/2 @@ -58,7 +53,5 @@ f 5/2/2 1/3/2 2/5/2 6/6/2 f 7/3/3 8/5/3 6/6/3 5/2/3 f 17/9/4 18/10/4 20/11/4 19/12/4 f 21/9/5 22/10/5 24/11/5 23/12/5 -g Cube_Cube.001_Cube_Cube.001_Material.002 -usemtl Material.002 f 9/12/6 10/13/6 12/14/6 11/9/6 f 13/9/7 14/12/7 16/13/7 15/14/7 From 75f957555751ae9a6fad6c7c6772bf1bcc89cf38 Mon Sep 17 00:00:00 2001 From: Emojigit <55009343+Emojigit@users.noreply.github.com> Date: Sat, 15 Jan 2022 02:41:26 +0800 Subject: [PATCH 16/36] Allow to set use_texture_alpha when registering a door Co-Authored-By: Gregor Parzefall --- game_api.txt | 10 +++++----- mods/doors/init.lua | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/game_api.txt b/game_api.txt index 352f4584..b47b0c5d 100644 --- a/game_api.txt +++ b/game_api.txt @@ -228,8 +228,9 @@ The doors mod allows modders to register custom doors and trapdoors. gain_open = 0.3, -- optional, defaults to 0.3 gain_close = 0.3, -- optional, defaults to 0.3 protected = false, -- If true, only placer can open the door (locked for others) - on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing), -- optional function containing the on_rightclick callback, defaults to a doors.door_toggle-wrapper + use_texture_alpha = "clip", ### Trapdoor definition @@ -249,10 +250,9 @@ The doors mod allows modders to register custom doors and trapdoors. gain_open = 0.3, -- optional, defaults to 0.3 gain_close = 0.3, -- optional, defaults to 0.3 protected = false, -- If true, only placer can open the door (locked for others) - on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) - -- function containing the on_rightclick callback - on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) , -- function containing the on_rightclick callback + use_texture_alpha = "clip", ### Fence gate definition @@ -262,7 +262,7 @@ The doors mod allows modders to register custom doors and trapdoors. material = "default:wood", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, sounds = default.node_sound_wood_defaults(), -- optional - on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) -- function containing the on_rightclick callback diff --git a/mods/doors/init.lua b/mods/doors/init.lua index f222ecad..6681055a 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -446,7 +446,7 @@ function doors.register(name, def) def.buildable_to = false def.selection_box = {type = "fixed", fixed = {-1/2,-1/2,-1/2,1/2,3/2,-6/16}} def.collision_box = {type = "fixed", fixed = {-1/2,-1/2,-1/2,1/2,3/2,-6/16}} - def.use_texture_alpha = "clip" + def.use_texture_alpha = def.use_texture_alpha or "clip" def.mesh = "door_a.b3d" minetest.register_node(":" .. name .. "_a", table.copy(def)) @@ -600,7 +600,7 @@ function doors.register_trapdoor(name, def) def.paramtype = "light" def.paramtype2 = "facedir" def.is_ground_content = false - def.use_texture_alpha = "clip" + def.use_texture_alpha = def.use_texture_alpha or "clip" if def.protected then def.can_dig = can_dig_door From 6623dec5674c4738aaa623783bf413a581c74233 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lars=20M=C3=BCller?= <34514239+appgurueu@users.noreply.github.com> Date: Mon, 17 Jan 2022 21:49:28 +0100 Subject: [PATCH 17/36] Redo player_api (#2745) --- game_api.txt | 26 +++---- mods/beds/functions.lua | 2 - mods/player_api/api.lua | 159 +++++++++++++++++++++++++++------------ mods/player_api/init.lua | 14 +--- mods/player_api/mod.conf | 2 +- 5 files changed, 128 insertions(+), 75 deletions(-) diff --git a/game_api.txt b/game_api.txt index b47b0c5d..6a013224 100644 --- a/game_api.txt +++ b/game_api.txt @@ -449,13 +449,13 @@ The player API can register player models and update the player's appearance. * `player_api.set_model(player, model_name)` * Change a player's model * `player`: PlayerRef - * `model_name`: model registered with player_api.register_model() + * `model_name`: model registered with `player_api.register_model` * `player_api.set_animation(player, anim_name, speed)` - * Applies an animation to a player + * Applies an animation to a player if speed or anim_name differ from the currently playing animation * `player`: PlayerRef * `anim_name`: name of the animation - * `speed`: frames per second. If nil, the default from the model def is used + * `speed`: keyframes per second. If nil, the default from the model def is used * `player_api.set_textures(player, textures)` * Sets player textures @@ -477,18 +477,18 @@ The player API can register player models and update the player's appearance. ### Model Definition { - animation_speed = 30, -- Default animation speed, in FPS - textures = {"character.png", }, -- Default array of textures - visual_size = {x = 1, y = 1}, -- Used to scale the model + animation_speed = 30, -- Default animation speed, in keyframes per second + textures = {"character.png"}, -- Default array of textures animations = { - -- = {x = , y = }, - foo = {x = 0, y = 19}, - bar = {x = 20, y = 39}, - -- ... + -- [anim_name] = {x = , y = , collisionbox = model collisionbox, eye_height = model eye height}, + stand = ..., lay = ..., walk = ..., mine = ..., walk_mine = ..., -- required animations + sit = ... -- used by boats and other MTG mods }, - collisionbox = {-0.3, 0.0, -0.3, 0.3, 1.7, 0.3}, -- In nodes from feet position - stepheight = 0.6, -- In nodes - eye_height = 1.47, -- In nodes above feet position + -- Default object properties, see lua_api.txt + visual_size = {x = 1, y = 1}, + collisionbox = {-0.3, 0.0, -0.3, 0.3, 1.7, 0.3}, + stepheight = 0.6, + eye_height = 1.47 } diff --git a/mods/beds/functions.lua b/mods/beds/functions.lua index ddac52be..409aa376 100644 --- a/mods/beds/functions.lua +++ b/mods/beds/functions.lua @@ -116,8 +116,6 @@ local function lay_down(player, pos, bed_pos, state, skip) beds.bed_position[name] = bed_pos beds.player[name] = {physics_override = player:get_physics_override()} - -- physics, eye_offset, etc - player:set_eye_offset({x = 0, y = -13, z = 0}, {x = 0, y = 0, z = 0}) local yaw, param2 = get_look_yaw(bed_pos) player:set_look_horizontal(yaw) local dir = minetest.facedir_to_dir(param2) diff --git a/mods/player_api/api.lua b/mods/player_api/api.lua index 0aee048e..f341e6ea 100644 --- a/mods/player_api/api.lua +++ b/mods/player_api/api.lua @@ -1,54 +1,88 @@ --- Minetest 0.4 mod: player --- See README.txt for licensing and other information. - player_api = {} -- Player animation blending -- Note: This is currently broken due to a bug in Irrlicht, leave at 0 local animation_blend = 0 -player_api.registered_models = { } +player_api.registered_models = {} -- Local for speed. local models = player_api.registered_models +local function collisionbox_equals(collisionbox, other_collisionbox) + if collisionbox == other_collisionbox then + return true + end + for index = 1, 6 do + if collisionbox[index] ~= other_collisionbox[index] then + return false + end + end + return true +end + function player_api.register_model(name, def) models[name] = def + def.visual_size = def.visual_size or {x = 1, y = 1} + def.collisionbox = def.collisionbox or {-0.3, 0.0, -0.3, 0.3, 1.7, 0.3} + def.stepheight = def.stepheight or 0.6 + def.eye_height = def.eye_height or 1.47 + + -- Sort animations into property classes: + -- Animations with same properties have the same _equals value + for animation_name, animation in pairs(def.animations) do + animation.eye_height = animation.eye_height or def.eye_height + animation.collisionbox = animation.collisionbox or def.collisionbox + for _, other_animation in pairs(def.animations) do + if other_animation._equals then + if collisionbox_equals(animation.collisionbox, other_animation.collisionbox) + and animation.eye_height == other_animation.eye_height then + animation._equals = other_animation._equals + break + end + end + end + animation._equals = animation._equals or animation_name + end end -- Player stats and animations -local player_model = {} -local player_textures = {} -local player_anim = {} -local player_sneak = {} +-- model, textures, animation +local players = {} player_api.player_attached = {} +local function get_player_data(player) + return assert(players[player:get_player_name()]) +end + function player_api.get_animation(player) - local name = player:get_player_name() - return { - model = player_model[name], - textures = player_textures[name], - animation = player_anim[name], - } + return get_player_data(player) end -- Called when a player's appearance needs to be updated function player_api.set_model(player, model_name) - local name = player:get_player_name() + local player_data = get_player_data(player) + if player_data.model == model_name then + return + end local model = models[model_name] if model then - if player_model[name] == model_name then - return - end player:set_properties({ mesh = model_name, - textures = player_textures[name] or model.textures, + textures = player_data.textures or model.textures, visual = "mesh", - visual_size = model.visual_size or {x = 1, y = 1}, - collisionbox = model.collisionbox or {-0.3, 0.0, -0.3, 0.3, 1.7, 0.3}, - stepheight = model.stepheight or 0.6, - eye_height = model.eye_height or 1.47, + visual_size = model.visual_size, + stepheight = model.stepheight }) + local animations = model.animations + player:set_local_animation( + animations.stand, + animations.walk, + animations.mine, + animations.walk_mine, + model.animation_speed or 30 + ) + -- sets collisionbox & eye_height player_api.set_animation(player, "stand") else player:set_properties({ @@ -60,37 +94,61 @@ function player_api.set_model(player, model_name) eye_height = 1.625, }) end - player_model[name] = model_name + player_data.model = model_name +end + +function player_api.get_textures(player) + local player_data = get_player_data(player) + local model = models[player_data.model] + return assert(player_data.textures or (model and model.textures)) end function player_api.set_textures(player, textures) - local name = player:get_player_name() - local model = models[player_model[name]] - local model_textures = model and model.textures or nil - player_textures[name] = textures or model_textures - player:set_properties({textures = textures or model_textures}) + local player_data = get_player_data(player) + local model = models[player_data.model] + local new_textures = assert(textures or (model and model.textures)) + player_data.textures = new_textures + player:set_properties({textures = new_textures}) +end + +function player_api.set_texture(player, index, texture) + local textures = table.copy(player_api.get_textures(player)) + textures[index] = texture + player_api.set_textures(player, textures) end function player_api.set_animation(player, anim_name, speed) - local name = player:get_player_name() - if player_anim[name] == anim_name then - return - end - local model = player_model[name] and models[player_model[name]] + local player_data = get_player_data(player) + local model = models[player_data.model] if not (model and model.animations[anim_name]) then return end + speed = speed or model.animation_speed + if player_data.animation == anim_name and player_data.animation_speed == speed then + return + end + local previous_anim_equals = (model.animations[player_data.animation] or {})._equals local anim = model.animations[anim_name] - player_anim[name] = anim_name - player:set_animation(anim, speed or model.animation_speed, animation_blend) + player_data.animation = anim_name + player_data.animation_speed = speed + player:set_animation(anim, speed, animation_blend) + if anim._equals ~= previous_anim_equals then + player:set_properties({ + collisionbox = anim.collisionbox, + eye_height = anim.eye_height + }) + end end +minetest.register_on_joinplayer(function(player) + local name = player:get_player_name() + players[name] = {} + player_api.player_attached[name] = false +end) + minetest.register_on_leaveplayer(function(player) local name = player:get_player_name() - player_model[name] = nil - player_anim[name] = nil - player_textures[name] = nil - player_sneak[name] = nil + players[name] = nil player_api.player_attached[name] = nil end) @@ -111,8 +169,8 @@ end minetest.register_globalstep(function() for _, player in pairs(minetest.get_connected_players()) do local name = player:get_player_name() - local model_name = player_model[name] - local model = model_name and models[model_name] + local player_data = players[name] + local model = models[player_data.model] if model and not player_attached[name] then local controls = player:get_player_control() local animation_speed_mod = model.animation_speed or 30 @@ -125,12 +183,7 @@ minetest.register_globalstep(function() -- Apply animations based on what the player is doing if player:get_hp() == 0 then player_set_animation(player, "lay") - -- Determine if the player is walking elseif controls.up or controls.down or controls.left or controls.right then - if player_sneak[name] ~= controls.sneak then - player_anim[name] = nil - player_sneak[name] = controls.sneak - end if controls.LMB or controls.RMB then player_set_animation(player, "walk_mine", animation_speed_mod) else @@ -144,3 +197,15 @@ minetest.register_globalstep(function() end end end) + +for _, api_function in pairs({"get_animation", "set_animation", "set_model", "set_textures"}) do + local original_function = player_api[api_function] + player_api[api_function] = function(player, ...) + if not players[player:get_player_name()] then + -- HACK for keeping backwards compatibility + minetest.log("warning", api_function .. " called on offline player") + return + end + original_function(player, ...) + end +end diff --git a/mods/player_api/init.lua b/mods/player_api/init.lua index 1176b0ea..6bc3c821 100644 --- a/mods/player_api/init.lua +++ b/mods/player_api/init.lua @@ -1,5 +1,3 @@ --- player/init.lua - dofile(minetest.get_modpath("player_api") .. "/api.lua") -- Default player appearance @@ -9,11 +7,11 @@ player_api.register_model("character.b3d", { animations = { -- Standard animations. stand = {x = 0, y = 79}, - lay = {x = 162, y = 166}, + lay = {x = 162, y = 166, collisionbox = {-0.6, 0.0, -0.6, 0.6, 0.3, 0.6}, eye_height = 0.3}, walk = {x = 168, y = 187}, mine = {x = 189, y = 198}, walk_mine = {x = 200, y = 219}, - sit = {x = 81, y = 160}, + sit = {x = 81, y = 160, collisionbox = {-0.3, 0.0, -0.3, 0.3, 1.0, 0.3}, eye_height = 0.8} }, collisionbox = {-0.3, 0.0, -0.3, 0.3, 1.7, 0.3}, stepheight = 0.6, @@ -22,13 +20,5 @@ player_api.register_model("character.b3d", { -- Update appearance when the player joins minetest.register_on_joinplayer(function(player) - player_api.player_attached[player:get_player_name()] = false player_api.set_model(player, "character.b3d") - player:set_local_animation( - {x = 0, y = 79}, - {x = 168, y = 187}, - {x = 189, y = 198}, - {x = 200, y = 219}, - 30 - ) end) diff --git a/mods/player_api/mod.conf b/mods/player_api/mod.conf index 198b86dc..bf62327b 100644 --- a/mods/player_api/mod.conf +++ b/mods/player_api/mod.conf @@ -1,2 +1,2 @@ name = player_api -description = Minetest Game mod: player_api +description = Minetest Game mod: Manages player visuals From acc918436afec1a629891e8d95cf3b3621728a31 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Tue, 18 Jan 2022 19:18:44 +0100 Subject: [PATCH 18/36] Override local_animation settings for certain animations This makes the lay/sit animation work on the local client (in third-person). --- game_api.txt | 15 ++++++++++++++- mods/player_api/api.lua | 36 ++++++++++++++++++++++++------------ mods/player_api/init.lua | 6 ++++-- 3 files changed, 42 insertions(+), 15 deletions(-) diff --git a/game_api.txt b/game_api.txt index 6a013224..0495b29b 100644 --- a/game_api.txt +++ b/game_api.txt @@ -462,6 +462,12 @@ The player API can register player models and update the player's appearance. * `player`: PlayerRef * `textures`: array of textures. If nil, the default from the model def is used +* `player_api.set_textures(player, index, texture)` + * Sets one of the player textures + * `player`: PlayerRef + * `index`: Index into array of all textures + * `texture`: the texture string + * `player_api.get_animation(player)` * Returns a table containing fields `model`, `textures` and `animation` * Any of the fields of the returned table may be nil @@ -480,7 +486,14 @@ The player API can register player models and update the player's appearance. animation_speed = 30, -- Default animation speed, in keyframes per second textures = {"character.png"}, -- Default array of textures animations = { - -- [anim_name] = {x = , y = , collisionbox = model collisionbox, eye_height = model eye height}, + -- [anim_name] = { + -- x = , + -- y = , + -- collisionbox = , -- (optional) + -- eye_height = , -- (optional) + -- -- suspend client side animations while this one is active (optional) + -- override_local = + -- }, stand = ..., lay = ..., walk = ..., mine = ..., walk_mine = ..., -- required animations sit = ... -- used by boats and other MTG mods }, diff --git a/mods/player_api/api.lua b/mods/player_api/api.lua index f341e6ea..d7aab4ed 100644 --- a/mods/player_api/api.lua +++ b/mods/player_api/api.lua @@ -33,6 +33,8 @@ function player_api.register_model(name, def) for animation_name, animation in pairs(def.animations) do animation.eye_height = animation.eye_height or def.eye_height animation.collisionbox = animation.collisionbox or def.collisionbox + animation.override_local = animation.override_local or false + for _, other_animation in pairs(def.animations) do if other_animation._equals then if collisionbox_equals(animation.collisionbox, other_animation.collisionbox) @@ -65,6 +67,8 @@ function player_api.set_model(player, model_name) if player_data.model == model_name then return end + player_data.model = model_name + local model = models[model_name] if model then player:set_properties({ @@ -74,15 +78,7 @@ function player_api.set_model(player, model_name) visual_size = model.visual_size, stepheight = model.stepheight }) - local animations = model.animations - player:set_local_animation( - animations.stand, - animations.walk, - animations.mine, - animations.walk_mine, - model.animation_speed or 30 - ) - -- sets collisionbox & eye_height + -- sets local_animation, collisionbox & eye_height player_api.set_animation(player, "stand") else player:set_properties({ @@ -94,7 +90,6 @@ function player_api.set_model(player, model_name) eye_height = 1.625, }) end - player_data.model = model_name end function player_api.get_textures(player) @@ -127,12 +122,29 @@ function player_api.set_animation(player, anim_name, speed) if player_data.animation == anim_name and player_data.animation_speed == speed then return end - local previous_anim_equals = (model.animations[player_data.animation] or {})._equals + local previous_anim = model.animations[player_data.animation] or {} local anim = model.animations[anim_name] player_data.animation = anim_name player_data.animation_speed = speed + -- If necessary change the local animation (only seen by the client of *that* player) + -- `override_local` <=> suspend local animations while this one is active + -- (this is basically a hack, proper engine feature needed...) + if anim.override_local ~= previous_anim.override_local then + if anim.override_local then + local none = {x=0, y=0} + player:set_local_animation(none, none, none, none, 1) + else + local a = model.animations -- (not specific to the animation being set) + player:set_local_animation( + a.stand, a.walk, a.mine, a.walk_mine, + model.animation_speed or 30 + ) + end + end + -- Set the animation seen by everyone else player:set_animation(anim, speed, animation_blend) - if anim._equals ~= previous_anim_equals then + -- Update related properties if they changed + if anim._equals ~= previous_anim._equals then player:set_properties({ collisionbox = anim.collisionbox, eye_height = anim.eye_height diff --git a/mods/player_api/init.lua b/mods/player_api/init.lua index 6bc3c821..f258aea7 100644 --- a/mods/player_api/init.lua +++ b/mods/player_api/init.lua @@ -7,11 +7,13 @@ player_api.register_model("character.b3d", { animations = { -- Standard animations. stand = {x = 0, y = 79}, - lay = {x = 162, y = 166, collisionbox = {-0.6, 0.0, -0.6, 0.6, 0.3, 0.6}, eye_height = 0.3}, + lay = {x = 162, y = 166, eye_height = 0.3, override_local = true, + collisionbox = {-0.6, 0.0, -0.6, 0.6, 0.3, 0.6}}, walk = {x = 168, y = 187}, mine = {x = 189, y = 198}, walk_mine = {x = 200, y = 219}, - sit = {x = 81, y = 160, collisionbox = {-0.3, 0.0, -0.3, 0.3, 1.0, 0.3}, eye_height = 0.8} + sit = {x = 81, y = 160, eye_height = 0.8, override_local = true, + collisionbox = {-0.3, 0.0, -0.3, 0.3, 1.0, 0.3}} }, collisionbox = {-0.3, 0.0, -0.3, 0.3, 1.7, 0.3}, stepheight = 0.6, From 760581b330d82eef16b3b657eb501ad68e275551 Mon Sep 17 00:00:00 2001 From: Yad <97409381+OCRenkist@users.noreply.github.com> Date: Sun, 23 Jan 2022 12:07:10 -0500 Subject: [PATCH 19/36] Copyedit `README.md` & `game.conf` (#2919) --- README.md | 26 ++++++++++++-------------- game.conf | 6 +++--- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index a88d83c7..099a7e03 100644 --- a/README.md +++ b/README.md @@ -1,31 +1,29 @@ # Minetest Game -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). -Also see the [Minetest Wiki](https://wiki.minetest.net/Subgames/Minetest_Game) -for more information. +For further information, check [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 -- Unzip the archive, rename the folder to minetest_game and -place it in .. minetest/games/ +- Unzip the archive, rename the folder to `minetest_game` and +place it in .. `minetest/games/` -- GNU/Linux: If you use a system-wide installation place - it in ~/.minetest/games/. +- GNU/Linux: If you use a system-wide installation place it in `~/.minetest/games/`. The Minetest engine can be found at [GitHub](https://github.com/minetest/minetest). -For further information or help, see: -https://wiki.minetest.net/Installing_Mods +For further information or help, see: [Installing Mods](https://wiki.minetest.net/Installing_Mods). ## Compatibility -The Minetest Game GitHub master HEAD is generally compatible with the GitHub -master HEAD of the Minetest engine. +The Minetest Game GitHub `master` `HEAD` is generally compatible with the GitHub +`master` `HEAD` of the Minetest engine. + 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 [www.minetest.net](https://www.minetest.net/downloads/). diff --git a/game.conf b/game.conf index 7c8ac2c4..02b585cd 100644 --- a/game.conf +++ b/game.conf @@ -1,3 +1,3 @@ -name = Minetest Game -author = Minetest -description = A basic exploration, mining, crafting and building sandbox game with no NPCs, monsters or animals. Minetest Game is usually used with mods added and many mods are available for this game. Reliably maintained by Minetest Engine core developers. +name = Minetest Game +author = Minetest +description = A basic exploration, mining, crafting, and building, sandbox game with no NPCs, monsters, or animals. Minetest Game is usually used with mods added, and many mods are available for this game. Reliably maintained by Minetest Engine core developers. From 0c1252bcf540d6d6582f3cae8fbabbc5845fdf04 Mon Sep 17 00:00:00 2001 From: paramat Date: Sun, 8 Nov 2020 15:43:04 +0000 Subject: [PATCH 20/36] Balance sounds, remove silent water footstep --- mods/default/README.txt | 1 - mods/default/functions.lua | 18 +++++++++++------- mods/default/furnace.lua | 6 +++--- mods/default/item_entity.lua | 1 + .../sounds/default_water_footstep.4.ogg | Bin 3974 -> 0 bytes mods/default/torch.lua | 2 +- mods/farming/api.lua | 2 +- mods/fire/init.lua | 2 +- mods/tnt/init.lua | 4 ++-- 9 files changed, 20 insertions(+), 16 deletions(-) delete mode 100644 mods/default/sounds/default_water_footstep.4.ogg diff --git a/mods/default/README.txt b/mods/default/README.txt index 8b215d83..e848f906 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -299,7 +299,6 @@ https://www.freesound.org/people/AGFX/packs/1253/ default_water_footstep.1.ogg default_water_footstep.2.ogg default_water_footstep.3.ogg -(default_water_footstep.4.ogg is silent) blukotek (CC0 1.0): https://www.freesound.org/people/blukotek/sounds/251660/ diff --git a/mods/default/functions.lua b/mods/default/functions.lua index 1e46c45e..4d89a384 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -16,7 +16,7 @@ end function default.node_sound_stone_defaults(table) table = table or {} table.footstep = table.footstep or - {name = "default_hard_footstep", gain = 0.3} + {name = "default_hard_footstep", gain = 0.2} table.dug = table.dug or {name = "default_hard_footstep", gain = 1.0} default.node_sound_defaults(table) @@ -26,7 +26,9 @@ end function default.node_sound_dirt_defaults(table) table = table or {} table.footstep = table.footstep or - {name = "default_dirt_footstep", gain = 0.4} + {name = "default_dirt_footstep", gain = 0.25} + table.dig = table.dig or + {name = "default_dig_crumbly", gain = 0.4} table.dug = table.dug or {name = "default_dirt_footstep", gain = 1.0} table.place = table.place or @@ -50,7 +52,7 @@ end function default.node_sound_gravel_defaults(table) table = table or {} table.footstep = table.footstep or - {name = "default_gravel_footstep", gain = 0.1} + {name = "default_gravel_footstep", gain = 0.25} table.dig = table.dig or {name = "default_gravel_dig", gain = 0.35} table.dug = table.dug or @@ -64,7 +66,9 @@ end function default.node_sound_wood_defaults(table) table = table or {} table.footstep = table.footstep or - {name = "default_wood_footstep", gain = 0.3} + {name = "default_wood_footstep", gain = 0.15} + table.dig = table.dig or + {name = "default_dig_choppy", gain = 0.4} table.dug = table.dug or {name = "default_wood_footstep", gain = 1.0} default.node_sound_defaults(table) @@ -98,7 +102,7 @@ end function default.node_sound_ice_defaults(table) table = table or {} table.footstep = table.footstep or - {name = "default_ice_footstep", gain = 0.3} + {name = "default_ice_footstep", gain = 0.15} table.dig = table.dig or {name = "default_ice_dig", gain = 0.5} table.dug = table.dug or @@ -110,7 +114,7 @@ end function default.node_sound_metal_defaults(table) table = table or {} table.footstep = table.footstep or - {name = "default_metal_footstep", gain = 0.4} + {name = "default_metal_footstep", gain = 0.2} table.dig = table.dig or {name = "default_dig_metal", gain = 0.5} table.dug = table.dug or @@ -155,7 +159,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}, true) + {pos = pos, max_hear_distance = 16, gain = 0.2}, true) end if minetest.settings:get_bool("enable_lavacooling") ~= false then diff --git a/mods/default/furnace.lua b/mods/default/furnace.lua index b164b8a0..e6b90b82 100644 --- a/mods/default/furnace.lua +++ b/mods/default/furnace.lua @@ -159,7 +159,7 @@ local function furnace_node_timer(pos, elapsed) end -- Play cooling sound minetest.sound_play("default_cool_lava", - {pos = pos, max_hear_distance = 16, gain = 0.1}, true) + {pos = pos, max_hear_distance = 16, gain = 0.07}, true) else -- Item could not be cooked: probably missing fuel update = true @@ -252,9 +252,9 @@ local function furnace_node_timer(pos, elapsed) result = true -- Play sound every 5 seconds while the furnace is active - if timer_elapsed == 0 or (timer_elapsed+1) % 5 == 0 then + if timer_elapsed == 0 or (timer_elapsed + 1) % 5 == 0 then minetest.sound_play("default_furnace_active", - {pos = pos, max_hear_distance = 16, gain = 0.5}, true) + {pos = pos, max_hear_distance = 16, gain = 0.25}, true) end else if fuellist and not fuellist[1]:is_empty() then diff --git a/mods/default/item_entity.lua b/mods/default/item_entity.lua index 25fb8328..3e6cc9db 100644 --- a/mods/default/item_entity.lua +++ b/mods/default/item_entity.lua @@ -19,6 +19,7 @@ local item = { self.object:remove() minetest.sound_play("default_item_smoke", { pos = p, + gain = 1.0, max_hear_distance = 8, }, true) minetest.add_particlespawner({ diff --git a/mods/default/sounds/default_water_footstep.4.ogg b/mods/default/sounds/default_water_footstep.4.ogg deleted file mode 100644 index 6f1eab8245fdc475451e6eb98186bd6db141fbfd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3974 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 I`T9}qKQy`}3;+NC diff --git a/mods/default/torch.lua b/mods/default/torch.lua index a19f5314..e8f734c7 100644 --- a/mods/default/torch.lua +++ b/mods/default/torch.lua @@ -11,7 +11,7 @@ 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.07}, true ) end diff --git a/mods/farming/api.lua b/mods/farming/api.lua index 17a5fa74..15d126e2 100644 --- a/mods/farming/api.lua +++ b/mods/farming/api.lua @@ -60,7 +60,7 @@ farming.hoe_on_use = function(itemstack, user, pointed_thing, uses) minetest.set_node(pt.under, {name = regN[under.name].soil.dry}) minetest.sound_play("default_dig_crumbly", { pos = pt.under, - gain = 0.5, + gain = 0.3, }, true) if not minetest.is_creative_enabled(player_name) then diff --git a/mods/fire/init.lua b/mods/fire/init.lua index 621e00e4..030b604d 100644 --- a/mods/fire/init.lua +++ b/mods/fire/init.lua @@ -92,7 +92,7 @@ minetest.register_tool("fire:flint_and_steel", { on_use = function(itemstack, user, pointed_thing) 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}, true) + {pos = sound_pos, gain = 0.2, max_hear_distance = 8}, true) local player_name = user:get_player_name() if pointed_thing.type == "node" then local node_under = minetest.get_node(pointed_thing.under).name diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index fd1f9e42..19fe330c 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -279,7 +279,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}, true) + minetest.sound_play("tnt_ignite", {pos = pos, gain = 1.0}, true) minetest.get_node_timer(pos):start(1) end end @@ -555,7 +555,7 @@ minetest.register_node("tnt:gunpowder_burning", { on_blast = function() end, on_construct = function(pos) minetest.sound_play("tnt_gunpowder_burning", {pos = pos, - gain = 2}, true) + gain = 1.0}, true) minetest.get_node_timer(pos):start(1) end, }) From 40861c9e4f9700d70e202bdad515b0659bc7f766 Mon Sep 17 00:00:00 2001 From: Louis Royer <55180044+louisroyer@users.noreply.github.com> Date: Sun, 12 Jul 2020 14:30:11 +0200 Subject: [PATCH 21/36] Move keys to a separate mod (Fix #1490) --- mods/default/README.txt | 2 - mods/default/craftitems.lua | 75 ------------- mods/default/locale/default.de.tr | 3 - mods/default/locale/default.eo.tr | 3 - mods/default/locale/default.es.tr | 3 - mods/default/locale/default.fr.tr | 3 - mods/default/locale/default.id.tr | 3 - mods/default/locale/default.it.tr | 3 - mods/default/locale/default.jbo.tr | 3 - mods/default/locale/default.ms.tr | 3 - mods/default/locale/default.pt_BR.tr | 3 - mods/default/locale/default.ru.tr | 3 - mods/default/locale/default.se.tr | 3 - mods/default/locale/default.sk.tr | 3 - mods/default/locale/default.zh_CN.tr | 3 - mods/default/locale/default.zh_TW.tr | 3 - mods/default/locale/template.txt | 3 - mods/default/tools.lua | 40 ------- mods/keys/README.txt | 21 ++++ mods/keys/aliases.lua | 6 ++ mods/keys/crafting.lua | 28 +++++ mods/keys/craftitems.lua | 102 ++++++++++++++++++ mods/keys/init.lua | 6 ++ mods/keys/license.txt | 52 +++++++++ mods/keys/locale/keys.de.tr | 5 + mods/keys/locale/keys.eo.tr | 5 + mods/keys/locale/keys.es.tr | 5 + mods/keys/locale/keys.fr.tr | 5 + mods/keys/locale/keys.id.tr | 5 + mods/keys/locale/keys.it.tr | 5 + mods/keys/locale/keys.jbo.tr | 5 + mods/keys/locale/keys.ms.tr | 5 + mods/keys/locale/keys.pt_BR.tr | 5 + mods/keys/locale/keys.ru.tr | 5 + mods/keys/locale/keys.se.tr | 5 + mods/keys/locale/keys.zh_CN.tr | 5 + mods/keys/locale/keys.zh_TW.tr | 5 + mods/keys/locale/template.txt | 5 + mods/keys/mod.conf | 3 + .../textures/keys_key.png} | Bin .../textures/keys_key_skeleton.png} | Bin 41 files changed, 288 insertions(+), 162 deletions(-) create mode 100644 mods/keys/README.txt create mode 100644 mods/keys/aliases.lua create mode 100644 mods/keys/crafting.lua create mode 100644 mods/keys/craftitems.lua create mode 100644 mods/keys/init.lua create mode 100644 mods/keys/license.txt create mode 100644 mods/keys/locale/keys.de.tr create mode 100644 mods/keys/locale/keys.eo.tr create mode 100644 mods/keys/locale/keys.es.tr create mode 100644 mods/keys/locale/keys.fr.tr create mode 100644 mods/keys/locale/keys.id.tr create mode 100644 mods/keys/locale/keys.it.tr create mode 100644 mods/keys/locale/keys.jbo.tr create mode 100644 mods/keys/locale/keys.ms.tr create mode 100644 mods/keys/locale/keys.pt_BR.tr create mode 100644 mods/keys/locale/keys.ru.tr create mode 100644 mods/keys/locale/keys.se.tr create mode 100644 mods/keys/locale/keys.zh_CN.tr create mode 100644 mods/keys/locale/keys.zh_TW.tr create mode 100644 mods/keys/locale/template.txt create mode 100644 mods/keys/mod.conf rename mods/{default/textures/default_key.png => keys/textures/keys_key.png} (100%) rename mods/{default/textures/default_key_skeleton.png => keys/textures/keys_key_skeleton.png} (100%) diff --git a/mods/default/README.txt b/mods/default/README.txt index e848f906..949b9402 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -188,8 +188,6 @@ Gambit (CC BY-SA 3.0): default_snow.png default_snow_side.png default_snowball.png - default_key.png - default_key_skeleton.png default_book.png asl97 (CC BY-SA 3.0): diff --git a/mods/default/craftitems.lua b/mods/default/craftitems.lua index cf2795c3..46d78049 100644 --- a/mods/default/craftitems.lua +++ b/mods/default/craftitems.lua @@ -196,61 +196,6 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) player:set_wielded_item(stack) end) -minetest.register_craftitem("default:skeleton_key", { - description = S("Skeleton Key"), - inventory_image = "default_key_skeleton.png", - on_use = function(itemstack, user, pointed_thing) - if pointed_thing.type ~= "node" then - return itemstack - end - - local pos = pointed_thing.under - local node = minetest.get_node(pos) - - if not node then - return itemstack - end - - local node_reg = minetest.registered_nodes[node.name] - local on_skeleton_key_use = node_reg and node_reg.on_skeleton_key_use - if not on_skeleton_key_use then - return itemstack - end - - -- make a new key secret in case the node callback needs it - local random = math.random - local newsecret = string.format( - "%04x%04x%04x%04x", - random(2^16) - 1, random(2^16) - 1, - random(2^16) - 1, random(2^16) - 1) - - local secret, _, _ = on_skeleton_key_use(pos, user, newsecret) - - if secret then - local inv = minetest.get_inventory({type="player", name=user:get_player_name()}) - - -- update original itemstack - itemstack:take_item() - - -- finish and return the new key - local new_stack = ItemStack("default:key") - local meta = new_stack:get_meta() - meta:set_string("secret", secret) - meta:set_string("description", S("Key to @1's @2", user:get_player_name(), - minetest.registered_nodes[node.name].description)) - - if itemstack:get_count() == 0 then - itemstack = new_stack - else - if inv:add_item("main", new_stack):get_count() > 0 then - minetest.add_item(user:get_pos(), new_stack) - end -- else: added to inventory successfully - end - - return itemstack - end - end -}) -- -- Craftitem registry @@ -479,13 +424,6 @@ minetest.register_craft({ } }) -minetest.register_craft({ - output = "default:skeleton_key", - recipe = { - {"default:gold_ingot"}, - } -}) - minetest.register_craft({ output = "default:steel_ingot 9", recipe = { @@ -529,19 +467,6 @@ minetest.register_craft({ 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", diff --git a/mods/default/locale/default.de.tr b/mods/default/locale/default.de.tr index c728008c..1abe24f8 100644 --- a/mods/default/locale/default.de.tr +++ b/mods/default/locale/default.de.tr @@ -12,8 +12,6 @@ Save=Speichern by @1=von @1 Page @1 of @2=Seite @1 von @2 "@1" by @2=„@1“ von @2 -Skeleton Key=Skelettschlüssel -Key to @1's @2=Schlüssel für @2 von @1 Blueberries=Blaubeeren Book=Buch Book with Text=Buch mit Text @@ -212,7 +210,6 @@ Bronze Sword=Bronzeschwert Steel Sword=Stahlschwert Mese Sword=Meseschwert Diamond Sword=Diamantschwert -Key=Schlüssel Torch=Fackel @1 will intersect protection on growth.=@1 wird bei Wachstum mit geschützter Zone überlappen. diff --git a/mods/default/locale/default.eo.tr b/mods/default/locale/default.eo.tr index 7aaa0bb9..83496566 100644 --- a/mods/default/locale/default.eo.tr +++ b/mods/default/locale/default.eo.tr @@ -12,8 +12,6 @@ Save=Konservu by @1=per @1 Page @1 of @2=Paĝo @1 el @2 "@1" by @2="@1" per @2 -Skeleton Key=Skeleta Ŝlosilo -Key to @1's @2=Ŝlosilo por la @2 de @1 Blueberries=Mirteloj Book=Libro Book with Text=Libro kun Teksto @@ -212,7 +210,6 @@ Bronze Sword=Bronza Glavo Steel Sword=Ŝtala Glavo Mese Sword=Mesea Glavo Diamond Sword=Diamanta Glavo -Key=Ŝlosilo Torch=Torĉo @1 will intersect protection on growth.=@1 sekcos protekto ĉe vegeto. diff --git a/mods/default/locale/default.es.tr b/mods/default/locale/default.es.tr index d8b07f50..da160dc3 100644 --- a/mods/default/locale/default.es.tr +++ b/mods/default/locale/default.es.tr @@ -12,8 +12,6 @@ Save=Guardar by @1=por @1 Page @1 of @2=Página @1 de @2 "@1" by @2="@1" por @2 -Skeleton Key=Llave esqueleto -Key to @1's @2=Llave para @2 de @1 Blueberries=Arándanos Book=Libro Book with Text=Libro escrito @@ -212,7 +210,6 @@ Bronze Sword=Espada de bronce Steel Sword=Espada de acero Mese Sword=Espada de mese Diamond Sword=Espada de diamante -Key=Llave Torch=Antorcha @1 will intersect protection on growth.=@1 intersectará con protección cuando crezca. diff --git a/mods/default/locale/default.fr.tr b/mods/default/locale/default.fr.tr index b2288f7e..71887400 100644 --- a/mods/default/locale/default.fr.tr +++ b/mods/default/locale/default.fr.tr @@ -12,8 +12,6 @@ Save=Sauvegarder by @1=de @1 Page @1 of @2=Page @1 sur @2 "@1" by @2=« @1 » de @2 -Skeleton Key=Squelette -Key to @1's @2=Clé pour @2 de @1 Blueberries=Myrtille Book=Livre Book with Text=Livre avec du texte @@ -212,7 +210,6 @@ Bronze Sword=Epée en bronze Steel Sword=Epée en acier Mese Sword=Epée en Mese Diamond Sword=Epée en diamant -Key=Clé Torch=Torche @1 will intersect protection on growth.=@1 chevauchera la zone protégée avec la croissance. diff --git a/mods/default/locale/default.id.tr b/mods/default/locale/default.id.tr index 3c02a050..91a901e6 100644 --- a/mods/default/locale/default.id.tr +++ b/mods/default/locale/default.id.tr @@ -12,8 +12,6 @@ Save=Simpan by @1=oleh @1 Page @1 of @2=Halaman @1 dari @2 "@1" by @2="@1" oleh @2 -Skeleton Key=Kunci Induk -Key to @1's @2=Kunci @2 milik @1 Blueberries=Blueberry Book=Buku Book with Text=Buku Tertulis @@ -212,7 +210,6 @@ Bronze Sword=Pedang Perunggu Steel Sword=Pedang Baja Mese Sword=Pedang Mese Diamond Sword=Pedang Berlian -Key=Kunci Torch=Obor @1 will intersect protection on growth.=@1 akan memotong perlindungan ketika tumbuh. diff --git a/mods/default/locale/default.it.tr b/mods/default/locale/default.it.tr index d134a29f..dcb5fd48 100644 --- a/mods/default/locale/default.it.tr +++ b/mods/default/locale/default.it.tr @@ -12,8 +12,6 @@ Save= by @1= Page @1 of @2= "@1" by @2="@1" di @2 -Skeleton Key=Chiave dello Scheletro -Key to @1's @2=Chiave per @2 di @1 Blueberries=Mirtilli Book=Libro Book with Text=Libro con testo @@ -212,7 +210,6 @@ Bronze Sword=Spada di bronzo Steel Sword=Spada d'acciaio Mese Sword=Spada di mese Diamond Sword=Spada di diamante -Key=Chiave Torch=Torcia @1 will intersect protection on growth.=@1 crescendo attraverserà la protezione. diff --git a/mods/default/locale/default.jbo.tr b/mods/default/locale/default.jbo.tr index 841142c0..22954d3c 100644 --- a/mods/default/locale/default.jbo.tr +++ b/mods/default/locale/default.jbo.tr @@ -12,8 +12,6 @@ Save=rejgau by @1=la'o zo'i.@1.zo'i te cukta Page @1 of @2=meirmoi fe li @1 li @2 le'i papri "@1" by @2=lo cukta be la'o gy.@1.gy. bei la'o zo'i.@2.zo'i -Skeleton Key=lo greku ckiku -Key to @1's @2=lo ckiku be @2 po la'o zo'i.@1.zo'i Blueberries=lo blajba Book=lo cukta Book with Text=lo cukta joi selci'a @@ -212,6 +210,5 @@ Bronze Sword=lo ransu cladakyxa'i Steel Sword=lo gasta cladakyxa'i Mese Sword=lo za'e kunrmese cladakyxa'i Diamond Sword=lo tabjme cladakyxa'i -Key=lo ckiku Torch=lo fagytergu'i @1 will intersect protection on growth.=.i @1 cu ba kruca lo bandu ca lo nu banro diff --git a/mods/default/locale/default.ms.tr b/mods/default/locale/default.ms.tr index 5ddfe9c8..cb0f4d21 100644 --- a/mods/default/locale/default.ms.tr +++ b/mods/default/locale/default.ms.tr @@ -12,8 +12,6 @@ Save=Simpan by @1=oleh @1 Page @1 of @2=Ms. @1 / @2 "@1" by @2="@1" oleh @2 -Skeleton Key=Kunci Induk -Key to @1's @2=Kunci @2 milik @1 Blueberries=Beri Biru Book=Buku Book with Text=Buku Bertulisan @@ -212,7 +210,6 @@ 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. diff --git a/mods/default/locale/default.pt_BR.tr b/mods/default/locale/default.pt_BR.tr index 2aa5dac3..1c2049fd 100644 --- a/mods/default/locale/default.pt_BR.tr +++ b/mods/default/locale/default.pt_BR.tr @@ -12,8 +12,6 @@ Save=Salvar by @1=por @1 Page @1 of @2=Página @1 de @2 "@1" by @2="@1" por @2 -Skeleton Key=Chave de Mestra -Key to @1's @2=Chave para @2 de @1 Blueberries=Mirtilo Book=Livro Book with Text=Livro com Texto @@ -212,6 +210,5 @@ Bronze Sword=Espada de Bronze Steel Sword=Espada de Aço Mese Sword=Espada de Mese Diamond Sword=Espada de Diamante -Key=Chave Torch=Tocha @1 will intersect protection on growth.=@1 cruzará a proteção no crescimento. diff --git a/mods/default/locale/default.ru.tr b/mods/default/locale/default.ru.tr index 3b87dd5e..507841e0 100644 --- a/mods/default/locale/default.ru.tr +++ b/mods/default/locale/default.ru.tr @@ -12,8 +12,6 @@ Save=Сохранить by @1=@1 Page @1 of @2=Страница @1 из @2 "@1" by @2="@1" @2 -Skeleton Key=Ключ Скелета -Key to @1's @2=Ключ к @2 от @1 Blueberries=Черника Book=Книга Book with Text=Книга с Текстом @@ -212,7 +210,6 @@ Bronze Sword=Бронзовый Меч Steel Sword=Стальной Меч Mese Sword=Месе Меч Diamond Sword=Алмазный Меч -Key=Ключ Torch=Факел @1 will intersect protection on growth.=@1 пересечёт защиту по росту. diff --git a/mods/default/locale/default.se.tr b/mods/default/locale/default.se.tr index c6de58b9..b288c378 100644 --- a/mods/default/locale/default.se.tr +++ b/mods/default/locale/default.se.tr @@ -12,8 +12,6 @@ Save=Spara by @1=av @1 Page @1 of @2=Sida @1 av @2 "@1" by @2="@1" av @2 -Skeleton Key=Skelett Nyckel -Key to @1's @2=Nyckel till @1s @2 Blueberries=Blåbär Book=Bok Book with Text=Bok med text @@ -212,7 +210,6 @@ 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. diff --git a/mods/default/locale/default.sk.tr b/mods/default/locale/default.sk.tr index a6f7cbf5..d85f714b 100644 --- a/mods/default/locale/default.sk.tr +++ b/mods/default/locale/default.sk.tr @@ -12,8 +12,6 @@ Save=Uložiť by @1=od @1 Page @1 of @2=Strana @1 z @2 "@1" by @2=„@1“ z @2 -Skeleton Key=Základný kľuč -Key to @1's @2=Kľuč pre @2 hráča @1 Blueberries=Čučoriedky Book=Kniha Book with Text=Kniha s textom @@ -212,7 +210,6 @@ Bronze Sword=Bronzový meč Steel Sword=Oceľový meč Mese Sword=Mese meč Diamond Sword=Diamantový meč -Key=Kľúč Torch=Fakľa @1 will intersect protection on growth.=@1 prekročí pri raste chránenú zónu. diff --git a/mods/default/locale/default.zh_CN.tr b/mods/default/locale/default.zh_CN.tr index dd26fa13..56b1c5e6 100644 --- a/mods/default/locale/default.zh_CN.tr +++ b/mods/default/locale/default.zh_CN.tr @@ -12,8 +12,6 @@ Save=保存 by @1=由@1 Page @1 of @2=第@1页,共@2页。 "@1" by @2="@1" by @2 -Skeleton Key=万能钥匙 -Key to @1's @2=@1的@2的钥匙 Blueberries=蓝莓 Book=书 Book with Text=带文字的书 @@ -212,7 +210,6 @@ Bronze Sword=青铜剑 Steel Sword=铁剑 Mese Sword=黄石剑 Diamond Sword=钻石剑 -Key=钥匙 Torch=火把 @1 will intersect protection on growth.=@1生长时将与保护区域相交。 diff --git a/mods/default/locale/default.zh_TW.tr b/mods/default/locale/default.zh_TW.tr index 9d088d8d..94d5e183 100644 --- a/mods/default/locale/default.zh_TW.tr +++ b/mods/default/locale/default.zh_TW.tr @@ -12,8 +12,6 @@ Save=保存 by @1=由@1 Page @1 of @2=第@1頁,共@2頁。 "@1" by @2="@1" by @2 -Skeleton Key=萬能鑰匙 -Key to @1's @2=@1的@2的鑰匙 Blueberries=藍莓 Book=書 Book with Text=帶文字的書 @@ -212,7 +210,6 @@ Bronze Sword=青銅劍 Steel Sword=鐵劍 Mese Sword=黃石劍 Diamond Sword=鑽石劍 -Key=鑰匙 Torch=火把 @1 will intersect protection on growth.=@1將與增長的保護相交。 diff --git a/mods/default/locale/template.txt b/mods/default/locale/template.txt index 3b7b2979..13808e9d 100644 --- a/mods/default/locale/template.txt +++ b/mods/default/locale/template.txt @@ -12,8 +12,6 @@ Save= by @1= Page @1 of @2= "@1" by @2= -Skeleton Key= -Key to @1's @2= Blueberries= Book= Book with Text= @@ -212,6 +210,5 @@ Bronze Sword= Steel Sword= Mese Sword= Diamond Sword= -Key= Torch= @1 will intersect protection on growth.= diff --git a/mods/default/tools.lua b/mods/default/tools.lua index 44468c56..1a95a50d 100644 --- a/mods/default/tools.lua +++ b/mods/default/tools.lua @@ -452,46 +452,6 @@ for name, mat in pairs(craft_ingreds) do }) end -minetest.register_tool("default:key", { - description = S("Key"), - inventory_image = "default_key.png", - groups = {key = 1, not_in_creative_inventory = 1}, - stack_max = 1, - on_place = function(itemstack, placer, pointed_thing) - local under = pointed_thing.under - local node = minetest.get_node(under) - local def = minetest.registered_nodes[node.name] - if def and def.on_rightclick and - not (placer and placer:is_player() and - placer:get_player_control().sneak) then - return def.on_rightclick(under, node, placer, itemstack, - pointed_thing) or itemstack - end - if pointed_thing.type ~= "node" then - return itemstack - end - - local pos = pointed_thing.under - node = minetest.get_node(pos) - - if not node or node.name == "ignore" then - return itemstack - end - - local ndef = minetest.registered_nodes[node.name] - if not ndef then - return itemstack - end - - local on_key_use = ndef.on_key_use - if on_key_use then - on_key_use(pos, placer) - end - - return nil - end -}) - minetest.register_craft({ type = "fuel", recipe = "default:pick_wood", diff --git a/mods/keys/README.txt b/mods/keys/README.txt new file mode 100644 index 00000000..86591203 --- /dev/null +++ b/mods/keys/README.txt @@ -0,0 +1,21 @@ +Minetest Game mod: keys +========================== +See license.txt for license information. + +Authors of source code +---------------------- +Originally by celeron55, Perttu Ahola (LGPLv2.1+) +Various Minetest developers and contributors (LGPLv2.1+) + +Authors of media (textures, sounds, models and schematics) +---------------------------------------------------------- + +Textures +-------- +Gambit (CC BY-SA 3.0): + keys_key.png + keys_key_skeleton.png + +Features +-------- +This mod uses the key API as defined in game_api.txt section [Key API]. diff --git a/mods/keys/aliases.lua b/mods/keys/aliases.lua new file mode 100644 index 00000000..4297498b --- /dev/null +++ b/mods/keys/aliases.lua @@ -0,0 +1,6 @@ +-- +-- Aliases for backward compatibility +-- + +minetest.register_alias("default:key", "keys:key") +minetest.register_alias("default:skeleton_key", "keys:skeleton_key") diff --git a/mods/keys/crafting.lua b/mods/keys/crafting.lua new file mode 100644 index 00000000..b9b503a5 --- /dev/null +++ b/mods/keys/crafting.lua @@ -0,0 +1,28 @@ +-- +-- Crafting recipes +-- + +minetest.register_craft({ + output = "keys:skeleton_key", + recipe = { + {"default:gold_ingot"}, + } +}) + +-- +-- Cooking recipes +-- + +minetest.register_craft({ + type = "cooking", + output = "default:gold_ingot", + recipe = "keys:key", + cooktime = 5, +}) + +minetest.register_craft({ + type = "cooking", + output = "default:gold_ingot", + recipe = "keys:skeleton_key", + cooktime = 5, +}) diff --git a/mods/keys/craftitems.lua b/mods/keys/craftitems.lua new file mode 100644 index 00000000..e4187586 --- /dev/null +++ b/mods/keys/craftitems.lua @@ -0,0 +1,102 @@ +-- Load support for MT game translation. +local S = minetest.get_translator("keys") + +-- +-- Craftitems +-- + +minetest.register_craftitem("keys:skeleton_key", { + description = S("Skeleton Key"), + inventory_image = "keys_key_skeleton.png", + on_use = function(itemstack, user, pointed_thing) + if pointed_thing.type ~= "node" then + return itemstack + end + + local pos = pointed_thing.under + local node = minetest.get_node(pos) + + if not node then + return itemstack + end + + local node_reg = minetest.registered_nodes[node.name] + local on_skeleton_key_use = node_reg and node_reg.on_skeleton_key_use + if not on_skeleton_key_use then + return itemstack + end + + -- make a new key secret in case the node callback needs it + local random = math.random + local newsecret = string.format( + "%04x%04x%04x%04x", + random(2^16) - 1, random(2^16) - 1, + random(2^16) - 1, random(2^16) - 1) + + local secret, _, _ = on_skeleton_key_use(pos, user, newsecret) + + if secret then + local inv = minetest.get_inventory({type="player", name=user:get_player_name()}) + + -- update original itemstack + itemstack:take_item() + + -- finish and return the new key + local new_stack = ItemStack("keys:key") + local meta = new_stack:get_meta() + meta:set_string("secret", secret) + meta:set_string("description", S("Key to @1's @2", user:get_player_name(), + minetest.registered_nodes[node.name].description)) + + if itemstack:get_count() == 0 then + itemstack = new_stack + else + if inv:add_item("main", new_stack):get_count() > 0 then + minetest.add_item(user:get_pos(), new_stack) + end -- else: added to inventory successfully + end + + return itemstack + end + end +}) + +minetest.register_tool("keys:key", { + description = S("Key"), + inventory_image = "keys_key.png", + groups = {key = 1, not_in_creative_inventory = 1}, + stack_max = 1, + on_place = function(itemstack, placer, pointed_thing) + local under = pointed_thing.under + local node = minetest.get_node(under) + local def = minetest.registered_nodes[node.name] + if def and def.on_rightclick and + not (placer and placer:is_player() and + placer:get_player_control().sneak) then + return def.on_rightclick(under, node, placer, itemstack, + pointed_thing) or itemstack + end + if pointed_thing.type ~= "node" then + return itemstack + end + + local pos = pointed_thing.under + node = minetest.get_node(pos) + + if not node or node.name == "ignore" then + return itemstack + end + + local ndef = minetest.registered_nodes[node.name] + if not ndef then + return itemstack + end + + local on_key_use = ndef.on_key_use + if on_key_use then + on_key_use(pos, placer) + end + + return nil + end +}) diff --git a/mods/keys/init.lua b/mods/keys/init.lua new file mode 100644 index 00000000..6c2ed825 --- /dev/null +++ b/mods/keys/init.lua @@ -0,0 +1,6 @@ +-- Minetest mod: keys +local keys_path = minetest.get_modpath("keys") + +dofile(keys_path.."/craftitems.lua") +dofile(keys_path.."/crafting.lua") +dofile(keys_path.."/aliases.lua") diff --git a/mods/keys/license.txt b/mods/keys/license.txt new file mode 100644 index 00000000..95f02ef9 --- /dev/null +++ b/mods/keys/license.txt @@ -0,0 +1,52 @@ +License of source code +---------------------- + +GNU Lesser General Public License, version 2.1 +Copyright (C) 2011-2018 celeron55, Perttu Ahola +Copyright (C) 2011-2018 Various Minetest developers and contributors + +This program is free software; you can redistribute it and/or modify it under the terms +of the GNU Lesser General Public License as published by the Free Software Foundation; +either version 2.1 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +See the GNU Lesser General Public License for more details: +https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html + + +Licenses of media (textures, models and sounds) +----------------------------------------------- + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +Copyright (C) 2010-2018: + + Gambit + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must distribute +your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/mods/keys/locale/keys.de.tr b/mods/keys/locale/keys.de.tr new file mode 100644 index 00000000..499a6ba7 --- /dev/null +++ b/mods/keys/locale/keys.de.tr @@ -0,0 +1,5 @@ +# textdomain: keys + +Key=Schlüssel +Key to @1's @2=Schlüssel für @2 von @1 +Skeleton Key=Skelettschlüssel diff --git a/mods/keys/locale/keys.eo.tr b/mods/keys/locale/keys.eo.tr new file mode 100644 index 00000000..e73f6c4e --- /dev/null +++ b/mods/keys/locale/keys.eo.tr @@ -0,0 +1,5 @@ +# textdomain: keys + +Key=Ŝlosilo +Key to @1's @2=Ŝlosilo por la @2 de @1 +Skeleton Key=Skeleta Ŝlosilo diff --git a/mods/keys/locale/keys.es.tr b/mods/keys/locale/keys.es.tr new file mode 100644 index 00000000..e408c32a --- /dev/null +++ b/mods/keys/locale/keys.es.tr @@ -0,0 +1,5 @@ +# textdomain: keys + +Key=Llave +Key to @1's @2=Llave para @2 de @1 +Skeleton Key=Llave esqueleto diff --git a/mods/keys/locale/keys.fr.tr b/mods/keys/locale/keys.fr.tr new file mode 100644 index 00000000..b1b9e6a8 --- /dev/null +++ b/mods/keys/locale/keys.fr.tr @@ -0,0 +1,5 @@ +# textdomain: keys + +Key=Clé +Key to @1's @2=Clé pour @2 de @1 +Skeleton Key=Squelette diff --git a/mods/keys/locale/keys.id.tr b/mods/keys/locale/keys.id.tr new file mode 100644 index 00000000..58f8fc55 --- /dev/null +++ b/mods/keys/locale/keys.id.tr @@ -0,0 +1,5 @@ +# textdomain: keys + +Key=Kunci +Key to @1's @2=Kunci @2 milik @1 +Skeleton Key=Kunci Induk diff --git a/mods/keys/locale/keys.it.tr b/mods/keys/locale/keys.it.tr new file mode 100644 index 00000000..ed7bb312 --- /dev/null +++ b/mods/keys/locale/keys.it.tr @@ -0,0 +1,5 @@ +# textdomain: keys + +Key=Chiave +Key to @1's @2=Chiave per @2 di @1 +Skeleton Key=Chiave dello Scheletro diff --git a/mods/keys/locale/keys.jbo.tr b/mods/keys/locale/keys.jbo.tr new file mode 100644 index 00000000..bd12f09b --- /dev/null +++ b/mods/keys/locale/keys.jbo.tr @@ -0,0 +1,5 @@ +# textdomain: keys + +Key=lo ckiku +Key to @1's @2=lo ckiku be @2 po la'o zo'i.@1.zo'i +Skeleton Key=lo greku ckiku diff --git a/mods/keys/locale/keys.ms.tr b/mods/keys/locale/keys.ms.tr new file mode 100644 index 00000000..58f8fc55 --- /dev/null +++ b/mods/keys/locale/keys.ms.tr @@ -0,0 +1,5 @@ +# textdomain: keys + +Key=Kunci +Key to @1's @2=Kunci @2 milik @1 +Skeleton Key=Kunci Induk diff --git a/mods/keys/locale/keys.pt_BR.tr b/mods/keys/locale/keys.pt_BR.tr new file mode 100644 index 00000000..ef9ca1ee --- /dev/null +++ b/mods/keys/locale/keys.pt_BR.tr @@ -0,0 +1,5 @@ +# textdomain: keys + +Key=Chave +Key to @1's @2=Chave para @2 de @1 +Skeleton Key=Chave de Mestra diff --git a/mods/keys/locale/keys.ru.tr b/mods/keys/locale/keys.ru.tr new file mode 100644 index 00000000..00b4e097 --- /dev/null +++ b/mods/keys/locale/keys.ru.tr @@ -0,0 +1,5 @@ +# textdomain: keys + +Key=Ключ +Key to @1's @2=Ключ к @2 от @1 +Skeleton Key=Ключ Скелета diff --git a/mods/keys/locale/keys.se.tr b/mods/keys/locale/keys.se.tr new file mode 100644 index 00000000..2d901df9 --- /dev/null +++ b/mods/keys/locale/keys.se.tr @@ -0,0 +1,5 @@ +# textdomain: keys + +Key=Nyckel +Key to @1's @2=Nyckel till @1s @2 +Skeleton Key=Skelett Nyckel diff --git a/mods/keys/locale/keys.zh_CN.tr b/mods/keys/locale/keys.zh_CN.tr new file mode 100644 index 00000000..57f632ae --- /dev/null +++ b/mods/keys/locale/keys.zh_CN.tr @@ -0,0 +1,5 @@ +# textdomain: keys + +Key=钥匙 +Key to @1's @2=@1的@2的钥匙 +Skeleton Key=万能钥匙 diff --git a/mods/keys/locale/keys.zh_TW.tr b/mods/keys/locale/keys.zh_TW.tr new file mode 100644 index 00000000..c97879ca --- /dev/null +++ b/mods/keys/locale/keys.zh_TW.tr @@ -0,0 +1,5 @@ +# textdomain: keys + +Key=鑰匙 +Key to @1's @2=@1的@2的鑰匙 +Skeleton Key=萬能鑰匙 diff --git a/mods/keys/locale/template.txt b/mods/keys/locale/template.txt new file mode 100644 index 00000000..9fbf62fd --- /dev/null +++ b/mods/keys/locale/template.txt @@ -0,0 +1,5 @@ +# textdomain: keys + +Key= +Key to @1's @2= +Skeleton Key= diff --git a/mods/keys/mod.conf b/mods/keys/mod.conf new file mode 100644 index 00000000..8b8d6693 --- /dev/null +++ b/mods/keys/mod.conf @@ -0,0 +1,3 @@ +name = keys +description = Minetest Game mod: keys +depends = default diff --git a/mods/default/textures/default_key.png b/mods/keys/textures/keys_key.png similarity index 100% rename from mods/default/textures/default_key.png rename to mods/keys/textures/keys_key.png diff --git a/mods/default/textures/default_key_skeleton.png b/mods/keys/textures/keys_key_skeleton.png similarity index 100% rename from mods/default/textures/default_key_skeleton.png rename to mods/keys/textures/keys_key_skeleton.png From fff3b98ab0d1f47e2869ea83ec24da7faf41c80c Mon Sep 17 00:00:00 2001 From: Louis Royer <55180044+louisroyer@users.noreply.github.com> Date: Sun, 12 Jul 2020 14:36:49 +0200 Subject: [PATCH 22/36] Make keys stackable if they contain the same secret (Fix #2714) --- mods/keys/craftitems.lua | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mods/keys/craftitems.lua b/mods/keys/craftitems.lua index e4187586..45e0b824 100644 --- a/mods/keys/craftitems.lua +++ b/mods/keys/craftitems.lua @@ -61,11 +61,10 @@ minetest.register_craftitem("keys:skeleton_key", { end }) -minetest.register_tool("keys:key", { +minetest.register_craftitem("keys:key", { description = S("Key"), inventory_image = "keys_key.png", groups = {key = 1, not_in_creative_inventory = 1}, - stack_max = 1, on_place = function(itemstack, placer, pointed_thing) local under = pointed_thing.under local node = minetest.get_node(under) From bcd1ee048e735442c5a43af6f7edfada4b8e834c Mon Sep 17 00:00:00 2001 From: Olivier Dragon Date: Sat, 29 Jan 2022 10:27:19 -0500 Subject: [PATCH 23/36] Update french translations (#2922) * Update french translations for beds, farming and fire * Update french translations for mtg_craftguide * Update french translations for default * Correct typos * Restore new line at end of file * Shorten translation for better display Co-authored-by: Hugo Locurcio --- mods/beds/locale/beds.fr.tr | 4 +- mods/default/locale/default.fr.tr | 44 +++++++++---------- mods/farming/locale/farming.fr.tr | 10 ++--- mods/fire/locale/fire.fr.tr | 4 +- .../locale/mtg_craftguide.fr.tr | 31 ++++++------- 5 files changed, 47 insertions(+), 46 deletions(-) diff --git a/mods/beds/locale/beds.fr.tr b/mods/beds/locale/beds.fr.tr index e1f8e560..43c06e3c 100644 --- a/mods/beds/locale/beds.fr.tr +++ b/mods/beds/locale/beds.fr.tr @@ -1,8 +1,8 @@ # textdomain: beds Fancy Bed=Lit chic Simple Bed=Lit simple -This bed is already occupied!= -You have to stop moving before going to bed!= +This bed is already occupied!=Ce lit est déjà occupé ! +You have to stop moving before going to bed!=Vous devez arrêter de bouger avant de vous coucher ! Good morning.=Bonjour. @1 of @2 players are in bed=@1 joueur(s) sur @2 sont au lit Force night skip=Forcer le passage de la nuit diff --git a/mods/default/locale/default.fr.tr b/mods/default/locale/default.fr.tr index 71887400..8e2cd67b 100644 --- a/mods/default/locale/default.fr.tr +++ b/mods/default/locale/default.fr.tr @@ -4,8 +4,8 @@ Locked Chest (owned by @1)=Coffre verrouillé (possédé par @1) You do not own this chest.=Ce coffre ne vous appartient pas. a locked chest=un coffre verrouillé Chest=Coffre -Write= -Read= +Write=Écrire +Read=Lire Title:=Titre : Contents:=Contenu : Save=Sauvegarder @@ -63,16 +63,16 @@ Silver Sandstone Brick=Brique de grès argenté Silver Sandstone Block=Bloc de grès argenté Obsidian=Obsidienne Obsidian Brick=Brique d'obsidienne -Obsidian Block=Block d'obsidienne +Obsidian Block=Bloc d'obsidienne Dirt=Terre Dirt with Grass=Terre avec de l'herbe Dirt with Grass and Footsteps=Terre avec de l'herbe et des traces de pas -Dirt with Savanna Grass= +Dirt with Savanna Grass=Terre avec de l'herbe de savane Dirt with Snow=Terre avec de la neige Dirt with Rainforest Litter=Terre avec sol de forêt humide Dirt with Coniferous Litter=Terre avec sol de forêt de conifère -Savanna Dirt= -Savanna Dirt with Savanna Grass= +Savanna Dirt=Terre de la savane +Savanna Dirt with Savanna Grass=Terre de la savane avec son herbe Permafrost=Pergélisol Permafrost with Stones=Pergélisol avec de la pierre Permafrost with Moss=Pergélisol avec de la mousse @@ -129,7 +129,7 @@ Papyrus=Papyrus Dry Shrub=Arbuste sec Jungle Grass=Herbe de la jungle Grass=Herbe -Savanna Grass= +Savanna Grass=Herbe de la savane Fern=Fougère Marram Grass=Ammophile Bush Stem=Tige de buisson @@ -152,11 +152,11 @@ Brown Coral=Corail marron Orange Coral=Corail orange Coral Skeleton=Squelette de corail Water Source=Source d'eau -Flowing Water=Ecoulement d'eau +Flowing Water=Écoulement d'eau River Water Source=Source d'eau de rivière -Flowing River Water=Ecoulement d'eau de rivière +Flowing River Water=Écoulement d'eau de rivière Lava Source=Source de lave -Flowing Lava=Ecoulement de lave +Flowing Lava=Écoulement de lave Empty Bookshelf=Bibliothèque vide Bookshelf (@1 written, @2 empty books)=Bibliothèque (@1 écrits, @2 livres vides) Bookshelf=Bibliothèque @@ -164,8 +164,8 @@ Text too long=Texte trop longue "@1"=« @1 » Wooden Sign=Panneau en bois Steel Sign=Panneau en acier -Wooden Ladder=Echelle en bois -Steel Ladder=Echelle en acier +Wooden Ladder=Échelle en bois +Steel Ladder=Échelle en acier Apple Wood Fence=Barrière de bois de pommier Acacia Wood Fence=Barrière de bois d'acacia Jungle Wood Fence=Barrière de bois de la jungle @@ -180,11 +180,11 @@ Glass=Verre Obsidian Glass=Verre d'obsidienne Brick Block=Bloc de brique Mese Lamp=Lampe de Mese -Apple Wood Mese Post Light= -Acacia Wood Mese Post Light= -Jungle Wood Mese Post Light= -Pine Wood Mese Post Light= -Aspen Wood Mese Post Light= +Apple Wood Mese Post Light=Réverbère de Mese en bois de pommier +Acacia Wood Mese Post Light=Réverbère de Mese en bois d'acacia +Jungle Wood Mese Post Light=Réverbère de Mese en bois de la jungle +Pine Wood Mese Post Light=Réverbère de Mese en bois de pin +Aspen Wood Mese Post Light=Réverbère de Mese en bois de tremble Cloud=Nuage Wooden Pickaxe=Pioche en bois Stone Pickaxe=Pioche en pierre @@ -205,11 +205,11 @@ Steel Axe=Hache en acier Mese Axe=Hache en Mese Diamond Axe=Hache en diamant Wooden Sword=Epée en bois -Stone Sword=Epée en pierre -Bronze Sword=Epée en bronze -Steel Sword=Epée en acier -Mese Sword=Epée en Mese -Diamond Sword=Epée en diamant +Stone Sword=Épée en pierre +Bronze Sword=Épée en bronze +Steel Sword=Épée en acier +Mese Sword=Épée en Mese +Diamond Sword=Épée en diamant Torch=Torche @1 will intersect protection on growth.=@1 chevauchera la zone protégée avec la croissance. diff --git a/mods/farming/locale/farming.fr.tr b/mods/farming/locale/farming.fr.tr index 84d52b0a..826949e1 100644 --- a/mods/farming/locale/farming.fr.tr +++ b/mods/farming/locale/farming.fr.tr @@ -1,6 +1,6 @@ # textdomain: farming -Hoe= -Seed= +Hoe=Houe +Seed=Grain Wooden Hoe=Houe en bois Stone Hoe=Houe en pierre Steel Hoe=Houe en acier @@ -16,8 +16,8 @@ Cotton=Coton String=Ficelle Soil=Sol Wet Soil=Sol humide -Savanna Soil= -Wet Savanna Soil= +Savanna Soil=Sol de la savanne +Wet Savanna Soil=Sol de la savanne humide Desert Sand Soil=Sol de sable du désert Wet Desert Sand Soil=Sol de sable du désert humide Straw=Paille @@ -25,7 +25,7 @@ Straw Stair=Escalier de paille Inner Straw Stair=Escalier intérieur en paille Outer Straw Stair=Escalier extérieur en paille Straw Slab=Dalle de paille -Wild Cotton= +Wild Cotton=Coton sauvage ##### not used anymore ##### diff --git a/mods/fire/locale/fire.fr.tr b/mods/fire/locale/fire.fr.tr index a16b4718..4d5d08ac 100644 --- a/mods/fire/locale/fire.fr.tr +++ b/mods/fire/locale/fire.fr.tr @@ -1,6 +1,6 @@ # textdomain: fire -Fire= -Permanent Fire= +Fire=Feu +Permanent Fire=Feu qui brûle en permanence Flint and Steel=Briquet à silex en acier diff --git a/mods/mtg_craftguide/locale/mtg_craftguide.fr.tr b/mods/mtg_craftguide/locale/mtg_craftguide.fr.tr index 78ab6ebb..afc82249 100644 --- a/mods/mtg_craftguide/locale/mtg_craftguide.fr.tr +++ b/mods/mtg_craftguide/locale/mtg_craftguide.fr.tr @@ -1,4 +1,5 @@ # textdomain: mtg_craftguide + Any coal=Quelconque charbon Any sand=Quelconque sable Any wool=Quelconque laine @@ -30,24 +31,24 @@ Any magenta dye=Quelconque colorant magenta Any dark grey dye=Quelconque colorant gris foncé Any dark green dye=Quelconque colorant vert foncé # Label for group ingredients -G= +G=G Any item belonging to the group(s): @1=Tout item appartenant au(x) groupe(s) : @1 -Unknown Item= -Fuel= +Unknown Item=Object inconnu +Fuel=Combustible Usage @1 of @2=Usage @1 sur @2 Recipe @1 of @2=Recette @1 sur @2 -Previous recipe= -Next recipe= -Recipe is too big to be displayed.= +Previous recipe=Recette précédente +Next recipe=Prochaine recette +Recipe is too big to be displayed.=Recette trop grande pour être affichée. Shapeless=Sans forme Cooking time: @1=Temps de cuisson : @1 -Search= -Reset= -Previous page= -Next page= -No items to show.= -No usages.= -Click again to show recipes.= -No recipes.= -Click again to show usages.= +Search=Recherche +Reset=Réinitialiser +Previous page=Page précédente +Next page=Prochaine page +No items to show.=Aucun item à afficher. +No usages.=Sans utilité. +Click again to show recipes.=Cliquez encore pour afficher la recette. +No recipes.=Aucune recette. +Click again to show usages.=Cliquez encore pour afficher l'usage. Recipes=Recettes From c8a1454e2bdcbdb18ab2a79b1038e4b26b8a010a Mon Sep 17 00:00:00 2001 From: ROllerozxa Date: Sat, 29 Jan 2022 18:35:45 +0100 Subject: [PATCH 24/36] Fix and update Swedish translation (#2920) --- mods/beds/locale/beds.se.tr | 10 - mods/beds/locale/beds.sv.tr | 10 + mods/binoculars/locale/binoculars.se.tr | 3 - mods/binoculars/locale/binoculars.sv.tr | 3 + .../boats/locale/{boats.se.tr => boats.sv.tr} | 0 .../bones/locale/{bones.se.tr => bones.sv.tr} | 0 mods/bucket/locale/bucket.se.tr | 5 - mods/bucket/locale/bucket.sv.tr | 5 + .../{butterflies.se.tr => butterflies.sv.tr} | 0 .../carts/locale/{carts.se.tr => carts.sv.tr} | 2 +- mods/creative/locale/creative.se.tr | 10 - mods/creative/locale/creative.sv.tr | 10 + mods/default/locale/default.se.tr | 223 ------------------ mods/default/locale/default.sv.tr | 217 +++++++++++++++++ mods/doors/locale/doors.se.tr | 18 -- mods/doors/locale/doors.sv.tr | 18 ++ mods/dye/locale/dye.se.tr | 16 -- mods/dye/locale/dye.sv.tr | 16 ++ mods/farming/locale/farming.se.tr | 34 --- mods/farming/locale/farming.sv.tr | 28 +++ mods/fire/locale/fire.se.tr | 10 - mods/fire/locale/fire.sv.tr | 4 + .../{fireflies.se.tr => fireflies.sv.tr} | 4 +- mods/flowers/locale/flowers.se.tr | 12 - mods/flowers/locale/flowers.sv.tr | 12 + ...ame_commands.se.tr => game_commands.sv.tr} | 2 +- mods/keys/locale/{keys.se.tr => keys.sv.tr} | 2 +- mods/map/locale/map.se.tr | 3 - mods/map/locale/map.sv.tr | 3 + .../locale/mtg_craftguide.sv.tr | 53 +++++ .../{screwdriver.se.tr => screwdriver.sv.tr} | 0 .../locale/{sethome.se.tr => sethome.sv.tr} | 4 +- .../sfinv/locale/{sfinv.se.tr => sfinv.sv.tr} | 0 mods/stairs/locale/stairs.se.tr | 145 ------------ mods/stairs/locale/stairs.sv.tr | 145 ++++++++++++ mods/tnt/locale/{tnt.se.tr => tnt.sv.tr} | 0 mods/vessels/locale/vessels.se.tr | 8 - mods/vessels/locale/vessels.sv.tr | 8 + mods/walls/locale/walls.se.tr | 4 - mods/walls/locale/walls.sv.tr | 4 + mods/wool/locale/wool.se.tr | 16 -- mods/wool/locale/wool.sv.tr | 16 ++ mods/xpanes/locale/xpanes.se.tr | 6 - mods/xpanes/locale/xpanes.sv.tr | 6 + 44 files changed, 565 insertions(+), 530 deletions(-) delete mode 100644 mods/beds/locale/beds.se.tr create mode 100644 mods/beds/locale/beds.sv.tr delete mode 100644 mods/binoculars/locale/binoculars.se.tr create mode 100644 mods/binoculars/locale/binoculars.sv.tr rename mods/boats/locale/{boats.se.tr => boats.sv.tr} (100%) rename mods/bones/locale/{bones.se.tr => bones.sv.tr} (100%) delete mode 100644 mods/bucket/locale/bucket.se.tr create mode 100644 mods/bucket/locale/bucket.sv.tr rename mods/butterflies/locale/{butterflies.se.tr => butterflies.sv.tr} (100%) rename mods/carts/locale/{carts.se.tr => carts.sv.tr} (84%) delete mode 100644 mods/creative/locale/creative.se.tr create mode 100644 mods/creative/locale/creative.sv.tr delete mode 100644 mods/default/locale/default.se.tr create mode 100644 mods/default/locale/default.sv.tr delete mode 100644 mods/doors/locale/doors.se.tr create mode 100644 mods/doors/locale/doors.sv.tr delete mode 100644 mods/dye/locale/dye.se.tr create mode 100644 mods/dye/locale/dye.sv.tr delete mode 100644 mods/farming/locale/farming.se.tr create mode 100644 mods/farming/locale/farming.sv.tr delete mode 100644 mods/fire/locale/fire.se.tr create mode 100644 mods/fire/locale/fire.sv.tr rename mods/fireflies/locale/{fireflies.se.tr => fireflies.sv.tr} (62%) delete mode 100644 mods/flowers/locale/flowers.se.tr create mode 100644 mods/flowers/locale/flowers.sv.tr rename mods/game_commands/locale/{game_commands.se.tr => game_commands.sv.tr} (72%) rename mods/keys/locale/{keys.se.tr => keys.sv.tr} (69%) delete mode 100644 mods/map/locale/map.se.tr create mode 100644 mods/map/locale/map.sv.tr create mode 100644 mods/mtg_craftguide/locale/mtg_craftguide.sv.tr rename mods/screwdriver/locale/{screwdriver.se.tr => screwdriver.sv.tr} (100%) rename mods/sethome/locale/{sethome.se.tr => sethome.sv.tr} (71%) rename mods/sfinv/locale/{sfinv.se.tr => sfinv.sv.tr} (100%) delete mode 100644 mods/stairs/locale/stairs.se.tr create mode 100644 mods/stairs/locale/stairs.sv.tr rename mods/tnt/locale/{tnt.se.tr => tnt.sv.tr} (100%) delete mode 100644 mods/vessels/locale/vessels.se.tr create mode 100644 mods/vessels/locale/vessels.sv.tr delete mode 100644 mods/walls/locale/walls.se.tr create mode 100644 mods/walls/locale/walls.sv.tr delete mode 100644 mods/wool/locale/wool.se.tr create mode 100644 mods/wool/locale/wool.sv.tr delete mode 100644 mods/xpanes/locale/xpanes.se.tr create mode 100644 mods/xpanes/locale/xpanes.sv.tr diff --git a/mods/beds/locale/beds.se.tr b/mods/beds/locale/beds.se.tr deleted file mode 100644 index b4d52ba0..00000000 --- a/mods/beds/locale/beds.se.tr +++ /dev/null @@ -1,10 +0,0 @@ -# textdomain: beds -Fancy Bed=Fin säng -Simple Bed=Enkel Säng -This bed is already occupied!= -You have to stop moving before going to bed!= -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. -Leave Bed=Lämna Säng diff --git a/mods/beds/locale/beds.sv.tr b/mods/beds/locale/beds.sv.tr new file mode 100644 index 00000000..3b737b46 --- /dev/null +++ b/mods/beds/locale/beds.sv.tr @@ -0,0 +1,10 @@ +# textdomain: beds +Fancy Bed=Fin säng +Simple Bed=Enkel säng +This bed is already occupied!=Den här sängen används redan! +You have to stop moving before going to bed!=Du måste stanna innan du kan lägga dig! +Good morning.=God morgon. +@1 of @2 players are in bed=@1 av @2 spelare försöker sova. +Force night skip=Tvinga att hoppa över natt +You can only sleep at night.=Du kan bara sova på natten. +Leave Bed=Lämna säng diff --git a/mods/binoculars/locale/binoculars.se.tr b/mods/binoculars/locale/binoculars.se.tr deleted file mode 100644 index 90326720..00000000 --- a/mods/binoculars/locale/binoculars.se.tr +++ /dev/null @@ -1,3 +0,0 @@ -# textdomain: binoculars -Binoculars=Kikare -Use with 'Zoom' key=Används med 'Zoom' knappen diff --git a/mods/binoculars/locale/binoculars.sv.tr b/mods/binoculars/locale/binoculars.sv.tr new file mode 100644 index 00000000..f8a01db2 --- /dev/null +++ b/mods/binoculars/locale/binoculars.sv.tr @@ -0,0 +1,3 @@ +# textdomain: binoculars +Binoculars=Kikare +Use with 'Zoom' key=Använd med 'Zoom'-knappen diff --git a/mods/boats/locale/boats.se.tr b/mods/boats/locale/boats.sv.tr similarity index 100% rename from mods/boats/locale/boats.se.tr rename to mods/boats/locale/boats.sv.tr diff --git a/mods/bones/locale/bones.se.tr b/mods/bones/locale/bones.sv.tr similarity index 100% rename from mods/bones/locale/bones.se.tr rename to mods/bones/locale/bones.sv.tr diff --git a/mods/bucket/locale/bucket.se.tr b/mods/bucket/locale/bucket.se.tr deleted file mode 100644 index 105b5d3e..00000000 --- a/mods/bucket/locale/bucket.se.tr +++ /dev/null @@ -1,5 +0,0 @@ -# textdomain: bucket -Empty Bucket=Tom hink -Water Bucket=Vatten hink -River Water Bucket=Flodvatten hink -Lava Bucket=Lava hink diff --git a/mods/bucket/locale/bucket.sv.tr b/mods/bucket/locale/bucket.sv.tr new file mode 100644 index 00000000..59ee62df --- /dev/null +++ b/mods/bucket/locale/bucket.sv.tr @@ -0,0 +1,5 @@ +# textdomain: bucket +Empty Bucket=Tom hink +Water Bucket=Vattenhink +River Water Bucket=Flodvattenshink +Lava Bucket=Lavahink diff --git a/mods/butterflies/locale/butterflies.se.tr b/mods/butterflies/locale/butterflies.sv.tr similarity index 100% rename from mods/butterflies/locale/butterflies.se.tr rename to mods/butterflies/locale/butterflies.sv.tr diff --git a/mods/carts/locale/carts.se.tr b/mods/carts/locale/carts.sv.tr similarity index 84% rename from mods/carts/locale/carts.se.tr rename to mods/carts/locale/carts.sv.tr index b59871f2..0521ca85 100644 --- a/mods/carts/locale/carts.se.tr +++ b/mods/carts/locale/carts.sv.tr @@ -3,4 +3,4 @@ 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 +Brake Rail=Bromsräls diff --git a/mods/creative/locale/creative.se.tr b/mods/creative/locale/creative.se.tr deleted file mode 100644 index 3b5da58f..00000000 --- a/mods/creative/locale/creative.se.tr +++ /dev/null @@ -1,10 +0,0 @@ -# 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 diff --git a/mods/creative/locale/creative.sv.tr b/mods/creative/locale/creative.sv.tr new file mode 100644 index 00000000..a9a741f4 --- /dev/null +++ b/mods/creative/locale/creative.sv.tr @@ -0,0 +1,10 @@ +# textdomain: creative +Allow player to use creative inventory=Tillåt spelare att använda kreativa saker +Search=Sök +Reset=Återställ +Previous page=Förra sida +Next page=Nästa sida +All=Alla +Nodes=Noder +Tools=Verktyg +Items=Saker diff --git a/mods/default/locale/default.se.tr b/mods/default/locale/default.se.tr deleted file mode 100644 index b288c378..00000000 --- a/mods/default/locale/default.se.tr +++ /dev/null @@ -1,223 +0,0 @@ -# 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 -Write= -Read= -Title:=Titel: -Contents:=Innehåll: -Save=Spara -by @1=av @1 -Page @1 of @2=Sida @1 av @2 -"@1" by @2="@1" av @2 -Blueberries=Blåbär -Book=Bok -Book with Text=Bok med text -Bronze Ingot=Brons tacka -Clay Brick=Tegelsten -Clay Lump=Lerklump -Coal Lump=Kol Klumo -Copper Ingot=Koppar tacka -Copper Lump=Koppar Klump -Diamond=Diamant -Flint=Flinta -Gold Ingot=Guld tacka -Gold Lump=Guld Klump -Iron Lump=Järn Klump -Mese Crystal=Mese Kristall -Mese Crystal Fragment=Mese Kristall Fragment -Obsidian Shard=Obsidian Skärva -Paper=Papper -Steel Ingot=Stål tacka -Stick=Pinne -Tin Ingot=Tenn tacka -Tin Lump=Tenn Klump -Furnace is empty=Ugnen är tom -100% (output full)=100% (utgången full) -@1%=@1% -Not cookable=Inte kokbar -Empty=Tom -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 Savanna Grass= -Dirt with Snow=Jord med snö -Dirt with Rainforest Litter=Jord med regnskogströ -Dirt with Coniferous Litter=Jord med Barrträd -Savanna Dirt= -Savanna Dirt with Savanna Grass= -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 -Savanna Grass= -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 -"@1"="@1" -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 -Apple Wood Mese Post Light= -Acacia Wood Mese Post Light= -Jungle Wood Mese Post Light= -Pine Wood Mese Post Light= -Aspen Wood Mese Post Light= -Cloud=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 -Torch=Fakla -@1 will intersect protection on growth.=@1 kommer korsa skyddet mot tillväxt. - - -##### not used anymore ##### - -Dirt with Dry Grass=Jord med torrt gräs -Dry Dirt=Torr jord -Dry Dirt with Dry Grass=Torr jord med torrt gräs -Dry Grass=Torrt Gräs -Mese Post Light=Mese Postljus diff --git a/mods/default/locale/default.sv.tr b/mods/default/locale/default.sv.tr new file mode 100644 index 00000000..4cfbde0c --- /dev/null +++ b/mods/default/locale/default.sv.tr @@ -0,0 +1,217 @@ +# 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 kista. +a locked chest=en låst kista +Chest=Kista +Write=Skriva +Read=Läs +Title:=Titel: +Contents:=Innehåll: +Save=Spara +by @1=av @1 +Page @1 of @2=Sida @1 av @2 +"@1" by @2="@1" av @2 +Skeleton Key=Skelettnyckel +Key to @1's @2=Nyckel till @1s @2 +Blueberries=Blåbär +Book=Bok +Book with Text=Bok med text +Bronze Ingot=Bronstacka +Clay Brick=Tegelsten +Clay Lump=Lerklump +Coal Lump=Kolklump +Copper Ingot=Koppartacka +Copper Lump=Kopparklump +Diamond=Diamant +Flint=Flinta +Gold Ingot=Guldtacka +Gold Lump=Guldklump +Iron Lump=Järnklump +Mese Crystal=Mesekristall +Mese Crystal Fragment=Mesekristallfragment +Obsidian Shard=Obsidianskärva +Paper=Papper +Steel Ingot=Ståltacka +Stick=Pinne +Tin Ingot=Tenntacka +Tin Lump=Tennklump +Furnace is empty=Ugnen är tom +100% (output full)=100% (utgången full) +@1%=@1% +Not cookable=Inte kokbar +Empty=Tom +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=Stenblock +Mossy Cobblestone=Mossig kullersten +Desert Stone=Ökensten +Desert Cobblestone=Ökenkullersten +Desert Stone Brick=Ökenstenstegel +Desert Stone Block=Ökenstensblock +Sandstone=Sandsten +Sandstone Brick=Sandstenstegel +Sandstone Block=Sandstensblock +Desert Sandstone=Ökensandsten +Desert Sandstone Brick=Ökensandstenstegel +Desert Sandstone Block=Ökensandstensblock +Silver Sandstone=Silversandsten +Silver Sandstone Brick=Silversandstenstegel +Silver Sandstone Block=Silversandstensblock +Obsidian=Obsidian +Obsidian Brick=Obsidiantegel +Obsidian Block=Obsidianblock +Dirt=Jord +Dirt with Grass=Jord med gräs +Dirt with Grass and Footsteps=Jord med gräs och fotsteg +Dirt with Savanna Grass=Jord med savanngräs +Dirt with Snow=Jord med snö +Dirt with Rainforest Litter=Jord med regnskogströ +Dirt with Coniferous Litter=Jord med barrträd +Savanna Dirt=Savannjord +Savanna Dirt with Savanna Grass=Savannjord med savanngräs +Permafrost=Permafrost +Permafrost with Stones=Permafrost med sten +Permafrost with Moss=Permafrost med mossa +Sand=Sand +Desert Sand=Ökensand +Silver Sand=Silversand +Gravel=Grus +Clay=Lera +Snow=Snö +Snow Block=Snöblock +Ice=Is +Cave Ice=Grottis +Apple Tree=Äppleträd +Apple Wood Planks=Äppleträdplankor +Apple Tree Sapling=Äppleplanta +Apple Tree Leaves=Äpplelöv +Apple=Äpple +Apple Marker=Äpplemarkör +Jungle Tree=Djungelträd +Jungle Wood Planks=Djungelplankor +Jungle Tree Leaves=Djungellöv +Jungle Tree Sapling=Djungelplanta +Emergent Jungle Tree Sapling=Nybliven djungelplanta +Pine Tree=Tall +Pine Wood Planks=Tallplankor +Pine Needles=Granbarr +Pine Tree Sapling=Tallplanta +Acacia Tree=Akaciaträd +Acacia Wood Planks=Akaciaplankor +Acacia Tree Leaves=Akacialöv +Acacia Tree Sapling=Akaciaplanta +Aspen Tree=Asp +Aspen Wood Planks=Aspplankor +Aspen Tree Leaves=Asplöv +Aspen Tree Sapling=Aspplanta +Coal Ore=Kolmalm +Coal Block=Kolblock +Iron Ore=Järnmalm +Steel Block=Stålblock +Copper Ore=Kopparmalm +Copper Block=Kopparblock +Tin Ore=Tennmalm +Tin Block=Tennblock +Bronze Block=Bronsblock +Mese Ore=Mesemalm +Mese Block=Meseblock +Gold Ore=Guldmalm +Gold Block=Guldblock +Diamond Ore=Diamantmalm +Diamond Block=Diamantblock +Cactus=Kaktus +Large Cactus Seedling=Stor kaktusplanta +Papyrus=Papyrus +Dry Shrub=Torr buske +Jungle Grass=Djungelgräs +Grass=Gräs +Savanna Grass=Savanngräs +Fern=Ormbunke +Marram Grass=Marramgräs +Bush Stem=Buskstam +Bush Leaves=Busklöv +Bush Sapling=Buskplanta +Blueberry Bush Leaves with Berries=Blåbärsbuske med bär +Blueberry Bush Leaves=Blåbärsbuske +Blueberry Bush Sapling=Blåbärsbuskplanta +Acacia Bush Stem=Akaciabuskstam +Acacia Bush Leaves=Akaciabuske +Acacia Bush Sapling=Akaciabuskplanta +Pine Bush Stem=Tallbuskestam +Pine Bush Needles=Tallgranbarr +Pine Bush Sapling=Tallbuskplanta +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=Korallskelett +Water Source=Vattenkälla +Flowing Water=Flytande vatten +River Water Source=Flodvattenkälla +Flowing River Water=Flytande flodvatten +Lava Source=Lavakälla +Flowing Lava=Flytande lava +Empty Bookshelf=Tom bokhylla +Bookshelf (@1 written, @2 empty books)=Bokhylla (@1 skriva, @2 tomma böcker) +Bookshelf=Bokhylla +Text too long=Texten är för lång +"@1"="@1" +Wooden Sign=Träskylt +Steel Sign=Stålskylt +Wooden Ladder=Trästege +Steel Ladder=Stålstege +Apple Wood Fence=Äppleträstaket +Acacia Wood Fence=Akaciastaket +Jungle Wood Fence=Djungelstaket +Pine Wood Fence=Tallstaket +Aspen Wood Fence=Aspträdstaket +Apple Wood Fence Rail=Äppleträstaketsräls +Acacia Wood Fence Rail=Akaciastaketsräls +Jungle Wood Fence Rail=Djungelstaketsräls +Pine Wood Fence Rail=Tallstaketsräls +Aspen Wood Fence Rail=Aspstaketsräls +Glass=Glas +Obsidian Glass=Obsidianglas +Brick Block=Tegelstensblock +Mese Lamp=Meselampa +Apple Wood Mese Post Light=Äppleträ-meselykta +Acacia Wood Mese Post Light=Acacia-meselykta +Jungle Wood Mese Post Light=Djungel-meselykta +Pine Wood Mese Post Light=Tall-meselykta +Aspen Wood Mese Post Light=Aspträ-meselykta +Cloud=Moln +Wooden Pickaxe=Trähacka +Stone Pickaxe=Stenhacka +Bronze Pickaxe=Bronshacka +Steel Pickaxe=Stålhacka +Mese Pickaxe=Mesehacka +Diamond Pickaxe=Diamanthacka +Wooden Shovel=Träspade +Stone Shovel=Stenspade +Bronze Shovel=Bronsspade +Steel Shovel=Stålspade +Mese Shovel=Mesespade +Diamond Shovel=Diamantspade +Wooden Axe=Träyxa +Stone Axe=Stenyxa +Bronze Axe=Bronsyxa +Steel Axe=Stålyxa +Mese Axe=Meseyxa +Diamond Axe=Diamantyxa +Wooden Sword=Träsvärd +Stone Sword=Stensvärd +Bronze Sword=Bronssvärd +Steel Sword=Stålsvärd +Mese Sword=Mesesvärd +Diamond Sword=Diamantsvärd +Key=Nyckel +Torch=Fackla +@1 will intersect protection on growth.=@1 kommer korsa skyddet mot tillväxt. diff --git a/mods/doors/locale/doors.se.tr b/mods/doors/locale/doors.se.tr deleted file mode 100644 index 1f856ef1..00000000 --- a/mods/doors/locale/doors.se.tr +++ /dev/null @@ -1,18 +0,0 @@ -# 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 -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 diff --git a/mods/doors/locale/doors.sv.tr b/mods/doors/locale/doors.sv.tr new file mode 100644 index 00000000..9f31d9c8 --- /dev/null +++ b/mods/doors/locale/doors.sv.tr @@ -0,0 +1,18 @@ +# textdomain: doors +Hidden Door Segment=Dolt 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åldörr +Glass Door=Glasdörr +Obsidian Glass Door=Obsidianglasdörr +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ålfallucka +Apple Wood Fence Gate=Äppleträfallucka +Acacia Wood Fence Gate=Akaciaträfallucka +Jungle Wood Fence Gate=Djungelträfallucka +Pine Wood Fence Gate=Tallträfallucka +Aspen Wood Fence Gate=Aspträfallucka diff --git a/mods/dye/locale/dye.se.tr b/mods/dye/locale/dye.se.tr deleted file mode 100644 index 936f161e..00000000 --- a/mods/dye/locale/dye.se.tr +++ /dev/null @@ -1,16 +0,0 @@ -# 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 diff --git a/mods/dye/locale/dye.sv.tr b/mods/dye/locale/dye.sv.tr new file mode 100644 index 00000000..ecde4433 --- /dev/null +++ b/mods/dye/locale/dye.sv.tr @@ -0,0 +1,16 @@ +# textdomain: dye +White Dye=Vit färg +Grey Dye=Grå färg +Dark Grey Dye=Mörkgrå 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örkgrö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 diff --git a/mods/farming/locale/farming.se.tr b/mods/farming/locale/farming.se.tr deleted file mode 100644 index 3b69fba7..00000000 --- a/mods/farming/locale/farming.se.tr +++ /dev/null @@ -1,34 +0,0 @@ -# textdomain: farming -Hoe= -Seed= -Wooden Hoe=Träsko -Stone Hoe=Stensko -Steel Hoe=Stålsko -Bronze Hoe=Bronssko -Mese Hoe=Mesesko -Diamond Hoe=Diamantsko -Wheat Seed=Vetefrö -Wheat=Vete -Flour=Mjöl -Bread=Bröd -Cotton Seed=Bollumsfrö -Cotton=Bomull -String=Snöra -Soil=Odlningsmark -Wet Soil=Våt Odlningsmark -Savanna Soil= -Wet Savanna Soil= -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 -Wild Cotton= - - -##### not used anymore ##### - -Dry Soil=Torr Odlningsmark -Wet Dry Soil=Våt Torr Odlningsmark diff --git a/mods/farming/locale/farming.sv.tr b/mods/farming/locale/farming.sv.tr new file mode 100644 index 00000000..e6c9e685 --- /dev/null +++ b/mods/farming/locale/farming.sv.tr @@ -0,0 +1,28 @@ +# textdomain: farming +Hoe=Kratta +Seed=Frö +Wooden Hoe=Träkratta +Stone Hoe=Stenkratta +Steel Hoe=Stålkratta +Bronze Hoe=Bronskratta +Mese Hoe=Mesekratta +Diamond Hoe=Diamantkratta +Wheat Seed=Vetefrö +Wheat=Vete +Flour=Mjöl +Bread=Bröd +Cotton Seed=Bomullfrö +Cotton=Bomull +String=Snöre +Soil=Odlinngsmark +Wet Soil=Våt Odlingsmark +Savanna Soil=Savannodlingsmark +Wet Savanna Soil=Våt savannodlingsmark +Desert Sand Soil=Ökensandsodlingsmark +Wet Desert Sand Soil=Våt ökensandsodlingsmark +Straw=Halm +Straw Stair=Halmtrappa +Inner Straw Stair=Inre halmtrappa +Outer Straw Stair=Yttre halmtrappa +Straw Slab=Halmplatta +Wild Cotton= diff --git a/mods/fire/locale/fire.se.tr b/mods/fire/locale/fire.se.tr deleted file mode 100644 index 9a51aed2..00000000 --- a/mods/fire/locale/fire.se.tr +++ /dev/null @@ -1,10 +0,0 @@ -# textdomain: fire -Fire= -Permanent Fire= -Flint and Steel=Flinta och Stål - - -##### not used anymore ##### - -# textdomain: fire -Permanent Flame=Permanent Eld diff --git a/mods/fire/locale/fire.sv.tr b/mods/fire/locale/fire.sv.tr new file mode 100644 index 00000000..28e9a4a2 --- /dev/null +++ b/mods/fire/locale/fire.sv.tr @@ -0,0 +1,4 @@ +# textdomain: fire +Fire=Eld +Permanent Fire=Permanent eld +Flint and Steel=Flinta och stål diff --git a/mods/fireflies/locale/fireflies.se.tr b/mods/fireflies/locale/fireflies.sv.tr similarity index 62% rename from mods/fireflies/locale/fireflies.se.tr rename to mods/fireflies/locale/fireflies.sv.tr index ebd0cf9e..d8016f99 100644 --- a/mods/fireflies/locale/fireflies.se.tr +++ b/mods/fireflies/locale/fireflies.sv.tr @@ -1,5 +1,5 @@ # textdomain: fireflies Firefly=Eldfluga -Hidden Firefly=Gömd Eldfluga -Bug Net=Buggernät +Hidden Firefly=Gömd eldfluga +Bug Net=Insektshåv Firefly in a Bottle=Eldfluga i en flaska diff --git a/mods/flowers/locale/flowers.se.tr b/mods/flowers/locale/flowers.se.tr deleted file mode 100644 index 018e133b..00000000 --- a/mods/flowers/locale/flowers.se.tr +++ /dev/null @@ -1,12 +0,0 @@ -# textdomain: flowers -Red Rose=Röd ros -Orange Tulip=Orange Tulpan -Yellow Dandelion=Gul Maskros -Green Chrysanthemum=Grön Krysantemum -Blue Geranium=Blå Geranium -Viola=Violett Viola -White Dandelion=Vit Maskros -Black Tulip=Svart Tulpan -Red Mushroom=Röd Svamp -Brown Mushroom=Brun Svamp -Waterlily=Näckros diff --git a/mods/flowers/locale/flowers.sv.tr b/mods/flowers/locale/flowers.sv.tr new file mode 100644 index 00000000..c8a26a3d --- /dev/null +++ b/mods/flowers/locale/flowers.sv.tr @@ -0,0 +1,12 @@ +# textdomain: flowers +Red Rose=Röd ros +Orange Tulip=Orange tulpan +Yellow Dandelion=Gul maskros +Green Chrysanthemum=Grön krysantemum +Blue Geranium=Blå geranium +Viola=Violett viola +White Dandelion=Vit maskros +Black Tulip=Svart tulpan +Red Mushroom=Röd svamp +Brown Mushroom=Brun svamp +Waterlily=Näckros diff --git a/mods/game_commands/locale/game_commands.se.tr b/mods/game_commands/locale/game_commands.sv.tr similarity index 72% rename from mods/game_commands/locale/game_commands.se.tr rename to mods/game_commands/locale/game_commands.sv.tr index afefc9b3..e3110dad 100644 --- a/mods/game_commands/locale/game_commands.se.tr +++ b/mods/game_commands/locale/game_commands.sv.tr @@ -1,4 +1,4 @@ # textdomain: game_commands Kill yourself to respawn=Döda dig själv för att respawna -No static_spawnpoint defined=Ingen static_spawnpoint definierat +No static_spawnpoint defined=Ingen static_spawnpoint definierad You need to be online to be killed!=Du måsta vara online för att bli dödad! diff --git a/mods/keys/locale/keys.se.tr b/mods/keys/locale/keys.sv.tr similarity index 69% rename from mods/keys/locale/keys.se.tr rename to mods/keys/locale/keys.sv.tr index 2d901df9..f666eb3d 100644 --- a/mods/keys/locale/keys.se.tr +++ b/mods/keys/locale/keys.sv.tr @@ -2,4 +2,4 @@ Key=Nyckel Key to @1's @2=Nyckel till @1s @2 -Skeleton Key=Skelett Nyckel +Skeleton Key=Skelettnyckel diff --git a/mods/map/locale/map.se.tr b/mods/map/locale/map.se.tr deleted file mode 100644 index de6ac361..00000000 --- a/mods/map/locale/map.se.tr +++ /dev/null @@ -1,3 +0,0 @@ -# textdomain: map -Mapping Kit=Kartläggningssats -Use with 'Minimap' key=Använd med 'Minimap' tangent diff --git a/mods/map/locale/map.sv.tr b/mods/map/locale/map.sv.tr new file mode 100644 index 00000000..bc79d44e --- /dev/null +++ b/mods/map/locale/map.sv.tr @@ -0,0 +1,3 @@ +# textdomain: map +Mapping Kit=Kartläggningssats +Use with 'Minimap' key=Använd med 'Minimap'-tangent diff --git a/mods/mtg_craftguide/locale/mtg_craftguide.sv.tr b/mods/mtg_craftguide/locale/mtg_craftguide.sv.tr new file mode 100644 index 00000000..00b40564 --- /dev/null +++ b/mods/mtg_craftguide/locale/mtg_craftguide.sv.tr @@ -0,0 +1,53 @@ +# textdomain: mtg_craftguide +Any coal=Någon typ av kol +Any sand=Någon typ av sand +Any wool=Någon typ av ull +Any stick=Någon typ av pinne +Any vessel=Någon typ av fartygshylla +Any wood planks=Någon typ av träplanka +Any kind of stone block=Någon typ av stenblock +Any red flower=Någon typ av röd blomma +Any blue flower=Någon typ av blå blomma +Any black flower=Någon typ av svart blomma +Any green flower=Någon typ av grön blomma +Any white flower=Någon typ av vit blomma +Any orange flower=Någon typ av orange blomma +Any violet flower=Någon typ av violett blomma +Any yellow flower=Någon typ av gul blomma +Any red dye=Någon typ av röd färg +Any blue dye=Någon typ av blå färg +Any cyan dye=Någon typ av cyan färg +Any grey dye=Någon typ av grå färg +Any pink dye=Någon typ av rosa färg +Any black dye=Någon typ av svart färg +Any brown dye=Någon typ av brun färg +Any green dye=Någon typ av grön färg +Any white dye=Någon typ av vit färg +Any orange dye=Någon typ av orange färg +Any violet dye=Någon typ av violett färg +Any yellow dye=Någon typ av gul färg +Any magenta dye=Någon typ av magenta färg +Any dark grey dye=Någon typ av mörkgrå färg +Any dark green dye=Någon typ av mörkgrön färg +# Label for group ingredients +G=G +Any item belonging to the group(s): @1=Vilket föremål som helst som tillhör grupp(erna): @1 +Unknown Item=Okänt föremål +Fuel=Bränsle +Usage @1 of @2=Användning @1 av @2 +Recipe @1 of @2=Recept @1 av @2 +Previous recipe=Föregående recept +Next recipe=Nästa recept +Recipe is too big to be displayed.=Receptet är för stort för att visas. +Shapeless=Formlöst +Cooking time: @1=Tillagningstid: @1 +Search=Sök +Reset=Återställ +Previous page=Föregående sida +Next page=Nästa sida +No items to show.=Inga föremål att visa. +No usages.=Inga användningsområden. +Click again to show recipes.=Tryck igen för att visa recept. +No recipes.=Inga recept. +Click again to show usages.=Tryck igen för att visa användningsområden. +Recipes=Recept diff --git a/mods/screwdriver/locale/screwdriver.se.tr b/mods/screwdriver/locale/screwdriver.sv.tr similarity index 100% rename from mods/screwdriver/locale/screwdriver.se.tr rename to mods/screwdriver/locale/screwdriver.sv.tr diff --git a/mods/sethome/locale/sethome.se.tr b/mods/sethome/locale/sethome.sv.tr similarity index 71% rename from mods/sethome/locale/sethome.se.tr rename to mods/sethome/locale/sethome.sv.tr index 4ae8c528..60673ae5 100644 --- a/mods/sethome/locale/sethome.se.tr +++ b/mods/sethome/locale/sethome.sv.tr @@ -1,8 +1,8 @@ # textdomain: sethome -Can use /sethome and /home=Kan används /sethome och /home +Can use /sethome and /home=Kan använda /sethome och /home Teleport you to your home point=Teleportera dig till din hempunkt Teleported to home!=Teleporterad hem! Set a home using /sethome=Ställ in ett hem med /sethome Set your home point=Ställ in din hempunkt Home set!=Hem inställt! -Player not found!=Spelare inte hittad! +Player not found!=Spelare finns inte! diff --git a/mods/sfinv/locale/sfinv.se.tr b/mods/sfinv/locale/sfinv.sv.tr similarity index 100% rename from mods/sfinv/locale/sfinv.se.tr rename to mods/sfinv/locale/sfinv.sv.tr diff --git a/mods/stairs/locale/stairs.se.tr b/mods/stairs/locale/stairs.se.tr deleted file mode 100644 index 3ace06d0..00000000 --- a/mods/stairs/locale/stairs.se.tr +++ /dev/null @@ -1,145 +0,0 @@ -# textdomain: stairs -Glass Stair=Glastrappa -Glass Slab=Glasplatta -Inner Glass Stair=Inre glasstrappa -Outer Glass Stair=Yttre glasstrappa -Obsidian Glass Stair=Obsidian Glass Trappa -Obsidian Glass Slab=Obsidian glasplatta -Inner Obsidian Glass Stair=Inre Obsidian Glass Trappa -Outer Obsidian Glass Stair=Yttre Obsidian Glass Trappa -Wooden Stair=Trätrappa -Inner Wooden Stair=Inre trätrappa -Outer Wooden Stair=Yttre trätrappa -Wooden Slab=Träplatta -Jungle Wood Stair=Jungle Wood Stair -Inner Jungle Wood Stair=Inre Jungle Wood Stair -Outer Jungle Wood Stair=Ytter Jungle Wood Stair -Jungle Wood Slab=Jungle Wood Platta -Pine Wood Stair=Pine Wood Stair -Inner Pine Wood Stair=Inre tall trä trappa -Outer Pine Wood Stair=Ytter tall Trätrappa -Pine Wood Slab=Tallskiva -Acacia Wood Stair=Acacia Wood Stair -Inner Acacia Wood Stair=Inre Acacia Trätrappa -Outer Acacia Wood Stair=Yttre Acacia Trätrappa -Acacia Wood Slab=Acacia träplatta -Aspen Wood Stair=Asp Trä Stair -Inner Aspen Wood Stair=Inre Aspen Trätrappa -Outer Aspen Wood Stair=Yttre Aspen Trätrappa -Aspen Wood Slab=Asp Trä Platta -Stone Stair=Stentrappa -Inner Stone Stair=Inre stentrappa -Outer Stone Stair=Yttre stentrappa -Stone Slab=Stenplatta -Cobblestone Stair=Kullersten trappa -Inner Cobblestone Stair=Inre kullerstensTrappa -Outer Cobblestone Stair=Yttre kullerstensTrappa -Cobblestone Slab=Kullerstenplatta -Mossy Cobblestone Stair=Mossig kullerstensTrappa -Inner Mossy Cobblestone Stair=Inre mossiga kullerstensTrappa -Outer Mossy Cobblestone Stair=Yttre mossiga kullerstensTrappa -Mossy Cobblestone Slab=Mossig kullerstenplatta -Stone Brick Stair=Sten Brick Trappa -Inner Stone Brick Stair=Inre sten tegel trappa -Outer Stone Brick Stair=Yttre sten tegel trappa -Stone Brick Slab=Sten tegelplatta -Stone Block Stair=Sten Block Trappa -Inner Stone Block Stair=Inre stenblock trappa -Outer Stone Block Stair=Yttre stenblock trappa -Stone Block Slab=Stenblockplatta -Desert Stone Stair=Öken Sten Trappa -Inner Desert Stone Stair=Inre Öken Sten Stair -Outer Desert Stone Stair=Outer Öken Sten Stair -Desert Stone Slab=Öken Sten Platta -Desert Cobblestone Stair=Öken Kullersten Trappa -Inner Desert Cobblestone Stair=Inre Öken Kullersten Trappa -Outer Desert Cobblestone Stair=Outer Öken Kullersten Trappa -Desert Cobblestone Slab=Öken Kullersten Platta -Desert Stone Brick Stair=Öken Sten Brick Trappa -Inner Desert Stone Brick Stair=Inre Öken Sten Brick Trappa -Outer Desert Stone Brick Stair=Outer Öken Sten Brick Trappa -Desert Stone Brick Slab=Öken Sten tegelplatta -Desert Stone Block Stair=Öken Sten Block Trappa -Inner Desert Stone Block Stair=Inre Öken Sten Block Stair -Outer Desert Stone Block Stair=Outer Öken Sten Block Trappa -Desert Stone Block Slab=Öken Sten Block Platta -Sandstone Stair=Sandstenstrappa -Inner Sandstone Stair=Inre Sandstenstrappa -Outer Sandstone Stair=Yttre Sandstenstrappa -Sandstone Slab=Sandstenplatta -Sandstone Brick Stair=Sandsten tegel trappa -Inner Sandstone Brick Stair=Inre Sandsten tegel trappa -Outer Sandstone Brick Stair=Yttre Sandsten tegel trappa -Sandstone Brick Slab=Sandsten tegelplatta -Sandstone Block Stair=Sandsten block trappa -Inner Sandstone Block Stair=Inre Sandsten block trappa -Outer Sandstone Block Stair=Yttre Sandsten block trappa -Sandstone Block Slab=Sandsten Block Platta -Desert Sandstone Stair=Öken Sandsten Trappa -Inner Desert Sandstone Stair=Inre Öken Sandsten Trappa -Outer Desert Sandstone Stair=Outer Öken Sandsten Trappa -Desert Sandstone Slab=Öken Sandsten Platta -Desert Sandstone Brick Stair=Öken Sandsten Brick Trappa -Inner Desert Sandstone Brick Stair=Inre Öken Sandsten Brick Trappa -Outer Desert Sandstone Brick Stair=Outer Öken Sandsten Brick Trappa -Desert Sandstone Brick Slab=Öken Sandsten Tegelplatta -Desert Sandstone Block Stair=Öken Sandsten Block Trappa -Inner Desert Sandstone Block Stair=Inre Öken Sandsten Block Trappa -Outer Desert Sandstone Block Stair=Outer Öken Sandsten Block Trappa -Desert Sandstone Block Slab=Öken Sandsten Block Platta -Silver Sandstone Stair=Silver Sandsten trappa -Inner Silver Sandstone Stair=Inre silver Sandsten trappa -Outer Silver Sandstone Stair=Yttre silver Sandsten trappa -Silver Sandstone Slab=Silver Sandsten platta -Silver Sandstone Brick Stair=Silver Sandsten tegel trappa -Inner Silver Sandstone Brick Stair=Inre silver Sandsten tegel trappa -Outer Silver Sandstone Brick Stair=Yttre silver Sandsten tegel trappa -Silver Sandstone Brick Slab=Silver Sandsten tegelplatta -Silver Sandstone Block Stair=Silver Sandsten block trappa -Inner Silver Sandstone Block Stair=Inre silver Sandsten block trappa -Outer Silver Sandstone Block Stair=Yttre silver Sandsten block trappa -Silver Sandstone Block Slab=Silver Sandsten block platta -Obsidian Stair=Obsidian Trappa -Inner Obsidian Stair=Inre Obsidian Trappa -Outer Obsidian Stair=Yttre Obsidian Trappa -Obsidian Slab=Obsidian Platta -Obsidian Brick Stair=Obsidian Brick Stair -Inner Obsidian Brick Stair=Inre Obsidian Brick Trappa -Outer Obsidian Brick Stair=Yttre Obsidian Brick Trappa -Obsidian Brick Slab=Obsidian tegelplatta -Obsidian Block Stair=Obsidian Block Stair -Inner Obsidian Block Stair=Inre Obsidian Block Trappa -Outer Obsidian Block Stair=Yttre Obsidian Block Trappa -Obsidian Block Slab=Obsidian Block Slab -Brick Stair=Tegel trappa -Inner Brick Stair=Inre tegel trappa -Outer Brick Stair=Yttre tegel trappa -Brick Slab=Tegelplatta -Steel Block Stair=Stålblock trappa -Inner Steel Block Stair=Inre stålblock trappa -Outer Steel Block Stair=Yttre stålblocktrappa -Steel Block Slab=Stålblockplatta -Tin Block Stair=Tinn Block Trappa -Inner Tin Block Stair=Inre tennblock trappa -Outer Tin Block Stair=Yttre tennblock trappa -Tin Block Slab=Tennblockplatta -Copper Block Stair=Kopparblock trappa -Inner Copper Block Stair=Inre kopparblock trappa -Outer Copper Block Stair=Yttre kopparblock trappa -Copper Block Slab=Kopparblockplatta -Bronze Block Stair=Bronze Block Trappa -Inner Bronze Block Stair=Inre bronsblock trappa -Outer Bronze Block Stair=Yttre bronsblock trappa -Bronze Block Slab=Bronsblockplatta -Gold Block Stair=Guldblockstrappa -Inner Gold Block Stair=Inre guldblock trappa -Outer Gold Block Stair=Yttre guldblock trappa -Gold Block Slab=Guldblockplatta -Ice Stair=Ice Stair -Inner Ice Stair=Inre istrappa -Outer Ice Stair=Yttre istrappa -Ice Slab=Isplatta -Snow Block Stair=Snow Block Stair -Inner Snow Block Stair=Inre snöblock trappa -Outer Snow Block Stair=Yttre snöblock trappa -Snow Block Slab= diff --git a/mods/stairs/locale/stairs.sv.tr b/mods/stairs/locale/stairs.sv.tr new file mode 100644 index 00000000..8044af81 --- /dev/null +++ b/mods/stairs/locale/stairs.sv.tr @@ -0,0 +1,145 @@ +# textdomain: stairs +Glass Stair=Glastrappa +Glass Slab=Glasplatta +Inner Glass Stair=Inre glasstrappa +Outer Glass Stair=Yttre glasstrappa +Obsidian Glass Stair=Obsidianglasstrappa +Obsidian Glass Slab=Obsidianglasplatta +Inner Obsidian Glass Stair=Inre obsidianglastrappa +Outer Obsidian Glass Stair=Yttre obsidianglastrappa +Wooden Stair=Trätrappa +Inner Wooden Stair=Inre trätrappa +Outer Wooden Stair=Yttre trätrappa +Wooden Slab=Träplatta +Jungle Wood Stair=Djungelträtrappa +Inner Jungle Wood Stair=Inre djungelträtrappa +Outer Jungle Wood Stair=Ytter djungelträtrappa +Jungle Wood Slab=Djungelträplatta +Pine Wood Stair=Tallträplatta +Inner Pine Wood Stair=Inre tallträplatta +Outer Pine Wood Stair=Ytter tallträplatta +Pine Wood Slab=Tallskiva +Acacia Wood Stair=Acaciatrappa +Inner Acacia Wood Stair=Inre acaciatrappa +Outer Acacia Wood Stair=Yttre acaciatrappa +Acacia Wood Slab=Acaciaplatta +Aspen Wood Stair=Aspträtrappa +Inner Aspen Wood Stair=Inre aspträtrappa +Outer Aspen Wood Stair=Yttre aspträtrappa +Aspen Wood Slab=Aspträplatta +Stone Stair=Stentrappa +Inner Stone Stair=Inre stentrappa +Outer Stone Stair=Yttre stentrappa +Stone Slab=Stenplatta +Cobblestone Stair=Kullerstenstrappa +Inner Cobblestone Stair=Inre kullerstenstrappa +Outer Cobblestone Stair=Yttre kullerstenstrappa +Cobblestone Slab=Kullerstenplatta +Mossy Cobblestone Stair=Mossig kullerstenstrappa +Inner Mossy Cobblestone Stair=Inre mossig kullerstenstrappa +Outer Mossy Cobblestone Stair=Yttre mossig kullerstenstrappa +Mossy Cobblestone Slab=Mossig kullerstenplatta +Stone Brick Stair=Stentegeltrappa +Inner Stone Brick Stair=Inre stentegeltrappa +Outer Stone Brick Stair=Yttre stentegeltrappa +Stone Brick Slab=Stentegelplatta +Stone Block Stair=Stenblockstrappa +Inner Stone Block Stair=Inre stenblockstrappa +Outer Stone Block Stair=Yttre stenblockstrappa +Stone Block Slab=Stenblocksplatta +Desert Stone Stair=Ökenstentrappa +Inner Desert Stone Stair=Inre ökenstentrappa +Outer Desert Stone Stair=Yttre ökenstentrappa +Desert Stone Slab=Ökenstenplatta +Desert Cobblestone Stair=Ökenkullerstenstrappa +Inner Desert Cobblestone Stair=Inre ökenkullerstenstrappa +Outer Desert Cobblestone Stair=Yttre ökenkullerstenstrappa +Desert Cobblestone Slab=Ökenkullerstensplatta +Desert Stone Brick Stair=Ökentegelstenstrappa +Inner Desert Stone Brick Stair=Inre Ökentegelstenstrappa +Outer Desert Stone Brick Stair=Yttre Ökentegelstenstrappa +Desert Stone Brick Slab=Ökentegelstensplatta +Desert Stone Block Stair=Ökenstenblockstrappa +Inner Desert Stone Block Stair=Inre ökenstenblockstrappa +Outer Desert Stone Block Stair=Yttre ökenstenblockstrappa +Desert Stone Block Slab=Ökenstenblocksplatta +Sandstone Stair=Sandstenstrappa +Inner Sandstone Stair=Inre Sandstenstrappa +Outer Sandstone Stair=Yttre Sandstenstrappa +Sandstone Slab=Sandstenplatta +Sandstone Brick Stair=Sandstentegeltrappa +Inner Sandstone Brick Stair=Inre Sandstentegeltrappa +Outer Sandstone Brick Stair=Yttre Sandstentegeltrappa +Sandstone Brick Slab=Sandstentegelplatta +Sandstone Block Stair=Sandstenblockstrappa +Inner Sandstone Block Stair=Inre Sandstenblockstrappa +Outer Sandstone Block Stair=Yttre Sandstenblockstrappa +Sandstone Block Slab=Sandstenblocksplatta +Desert Sandstone Stair=Ökensandstenstrappa +Inner Desert Sandstone Stair=Inre ökensandstenstrappa +Outer Desert Sandstone Stair=Yttre ökensandstenstrappa +Desert Sandstone Slab=Ökensandstensplatta +Desert Sandstone Brick Stair=Ökensandstentegeltrappa +Inner Desert Sandstone Brick Stair=Inre ökensandstentegeltrappa +Outer Desert Sandstone Brick Stair=Yttre ökensandstentegeltrappa +Desert Sandstone Brick Slab=Ökensandstentegelplatta +Desert Sandstone Block Stair=Ökensandstentegeltrappa +Inner Desert Sandstone Block Stair=Inre ökensandstentegeltrappa +Outer Desert Sandstone Block Stair=Yttre ökensandstentegeltrappa +Desert Sandstone Block Slab=Ökensandstentegelplatta +Silver Sandstone Stair=Silversandstenstrappa +Inner Silver Sandstone Stair=Inre silversandstenstrappa +Outer Silver Sandstone Stair=Yttre silversandstenstrappa +Silver Sandstone Slab=Silversandstenstrappa +Silver Sandstone Brick Stair=Silversandstenstegeltrappa +Inner Silver Sandstone Brick Stair=Inre silversandstenstegeltrappa +Outer Silver Sandstone Brick Stair=Yttre silversandstenstegeltrappa +Silver Sandstone Brick Slab=Silversandstenstegelplatta +Silver Sandstone Block Stair=Silversandstenblockstrappa +Inner Silver Sandstone Block Stair=Inre silversandstenblockstrappa +Outer Silver Sandstone Block Stair=Yttre silversandstenblockstrappa +Silver Sandstone Block Slab=Silversandstenblocksplatta +Obsidian Stair=Obsidiantrappa +Inner Obsidian Stair=Inre obsidiantrappa +Outer Obsidian Stair=Yttre obsidiantrappa +Obsidian Slab=Obsidianplatta +Obsidian Brick Stair=Obsidiantegeltrappa +Inner Obsidian Brick Stair=Inre obsidiantegeltrappa +Outer Obsidian Brick Stair=Yttre obsidiantegeltrappa +Obsidian Brick Slab=Obsidiantegelplatta +Obsidian Block Stair=Obsidianblocktrappa +Inner Obsidian Block Stair=Inre Obsidianblocktrappa +Outer Obsidian Block Stair=Yttre Obsidianblocktrappa +Obsidian Block Slab=Obsidianblockplatta +Brick Stair=Tegeltrappa +Inner Brick Stair=Inre tegeltrappa +Outer Brick Stair=Yttre tegeltrappa +Brick Slab=Tegelplatta +Steel Block Stair=Ståltrappa +Inner Steel Block Stair=Inre ståltrappa +Outer Steel Block Stair=Yttre ståltrappa +Steel Block Slab=Stålplatta +Tin Block Stair=Tenntrappa +Inner Tin Block Stair=Inre tenntrappa +Outer Tin Block Stair=Yttre tenntrappa +Tin Block Slab=Tennplatta +Copper Block Stair=Koppartrappa +Inner Copper Block Stair=Inre koppartrappa +Outer Copper Block Stair=Yttre koppartrappa +Copper Block Slab=Kopparplatta +Bronze Block Stair=Bronstrappa +Inner Bronze Block Stair=Inre bronstrappa +Outer Bronze Block Stair=Yttre bronstrappa +Bronze Block Slab=Bronsplatta +Gold Block Stair=Guldtrappa +Inner Gold Block Stair=Inre guldtrappa +Outer Gold Block Stair=Yttre guldtrappa +Gold Block Slab=Guldplatta +Ice Stair=Istrappa +Inner Ice Stair=Inre istrappa +Outer Ice Stair=Yttre istrappa +Ice Slab=Isplatta +Snow Block Stair=Snöblockstrappa +Inner Snow Block Stair=Inre snöblockstrappa +Outer Snow Block Stair=Yttre snöblockstrappa +Snow Block Slab=Snöblocksplatta diff --git a/mods/tnt/locale/tnt.se.tr b/mods/tnt/locale/tnt.sv.tr similarity index 100% rename from mods/tnt/locale/tnt.se.tr rename to mods/tnt/locale/tnt.sv.tr diff --git a/mods/vessels/locale/vessels.se.tr b/mods/vessels/locale/vessels.se.tr deleted file mode 100644 index a7c3a989..00000000 --- a/mods/vessels/locale/vessels.se.tr +++ /dev/null @@ -1,8 +0,0 @@ -# textdomain: vessels -Empty Vessels Shelf=Tom Fartygshylla -Vessels Shelf (@1 items)=Fartygshylla (@1 saker) -Vessels Shelf=Fartygshylla -Empty Glass Bottle=Tom Glasflska -Empty Drinking Glass=Tom Drycksflaska -Empty Heavy Steel Bottle=Tom Tung Stål Flaska -Glass Fragments=Glasbitar diff --git a/mods/vessels/locale/vessels.sv.tr b/mods/vessels/locale/vessels.sv.tr new file mode 100644 index 00000000..48e76e29 --- /dev/null +++ b/mods/vessels/locale/vessels.sv.tr @@ -0,0 +1,8 @@ +# textdomain: vessels +Empty Vessels Shelf=Tom kärlhylla +Vessels Shelf (@1 items)=Kärlhylla (@1 saker) +Vessels Shelf=Kärlhylla +Empty Glass Bottle=Tom glasflaska +Empty Drinking Glass=Tom drycksflaska +Empty Heavy Steel Bottle=Tom tungstålsflaska +Glass Fragments=Glasbitar diff --git a/mods/walls/locale/walls.se.tr b/mods/walls/locale/walls.se.tr deleted file mode 100644 index 32589464..00000000 --- a/mods/walls/locale/walls.se.tr +++ /dev/null @@ -1,4 +0,0 @@ -# textdomain: walls -Cobblestone Wall=Kullerstens Vägg -Mossy Cobblestone Wall=Mossig Kullerstens Vägg -Desert Cobblestone Wall=Öken Kullerstens Vägg diff --git a/mods/walls/locale/walls.sv.tr b/mods/walls/locale/walls.sv.tr new file mode 100644 index 00000000..1ad4a29e --- /dev/null +++ b/mods/walls/locale/walls.sv.tr @@ -0,0 +1,4 @@ +# textdomain: walls +Cobblestone Wall=Kullerstensvägg +Mossy Cobblestone Wall=Mossig kullerstensvägg +Desert Cobblestone Wall=Ökenkullerstensvägg diff --git a/mods/wool/locale/wool.se.tr b/mods/wool/locale/wool.se.tr deleted file mode 100644 index e026ac4c..00000000 --- a/mods/wool/locale/wool.se.tr +++ /dev/null @@ -1,16 +0,0 @@ -# textdomain: wool -White Wool=Vit Ull -Grey Wool=Grå Ull -Dark Grey Wool=Mörk Grå Ull -Black Wool=Svart Ull -Violet Wool=Violett Ull -Blue Wool=Blå Ull -Cyan Wool=Cyan Ull -Dark Green Wool=Mörk Grön Ull -Green Wool=Grön Ull -Yellow Wool=Gul Ull -Brown Wool=Brun Ull -Orange Wool=Orange Ull -Red Wool=Röd Ull -Magenta Wool=Magenta Ull -Pink Wool=Rosa Ull diff --git a/mods/wool/locale/wool.sv.tr b/mods/wool/locale/wool.sv.tr new file mode 100644 index 00000000..bfce2140 --- /dev/null +++ b/mods/wool/locale/wool.sv.tr @@ -0,0 +1,16 @@ +# textdomain: wool +White Wool=Vit ull +Grey Wool=Grå ull +Dark Grey Wool=Mörkgrå ull +Black Wool=Svart ull +Violet Wool=Violett ull +Blue Wool=Blå ull +Cyan Wool=Cyan ull +Dark Green Wool=Mörkgrön ull +Green Wool=Grön ull +Yellow Wool=Gul ull +Brown Wool=Brun ull +Orange Wool=Orange ull +Red Wool=Röd ull +Magenta Wool=Magenta ull +Pink Wool=Rosa ull diff --git a/mods/xpanes/locale/xpanes.se.tr b/mods/xpanes/locale/xpanes.se.tr deleted file mode 100644 index ff01d2a4..00000000 --- a/mods/xpanes/locale/xpanes.se.tr +++ /dev/null @@ -1,6 +0,0 @@ -# textdomain: xpanes -Glass Pane=Glasruta -Obsidian Glass Pane=Obsidian Glasruta -Steel Bars=Stålgaller -Steel Bar Door=Stålgallers Dörr -Steel Bar Trapdoor=Stålgallers Fallucka diff --git a/mods/xpanes/locale/xpanes.sv.tr b/mods/xpanes/locale/xpanes.sv.tr new file mode 100644 index 00000000..7b615dd3 --- /dev/null +++ b/mods/xpanes/locale/xpanes.sv.tr @@ -0,0 +1,6 @@ +# textdomain: xpanes +Glass Pane=Glasruta +Obsidian Glass Pane=Obsidianglasruta +Steel Bars=Stålgaller +Steel Bar Door=Stålgallerdörr +Steel Bar Trapdoor=Stålgallerfallucka From a5547a3a7655f03cb8b8a2b286dae263ef1f0edb Mon Sep 17 00:00:00 2001 From: baytuch Date: Sun, 30 Jan 2022 01:35:28 +0200 Subject: [PATCH 25/36] Add ukrainian (uk) translation (#2921) Co-authored-by: sfan5 --- mods/beds/locale/beds.uk.tr | 10 + mods/binoculars/locale/binoculars.uk.tr | 3 + mods/boats/locale/boats.uk.tr | 4 + mods/bones/locale/bones.uk.tr | 8 + mods/bucket/locale/bucket.uk.tr | 5 + mods/butterflies/locale/butterflies.uk.tr | 4 + mods/carts/locale/carts.uk.tr | 6 + mods/creative/locale/creative.uk.tr | 10 + mods/default/locale/default.uk.tr | 214 ++++++++++++++++++ mods/doors/locale/doors.uk.tr | 18 ++ mods/dye/locale/dye.uk.tr | 16 ++ mods/farming/locale/farming.uk.tr | 28 +++ mods/fire/locale/fire.uk.tr | 4 + mods/fireflies/locale/fireflies.uk.tr | 5 + mods/flowers/locale/flowers.uk.tr | 12 + mods/game_commands/locale/game_commands.uk.tr | 4 + mods/keys/locale/keys.uk.tr | 4 + mods/map/locale/map.uk.tr | 3 + .../locale/mtg_craftguide.uk.tr | 53 +++++ mods/screwdriver/locale/screwdriver.uk.tr | 3 + mods/sethome/locale/sethome.uk.tr | 8 + mods/sfinv/locale/sfinv.uk.tr | 2 + mods/stairs/locale/stairs.uk.tr | 145 ++++++++++++ mods/tnt/locale/tnt.uk.tr | 4 + mods/vessels/locale/vessels.uk.tr | 8 + mods/walls/locale/walls.uk.tr | 4 + mods/wool/locale/wool.uk.tr | 16 ++ mods/xpanes/locale/xpanes.uk.tr | 6 + 28 files changed, 607 insertions(+) create mode 100644 mods/beds/locale/beds.uk.tr create mode 100644 mods/binoculars/locale/binoculars.uk.tr create mode 100644 mods/boats/locale/boats.uk.tr create mode 100644 mods/bones/locale/bones.uk.tr create mode 100644 mods/bucket/locale/bucket.uk.tr create mode 100644 mods/butterflies/locale/butterflies.uk.tr create mode 100644 mods/carts/locale/carts.uk.tr create mode 100644 mods/creative/locale/creative.uk.tr create mode 100644 mods/default/locale/default.uk.tr create mode 100644 mods/doors/locale/doors.uk.tr create mode 100644 mods/dye/locale/dye.uk.tr create mode 100644 mods/farming/locale/farming.uk.tr create mode 100644 mods/fire/locale/fire.uk.tr create mode 100644 mods/fireflies/locale/fireflies.uk.tr create mode 100644 mods/flowers/locale/flowers.uk.tr create mode 100644 mods/game_commands/locale/game_commands.uk.tr create mode 100644 mods/keys/locale/keys.uk.tr create mode 100644 mods/map/locale/map.uk.tr create mode 100644 mods/mtg_craftguide/locale/mtg_craftguide.uk.tr create mode 100644 mods/screwdriver/locale/screwdriver.uk.tr create mode 100644 mods/sethome/locale/sethome.uk.tr create mode 100644 mods/sfinv/locale/sfinv.uk.tr create mode 100644 mods/stairs/locale/stairs.uk.tr create mode 100644 mods/tnt/locale/tnt.uk.tr create mode 100644 mods/vessels/locale/vessels.uk.tr create mode 100644 mods/walls/locale/walls.uk.tr create mode 100644 mods/wool/locale/wool.uk.tr create mode 100644 mods/xpanes/locale/xpanes.uk.tr diff --git a/mods/beds/locale/beds.uk.tr b/mods/beds/locale/beds.uk.tr new file mode 100644 index 00000000..f95da70b --- /dev/null +++ b/mods/beds/locale/beds.uk.tr @@ -0,0 +1,10 @@ +# textdomain: beds +Fancy Bed=Деталізована Постіль +Simple Bed=Звичайна Постіль +This bed is already occupied!=Ця постіль вже зайнята! +You have to stop moving before going to bed!=Не можна скористатись постіллю на ходу! +Good morning.=Доброго ранку. +@1 of @2 players are in bed=@1 з @2 гравців в ліжку +Force night skip=Пропустити ніч +You can only sleep at night.=Ви можете спати тільки вночі. +Leave Bed=Встати з ліжка diff --git a/mods/binoculars/locale/binoculars.uk.tr b/mods/binoculars/locale/binoculars.uk.tr new file mode 100644 index 00000000..cb1d0e5b --- /dev/null +++ b/mods/binoculars/locale/binoculars.uk.tr @@ -0,0 +1,3 @@ +# textdomain: binoculars +Binoculars=Бінокль +Use with 'Zoom' key=Використовується з правами 'Zoom' diff --git a/mods/boats/locale/boats.uk.tr b/mods/boats/locale/boats.uk.tr new file mode 100644 index 00000000..662ba6fc --- /dev/null +++ b/mods/boats/locale/boats.uk.tr @@ -0,0 +1,4 @@ +# textdomain: boats +Boat cruise mode on=Режим мандрування на човні увімкнено +Boat cruise mode off=Режим мандрування на човні вимкнено +Boat=Човен diff --git a/mods/bones/locale/bones.uk.tr b/mods/bones/locale/bones.uk.tr new file mode 100644 index 00000000..58ffe77b --- /dev/null +++ b/mods/bones/locale/bones.uk.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/locale/bucket.uk.tr b/mods/bucket/locale/bucket.uk.tr new file mode 100644 index 00000000..a5251a5a --- /dev/null +++ b/mods/bucket/locale/bucket.uk.tr @@ -0,0 +1,5 @@ +# textdomain: bucket +Empty Bucket=Пусте Відро +Water Bucket=Відро З Водою +River Water Bucket=Відро З Річною Водою +Lava Bucket=Відро З Лавою diff --git a/mods/butterflies/locale/butterflies.uk.tr b/mods/butterflies/locale/butterflies.uk.tr new file mode 100644 index 00000000..4a5995e8 --- /dev/null +++ b/mods/butterflies/locale/butterflies.uk.tr @@ -0,0 +1,4 @@ +# textdomain: butterflies +White Butterfly=Білий Метелик +Red Butterfly=Червоний Метелик +Violet Butterfly=Фіолетовий Метелик diff --git a/mods/carts/locale/carts.uk.tr b/mods/carts/locale/carts.uk.tr new file mode 100644 index 00000000..2b236c54 --- /dev/null +++ b/mods/carts/locale/carts.uk.tr @@ -0,0 +1,6 @@ +# textdomain: carts +Cart=Вагонетка +(Sneak+Click to pick up)=(Пригніться та клікніть по вагонетці, щоб забрати) +Rail=Рейки +Powered Rail=Задіяні Рейки +Brake Rail=Гальмівні Рейки diff --git a/mods/creative/locale/creative.uk.tr b/mods/creative/locale/creative.uk.tr new file mode 100644 index 00000000..4e68caa2 --- /dev/null +++ b/mods/creative/locale/creative.uk.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/locale/default.uk.tr b/mods/default/locale/default.uk.tr new file mode 100644 index 00000000..2432cfa6 --- /dev/null +++ b/mods/default/locale/default.uk.tr @@ -0,0 +1,214 @@ +# textdomain: default +Locked Chest=Заблокована Скриня +Locked Chest (owned by @1)=Заблокована Скриня (власник: @1) +You do not own this chest.=Ви не власник цієї скрині. +a locked chest=заблокована скриня +Chest=Скриня +Write=Писати +Read=Читати +Title:=Заголовок: +Contents:=Вміст: +Save=Зберегти +by @1=@1 +Page @1 of @2=Сторінка @1 з @2 +"@1" by @2="@1" @2 +Blueberries=Чорниці +Book=Книга +Book with Text=Книга З Текстом +Bronze Ingot=Бронзовий Злиток +Clay Brick=Глиняна Цегла +Clay Lump=Шматок Глини +Coal Lump=Шматок Вугілля +Copper Ingot=Мідний Злиток +Copper Lump=Шматок Меді +Diamond=Алмаз +Flint=Кремінь +Gold Ingot=Золотий Злиток +Gold Lump=Шматок Золота +Iron Lump=Шматок Заліза +Mese Crystal=Кристал Месе +Mese Crystal Fragment=Уламок Кристалу Месе +Obsidian Shard=Обсидіановий Уламок +Paper=Папір +Steel Ingot=Залізний Злиток +Stick=Палка +Tin Ingot=Шматок Олова +Tin Lump=Уламок Олова +Furnace is empty=Пічка Порожня +100% (output full)=100% (повне приготування) +@1%=@1% +Not cookable=Не може бути приготовлено +Empty=Порожньо +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 Savanna Grass=Земля Із Саванною Травою +Dirt with Snow=Земля Зі Снігом +Dirt with Rainforest Litter=Земля Із Тропічною Підстилкою +Dirt with Coniferous Litter=Земля Із Сосновою Підстилкою +Savanna Dirt=Саваннова Земля +Savanna Dirt with Savanna Grass=Саваннова Земля Із Травою +Permafrost=Заморожений Ґрунт +Permafrost with Stones=Заморожений Ґрунт Із Камінням +Permafrost with Moss=Заморожена Ґрунт із Мохом +Sand=Пісок +Desert Sand=Пустельний Пісок +Silver Sand=Срібний Пісок +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=Трава +Savanna Grass=Саваннова Трава +Fern=Папороть +Marram Grass=Пісколюб +Bush Stem=Стебла Куща +Bush Leaves=Листя Куща +Bush Sapling=Саджанець Куща +Blueberry Bush Leaves with Berries=Кущ Чорниці З Ягодами +Blueberry Bush Leaves=Кущ Чорниці +Blueberry Bush Sapling=Саджанець Куща Чорниці +Acacia Bush Stem=Стебла Куща Акації +Acacia Bush Leaves=Листя Куща Акації +Acacia Bush Sapling=Саджанець Куща Акації +Pine Bush Stem=Стебла Хвойного Куща +Pine Bush Needles=Хвоя Куща +Pine Bush Sapling=Саджанець Хвойного Куща +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=Текст надто довгий +"@1"="@1" +Wooden Sign=Дерев'яна Табличка +Steel Sign=Сталева Табличка +Wooden Ladder=Дерев'яна Драбина +Steel Ladder=Сталеві Сходи +Apple Wood Fence=Яблуневий Дерев'яний Паркан +Acacia Wood Fence=Дерев'яний Паркан З Акації +Jungle Wood Fence=Дерев'яний Паркан З Тропічного Дерева +Pine Wood Fence=Сосновий Дерев'яний Паркан +Aspen Wood Fence=Осиковий Дерев'яний Паркан +Apple Wood Fence Rail=Яблуневий Дерев'яний Рейковий Паркан +Acacia Wood Fence Rail=Дерев'яний Рейковий Паркан З Акації +Jungle Wood Fence Rail=Дерев'яний Рейковий Паркан З Тропічного Дерева +Pine Wood Fence Rail=Сосновий Дерев'яний Рейковий Паркан +Aspen Wood Fence Rail=Осиковий Дерев'яний Рейковий Паркан +Glass=Скло +Obsidian Glass=Обсидіанове Скло +Brick Block=Цегляний Блок +Mese Lamp=Месе Лампа +Apple Wood Mese Post Light=Стовповий Месе Світильник З Яблуні +Acacia Wood Mese Post Light=Стовповий Месе Світильник З Акації +Jungle Wood Mese Post Light=Стовповий Месе Світильник Із Тропічного Дерева +Pine Wood Mese Post Light=Стовповий Месе Світильник Із Сосни +Aspen Wood Mese Post Light=Стовповий Месе Світильник З Осики +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=Алмазний Меч +Torch=Факел +@1 will intersect protection on growth.=@1 перетне захист за зростанням. diff --git a/mods/doors/locale/doors.uk.tr b/mods/doors/locale/doors.uk.tr new file mode 100644 index 00000000..ae2ad14e --- /dev/null +++ b/mods/doors/locale/doors.uk.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/dye/locale/dye.uk.tr b/mods/dye/locale/dye.uk.tr new file mode 100644 index 00000000..e3698b03 --- /dev/null +++ b/mods/dye/locale/dye.uk.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/locale/farming.uk.tr b/mods/farming/locale/farming.uk.tr new file mode 100644 index 00000000..61d7147c --- /dev/null +++ b/mods/farming/locale/farming.uk.tr @@ -0,0 +1,28 @@ +# textdomain: farming +Hoe=Мотига +Seed=Насіння +Wooden Hoe=Дерев'яна Мотига +Stone Hoe=Кам'яна Мотига +Steel Hoe=Сталева Мотига +Bronze Hoe=Бронзова Мотига +Mese Hoe=Месе Мотига +Diamond Hoe=Алмазна Мотига +Wheat Seed=Насіння Пшениці +Wheat=Пшениця +Flour=Мука +Bread=Хліб +Cotton Seed=Насіння Бавовни +Cotton=Бавовна +String=Нитка +Soil=Ґрунт +Wet Soil=Вологий Ґрунт +Savanna Soil=Саванновий Ґрунт +Wet Savanna Soil=Вологий Саванновий Ґрунт +Desert Sand Soil=Пустинний Піщаний Ґрунт +Wet Desert Sand Soil=Вологий Пустельний Піщаний Ґрунт +Straw=Солома +Straw Stair=Солом'яна Сходинка +Inner Straw Stair=Кутова Солом'яна Сходинка (Внутрішній Кут) +Outer Straw Stair=Кутова Солом'яна Сходинка (Зовнішній Кут) +Straw Slab=Солом'яна Плита +Wild Cotton=Дика Бавовна diff --git a/mods/fire/locale/fire.uk.tr b/mods/fire/locale/fire.uk.tr new file mode 100644 index 00000000..9da0beb6 --- /dev/null +++ b/mods/fire/locale/fire.uk.tr @@ -0,0 +1,4 @@ +# textdomain: fire +Fire=Вогонь +Permanent Fire=Вічний Вогонь +Flint and Steel=Кремінь і Сталь diff --git a/mods/fireflies/locale/fireflies.uk.tr b/mods/fireflies/locale/fireflies.uk.tr new file mode 100644 index 00000000..f1aa265f --- /dev/null +++ b/mods/fireflies/locale/fireflies.uk.tr @@ -0,0 +1,5 @@ +# textdomain: fireflies +Firefly=Світлячок +Hidden Firefly=Світлячок, що причаївся +Bug Net=Сачок Для Ловлі Комах +Firefly in a Bottle=Світлячок у Пляшці diff --git a/mods/flowers/locale/flowers.uk.tr b/mods/flowers/locale/flowers.uk.tr new file mode 100644 index 00000000..25d8f82a --- /dev/null +++ b/mods/flowers/locale/flowers.uk.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.uk.tr b/mods/game_commands/locale/game_commands.uk.tr new file mode 100644 index 00000000..7e8241e8 --- /dev/null +++ b/mods/game_commands/locale/game_commands.uk.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/keys/locale/keys.uk.tr b/mods/keys/locale/keys.uk.tr new file mode 100644 index 00000000..832d1c70 --- /dev/null +++ b/mods/keys/locale/keys.uk.tr @@ -0,0 +1,4 @@ +# textdomain: keys +Key=Ключ +Key to @1's @2=Ключ до @2 від @1 +Skeleton Key=Ключ Кістяка diff --git a/mods/map/locale/map.uk.tr b/mods/map/locale/map.uk.tr new file mode 100644 index 00000000..3f58b781 --- /dev/null +++ b/mods/map/locale/map.uk.tr @@ -0,0 +1,3 @@ +# textdomain: map +Mapping Kit=Картографічний Комплект +Use with 'Minimap' key=Використовуйте за допомогою ключа 'Minimap' diff --git a/mods/mtg_craftguide/locale/mtg_craftguide.uk.tr b/mods/mtg_craftguide/locale/mtg_craftguide.uk.tr new file mode 100644 index 00000000..52d33a45 --- /dev/null +++ b/mods/mtg_craftguide/locale/mtg_craftguide.uk.tr @@ -0,0 +1,53 @@ +# textdomain: mtg_craftguide +Any coal=Будь-яке вугілля +Any sand=Будь-якій пісок +Any wool=Будь-яка вовна +Any stick=Будь-яка паличка +Any vessel=Будь-який посуд +Any wood planks=Будь-які дерев'яні палички +Any kind of stone block=Будь-який кам'яний блок +Any red flower=Будь-яка червона квітка +Any blue flower=Будь-яка синя квітка +Any black flower=Будь-яка чорна квітка +Any green flower=Будь-яка зелена квітка +Any white flower=Будь-яка біла квітка +Any orange flower=Будь-яка помаранчева квітка +Any violet flower=Будь-яка фіолетова квітка +Any yellow flower=Будь-яка жовта квітка +Any red dye=Будь-яка червона фарба +Any blue dye=Будь-яка синя фарба +Any cyan dye=Будь-яка синьо-зелена фарба +Any grey dye=Будь-яка сіра фарба +Any pink dye=Будь-яка рожева фарба +Any black dye=Будь-яка чорна фарба +Any brown dye=Будь-яка коричнева фарба +Any green dye=Будь-яка зелена фарба +Any white dye=Будь-яка біла фарба +Any orange dye=Будь-яка помаранчева фарба +Any violet dye=Будь-яка фіолетова фарба +Any yellow dye=Будь-яка жовта фарба +Any magenta dye=Будь-який пурпурна фарба +Any dark grey dye=Будь-яка темно-сіра фарба +Any dark green dye=Будь-яка темно-зелена фарба +# Label for group ingredients +G= +Any item belonging to the group(s): @1=Будь-який предмет з груп(и): @1 +Unknown Item=Невідомий предмет +Fuel=Паливо +Usage @1 of @2=Використано @1 з @2 +Recipe @1 of @2=Рецепт @1 з @2 +Previous recipe=Попередній рецепт +Next recipe=Наступний рецепт +Recipe is too big to be displayed.=Рецепт занадто великий для показу. +Shapeless=Безформний +Cooking time: @1=Час виготовлення: @1 +Search=Пошук +Reset=Скинути +Previous page=Попередня сторінка +Next page=Наступна сторінка +No items to show.=Немає елементів для показу. +No usages.=Не використовується. +Click again to show recipes.=Натисніть ще раз, щоб показати рецепти. +No recipes.=Немає рецептів. +Click again to show usages.=Натисніть ще раз, щоб показати використання. +Recipes=Рецепти diff --git a/mods/screwdriver/locale/screwdriver.uk.tr b/mods/screwdriver/locale/screwdriver.uk.tr new file mode 100644 index 00000000..363e4c4c --- /dev/null +++ b/mods/screwdriver/locale/screwdriver.uk.tr @@ -0,0 +1,3 @@ +# textdomain: screwdriver +Screwdriver=Викрутка +(left-click rotates face, right-click rotates axis)=(клік лівою кнопкою миші повертає край, клік правою кнопкою миші - вісь) diff --git a/mods/sethome/locale/sethome.uk.tr b/mods/sethome/locale/sethome.uk.tr new file mode 100644 index 00000000..d8d4a8fc --- /dev/null +++ b/mods/sethome/locale/sethome.uk.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.uk.tr b/mods/sfinv/locale/sfinv.uk.tr new file mode 100644 index 00000000..d7c11b2f --- /dev/null +++ b/mods/sfinv/locale/sfinv.uk.tr @@ -0,0 +1,2 @@ +# textdomain: sfinv +Crafting=Крафтинг diff --git a/mods/stairs/locale/stairs.uk.tr b/mods/stairs/locale/stairs.uk.tr new file mode 100644 index 00000000..fe8a57c3 --- /dev/null +++ b/mods/stairs/locale/stairs.uk.tr @@ -0,0 +1,145 @@ +# textdomain: stairs +Glass Stair=Скляна Сходинка +Glass Slab=Скляна Плита +Inner Glass Stair=Кутова Скляна Сходинка (Внутрішній Кут) +Outer Glass Stair=Кутова Скляна Сходинка (Зовнішній Кут) +Obsidian Glass Stair=Скляна Сходинка З Обсидіану +Obsidian Glass Slab=Скляна Плита З Обсидіану +Inner Obsidian Glass Stair=Кутова Скляна Сходинка З Обсидіану (Внутрішній Кут) +Outer Obsidian Glass Stair=Кутова Скляна Сходинка З Обсидіану (Зовнішній Кут) +Wooden Stair=Яблунева Дерев'яна Сходинка +Inner Wooden Stair=Кутова Яблунева Дерев'яна Сходинка (Внутрішній Кут) +Outer Wooden Stair=Кутова Яблунева Дерев'яна Сходинка (Внутрішній Кут) +Wooden Slab=Яблунева Дерев'яна Плита +Jungle Wood Stair=Дерев'яна Сходинка З Тропічного Дерева +Inner Jungle Wood Stair=Кутова Дерев'яна Сходинка З Тропічного Дерева (Внутрішній Кут) +Outer Jungle Wood Stair=Кутова Дерев'яна Сходинка З Тропічного Дерева (Зовнішній Кут) +Jungle Wood Slab=Дерев'яна Плита З Тропічного Дерева +Pine Wood Stair=Дерев'яна Сходинка З Сосни +Inner Pine Wood Stair=Кутова Дерев'яна Сходинка З Сосни (Внутрішній Кут) +Outer Pine Wood Stair=Кутова Дерев'яна Сходинка З Сосни (Зовнішній Кут) +Pine Wood Slab=Дерев'яна Плита З Сосни +Acacia Wood Stair=Дерев'яна Сходинка З Акації +Inner Acacia Wood Stair=Кутова Дерев'яна Сходинка З Акації (Внутрішній Кут) +Outer Acacia Wood Stair=Кутова Дерев'яна Сходинка З Акації (Зовнішній Кут) +Acacia Wood Slab=Дерев'яна Плита З Акації +Aspen Wood Stair=Дерев'яна Сходинка З Осики +Inner Aspen Wood Stair=Кутова Дерев'яна Сходинка З Осики (Внутрішній Кут) +Outer Aspen Wood Stair=Кутова Дерев'яна Сходинка З Осики (Зовнішній Кут) +Aspen Wood Slab=Дерев'яна Плита З Осики +Stone Stair=Кам'яна Сходинка +Inner Stone Stair=Кутова Кам'яна Сходинка (Внутрішній Кут) +Outer Stone Stair=Кутова Кам'яна Сходинка (Зовнішній Кут) +Stone Slab=Кам'яна Плита +Cobblestone Stair=Сходинка З Кругляку +Inner Cobblestone Stair=Кутова Сходинка З Кругляку (Внутрішній Кут) +Outer Cobblestone Stair=Кутова Сходинка З Кругляку (Зовнішній Кут) +Cobblestone Slab=Плита З Кругляку +Mossy Cobblestone Stair=Мохова Сходинка З Кругляку +Inner Mossy Cobblestone Stair=Кутова Мохова Сходинка З Кругляку (Внутрішній Кут) +Outer Mossy Cobblestone Stair=Кутова Мохова Сходинка З Кругляку (Зовнішній Кут) +Mossy Cobblestone Slab=Мохова Плита З Кругляку +Stone Brick Stair=Сходинка З Кам'яної Цегли +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/locale/tnt.uk.tr b/mods/tnt/locale/tnt.uk.tr new file mode 100644 index 00000000..684466d5 --- /dev/null +++ b/mods/tnt/locale/tnt.uk.tr @@ -0,0 +1,4 @@ +# textdomain: tnt +Gun Powder=Порох +TNT Stick=Тротилова Паличка +TNT=Тротил diff --git a/mods/vessels/locale/vessels.uk.tr b/mods/vessels/locale/vessels.uk.tr new file mode 100644 index 00000000..172e356a --- /dev/null +++ b/mods/vessels/locale/vessels.uk.tr @@ -0,0 +1,8 @@ +# textdomain: vessels +Empty Vessels Shelf=Полиця з Пустим Посудом +Vessels Shelf (@1 items)=Полиця з Посудом (@1 предмета) +Vessels Shelf=Полиця з Посудом +Empty Glass Bottle=Порожня Скляна Пляшка +Empty Drinking Glass=Порожня Питна Пляшка +Empty Heavy Steel Bottle=Порожня Сталева Пляшка +Glass Fragments=Скляні Уламки diff --git a/mods/walls/locale/walls.uk.tr b/mods/walls/locale/walls.uk.tr new file mode 100644 index 00000000..f92d7cc4 --- /dev/null +++ b/mods/walls/locale/walls.uk.tr @@ -0,0 +1,4 @@ +# textdomain: walls +Cobblestone Wall=Паркан З Кругляку +Mossy Cobblestone Wall=Паркан З Мохового Кругляку +Desert Cobblestone Wall=Паркан З Пустельного Кругляку diff --git a/mods/wool/locale/wool.uk.tr b/mods/wool/locale/wool.uk.tr new file mode 100644 index 00000000..b9a3f7a1 --- /dev/null +++ b/mods/wool/locale/wool.uk.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/locale/xpanes.uk.tr b/mods/xpanes/locale/xpanes.uk.tr new file mode 100644 index 00000000..d4b4b5c8 --- /dev/null +++ b/mods/xpanes/locale/xpanes.uk.tr @@ -0,0 +1,6 @@ +# textdomain: xpanes +Glass Pane=Скляна Панель +Obsidian Glass Pane=Скляна Панель З Обсидіану +Steel Bars=Сталева Решітка +Steel Bar Door=Сталеві Двері З Решіткою +Steel Bar Trapdoor=Сталевий Люк З Решіткою From 172b62f802114d2330b9ebb5921621a68dfceb5c Mon Sep 17 00:00:00 2001 From: An0n3m0us Date: Sun, 30 Jan 2022 12:54:37 +0000 Subject: [PATCH 26/36] Add trapdoor/door model specification (#2371) --- game_api.txt | 5 +++++ mods/doors/init.lua | 24 ++++++++++++++++-------- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/game_api.txt b/game_api.txt index 0495b29b..ab68aa9a 100644 --- a/game_api.txt +++ b/game_api.txt @@ -218,6 +218,8 @@ The doors mod allows modders to register custom doors and trapdoors. description = "Door description", inventory_image = "mod_door_inv.png", groups = {choppy = 2}, + model = "mod_door", -- (optional) + -- Model name without a suffix ("big_door" not "big_door_a.obj", "big_door_b.obj") tiles = {"mod_door.png"}, -- UV map. -- The front and back of the door must be identical in appearence as they swap on -- open/close. @@ -236,6 +238,9 @@ The doors mod allows modders to register custom doors and trapdoors. description = "Trapdoor description", inventory_image = "mod_trapdoor_inv.png", + nodebox_closed = {} -- Nodebox for closed model + nodebox_opened = {} -- Nodebox for opened model + -- (optional) both nodeboxes must be used, not one only groups = {choppy = 2}, tile_front = "doors_trapdoor.png", -- the texture for the front and back of the trapdoor tile_side = "doors_trapdoor_side.png", diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 6681055a..403ad5ab 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -670,10 +670,14 @@ function doors.register_trapdoor(name, def) local def_opened = table.copy(def) local def_closed = table.copy(def) - def_closed.node_box = { - type = "fixed", - fixed = {-0.5, -0.5, -0.5, 0.5, -6/16, 0.5} - } + if def.nodebox_closed and def.nodebox_opened then + def_closed.node_box = def.nodebox_closed + else + def_closed.node_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -6/16, 0.5} + } + end def_closed.selection_box = { type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -6/16, 0.5} @@ -687,10 +691,14 @@ function doors.register_trapdoor(name, def) def.tile_side } - def_opened.node_box = { - type = "fixed", - fixed = {-0.5, -0.5, 6/16, 0.5, 0.5, 0.5} - } + if def.nodebox_opened and def.nodebox_closed then + def_opened.node_box = def.nodebox_opened + else + def_opened.node_box = { + type = "fixed", + fixed = {-0.5, -0.5, 6/16, 0.5, 0.5, 0.5} + } + end def_opened.selection_box = { type = "fixed", fixed = {-0.5, -0.5, 6/16, 0.5, 0.5, 0.5} From cc3e7be429845e55eaa6ed8883f778ed46c54449 Mon Sep 17 00:00:00 2001 From: baytuch Date: Sun, 30 Jan 2022 16:20:14 +0200 Subject: [PATCH 27/36] Update Ukranian (uk) translation --- mods/bones/locale/bones.uk.tr | 2 +- mods/default/locale/default.uk.tr | 4 ++-- mods/stairs/locale/stairs.uk.tr | 14 +++++++------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/mods/bones/locale/bones.uk.tr b/mods/bones/locale/bones.uk.tr index 58ffe77b..73b57a76 100644 --- a/mods/bones/locale/bones.uk.tr +++ b/mods/bones/locale/bones.uk.tr @@ -1,6 +1,6 @@ # textdomain: bones Bones=Кістки -@1's old bones=Старі кістки @1 +@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, розміщені кістки. diff --git a/mods/default/locale/default.uk.tr b/mods/default/locale/default.uk.tr index 2432cfa6..6f8a4890 100644 --- a/mods/default/locale/default.uk.tr +++ b/mods/default/locale/default.uk.tr @@ -75,7 +75,7 @@ Savanna Dirt=Саваннова Земля Savanna Dirt with Savanna Grass=Саваннова Земля Із Травою Permafrost=Заморожений Ґрунт Permafrost with Stones=Заморожений Ґрунт Із Камінням -Permafrost with Moss=Заморожена Ґрунт із Мохом +Permafrost with Moss=Заморожений Ґрунт Із Мохом Sand=Пісок Desert Sand=Пустельний Пісок Silver Sand=Срібний Пісок @@ -158,7 +158,7 @@ Flowing River Water=Проточна Річна Вода Lava Source=Лавове Джерело Flowing Lava=Проточна Лава Empty Bookshelf=Порожня Книжкова Полиця -Bookshelf (@1 written, @2 empty books)=Книжкова полиця (@1 написано, @2 чисті книги) +Bookshelf (@1 written, @2 empty books)=Книжкова Полиця (@1 книг з записами, @2 чисті книги) Bookshelf=Книжкова Полиця Text too long=Текст надто довгий "@1"="@1" diff --git a/mods/stairs/locale/stairs.uk.tr b/mods/stairs/locale/stairs.uk.tr index fe8a57c3..f501b5eb 100644 --- a/mods/stairs/locale/stairs.uk.tr +++ b/mods/stairs/locale/stairs.uk.tr @@ -43,10 +43,10 @@ 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=Плита З Кам'яного Блока +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=Кутова Сходинка З Пустельного Каменю (Зовнішній Кут) @@ -79,9 +79,9 @@ 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 Stair=Сходинка З Цегли Із Пустельного Піщанику +Inner Desert Sandstone Brick Stair=Кутова Сходинка З Цегли Із Пустельного Піщанику (Внутрішній Кут) +Outer Desert Sandstone Brick Stair=Кутова Сходинка З Цегли Із Пустельного Піщанику (Зовнішній Кут) Desert Sandstone Brick Slab=Плита З Цегли Із Пустельного Піщанику Desert Sandstone Block Stair=Сходинка З Блоку Із Пустельного Піщанику Inner Desert Sandstone Block Stair=Кутова Сходинка З Блоку Із Пустельного Піщанику (Внутрішній Кут) From e02e55fafdb4681864fca1c6479415bfe8512fc9 Mon Sep 17 00:00:00 2001 From: baytuch Date: Tue, 1 Feb 2022 12:09:21 +0200 Subject: [PATCH 28/36] Minor translation refinement for UK and RU langs (Drinking Glass) (#2925) --- mods/vessels/locale/vessels.ru.tr | 2 +- mods/vessels/locale/vessels.uk.tr | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/vessels/locale/vessels.ru.tr b/mods/vessels/locale/vessels.ru.tr index 070d884b..196d842d 100644 --- a/mods/vessels/locale/vessels.ru.tr +++ b/mods/vessels/locale/vessels.ru.tr @@ -3,6 +3,6 @@ Empty Vessels Shelf=Полка с Пустыми Сосудами Vessels Shelf (@1 items)=Полка с Сосудами (@1 предметы) Vessels Shelf=Полка с Сосудами Empty Glass Bottle=Пустая Стеклянная Бутылка -Empty Drinking Glass=Пустая Питьевая Бутылка +Empty Drinking Glass=Пустой Стакан Empty Heavy Steel Bottle=Пустая Стальная Бутылка Glass Fragments=Стеклянные Осколки diff --git a/mods/vessels/locale/vessels.uk.tr b/mods/vessels/locale/vessels.uk.tr index 172e356a..50258358 100644 --- a/mods/vessels/locale/vessels.uk.tr +++ b/mods/vessels/locale/vessels.uk.tr @@ -3,6 +3,6 @@ Empty Vessels Shelf=Полиця з Пустим Посудом Vessels Shelf (@1 items)=Полиця з Посудом (@1 предмета) Vessels Shelf=Полиця з Посудом Empty Glass Bottle=Порожня Скляна Пляшка -Empty Drinking Glass=Порожня Питна Пляшка +Empty Drinking Glass=Порожня Склянка Empty Heavy Steel Bottle=Порожня Сталева Пляшка Glass Fragments=Скляні Уламки From 584a6a21029dcac694efdf12b2a94ece06186f85 Mon Sep 17 00:00:00 2001 From: bell07 Date: Thu, 3 Feb 2022 09:10:53 +0100 Subject: [PATCH 29/36] player_api - fix compatibility code get_animation does not return the data if called from outside without this change --- mods/player_api/api.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/player_api/api.lua b/mods/player_api/api.lua index d7aab4ed..b3e3f5ee 100644 --- a/mods/player_api/api.lua +++ b/mods/player_api/api.lua @@ -218,6 +218,6 @@ for _, api_function in pairs({"get_animation", "set_animation", "set_model", "se minetest.log("warning", api_function .. " called on offline player") return end - original_function(player, ...) + return original_function(player, ...) end end From 240f9a6a8527d71376839d9efac70db9a6dd6566 Mon Sep 17 00:00:00 2001 From: baytuch Date: Tue, 15 Feb 2022 21:29:34 +0200 Subject: [PATCH 30/36] Fix translation of "cotton" for UK and RU locales --- mods/farming/locale/farming.ru.tr | 4 ++-- mods/farming/locale/farming.uk.tr | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/farming/locale/farming.ru.tr b/mods/farming/locale/farming.ru.tr index 7b771392..4da864e9 100644 --- a/mods/farming/locale/farming.ru.tr +++ b/mods/farming/locale/farming.ru.tr @@ -11,7 +11,7 @@ Wheat Seed=Семена Пшеницы Wheat=Пшеница Flour=Мука Bread=Хлеб -Cotton Seed=Семена Хлопка +Cotton Seed=Семена Хлопчатника Cotton=Хлопок String=Нить Soil=Почва @@ -25,7 +25,7 @@ Straw Stair=Соломенная Ступень Inner Straw Stair=Угловая Соломенная Ступень (Внутренний Угол) Outer Straw Stair=Угловая Соломенная Ступень (Внешний Угол) Straw Slab=Соломенная Плита -Wild Cotton=Неокультуренный Хлопок +Wild Cotton=Неокультуренный Хлопчатник ##### not used anymore ##### diff --git a/mods/farming/locale/farming.uk.tr b/mods/farming/locale/farming.uk.tr index 61d7147c..854491c1 100644 --- a/mods/farming/locale/farming.uk.tr +++ b/mods/farming/locale/farming.uk.tr @@ -11,7 +11,7 @@ Wheat Seed=Насіння Пшениці Wheat=Пшениця Flour=Мука Bread=Хліб -Cotton Seed=Насіння Бавовни +Cotton Seed=Насіння Бавовнику Cotton=Бавовна String=Нитка Soil=Ґрунт @@ -25,4 +25,4 @@ Straw Stair=Солом'яна Сходинка Inner Straw Stair=Кутова Солом'яна Сходинка (Внутрішній Кут) Outer Straw Stair=Кутова Солом'яна Сходинка (Зовнішній Кут) Straw Slab=Солом'яна Плита -Wild Cotton=Дика Бавовна +Wild Cotton=Дикий Бавовник From a6f3b895963e3a4feba035ca0578c18aa86a645d Mon Sep 17 00:00:00 2001 From: Lars Mueller Date: Sun, 13 Mar 2022 00:00:28 +0100 Subject: [PATCH 31/36] player_api: Fix crash for players without model --- mods/player_api/api.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/player_api/api.lua b/mods/player_api/api.lua index b3e3f5ee..a80cecb9 100644 --- a/mods/player_api/api.lua +++ b/mods/player_api/api.lua @@ -182,7 +182,7 @@ minetest.register_globalstep(function() for _, player in pairs(minetest.get_connected_players()) do local name = player:get_player_name() local player_data = players[name] - local model = models[player_data.model] + local model = player_data and models[player_data.model] if model and not player_attached[name] then local controls = player:get_player_control() local animation_speed_mod = model.animation_speed or 30 From f66538201792fa64441e00efda2ed48da649a1cf Mon Sep 17 00:00:00 2001 From: LoneWolfHT Date: Mon, 7 Feb 2022 11:44:02 -0800 Subject: [PATCH 32/36] Allow mods to override animation globalstep --- mods/player_api/api.lua | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/mods/player_api/api.lua b/mods/player_api/api.lua index a80cecb9..12d23bcb 100644 --- a/mods/player_api/api.lua +++ b/mods/player_api/api.lua @@ -178,8 +178,8 @@ function minetest.calculate_knockback(player, ...) end -- Check each player and apply animations -minetest.register_globalstep(function() - for _, player in pairs(minetest.get_connected_players()) do +function player_api.globalstep() + for _, player in ipairs(minetest.get_connected_players()) do local name = player:get_player_name() local player_data = players[name] local model = player_data and models[player_data.model] @@ -208,6 +208,11 @@ minetest.register_globalstep(function() end end end +end + +-- Mods can modify the globalstep by overriding player_api.globalstep +minetest.register_globalstep(function(...) + player_api.globalstep(players, ...) end) for _, api_function in pairs({"get_animation", "set_animation", "set_model", "set_textures"}) do From 268a8844b614b08ea5c05188379c9cc6182269cd Mon Sep 17 00:00:00 2001 From: LoneWolfHT Date: Mon, 7 Feb 2022 11:47:25 -0800 Subject: [PATCH 33/36] Use a local for the globalstep function --- mods/player_api/api.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mods/player_api/api.lua b/mods/player_api/api.lua index 12d23bcb..8517d58a 100644 --- a/mods/player_api/api.lua +++ b/mods/player_api/api.lua @@ -211,8 +211,11 @@ function player_api.globalstep() end -- Mods can modify the globalstep by overriding player_api.globalstep + +-- local for speed +local player_api_globalstep = player_api.globalstep minetest.register_globalstep(function(...) - player_api.globalstep(players, ...) + player_api_globalstep(players, ...) end) for _, api_function in pairs({"get_animation", "set_animation", "set_model", "set_textures"}) do From 0110e01826329dc2f4757eed84f697a8fae5d900 Mon Sep 17 00:00:00 2001 From: LoneWolfHT Date: Mon, 7 Feb 2022 12:32:49 -0800 Subject: [PATCH 34/36] Fix bug and globalize `players` table --- mods/player_api/api.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mods/player_api/api.lua b/mods/player_api/api.lua index 8517d58a..13a3aa41 100644 --- a/mods/player_api/api.lua +++ b/mods/player_api/api.lua @@ -50,9 +50,12 @@ end -- Player stats and animations -- model, textures, animation -local players = {} +player_api.players = {} player_api.player_attached = {} +-- Local for speed. +local players = player_api.players + local function get_player_data(player) return assert(players[player:get_player_name()]) end @@ -211,11 +214,8 @@ function player_api.globalstep() end -- Mods can modify the globalstep by overriding player_api.globalstep - --- local for speed -local player_api_globalstep = player_api.globalstep minetest.register_globalstep(function(...) - player_api_globalstep(players, ...) + player_api.globalstep(...) end) for _, api_function in pairs({"get_animation", "set_animation", "set_model", "set_textures"}) do From ce82241ab207b2957099d5c18bbb15e9f3c565c8 Mon Sep 17 00:00:00 2001 From: LoneWolfHT Date: Mon, 7 Feb 2022 12:36:47 -0800 Subject: [PATCH 35/36] Undo globalization --- mods/player_api/api.lua | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/mods/player_api/api.lua b/mods/player_api/api.lua index 13a3aa41..e39847db 100644 --- a/mods/player_api/api.lua +++ b/mods/player_api/api.lua @@ -50,12 +50,9 @@ end -- Player stats and animations -- model, textures, animation -player_api.players = {} +local players = {} player_api.player_attached = {} --- Local for speed. -local players = player_api.players - local function get_player_data(player) return assert(players[player:get_player_name()]) end From 659895c3ed253dcbede45216bc8e8861341fb1a9 Mon Sep 17 00:00:00 2001 From: LoneWolfHT Date: Mon, 7 Feb 2022 18:17:07 -0800 Subject: [PATCH 36/36] Update game_api.txt --- game_api.txt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/game_api.txt b/game_api.txt index ab68aa9a..f6231e5a 100644 --- a/game_api.txt +++ b/game_api.txt @@ -440,11 +440,16 @@ Player API The player API can register player models and update the player's appearance. +* `player_api.globalstep(dtime, ...)` + * The function called by the globalstep that controls player animations. + You can override this to replace the globalstep with your own implementation. + * Receives all args that minetest.register_globalstep() passes + * `player_api.register_model(name, def)` * Register a new model to be used by players * `name`: model filename such as "character.x", "foo.b3d", etc. * `def`: see [#Model definition] - * Saved to player_api.registered_models + * Saved to player_api.registered_models * `player_api.registered_models[name]` * Get a model's definition