From b38b5b2357229c51378586613316fe8ce5f82524 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Sun, 24 Feb 2019 19:46:14 +0100 Subject: [PATCH 01/81] Enable colored Luacheck output on Travis CI This also removes the deprecated `sudo: false` option, as Travis CI is phasing out the container-based infrastructure. --- .travis.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 5253938a..a367215f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,12 +1,11 @@ language: generic -sudo: false addons: apt: packages: - luarocks before_install: - luarocks install --local luacheck -script: -- $HOME/.luarocks/bin/luacheck --no-color ./mods +script: +- $HOME/.luarocks/bin/luacheck ./mods notifications: email: false From 891f00e9dbb53435417468b829aaa021dcdeb529 Mon Sep 17 00:00:00 2001 From: acmgit Date: Tue, 5 Mar 2019 11:59:23 +0100 Subject: [PATCH 02/81] Flowers: Remove stack max definition (#2324) --- mods/flowers/init.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/mods/flowers/init.lua b/mods/flowers/init.lua index 3ad4bf6c..5219a455 100644 --- a/mods/flowers/init.lua +++ b/mods/flowers/init.lua @@ -46,7 +46,6 @@ local function add_simple_flower(name, desc, box, f_groups) paramtype = "light", walkable = false, buildable_to = true, - stack_max = 99, groups = f_groups, sounds = default.node_sound_leaves_defaults(), selection_box = { From b853c8a5097a9f88a27f8005e41fb08697e1bf02 Mon Sep 17 00:00:00 2001 From: sofar Date: Sat, 9 Mar 2019 17:43:49 -0800 Subject: [PATCH 03/81] Beds: Properly count players in beds This is a rebased and slightly rewritten version of #2125. --- mods/beds/functions.lua | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/mods/beds/functions.lua b/mods/beds/functions.lua index bf7bf90e..64c6288e 100644 --- a/mods/beds/functions.lua +++ b/mods/beds/functions.lua @@ -1,5 +1,4 @@ local pi = math.pi -local player_in_bed = 0 local is_sp = minetest.is_singleplayer() local enable_respawn = minetest.settings:get_bool("enable_bed_respawn") if enable_respawn == nil then @@ -59,11 +58,7 @@ local function lay_down(player, pos, bed_pos, state, skip) -- stand up if state ~= nil and not state then local p = beds.pos[name] or nil - if beds.player[name] ~= nil then - beds.player[name] = nil - beds.bed_position[name] = nil - player_in_bed = player_in_bed - 1 - end + beds.player[name] = nil -- skip here to prevent sending player specific changes (used for leaving players) if skip then return @@ -82,10 +77,9 @@ local function lay_down(player, pos, bed_pos, state, skip) -- lay down else - beds.player[name] = 1 beds.pos[name] = pos beds.bed_position[name] = bed_pos - player_in_bed = player_in_bed + 1 + beds.player[name] = 1 -- physics, eye_offset, etc player:set_eye_offset({x = 0, y = -13, z = 0}, {x = 0, y = 0, z = 0}) @@ -103,9 +97,18 @@ local function lay_down(player, pos, bed_pos, state, skip) player:hud_set_flags(hud_flags) end +local function get_player_in_bed_count() + local c = 0 + for _, _ in pairs(beds.player) do + c = c + 1 + end + return c +end + local function update_formspecs(finished) local ges = #minetest.get_connected_players() local form_n + local player_in_bed = get_player_in_bed_count() local is_majority = (ges / 2) < player_in_bed if finished then @@ -223,7 +226,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) -- Because "Force night skip" button is a button_exit, it will set fields.quit -- and lay_down call will change value of player_in_bed, so it must be taken -- earlier. - local last_player_in_bed = player_in_bed + local last_player_in_bed = get_player_in_bed_count() if fields.quit or fields.leave then lay_down(player, nil, nil, false) From 02e2cab375a315eab310f64a4d3de6bee58ba61a Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sun, 17 Mar 2019 13:56:23 +0100 Subject: [PATCH 04/81] Dungeon loot: Don't crash on unknown items fixes #2228 --- mods/dungeon_loot/mapgen.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mods/dungeon_loot/mapgen.lua b/mods/dungeon_loot/mapgen.lua index c6a45094..4394c510 100644 --- a/mods/dungeon_loot/mapgen.lua +++ b/mods/dungeon_loot/mapgen.lua @@ -88,7 +88,9 @@ local function populate_chest(pos, rand, dungeontype) amount = rand:next(loot.count[1], loot.count[2]) end - if itemdef.tool_capabilities then + if itemdef == nil then + -- item doesn't exist, do nothing + elseif itemdef.tool_capabilities then for n = 1, amount do local wear = rand:next(0.20 * 65535, 0.75 * 65535) -- 20% to 75% wear table.insert(items, ItemStack({name = loot.name, wear = wear})) From eaf6eac723038e7d74d3640a00cc560ccc4c669f Mon Sep 17 00:00:00 2001 From: Niwla23 <46248939+Niwla23@users.noreply.github.com> Date: Mon, 18 Mar 2019 23:20:24 +0100 Subject: [PATCH 05/81] Mapping kit recipe: Use "group:stick" instead of "default:stick" --- mods/map/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/map/init.lua b/mods/map/init.lua index 72b04c70..e769e77d 100644 --- a/mods/map/init.lua +++ b/mods/map/init.lua @@ -65,7 +65,7 @@ minetest.register_craftitem("map:mapping_kit", { minetest.register_craft({ output = "map:mapping_kit", recipe = { - {"default:glass", "default:paper", "default:stick"}, + {"default:glass", "default:paper", "group:stick"}, {"default:steel_ingot", "default:paper", "default:steel_ingot"}, {"group:wood", "default:paper", "dye:black"}, } From e3cd961a15e12388a617c7130b78dddcf6548ffb Mon Sep 17 00:00:00 2001 From: Paramat Date: Sat, 23 Mar 2019 23:12:44 +0000 Subject: [PATCH 06/81] Fix beds being undiggable after laying down --- mods/beds/functions.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/beds/functions.lua b/mods/beds/functions.lua index 64c6288e..ae632a98 100644 --- a/mods/beds/functions.lua +++ b/mods/beds/functions.lua @@ -59,6 +59,7 @@ local function lay_down(player, pos, bed_pos, state, skip) if state ~= nil and not state then local p = beds.pos[name] or nil beds.player[name] = nil + beds.bed_position[name] = nil -- skip here to prevent sending player specific changes (used for leaving players) if skip then return From 8b5e0a914b03451b56f4fcbd5b890e394009a10c Mon Sep 17 00:00:00 2001 From: Paramat Date: Sat, 23 Mar 2019 23:16:41 +0000 Subject: [PATCH 07/81] Dungeon loot: Avoid empty 'if' branch to satisfy lua check --- mods/dungeon_loot/mapgen.lua | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/mods/dungeon_loot/mapgen.lua b/mods/dungeon_loot/mapgen.lua index 4394c510..366d4ce4 100644 --- a/mods/dungeon_loot/mapgen.lua +++ b/mods/dungeon_loot/mapgen.lua @@ -88,20 +88,20 @@ local function populate_chest(pos, rand, dungeontype) amount = rand:next(loot.count[1], loot.count[2]) end - if itemdef == nil then - -- item doesn't exist, do nothing - elseif itemdef.tool_capabilities then - for n = 1, amount do - local wear = rand:next(0.20 * 65535, 0.75 * 65535) -- 20% to 75% wear - table.insert(items, ItemStack({name = loot.name, wear = wear})) + if itemdef then + if itemdef.tool_capabilities then + for n = 1, amount do + local wear = rand:next(0.20 * 65535, 0.75 * 65535) -- 20% to 75% wear + table.insert(items, ItemStack({name = loot.name, wear = wear})) + end + elseif itemdef.stack_max == 1 then + -- not stackable, add separately + for n = 1, amount do + table.insert(items, loot.name) + end + else + table.insert(items, ItemStack({name = loot.name, count = amount})) end - elseif itemdef.stack_max == 1 then - -- not stackable, add separately - for n = 1, amount do - table.insert(items, loot.name) - end - else - table.insert(items, ItemStack({name = loot.name, count = amount})) end end end From dd3f3b2032242e57d23fc183430cebcbf6424b00 Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Sun, 24 Mar 2019 10:59:34 +0100 Subject: [PATCH 08/81] Use group:stick in recipes (fixes #2306) --- mods/doors/init.lua | 4 ++-- mods/fireflies/init.lua | 2 +- mods/map/README.txt | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 0205ec7a..20ce026d 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -781,8 +781,8 @@ function doors.register_fencegate(name, def) minetest.register_craft({ output = name .. "_closed", recipe = { - {"default:stick", def.material, "default:stick"}, - {"default:stick", def.material, "default:stick"} + {"group:stick", def.material, "group:stick"}, + {"group:stick", def.material, "group:stick"} } }) end diff --git a/mods/fireflies/init.lua b/mods/fireflies/init.lua index 44d4a31d..066bfb4c 100644 --- a/mods/fireflies/init.lua +++ b/mods/fireflies/init.lua @@ -113,7 +113,7 @@ minetest.register_craft( { recipe = { {"farming:string", "farming:string"}, {"farming:string", "farming:string"}, - {"default:stick", ""} + {"group:stick", ""} } }) diff --git a/mods/map/README.txt b/mods/map/README.txt index c91e0d97..068439a9 100644 --- a/mods/map/README.txt +++ b/mods/map/README.txt @@ -20,7 +20,7 @@ map:mapping_kit default:glass G default:paper P -default:stick S +group:stick S default:steel_ingot I group:wood W dye:black D From dfe6fd6560c098dbaaa8296c335cb267e709af6e Mon Sep 17 00:00:00 2001 From: Paramat Date: Wed, 27 Mar 2019 02:17:32 +0000 Subject: [PATCH 09/81] Restrict waving liquid shader to normal water --- mods/default/nodes.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index aa8f3610..4cbd505a 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -2188,6 +2188,7 @@ minetest.register_node("default:coral_skeleton", { minetest.register_node("default:water_source", { description = "Water Source", drawtype = "liquid", + waving = 3, tiles = { { name = "default_water_source_animated.png", @@ -2231,6 +2232,7 @@ minetest.register_node("default:water_source", { minetest.register_node("default:water_flowing", { description = "Flowing Water", drawtype = "flowingliquid", + waving = 3, tiles = {"default_water.png"}, special_tiles = { { From efd090228d0b39f39ea7c67a959c6e8ee3ba62b1 Mon Sep 17 00:00:00 2001 From: HybridDog Date: Sat, 30 Mar 2019 21:33:08 +0100 Subject: [PATCH 10/81] fire: Document flammable group, a little code cleanup --- game_api.txt | 2 ++ mods/fire/init.lua | 23 ++++++++++++----------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/game_api.txt b/game_api.txt index b3bb3096..61be13f5 100644 --- a/game_api.txt +++ b/game_api.txt @@ -362,6 +362,8 @@ The farming API allows you to easily register plants and hoes. Fire API -------- +Add group flammable when registering a node to make fire seek for it. +Add it to an item to make it burn up when dropped in lava or fire. New node def property: `on_burn(pos)` diff --git a/mods/fire/init.lua b/mods/fire/init.lua index 612e052d..9c36720a 100644 --- a/mods/fire/init.lua +++ b/mods/fire/init.lua @@ -320,7 +320,7 @@ if fire_enabled then interval = 7, chance = 12, catch_up = false, - action = function(pos, node, active_object_count, active_object_count_wider) + action = function(pos) local p = minetest.find_node_near(pos, 1, {"air"}) if p then minetest.set_node(p, {name = "fire:basic_flame"}) @@ -337,17 +337,18 @@ if fire_enabled then interval = 5, chance = 18, catch_up = false, - action = function(pos, node, active_object_count, active_object_count_wider) + action = function(pos) local p = minetest.find_node_near(pos, 1, {"group:flammable"}) - if p then - local flammable_node = minetest.get_node(p) - local def = minetest.registered_nodes[flammable_node.name] - if def.on_burn then - def.on_burn(p) - else - minetest.remove_node(p) - minetest.check_for_falling(p) - end + if not p then + return + end + local flammable_node = minetest.get_node(p) + local def = minetest.registered_nodes[flammable_node.name] + if def.on_burn then + def.on_burn(p) + else + minetest.remove_node(p) + minetest.check_for_falling(p) end end, }) From 88d79881b895e1c000e9800ad681e23dd62a8fba Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Fri, 22 Mar 2019 19:20:36 +0000 Subject: [PATCH 11/81] Add food groups to blueberries (#2335) --- mods/default/craftitems.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/default/craftitems.lua b/mods/default/craftitems.lua index 6a1b5706..711e5c1d 100644 --- a/mods/default/craftitems.lua +++ b/mods/default/craftitems.lua @@ -343,5 +343,6 @@ minetest.register_craftitem("default:flint", { minetest.register_craftitem("default:blueberries", { description = "Blueberries", inventory_image = "default_blueberries.png", + groups = {food_blueberries = 1, food_berry = 1}, on_use = minetest.item_eat(2), }) From b20725026e6e49249f661b741be0826fa8c8a830 Mon Sep 17 00:00:00 2001 From: HybridDog Date: Sun, 31 Mar 2019 23:20:28 +0200 Subject: [PATCH 12/81] flowers: Light check optimisation in mushroom spread --- mods/flowers/init.lua | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/mods/flowers/init.lua b/mods/flowers/init.lua index 5219a455..49799cf3 100644 --- a/mods/flowers/init.lua +++ b/mods/flowers/init.lua @@ -221,8 +221,10 @@ minetest.register_node("flowers:mushroom_brown", { -- Mushroom spread and death function flowers.mushroom_spread(pos, node) - if minetest.get_node_light(pos, nil) == 15 then - minetest.remove_node(pos) + if minetest.get_node_light(pos, 0.5) > 3 then + if minetest.get_node_light(pos, nil) == 15 then + minetest.remove_node(pos) + end return end local positions = minetest.find_nodes_in_area_under_air( @@ -234,8 +236,7 @@ function flowers.mushroom_spread(pos, node) end local pos2 = positions[math.random(#positions)] pos2.y = pos2.y + 1 - if minetest.get_node_light(pos, 0.5) <= 3 and - minetest.get_node_light(pos2, 0.5) <= 3 then + if minetest.get_node_light(pos2, 0.5) <= 3 then minetest.set_node(pos2, {name = node.name}) end end From 0291c6b2107de9f270b24ed22889a597033c52bd Mon Sep 17 00:00:00 2001 From: HybridDog Date: Sat, 6 Apr 2019 22:35:48 +0200 Subject: [PATCH 13/81] Moss growth ABM: Add inner and outer cobble stairs, simplify code --- mods/default/functions.lua | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/mods/default/functions.lua b/mods/default/functions.lua index 1165c89c..e1e3e186 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -541,23 +541,26 @@ minetest.register_abm({ -- Moss growth on cobble near water -- +local moss_correspondences = { + ["default:cobble"] = "default:mossycobble", + ["stairs:slab_cobble"] = "stairs:slab_mossycobble", + ["stairs:stair_cobble"] = "stairs:stair_mossycobble", + ["stairs:stair_inner_cobble"] = "stairs:stair_inner_mossycobble", + ["stairs:stair_outer_cobble"] = "stairs:stair_outer_mossycobble", + ["walls:cobble"] = "walls:mossycobble", +} minetest.register_abm({ label = "Moss growth", - nodenames = {"default:cobble", "stairs:slab_cobble", "stairs:stair_cobble", "walls:cobble"}, + nodenames = {"default:cobble", "stairs:slab_cobble", "stairs:stair_cobble", + "stairs:stair_inner_cobble", "stairs:stair_outer_cobble", + "walls:cobble"}, neighbors = {"group:water"}, interval = 16, chance = 200, catch_up = false, action = function(pos, node) - if node.name == "default:cobble" then - minetest.set_node(pos, {name = "default:mossycobble"}) - elseif node.name == "stairs:slab_cobble" then - minetest.set_node(pos, {name = "stairs:slab_mossycobble", param2 = node.param2}) - elseif node.name == "stairs:stair_cobble" then - minetest.set_node(pos, {name = "stairs:stair_mossycobble", param2 = node.param2}) - elseif node.name == "walls:cobble" then - minetest.set_node(pos, {name = "walls:mossycobble", param2 = node.param2}) - end + node.name = moss_correspondences[node.name] + minetest.set_node(pos, node) end }) From f21bab2ff9c56147f79d06b99dac0615041fc73d Mon Sep 17 00:00:00 2001 From: Paramat Date: Fri, 19 Apr 2019 21:23:26 +0100 Subject: [PATCH 14/81] Split underground biome to correspond to surface biomes In preparation for biome-defined: dungeon materials, cave liquids, stone type, ores, decorations. '_ocean' biomes now extend to y = -255 to be deeper than default mgv5 oceans, and to create 'shallow underground biomes'. Remove unnecessary biome lists for gravel and silver sand blob ores, as those are already defined to only appear in default:stone. --- mods/default/mapgen.lua | 139 ++++++++++++++++++++++++++++++---------- 1 file changed, 105 insertions(+), 34 deletions(-) diff --git a/mods/default/mapgen.lua b/mods/default/mapgen.lua index 9c63d1ed..bde1fb20 100644 --- a/mods/default/mapgen.lua +++ b/mods/default/mapgen.lua @@ -554,14 +554,6 @@ function default.register_ores() octaves = 1, persist = 0.0 }, - biomes = {"icesheet_ocean", "tundra", "tundra_beach", "tundra_ocean", - "taiga", "taiga_ocean", "snowy_grassland", "snowy_grassland_ocean", - "grassland", "grassland_dunes", "grassland_ocean", "coniferous_forest", - "coniferous_forest_dunes", "coniferous_forest_ocean", "deciduous_forest", - "deciduous_forest_shore", "deciduous_forest_ocean", "cold_desert", - "cold_desert_ocean", "savanna", "savanna_shore", "savanna_ocean", - "rainforest", "rainforest_swamp", "rainforest_ocean", "underground", - "floatland_coniferous_forest", "floatland_coniferous_forest_ocean"} }) -- Dirt @@ -583,6 +575,7 @@ function default.register_ores() octaves = 1, persist = 0.0 }, + -- Only where default:dirt is present as surface material biomes = {"taiga", "snowy_grassland", "grassland", "coniferous_forest", "deciduous_forest", "deciduous_forest_shore", "savanna", "savanna_shore", "rainforest", "rainforest_swamp", "floatland_coniferous_forest"} @@ -607,14 +600,6 @@ function default.register_ores() octaves = 1, persist = 0.0 }, - biomes = {"icesheet_ocean", "tundra", "tundra_beach", "tundra_ocean", - "taiga", "taiga_ocean", "snowy_grassland", "snowy_grassland_ocean", - "grassland", "grassland_dunes", "grassland_ocean", "coniferous_forest", - "coniferous_forest_dunes", "coniferous_forest_ocean", "deciduous_forest", - "deciduous_forest_shore", "deciduous_forest_ocean", "cold_desert", - "cold_desert_ocean", "savanna", "savanna_shore", "savanna_ocean", - "rainforest", "rainforest_swamp", "rainforest_ocean", "underground", - "floatland_coniferous_forest", "floatland_coniferous_forest_ocean"} }) -- Scatter ores @@ -940,7 +925,15 @@ function default.register_biomes(upper_limit) node_water_top = "default:ice", depth_water_top = 10, y_max = -9, - y_min = -112, + y_min = -255, + heat_point = 0, + humidity_point = 73, + }) + + minetest.register_biome({ + name = "icesheet_under", + y_max = -256, + y_min = -31000, heat_point = 0, humidity_point = 73, }) @@ -998,7 +991,15 @@ function default.register_biomes(upper_limit) depth_riverbed = 2, vertical_blend = 1, y_max = -4, - y_min = -112, + y_min = -255, + heat_point = 0, + humidity_point = 40, + }) + + minetest.register_biome({ + name = "tundra_under", + y_max = -256, + y_min = -31000, heat_point = 0, humidity_point = 40, }) @@ -1031,7 +1032,15 @@ function default.register_biomes(upper_limit) depth_riverbed = 2, vertical_blend = 1, y_max = 3, - y_min = -112, + y_min = -255, + heat_point = 25, + humidity_point = 70, + }) + + minetest.register_biome({ + name = "taiga_under", + y_max = -256, + y_min = -31000, heat_point = 25, humidity_point = 70, }) @@ -1064,7 +1073,15 @@ function default.register_biomes(upper_limit) depth_riverbed = 2, vertical_blend = 1, y_max = 3, - y_min = -112, + y_min = -255, + heat_point = 20, + humidity_point = 35, + }) + + minetest.register_biome({ + name = "snowy_grassland_under", + y_max = -256, + y_min = -31000, heat_point = 20, humidity_point = 35, }) @@ -1109,7 +1126,15 @@ function default.register_biomes(upper_limit) node_riverbed = "default:sand", depth_riverbed = 2, y_max = 3, - y_min = -112, + y_min = -255, + heat_point = 50, + humidity_point = 35, + }) + + minetest.register_biome({ + name = "grassland_under", + y_max = -256, + y_min = -31000, heat_point = 50, humidity_point = 35, }) @@ -1154,7 +1179,15 @@ function default.register_biomes(upper_limit) node_riverbed = "default:sand", depth_riverbed = 2, y_max = 3, - y_min = -112, + y_min = -255, + heat_point = 45, + humidity_point = 70, + }) + + minetest.register_biome({ + name = "coniferous_forest_under", + y_max = -256, + y_min = -31000, heat_point = 45, humidity_point = 70, }) @@ -1199,7 +1232,15 @@ function default.register_biomes(upper_limit) depth_riverbed = 2, vertical_blend = 1, y_max = -2, - y_min = -112, + y_min = -255, + heat_point = 60, + humidity_point = 68, + }) + + minetest.register_biome({ + name = "deciduous_forest_under", + y_max = -256, + y_min = -31000, heat_point = 60, humidity_point = 68, }) @@ -1232,7 +1273,15 @@ function default.register_biomes(upper_limit) depth_riverbed = 2, vertical_blend = 1, y_max = 3, - y_min = -112, + y_min = -255, + heat_point = 92, + humidity_point = 16, + }) + + minetest.register_biome({ + name = "desert_under", + y_max = -256, + y_min = -31000, heat_point = 92, humidity_point = 16, }) @@ -1264,7 +1313,15 @@ function default.register_biomes(upper_limit) node_riverbed = "default:sand", depth_riverbed = 2, y_max = 3, - y_min = -112, + y_min = -255, + heat_point = 60, + humidity_point = 0, + }) + + minetest.register_biome({ + name = "sandstone_desert_under", + y_max = -256, + y_min = -31000, heat_point = 60, humidity_point = 0, }) @@ -1295,7 +1352,15 @@ function default.register_biomes(upper_limit) depth_riverbed = 2, vertical_blend = 1, y_max = 3, - y_min = -112, + y_min = -255, + heat_point = 40, + humidity_point = 0, + }) + + minetest.register_biome({ + name = "cold_desert_under", + y_max = -256, + y_min = -31000, heat_point = 40, humidity_point = 0, }) @@ -1340,7 +1405,15 @@ function default.register_biomes(upper_limit) depth_riverbed = 2, vertical_blend = 1, y_max = -2, - y_min = -112, + y_min = -255, + heat_point = 89, + humidity_point = 42, + }) + + minetest.register_biome({ + name = "savanna_under", + y_max = -256, + y_min = -31000, heat_point = 89, humidity_point = 42, }) @@ -1385,19 +1458,17 @@ function default.register_biomes(upper_limit) depth_riverbed = 2, vertical_blend = 1, y_max = -2, - y_min = -112, + y_min = -255, heat_point = 86, humidity_point = 65, }) - -- Underground - minetest.register_biome({ - name = "underground", - y_max = -113, + name = "rainforest_under", + y_max = -256, y_min = -31000, - heat_point = 50, - humidity_point = 50, + heat_point = 86, + humidity_point = 65, }) end From 5c48c76aa252f5627593db5034b948c83aafaaae Mon Sep 17 00:00:00 2001 From: Paramat Date: Fri, 3 May 2019 23:49:07 +0100 Subject: [PATCH 15/81] Fix trapdoor side textures and orientations Previously, opening a trapdoor caused the side textures to flip. Fix the incorrect textures. Also add a texture transform to a tile of the open trapdoor, such that the closed trapdoor sides use the lower part of the texture and the open trapdoor sides use the higher part. Clean up some codestyle issues. --- game_api.txt | 9 ++++++- mods/doors/README.txt | 4 ++- mods/doors/init.lua | 25 +++++++++++------- mods/doors/textures/doors_trapdoor_side.png | Bin 169 -> 118 bytes .../textures/doors_trapdoor_steel_side.png | Bin 101 -> 98 bytes 5 files changed, 27 insertions(+), 11 deletions(-) diff --git a/game_api.txt b/game_api.txt index 61be13f5..841c6e20 100644 --- a/game_api.txt +++ b/game_api.txt @@ -214,6 +214,8 @@ The doors mod allows modders to register custom doors and trapdoors. inventory_image = "mod_door_inv.png", groups = {choppy = 2}, tiles = {"mod_door.png"}, -- UV map. + -- The front and back of the door must be identical in appearence as they swap on + -- open/close. recipe = craftrecipe, sounds = default.node_sound_wood_defaults(), -- optional sound_open = sound play for open door, -- optional @@ -228,7 +230,12 @@ The doors mod allows modders to register custom doors and trapdoors. inventory_image = "mod_trapdoor_inv.png", groups = {choppy = 2}, tile_front = "doors_trapdoor.png", -- the texture for the front and back of the trapdoor - tile_side = "doors_trapdoor_side.png", -- the tiles of the four side parts of the trapdoor + tile_side = "doors_trapdoor_side.png", + -- The texture for the four sides of the trapdoor. + -- The texture should have the trapdoor side drawn twice, in the lowest and highest + -- 1/8ths of the texture, both upright. The area between is not used. + -- The lower 1/8th will be used for the closed trapdoor, the higher 1/8th will be used + -- for the open trapdoor. sounds = default.node_sound_wood_defaults(), -- optional sound_open = sound play for open door, -- optional sound_close = sound play for close door, -- optional diff --git a/mods/doors/README.txt b/mods/doors/README.txt index 9c114b0c..f9caaffc 100644 --- a/mods/doors/README.txt +++ b/mods/doors/README.txt @@ -40,8 +40,10 @@ Following textures created by PenguinDad (CC BY-SA 4.0): Following textures created by sofar (CC-BY-SA-3.0): doors_trapdoor_steel.png - doors_trapdoor_steel_side.png + +Following textures created by paramat (CC-BY-SA-3.0): door_trapdoor_side.png + doors_trapdoor_steel_side.png Obsidian door textures by red-001 based on textures by Pilzadam and BlockMen (CC BY-SA 3.0): door_obsidian_glass.png diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 20ce026d..dff65c7f 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -642,10 +642,14 @@ function doors.register_trapdoor(name, def) type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -6/16, 0.5} } - def_closed.tiles = {def.tile_front, - def.tile_front .. '^[transformFY', - def.tile_side, def.tile_side, - def.tile_side, def.tile_side} + def_closed.tiles = { + def.tile_front, + def.tile_front .. '^[transformFY', + def.tile_side, + def.tile_side, + def.tile_side, + def.tile_side + } def_opened.node_box = { type = "fixed", @@ -655,11 +659,14 @@ function doors.register_trapdoor(name, def) type = "fixed", fixed = {-0.5, -0.5, 6/16, 0.5, 0.5, 0.5} } - def_opened.tiles = {def.tile_side, def.tile_side, - def.tile_side .. '^[transform3', - def.tile_side .. '^[transform1', - def.tile_front .. '^[transform46', - def.tile_front .. '^[transform6'} + def_opened.tiles = { + def.tile_side, + def.tile_side .. '^[transform2', + def.tile_side .. '^[transform3', + def.tile_side .. '^[transform1', + def.tile_front .. '^[transform46', + def.tile_front .. '^[transform6' + } def_opened.drop = name_closed def_opened.groups.not_in_creative_inventory = 1 diff --git a/mods/doors/textures/doors_trapdoor_side.png b/mods/doors/textures/doors_trapdoor_side.png index 4a8b99f2836e47737f494f2c1959486337994e6e..55981ea32cb49b8227fe85beafafb2ee599653c7 100644 GIT binary patch delta 88 zcmZ3Cm9$R7?Zr+T^Kr8Wj%l#&H|6f zVg?3oVGw3ym^DWND9B#o>Fdh=kd1>=hGUOwpaxJ#!PCVtgyVX0L7`z;VPRoeVn9$z mKv0lSh>O94ppp<~h8{C<&-)9@KLOP;c)GIrxvX diff --git a/mods/doors/textures/doors_trapdoor_steel_side.png b/mods/doors/textures/doors_trapdoor_steel_side.png index 44c4344b2b4f4ba16d9ea1427d94ad5abcff8ef3..e29c59e014db2e8b1aee99b652af4138e85a3f76 100644 GIT binary patch delta 62 zcmYdInxJXPz`(G5`}T9^&WThV69;lcJY5_^IIbs0u(I$hbU5I^*)W@l!Syiv&xgg= RX949IJYD@<);T3K0RW`~6<+`V delta 65 zcmYdFouFy6ef#!v=g!@`cdtb>)SQ8VLEO{DF@)oKasoqRfI>n9D~kZr8C8EKhCO@5 VUoyE{UjQm$@O1TaS?83{1OQ2k7OMaN From aee5ba64f970e561bef1d43dd8e63c7f1c6f3a1d Mon Sep 17 00:00:00 2001 From: Paramat Date: Sat, 18 May 2019 21:22:19 +0100 Subject: [PATCH 16/81] Make cave liquids biome-determined No longer use the hardcoded engine cave liquids. Water only in '_ocean' biomes, water and lava in '_under' biomes. --- mods/default/mapgen.lua | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/mods/default/mapgen.lua b/mods/default/mapgen.lua index bde1fb20..29233c32 100644 --- a/mods/default/mapgen.lua +++ b/mods/default/mapgen.lua @@ -924,6 +924,7 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_water_top = "default:ice", depth_water_top = 10, + node_cave_liquid = "default:water_source", y_max = -9, y_min = -255, heat_point = 0, @@ -932,6 +933,7 @@ function default.register_biomes(upper_limit) minetest.register_biome({ name = "icesheet_under", + node_cave_liquid = {"default:water_source", "default:lava_source"}, y_max = -256, y_min = -31000, heat_point = 0, @@ -989,6 +991,7 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:gravel", depth_riverbed = 2, + node_cave_liquid = "default:water_source", vertical_blend = 1, y_max = -4, y_min = -255, @@ -998,6 +1001,7 @@ function default.register_biomes(upper_limit) minetest.register_biome({ name = "tundra_under", + node_cave_liquid = {"default:water_source", "default:lava_source"}, y_max = -256, y_min = -31000, heat_point = 0, @@ -1030,6 +1034,7 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_cave_liquid = "default:water_source", vertical_blend = 1, y_max = 3, y_min = -255, @@ -1039,6 +1044,7 @@ function default.register_biomes(upper_limit) minetest.register_biome({ name = "taiga_under", + node_cave_liquid = {"default:water_source", "default:lava_source"}, y_max = -256, y_min = -31000, heat_point = 25, @@ -1071,6 +1077,7 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_cave_liquid = "default:water_source", vertical_blend = 1, y_max = 3, y_min = -255, @@ -1080,6 +1087,7 @@ function default.register_biomes(upper_limit) minetest.register_biome({ name = "snowy_grassland_under", + node_cave_liquid = {"default:water_source", "default:lava_source"}, y_max = -256, y_min = -31000, heat_point = 20, @@ -1125,6 +1133,7 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_cave_liquid = "default:water_source", y_max = 3, y_min = -255, heat_point = 50, @@ -1133,6 +1142,7 @@ function default.register_biomes(upper_limit) minetest.register_biome({ name = "grassland_under", + node_cave_liquid = {"default:water_source", "default:lava_source"}, y_max = -256, y_min = -31000, heat_point = 50, @@ -1178,6 +1188,7 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_cave_liquid = "default:water_source", y_max = 3, y_min = -255, heat_point = 45, @@ -1186,6 +1197,7 @@ function default.register_biomes(upper_limit) minetest.register_biome({ name = "coniferous_forest_under", + node_cave_liquid = {"default:water_source", "default:lava_source"}, y_max = -256, y_min = -31000, heat_point = 45, @@ -1230,6 +1242,7 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_cave_liquid = "default:water_source", vertical_blend = 1, y_max = -2, y_min = -255, @@ -1239,6 +1252,7 @@ function default.register_biomes(upper_limit) minetest.register_biome({ name = "deciduous_forest_under", + node_cave_liquid = {"default:water_source", "default:lava_source"}, y_max = -256, y_min = -31000, heat_point = 60, @@ -1271,6 +1285,7 @@ function default.register_biomes(upper_limit) node_stone = "default:desert_stone", node_riverbed = "default:sand", depth_riverbed = 2, + node_cave_liquid = "default:water_source", vertical_blend = 1, y_max = 3, y_min = -255, @@ -1280,6 +1295,7 @@ function default.register_biomes(upper_limit) minetest.register_biome({ name = "desert_under", + node_cave_liquid = {"default:water_source", "default:lava_source"}, y_max = -256, y_min = -31000, heat_point = 92, @@ -1312,6 +1328,7 @@ function default.register_biomes(upper_limit) node_stone = "default:sandstone", node_riverbed = "default:sand", depth_riverbed = 2, + node_cave_liquid = "default:water_source", y_max = 3, y_min = -255, heat_point = 60, @@ -1320,6 +1337,7 @@ function default.register_biomes(upper_limit) minetest.register_biome({ name = "sandstone_desert_under", + node_cave_liquid = {"default:water_source", "default:lava_source"}, y_max = -256, y_min = -31000, heat_point = 60, @@ -1350,6 +1368,7 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_cave_liquid = "default:water_source", vertical_blend = 1, y_max = 3, y_min = -255, @@ -1359,6 +1378,7 @@ function default.register_biomes(upper_limit) minetest.register_biome({ name = "cold_desert_under", + node_cave_liquid = {"default:water_source", "default:lava_source"}, y_max = -256, y_min = -31000, heat_point = 40, @@ -1403,6 +1423,7 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_cave_liquid = "default:water_source", vertical_blend = 1, y_max = -2, y_min = -255, @@ -1412,6 +1433,7 @@ function default.register_biomes(upper_limit) minetest.register_biome({ name = "savanna_under", + node_cave_liquid = {"default:water_source", "default:lava_source"}, y_max = -256, y_min = -31000, heat_point = 89, @@ -1456,6 +1478,7 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_cave_liquid = "default:water_source", vertical_blend = 1, y_max = -2, y_min = -255, @@ -1465,6 +1488,7 @@ function default.register_biomes(upper_limit) minetest.register_biome({ name = "rainforest_under", + node_cave_liquid = {"default:water_source", "default:lava_source"}, y_max = -256, y_min = -31000, heat_point = 86, From 80c10cee15de89bd8ca2e56c6702f78a01b8f468 Mon Sep 17 00:00:00 2001 From: Paul Ouellette Date: Sun, 26 May 2019 15:16:53 -0400 Subject: [PATCH 17/81] Capitalize author in game.conf to match ContentDB The author is used to track packages for updating, so it should match. --- game.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game.conf b/game.conf index 255451fc..5c968825 100644 --- a/game.conf +++ b/game.conf @@ -1,3 +1,3 @@ name = Minetest Game -author = minetest +author = Minetest description = Bundled by default with Minetest, and aims to be lightweight, moddable, and fairly playable without mods. From 76a08a7058429d51bd12e9bf5b1f90c569aff68f Mon Sep 17 00:00:00 2001 From: Zweihorn <4863737+Zweihorn@users.noreply.github.com> Date: Sun, 26 May 2019 21:21:31 +0200 Subject: [PATCH 18/81] wool: use global 'dye.dyes' table --- mods/wool/depends.txt | 1 + mods/wool/init.lua | 18 +----------------- 2 files changed, 2 insertions(+), 17 deletions(-) diff --git a/mods/wool/depends.txt b/mods/wool/depends.txt index 4ad96d51..2717befb 100644 --- a/mods/wool/depends.txt +++ b/mods/wool/depends.txt @@ -1 +1,2 @@ default +dye diff --git a/mods/wool/init.lua b/mods/wool/init.lua index 3e565a47..d10074a1 100644 --- a/mods/wool/init.lua +++ b/mods/wool/init.lua @@ -1,20 +1,4 @@ -local dyes = { - {"white", "White"}, - {"grey", "Grey"}, - {"black", "Black"}, - {"red", "Red"}, - {"yellow", "Yellow"}, - {"green", "Green"}, - {"cyan", "Cyan"}, - {"blue", "Blue"}, - {"magenta", "Magenta"}, - {"orange", "Orange"}, - {"violet", "Violet"}, - {"brown", "Brown"}, - {"pink", "Pink"}, - {"dark_grey", "Dark Grey"}, - {"dark_green", "Dark Green"}, -} +local dyes = dye.dyes for i = 1, #dyes do local name, desc = unpack(dyes[i]) From e19f42d6481b0ba4d7397702ed866f861c5fda12 Mon Sep 17 00:00:00 2001 From: An0n3m0us Date: Sat, 1 Jun 2019 20:10:30 +0100 Subject: [PATCH 19/81] Add groups for tools and mushrooms (#2378) --- mods/bucket/init.lua | 8 +++++--- mods/default/craftitems.lua | 16 ++++++++-------- mods/default/tools.lua | 28 ++++++++++++++++++++++++---- mods/farming/hoes.lua | 14 ++++++++------ mods/flowers/init.lua | 4 ++-- mods/screwdriver/init.lua | 1 + 6 files changed, 48 insertions(+), 23 deletions(-) diff --git a/mods/bucket/init.lua b/mods/bucket/init.lua index 1d37cb42..7b89e8e4 100644 --- a/mods/bucket/init.lua +++ b/mods/bucket/init.lua @@ -114,6 +114,7 @@ minetest.register_craftitem("bucket:bucket_empty", { description = "Empty Bucket", inventory_image = "bucket.png", stack_max = 99, + groups = {tool = 1}, liquids_pointable = true, on_use = function(itemstack, user, pointed_thing) if pointed_thing.type == "object" then @@ -186,7 +187,7 @@ bucket.register_liquid( "bucket:bucket_water", "bucket_water.png", "Water Bucket", - {water_bucket = 1} + {tool = 1, water_bucket = 1} ) -- River water source is 'liquid_renewable = false' to avoid horizontal spread @@ -201,7 +202,7 @@ bucket.register_liquid( "bucket:bucket_river_water", "bucket_river_water.png", "River Water Bucket", - {water_bucket = 1}, + {tool = 1, water_bucket = 1}, true ) @@ -210,7 +211,8 @@ bucket.register_liquid( "default:lava_flowing", "bucket:bucket_lava", "bucket_lava.png", - "Lava Bucket" + "Lava Bucket", + {tool = 1} ) minetest.register_craft({ diff --git a/mods/default/craftitems.lua b/mods/default/craftitems.lua index 711e5c1d..53f4decc 100644 --- a/mods/default/craftitems.lua +++ b/mods/default/craftitems.lua @@ -262,17 +262,17 @@ minetest.register_craftitem("default:coal_lump", { minetest.register_craftitem("default:iron_lump", { description = "Iron Lump", - inventory_image = "default_iron_lump.png", + inventory_image = "default_iron_lump.png" }) minetest.register_craftitem("default:copper_lump", { description = "Copper Lump", - inventory_image = "default_copper_lump.png", + inventory_image = "default_copper_lump.png" }) minetest.register_craftitem("default:tin_lump", { description = "Tin Lump", - inventory_image = "default_tin_lump.png", + inventory_image = "default_tin_lump.png" }) minetest.register_craftitem("default:mese_crystal", { @@ -282,7 +282,7 @@ minetest.register_craftitem("default:mese_crystal", { minetest.register_craftitem("default:gold_lump", { description = "Gold Lump", - inventory_image = "default_gold_lump.png", + inventory_image = "default_gold_lump.png" }) minetest.register_craftitem("default:diamond", { @@ -297,22 +297,22 @@ minetest.register_craftitem("default:clay_lump", { minetest.register_craftitem("default:steel_ingot", { description = "Steel Ingot", - inventory_image = "default_steel_ingot.png", + inventory_image = "default_steel_ingot.png" }) minetest.register_craftitem("default:copper_ingot", { description = "Copper Ingot", - inventory_image = "default_copper_ingot.png", + inventory_image = "default_copper_ingot.png" }) minetest.register_craftitem("default:tin_ingot", { description = "Tin Ingot", - inventory_image = "default_tin_ingot.png", + inventory_image = "default_tin_ingot.png" }) minetest.register_craftitem("default:bronze_ingot", { description = "Bronze Ingot", - inventory_image = "default_bronze_ingot.png", + inventory_image = "default_bronze_ingot.png" }) minetest.register_craftitem("default:gold_ingot", { diff --git a/mods/default/tools.lua b/mods/default/tools.lua index 9f503ed4..f7981157 100644 --- a/mods/default/tools.lua +++ b/mods/default/tools.lua @@ -32,8 +32,8 @@ minetest.register_tool("default:pick_wood", { }, damage_groups = {fleshy=2}, }, - groups = {flammable = 2}, sound = {breaks = "default_tool_breaks"}, + groups = {pickaxe = 1, flammable = 2} }) minetest.register_tool("default:pick_stone", { @@ -48,6 +48,7 @@ minetest.register_tool("default:pick_stone", { damage_groups = {fleshy=3}, }, sound = {breaks = "default_tool_breaks"}, + groups = {pickaxe = 1} }) minetest.register_tool("default:pick_bronze", { @@ -62,6 +63,7 @@ minetest.register_tool("default:pick_bronze", { damage_groups = {fleshy=4}, }, sound = {breaks = "default_tool_breaks"}, + groups = {pickaxe = 1} }) minetest.register_tool("default:pick_steel", { @@ -76,6 +78,7 @@ minetest.register_tool("default:pick_steel", { damage_groups = {fleshy=4}, }, sound = {breaks = "default_tool_breaks"}, + groups = {pickaxe = 1} }) minetest.register_tool("default:pick_mese", { @@ -90,6 +93,7 @@ minetest.register_tool("default:pick_mese", { damage_groups = {fleshy=5}, }, sound = {breaks = "default_tool_breaks"}, + groups = {pickaxe = 1} }) minetest.register_tool("default:pick_diamond", { @@ -104,6 +108,7 @@ minetest.register_tool("default:pick_diamond", { damage_groups = {fleshy=5}, }, sound = {breaks = "default_tool_breaks"}, + groups = {pickaxe = 1} }) -- @@ -122,8 +127,8 @@ minetest.register_tool("default:shovel_wood", { }, damage_groups = {fleshy=2}, }, - groups = {flammable = 2}, sound = {breaks = "default_tool_breaks"}, + groups = {shovel = 1, flammable = 2} }) minetest.register_tool("default:shovel_stone", { @@ -139,6 +144,7 @@ minetest.register_tool("default:shovel_stone", { damage_groups = {fleshy=2}, }, sound = {breaks = "default_tool_breaks"}, + groups = {shovel = 1} }) minetest.register_tool("default:shovel_bronze", { @@ -154,6 +160,7 @@ minetest.register_tool("default:shovel_bronze", { damage_groups = {fleshy=3}, }, sound = {breaks = "default_tool_breaks"}, + groups = {shovel = 1} }) minetest.register_tool("default:shovel_steel", { @@ -169,6 +176,7 @@ minetest.register_tool("default:shovel_steel", { damage_groups = {fleshy=3}, }, sound = {breaks = "default_tool_breaks"}, + groups = {shovel = 1} }) minetest.register_tool("default:shovel_mese", { @@ -184,6 +192,7 @@ minetest.register_tool("default:shovel_mese", { damage_groups = {fleshy=4}, }, sound = {breaks = "default_tool_breaks"}, + groups = {shovel = 1} }) minetest.register_tool("default:shovel_diamond", { @@ -199,6 +208,7 @@ minetest.register_tool("default:shovel_diamond", { damage_groups = {fleshy=4}, }, sound = {breaks = "default_tool_breaks"}, + groups = {shovel = 1} }) -- @@ -216,8 +226,8 @@ minetest.register_tool("default:axe_wood", { }, damage_groups = {fleshy=2}, }, - groups = {flammable = 2}, sound = {breaks = "default_tool_breaks"}, + groups = {axe = 1, flammable = 2} }) minetest.register_tool("default:axe_stone", { @@ -232,6 +242,7 @@ minetest.register_tool("default:axe_stone", { damage_groups = {fleshy=3}, }, sound = {breaks = "default_tool_breaks"}, + groups = {axe = 1} }) minetest.register_tool("default:axe_bronze", { @@ -246,6 +257,7 @@ minetest.register_tool("default:axe_bronze", { damage_groups = {fleshy=4}, }, sound = {breaks = "default_tool_breaks"}, + groups = {axe = 1} }) minetest.register_tool("default:axe_steel", { @@ -260,6 +272,7 @@ minetest.register_tool("default:axe_steel", { damage_groups = {fleshy=4}, }, sound = {breaks = "default_tool_breaks"}, + groups = {axe = 1} }) minetest.register_tool("default:axe_mese", { @@ -274,6 +287,7 @@ minetest.register_tool("default:axe_mese", { damage_groups = {fleshy=6}, }, sound = {breaks = "default_tool_breaks"}, + groups = {axe = 1} }) minetest.register_tool("default:axe_diamond", { @@ -288,6 +302,7 @@ minetest.register_tool("default:axe_diamond", { damage_groups = {fleshy=7}, }, sound = {breaks = "default_tool_breaks"}, + groups = {axe = 1} }) -- @@ -305,8 +320,8 @@ minetest.register_tool("default:sword_wood", { }, damage_groups = {fleshy=2}, }, - groups = {flammable = 2}, sound = {breaks = "default_tool_breaks"}, + groups = {sword = 1, flammable = 2} }) minetest.register_tool("default:sword_stone", { @@ -321,6 +336,7 @@ minetest.register_tool("default:sword_stone", { damage_groups = {fleshy=4}, }, sound = {breaks = "default_tool_breaks"}, + groups = {sword = 1} }) minetest.register_tool("default:sword_bronze", { @@ -335,6 +351,7 @@ minetest.register_tool("default:sword_bronze", { damage_groups = {fleshy=6}, }, sound = {breaks = "default_tool_breaks"}, + groups = {sword = 1} }) minetest.register_tool("default:sword_steel", { @@ -349,6 +366,7 @@ minetest.register_tool("default:sword_steel", { damage_groups = {fleshy=6}, }, sound = {breaks = "default_tool_breaks"}, + groups = {sword = 1} }) minetest.register_tool("default:sword_mese", { @@ -363,6 +381,7 @@ minetest.register_tool("default:sword_mese", { damage_groups = {fleshy=7}, }, sound = {breaks = "default_tool_breaks"}, + groups = {sword = 1} }) minetest.register_tool("default:sword_diamond", { @@ -377,6 +396,7 @@ minetest.register_tool("default:sword_diamond", { damage_groups = {fleshy=8}, }, sound = {breaks = "default_tool_breaks"}, + groups = {sword = 1} }) minetest.register_tool("default:key", { diff --git a/mods/farming/hoes.lua b/mods/farming/hoes.lua index d6a65650..2f47ec07 100644 --- a/mods/farming/hoes.lua +++ b/mods/farming/hoes.lua @@ -3,21 +3,23 @@ farming.register_hoe(":farming:hoe_wood", { inventory_image = "farming_tool_woodhoe.png", max_uses = 30, material = "group:wood", - groups = {flammable = 2}, + groups = {hoe = 1, flammable = 2}, }) farming.register_hoe(":farming:hoe_stone", { description = "Stone Hoe", inventory_image = "farming_tool_stonehoe.png", max_uses = 90, - material = "group:stone" + material = "group:stone", + groups = {hoe = 1} }) farming.register_hoe(":farming:hoe_steel", { description = "Steel Hoe", inventory_image = "farming_tool_steelhoe.png", max_uses = 500, - material = "default:steel_ingot" + material = "default:steel_ingot", + groups = {hoe = 1} }) -- The following are deprecated by removing the 'material' field to prevent @@ -29,19 +31,19 @@ farming.register_hoe(":farming:hoe_bronze", { description = "Bronze Hoe", inventory_image = "farming_tool_bronzehoe.png", max_uses = 220, - groups = {not_in_creative_inventory = 1}, + groups = {hoe = 1, not_in_creative_inventory = 1}, }) farming.register_hoe(":farming:hoe_mese", { description = "Mese Hoe", inventory_image = "farming_tool_mesehoe.png", max_uses = 350, - groups = {not_in_creative_inventory = 1}, + groups = {hoe = 1, not_in_creative_inventory = 1}, }) farming.register_hoe(":farming:hoe_diamond", { description = "Diamond Hoe", inventory_image = "farming_tool_diamondhoe.png", max_uses = 500, - groups = {not_in_creative_inventory = 1}, + groups = {hoe = 1, not_in_creative_inventory = 1}, }) diff --git a/mods/flowers/init.lua b/mods/flowers/init.lua index 49799cf3..62e4a4a7 100644 --- a/mods/flowers/init.lua +++ b/mods/flowers/init.lua @@ -189,7 +189,7 @@ minetest.register_node("flowers:mushroom_red", { sunlight_propagates = true, walkable = false, buildable_to = true, - groups = {snappy = 3, attached_node = 1, flammable = 1}, + groups = {mushroom = 1, snappy = 3, attached_node = 1, flammable = 1}, sounds = default.node_sound_leaves_defaults(), on_use = minetest.item_eat(-5), selection_box = { @@ -208,7 +208,7 @@ minetest.register_node("flowers:mushroom_brown", { sunlight_propagates = true, walkable = false, buildable_to = true, - groups = {food_mushroom = 1, snappy = 3, attached_node = 1, flammable = 1}, + groups = {mushroom = 1, food_mushroom = 1, snappy = 3, attached_node = 1, flammable = 1}, sounds = default.node_sound_leaves_defaults(), on_use = minetest.item_eat(1), selection_box = { diff --git a/mods/screwdriver/init.lua b/mods/screwdriver/init.lua index 634edf85..7fe64a60 100644 --- a/mods/screwdriver/init.lua +++ b/mods/screwdriver/init.lua @@ -146,6 +146,7 @@ end minetest.register_tool("screwdriver:screwdriver", { description = "Screwdriver (left-click rotates face, right-click rotates axis)", inventory_image = "screwdriver.png", + groups = {tool = 1}, on_use = function(itemstack, user, pointed_thing) screwdriver.handler(itemstack, user, pointed_thing, screwdriver.ROTATE_FACE, 200) return itemstack From 61bfac0fa201253fa1327f7eba1e81445bed5583 Mon Sep 17 00:00:00 2001 From: acmgit Date: Sun, 2 Jun 2019 19:50:20 +0200 Subject: [PATCH 20/81] Prevent potential crash caused by moss growth ABM --- mods/default/functions.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mods/default/functions.lua b/mods/default/functions.lua index e1e3e186..183b5597 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -560,7 +560,9 @@ minetest.register_abm({ catch_up = false, action = function(pos, node) node.name = moss_correspondences[node.name] - minetest.set_node(pos, node) + if node.name then + minetest.set_node(pos, node) + end end }) From ca7c1311330a4a3dc4b048787f20c27b02150d5f Mon Sep 17 00:00:00 2001 From: Paramat Date: Fri, 7 Jun 2019 20:34:13 +0100 Subject: [PATCH 21/81] Large cactus schematic: Don't force-place root node This schematic is used for sapling-grown large cacti, so should not destroy the sand node below, as sand nodes are in short supply in some situations. Like trees, only force-place the node that replaces the sapling. --- mods/default/schematics/large_cactus.mts | Bin 98 -> 99 bytes schematic_tables.txt | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/default/schematics/large_cactus.mts b/mods/default/schematics/large_cactus.mts index e453573fb20ff33be7ca6f706c1e3370f2718f25..cadcdccbbbe730fc23537bf7d3311831e2aed19f 100644 GIT binary patch delta 41 xcmYdFo?x$1CGb)H)GBsnh1K`uJZ?CrvI`41s<|9sIME~!z?sFsptgf!EdVmX4W$48 delta 40 wcmYdJnqaT|zhIGE#{q^DtG2TXeM{JQkkw@Zr=S7DCIyy|CMgDnjXOAX0ad&X!2kdN diff --git a/schematic_tables.txt b/schematic_tables.txt index 89e8a855..a33300f7 100644 --- a/schematic_tables.txt +++ b/schematic_tables.txt @@ -2068,7 +2068,7 @@ mts_save("large_cactus", { _, _, _, _, _, _, _, _, _, _, - _, _, R, _, _, + _, _, C, _, _, _, _, R, _, _, _, _, C, _, _, C, C, C, C, C, From 0f771a27c3f5835e0779311b457a26b20e93de2c Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Fri, 7 Jun 2019 21:35:24 +0200 Subject: [PATCH 22/81] Allow overriding default.after_place_leaves and default.grow_sapling --- mods/default/nodes.lua | 48 +++++++++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index 4cbd505a..5909c3e9 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -225,6 +225,16 @@ default:cloud --]] +-- Required wrapper to allow customization of default.after_place_leaves +local function after_place_leaves(...) + return default.after_place_leaves(...) +end + +-- Required wrapper to allow customization of default.grow_sapling +local function grow_sapling(...) + return default.grow_sapling(...) +end + -- -- Stone -- @@ -671,7 +681,7 @@ minetest.register_node("default:sapling", { paramtype = "light", sunlight_propagates = true, walkable = false, - on_timer = default.grow_sapling, + on_timer = grow_sapling, selection_box = { type = "fixed", fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16} @@ -724,7 +734,7 @@ minetest.register_node("default:leaves", { }, sounds = default.node_sound_leaves_defaults(), - after_place_node = default.after_place_leaves, + after_place_node = after_place_leaves, }) minetest.register_node("default:apple", { @@ -820,7 +830,7 @@ minetest.register_node("default:jungleleaves", { }, sounds = default.node_sound_leaves_defaults(), - after_place_node = default.after_place_leaves, + after_place_node = after_place_leaves, }) minetest.register_node("default:junglesapling", { @@ -832,7 +842,7 @@ minetest.register_node("default:junglesapling", { paramtype = "light", sunlight_propagates = true, walkable = false, - on_timer = default.grow_sapling, + on_timer = grow_sapling, selection_box = { type = "fixed", fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16} @@ -868,7 +878,7 @@ minetest.register_node("default:emergent_jungle_sapling", { paramtype = "light", sunlight_propagates = true, walkable = false, - on_timer = default.grow_sapling, + on_timer = grow_sapling, selection_box = { type = "fixed", fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16} @@ -934,7 +944,7 @@ minetest.register_node("default:pine_needles",{ }, sounds = default.node_sound_leaves_defaults(), - after_place_node = default.after_place_leaves, + after_place_node = after_place_leaves, }) minetest.register_node("default:pine_sapling", { @@ -946,7 +956,7 @@ minetest.register_node("default:pine_sapling", { paramtype = "light", sunlight_propagates = true, walkable = false, - on_timer = default.grow_sapling, + on_timer = grow_sapling, selection_box = { type = "fixed", fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16} @@ -1014,7 +1024,7 @@ minetest.register_node("default:acacia_leaves", { }, sounds = default.node_sound_leaves_defaults(), - after_place_node = default.after_place_leaves, + after_place_node = after_place_leaves, }) minetest.register_node("default:acacia_sapling", { @@ -1026,7 +1036,7 @@ minetest.register_node("default:acacia_sapling", { paramtype = "light", sunlight_propagates = true, walkable = false, - on_timer = default.grow_sapling, + on_timer = grow_sapling, selection_box = { type = "fixed", fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16} @@ -1092,7 +1102,7 @@ minetest.register_node("default:aspen_leaves", { }, sounds = default.node_sound_leaves_defaults(), - after_place_node = default.after_place_leaves, + after_place_node = after_place_leaves, }) minetest.register_node("default:aspen_sapling", { @@ -1104,7 +1114,7 @@ minetest.register_node("default:aspen_sapling", { paramtype = "light", sunlight_propagates = true, walkable = false, - on_timer = default.grow_sapling, + on_timer = grow_sapling, selection_box = { type = "fixed", fixed = {-3 / 16, -0.5, -3 / 16, 3 / 16, 0.5, 3 / 16} @@ -1651,7 +1661,7 @@ minetest.register_node("default:bush_leaves", { }, sounds = default.node_sound_leaves_defaults(), - after_place_node = default.after_place_leaves, + after_place_node = after_place_leaves, }) minetest.register_node("default:bush_sapling", { @@ -1663,7 +1673,7 @@ minetest.register_node("default:bush_sapling", { paramtype = "light", sunlight_propagates = true, walkable = false, - on_timer = default.grow_sapling, + on_timer = grow_sapling, selection_box = { type = "fixed", fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 2 / 16, 4 / 16} @@ -1730,7 +1740,7 @@ minetest.register_node("default:blueberry_bush_leaves", { end end, - after_place_node = default.after_place_leaves, + after_place_node = after_place_leaves, }) minetest.register_node("default:blueberry_bush_sapling", { @@ -1742,7 +1752,7 @@ minetest.register_node("default:blueberry_bush_sapling", { paramtype = "light", sunlight_propagates = true, walkable = false, - on_timer = default.grow_sapling, + on_timer = grow_sapling, selection_box = { type = "fixed", fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 2 / 16, 4 / 16} @@ -1801,7 +1811,7 @@ minetest.register_node("default:acacia_bush_leaves", { }, sounds = default.node_sound_leaves_defaults(), - after_place_node = default.after_place_leaves, + after_place_node = after_place_leaves, }) minetest.register_node("default:acacia_bush_sapling", { @@ -1813,7 +1823,7 @@ minetest.register_node("default:acacia_bush_sapling", { paramtype = "light", sunlight_propagates = true, walkable = false, - on_timer = default.grow_sapling, + on_timer = grow_sapling, selection_box = { type = "fixed", fixed = {-3 / 16, -0.5, -3 / 16, 3 / 16, 2 / 16, 3 / 16} @@ -1872,7 +1882,7 @@ minetest.register_node("default:pine_bush_needles", { }, sounds = default.node_sound_leaves_defaults(), - after_place_node = default.after_place_leaves, + after_place_node = after_place_leaves, }) minetest.register_node("default:pine_bush_sapling", { @@ -1884,7 +1894,7 @@ minetest.register_node("default:pine_bush_sapling", { paramtype = "light", sunlight_propagates = true, walkable = false, - on_timer = default.grow_sapling, + on_timer = grow_sapling, selection_box = { type = "fixed", fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 2 / 16, 4 / 16} From 54bb0afe7f6d150ceb418e36404c949cdb8847da Mon Sep 17 00:00:00 2001 From: t0ny2 Date: Sun, 16 Jun 2019 22:09:36 +0100 Subject: [PATCH 23/81] Make waterlily wave when placed on waving water --- mods/flowers/init.lua | 18 ++++++++++++++---- mods/flowers/mapgen.lua | 4 ++-- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/mods/flowers/init.lua b/mods/flowers/init.lua index 62e4a4a7..9da78ed8 100644 --- a/mods/flowers/init.lua +++ b/mods/flowers/init.lua @@ -266,7 +266,7 @@ minetest.register_alias("mushroom:red_natural", "flowers:mushroom_red") -- Waterlily -- -minetest.register_node("flowers:waterlily", { +local waterlily_def = { description = "Waterlily", drawtype = "nodebox", paramtype = "light", @@ -294,7 +294,6 @@ minetest.register_node("flowers:waterlily", { local pos = pointed_thing.above local node = minetest.get_node(pointed_thing.under) local def = minetest.registered_nodes[node.name] - local player_name = placer and placer:get_player_name() or "" if def and def.on_rightclick then return def.on_rightclick(pointed_thing.under, node, placer, itemstack, @@ -303,8 +302,10 @@ minetest.register_node("flowers:waterlily", { if def and def.liquidtype == "source" and minetest.get_item_group(node.name, "water") > 0 then + local player_name = placer and placer:get_player_name() or "" if not minetest.is_protected(pos, player_name) then - minetest.set_node(pos, {name = "flowers:waterlily", + minetest.set_node(pos, {name = "flowers:waterlily" .. + (def.waving == 3 and "_waving" or ""), param2 = math.random(0, 3)}) if not (creative and creative.is_enabled_for and creative.is_enabled_for(player_name)) then @@ -318,4 +319,13 @@ minetest.register_node("flowers:waterlily", { return itemstack end -}) +} + +local waterlily_waving_def = table.copy(waterlily_def) +waterlily_waving_def.waving = 3 +waterlily_waving_def.drop = "flowers:waterlily" +waterlily_waving_def.groups.not_in_creative_inventory = 1 + +minetest.register_node("flowers:waterlily", waterlily_def) +minetest.register_node("flowers:waterlily_waving", waterlily_waving_def) + diff --git a/mods/flowers/mapgen.lua b/mods/flowers/mapgen.lua index ad759c25..85e19b72 100644 --- a/mods/flowers/mapgen.lua +++ b/mods/flowers/mapgen.lua @@ -60,7 +60,7 @@ local function register_mgv6_waterlily() }, y_max = 0, y_min = 0, - decoration = "flowers:waterlily", + decoration = "flowers:waterlily_waving", param2 = 0, param2_max = 3, place_offset_y = 1, @@ -146,7 +146,7 @@ local function register_waterlily() biomes = {"rainforest_swamp", "savanna_shore", "deciduous_forest_shore"}, y_max = 0, y_min = 0, - decoration = "flowers:waterlily", + decoration = "flowers:waterlily_waving", param2 = 0, param2_max = 3, place_offset_y = 1, From a6a719967a4ec8d4aec332806532f78cf4c563de Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Mon, 24 Jun 2019 00:10:13 +0100 Subject: [PATCH 24/81] Use 9-slice background in formspec theme --- mods/default/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/default/init.lua b/mods/default/init.lua index b89fd0eb..47827528 100644 --- a/mods/default/init.lua +++ b/mods/default/init.lua @@ -13,6 +13,7 @@ minetest.register_on_joinplayer(function(player) player:set_formspec_prepend([[ bgcolor[#080808BB;true] background[5,5;1,1;gui_formbg.png;true] + background[5,5;1,1;gui_formbg.png;true;10] listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF] ]]) end) From e7be81242b04ff410b06ac1cc562c7b1eb758510 Mon Sep 17 00:00:00 2001 From: Paramat Date: Mon, 1 Jul 2019 21:58:47 +0100 Subject: [PATCH 25/81] Define dungeon nodes in biome definitions (#2400) Icesheet ice dungeons now have ice stairs. Remove some now-unnecessary sandstone mapgen aliases, one remains as it is required by the dungeon loot mod. Re-arrange mapgen aliases to separate those needed for mgv6. --- mods/default/mapgen.lua | 150 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 141 insertions(+), 9 deletions(-) diff --git a/mods/default/mapgen.lua b/mods/default/mapgen.lua index 29233c32..2816efce 100644 --- a/mods/default/mapgen.lua +++ b/mods/default/mapgen.lua @@ -2,13 +2,18 @@ -- Aliases for map generators -- +-- All mapgens + minetest.register_alias("mapgen_stone", "default:stone") +minetest.register_alias("mapgen_water_source", "default:water_source") +minetest.register_alias("mapgen_river_water_source", "default:river_water_source") + +-- Additional aliases needed for mapgen v6 + +minetest.register_alias("mapgen_lava_source", "default:lava_source") minetest.register_alias("mapgen_dirt", "default:dirt") minetest.register_alias("mapgen_dirt_with_grass", "default:dirt_with_grass") minetest.register_alias("mapgen_sand", "default:sand") -minetest.register_alias("mapgen_water_source", "default:water_source") -minetest.register_alias("mapgen_river_water_source", "default:river_water_source") -minetest.register_alias("mapgen_lava_source", "default:lava_source") minetest.register_alias("mapgen_gravel", "default:gravel") minetest.register_alias("mapgen_desert_stone", "default:desert_stone") minetest.register_alias("mapgen_desert_sand", "default:desert_sand") @@ -16,9 +21,6 @@ minetest.register_alias("mapgen_dirt_with_snow", "default:dirt_with_snow") minetest.register_alias("mapgen_snowblock", "default:snowblock") minetest.register_alias("mapgen_snow", "default:snow") minetest.register_alias("mapgen_ice", "default:ice") -minetest.register_alias("mapgen_sandstone", "default:sandstone") - --- Flora minetest.register_alias("mapgen_tree", "default:tree") minetest.register_alias("mapgen_leaves", "default:leaves") @@ -29,14 +31,11 @@ minetest.register_alias("mapgen_junglegrass", "default:junglegrass") minetest.register_alias("mapgen_pine_tree", "default:pine_tree") minetest.register_alias("mapgen_pine_needles", "default:pine_needles") --- Dungeons - minetest.register_alias("mapgen_cobble", "default:cobble") minetest.register_alias("mapgen_stair_cobble", "stairs:stair_cobble") minetest.register_alias("mapgen_mossycobble", "default:mossycobble") minetest.register_alias("mapgen_stair_desert_stone", "stairs:stair_desert_stone") minetest.register_alias("mapgen_sandstonebrick", "default:sandstonebrick") -minetest.register_alias("mapgen_stair_sandstone_block", "stairs:stair_sandstone_block") -- @@ -909,6 +908,8 @@ function default.register_biomes(upper_limit) node_river_water = "default:ice", node_riverbed = "default:gravel", depth_riverbed = 2, + node_dungeon = "default:ice", + node_dungeon_stair = "stairs:stair_ice", y_max = upper_limit, y_min = -8, heat_point = 0, @@ -925,6 +926,9 @@ function default.register_biomes(upper_limit) node_water_top = "default:ice", depth_water_top = 10, node_cave_liquid = "default:water_source", + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = -9, y_min = -255, heat_point = 0, @@ -934,6 +938,9 @@ function default.register_biomes(upper_limit) minetest.register_biome({ name = "icesheet_under", node_cave_liquid = {"default:water_source", "default:lava_source"}, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = -256, y_min = -31000, heat_point = 0, @@ -947,6 +954,9 @@ function default.register_biomes(upper_limit) node_dust = "default:snow", node_riverbed = "default:gravel", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = upper_limit, y_min = 47, heat_point = 0, @@ -961,6 +971,9 @@ function default.register_biomes(upper_limit) depth_filler = 1, node_riverbed = "default:gravel", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", vertical_blend = 4, y_max = 46, y_min = 2, @@ -976,6 +989,9 @@ function default.register_biomes(upper_limit) depth_filler = 2, node_riverbed = "default:gravel", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", vertical_blend = 1, y_max = 1, y_min = -3, @@ -992,6 +1008,9 @@ function default.register_biomes(upper_limit) node_riverbed = "default:gravel", depth_riverbed = 2, node_cave_liquid = "default:water_source", + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", vertical_blend = 1, y_max = -4, y_min = -255, @@ -1002,6 +1021,9 @@ function default.register_biomes(upper_limit) minetest.register_biome({ name = "tundra_under", node_cave_liquid = {"default:water_source", "default:lava_source"}, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = -256, y_min = -31000, heat_point = 0, @@ -1019,6 +1041,9 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = upper_limit, y_min = 4, heat_point = 25, @@ -1035,6 +1060,9 @@ function default.register_biomes(upper_limit) node_riverbed = "default:sand", depth_riverbed = 2, node_cave_liquid = "default:water_source", + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", vertical_blend = 1, y_max = 3, y_min = -255, @@ -1045,6 +1073,9 @@ function default.register_biomes(upper_limit) minetest.register_biome({ name = "taiga_under", node_cave_liquid = {"default:water_source", "default:lava_source"}, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = -256, y_min = -31000, heat_point = 25, @@ -1062,6 +1093,9 @@ function default.register_biomes(upper_limit) depth_filler = 1, node_riverbed = "default:sand", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = upper_limit, y_min = 4, heat_point = 20, @@ -1078,6 +1112,9 @@ function default.register_biomes(upper_limit) node_riverbed = "default:sand", depth_riverbed = 2, node_cave_liquid = "default:water_source", + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", vertical_blend = 1, y_max = 3, y_min = -255, @@ -1088,6 +1125,9 @@ function default.register_biomes(upper_limit) minetest.register_biome({ name = "snowy_grassland_under", node_cave_liquid = {"default:water_source", "default:lava_source"}, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = -256, y_min = -31000, heat_point = 20, @@ -1104,6 +1144,9 @@ function default.register_biomes(upper_limit) depth_filler = 1, node_riverbed = "default:sand", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = upper_limit, y_min = 6, heat_point = 50, @@ -1118,6 +1161,9 @@ function default.register_biomes(upper_limit) depth_filler = 2, node_riverbed = "default:sand", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", vertical_blend = 1, y_max = 5, y_min = 4, @@ -1134,6 +1180,9 @@ function default.register_biomes(upper_limit) node_riverbed = "default:sand", depth_riverbed = 2, node_cave_liquid = "default:water_source", + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = 3, y_min = -255, heat_point = 50, @@ -1143,6 +1192,9 @@ function default.register_biomes(upper_limit) minetest.register_biome({ name = "grassland_under", node_cave_liquid = {"default:water_source", "default:lava_source"}, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = -256, y_min = -31000, heat_point = 50, @@ -1159,6 +1211,9 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = upper_limit, y_min = 6, heat_point = 45, @@ -1173,6 +1228,9 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", vertical_blend = 1, y_max = 5, y_min = 4, @@ -1189,6 +1247,9 @@ function default.register_biomes(upper_limit) node_riverbed = "default:sand", depth_riverbed = 2, node_cave_liquid = "default:water_source", + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = 3, y_min = -255, heat_point = 45, @@ -1198,6 +1259,9 @@ function default.register_biomes(upper_limit) minetest.register_biome({ name = "coniferous_forest_under", node_cave_liquid = {"default:water_source", "default:lava_source"}, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = -256, y_min = -31000, heat_point = 45, @@ -1214,6 +1278,9 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = upper_limit, y_min = 1, heat_point = 60, @@ -1228,6 +1295,9 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = 0, y_min = -1, heat_point = 60, @@ -1243,6 +1313,9 @@ function default.register_biomes(upper_limit) node_riverbed = "default:sand", depth_riverbed = 2, node_cave_liquid = "default:water_source", + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", vertical_blend = 1, y_max = -2, y_min = -255, @@ -1253,6 +1326,9 @@ function default.register_biomes(upper_limit) minetest.register_biome({ name = "deciduous_forest_under", node_cave_liquid = {"default:water_source", "default:lava_source"}, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = -256, y_min = -31000, heat_point = 60, @@ -1270,6 +1346,8 @@ function default.register_biomes(upper_limit) node_stone = "default:desert_stone", node_riverbed = "default:sand", depth_riverbed = 2, + node_dungeon = "default:desert_stone", + node_dungeon_stair = "stairs:stair_desert_stone", y_max = upper_limit, y_min = 4, heat_point = 92, @@ -1286,6 +1364,8 @@ function default.register_biomes(upper_limit) node_riverbed = "default:sand", depth_riverbed = 2, node_cave_liquid = "default:water_source", + node_dungeon = "default:desert_stone", + node_dungeon_stair = "stairs:stair_desert_stone", vertical_blend = 1, y_max = 3, y_min = -255, @@ -1296,6 +1376,9 @@ function default.register_biomes(upper_limit) minetest.register_biome({ name = "desert_under", node_cave_liquid = {"default:water_source", "default:lava_source"}, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = -256, y_min = -31000, heat_point = 92, @@ -1313,6 +1396,8 @@ function default.register_biomes(upper_limit) node_stone = "default:sandstone", node_riverbed = "default:sand", depth_riverbed = 2, + node_dungeon = "default:sandstonebrick", + node_dungeon_stair = "stairs:stair_sandstone_block", y_max = upper_limit, y_min = 4, heat_point = 60, @@ -1329,6 +1414,8 @@ function default.register_biomes(upper_limit) node_riverbed = "default:sand", depth_riverbed = 2, node_cave_liquid = "default:water_source", + node_dungeon = "default:sandstonebrick", + node_dungeon_stair = "stairs:stair_sandstone_block", y_max = 3, y_min = -255, heat_point = 60, @@ -1338,6 +1425,9 @@ function default.register_biomes(upper_limit) minetest.register_biome({ name = "sandstone_desert_under", node_cave_liquid = {"default:water_source", "default:lava_source"}, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = -256, y_min = -31000, heat_point = 60, @@ -1354,6 +1444,9 @@ function default.register_biomes(upper_limit) depth_filler = 1, node_riverbed = "default:sand", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = upper_limit, y_min = 4, heat_point = 40, @@ -1369,6 +1462,9 @@ function default.register_biomes(upper_limit) node_riverbed = "default:sand", depth_riverbed = 2, node_cave_liquid = "default:water_source", + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", vertical_blend = 1, y_max = 3, y_min = -255, @@ -1379,6 +1475,9 @@ function default.register_biomes(upper_limit) minetest.register_biome({ name = "cold_desert_under", node_cave_liquid = {"default:water_source", "default:lava_source"}, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = -256, y_min = -31000, heat_point = 40, @@ -1395,6 +1494,9 @@ function default.register_biomes(upper_limit) depth_filler = 1, node_riverbed = "default:sand", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = upper_limit, y_min = 1, heat_point = 89, @@ -1409,6 +1511,9 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = 0, y_min = -1, heat_point = 89, @@ -1424,6 +1529,9 @@ function default.register_biomes(upper_limit) node_riverbed = "default:sand", depth_riverbed = 2, node_cave_liquid = "default:water_source", + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", vertical_blend = 1, y_max = -2, y_min = -255, @@ -1434,6 +1542,9 @@ function default.register_biomes(upper_limit) minetest.register_biome({ name = "savanna_under", node_cave_liquid = {"default:water_source", "default:lava_source"}, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = -256, y_min = -31000, heat_point = 89, @@ -1450,6 +1561,9 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = upper_limit, y_min = 1, heat_point = 86, @@ -1464,6 +1578,9 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = 0, y_min = -1, heat_point = 86, @@ -1479,6 +1596,9 @@ function default.register_biomes(upper_limit) node_riverbed = "default:sand", depth_riverbed = 2, node_cave_liquid = "default:water_source", + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", vertical_blend = 1, y_max = -2, y_min = -255, @@ -1489,6 +1609,9 @@ function default.register_biomes(upper_limit) minetest.register_biome({ name = "rainforest_under", node_cave_liquid = {"default:water_source", "default:lava_source"}, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = -256, y_min = -31000, heat_point = 86, @@ -1509,6 +1632,9 @@ function default.register_floatland_biomes(floatland_level, shadow_limit) depth_top = 1, node_filler = "default:dirt", depth_filler = 1, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = 31000, y_min = floatland_level + 2, heat_point = 50, @@ -1521,6 +1647,9 @@ function default.register_floatland_biomes(floatland_level, shadow_limit) depth_top = 1, node_filler = "default:dirt", depth_filler = 3, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = 31000, y_min = floatland_level + 2, heat_point = 50, @@ -1533,6 +1662,9 @@ function default.register_floatland_biomes(floatland_level, shadow_limit) depth_top = 1, node_filler = "default:sand", depth_filler = 3, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = floatland_level + 1, y_min = shadow_limit, heat_point = 50, From 3d530e0c2573dd9bf1a9299e95ed007fa131647a Mon Sep 17 00:00:00 2001 From: luk3yx Date: Thu, 4 Jul 2019 05:10:39 +1200 Subject: [PATCH 26/81] intersects_protection(): Fix compatibility code --- mods/default/legacy.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/default/legacy.lua b/mods/default/legacy.lua index 935d857a..a2d812d4 100644 --- a/mods/default/legacy.lua +++ b/mods/default/legacy.lua @@ -45,5 +45,5 @@ default.register_chest = default.chest.register_chest function default.intersects_protection(minp, maxp, player_name, interval) minetest.log("warning", "default.intersects_protection() is " .. "deprecated, use minetest.is_area_protected() instead.") - minetest.is_area_protected(minp, maxp, player_name, interval) + return minetest.is_area_protected(minp, maxp, player_name, interval) end From 5b1d5819e5a9617832fba17db8da1a8d8fa690dc Mon Sep 17 00:00:00 2001 From: bell07 Date: Wed, 10 Jul 2019 22:55:35 +0200 Subject: [PATCH 27/81] Unify hotbar formspec for sfinv and creative sfinv: Add lists above the content to support listrings in content. Reuse sfinv inventory lists for creative. --- mods/creative/inventory.lua | 4 +--- mods/sfinv/api.lua | 12 +++++++++--- mods/sfinv/init.lua | 8 -------- 3 files changed, 10 insertions(+), 14 deletions(-) diff --git a/mods/creative/inventory.lua b/mods/creative/inventory.lua index 6f485d52..3b95e735 100644 --- a/mods/creative/inventory.lua +++ b/mods/creative/inventory.lua @@ -108,8 +108,6 @@ function creative.register_tab(name, title, items) [[ image[4.06,3.4;0.8,0.8;creative_trash_icon.png] listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF] - list[current_player;main;0,4.7;8,1;] - list[current_player;main;0,5.85;8,3;8] list[detached:creative_trash;main;4,3.3;1,1;] listring[] image_button[5.4,3.25;0.8,0.8;creative_prev_icon.png;creative_prev;] @@ -126,7 +124,7 @@ function creative.register_tab(name, title, items) "field[0.3,3.5;2.2,1;creative_filter;;" .. minetest.formspec_escape(inv.filter) .. "]" .. "listring[detached:creative_" .. player_name .. ";main]" .. "list[detached:creative_" .. player_name .. ";main;0,0;8,3;" .. tostring(start_i) .. "]" .. - default.get_hotbar_bg(0,4.7) .. creative.formspec_add, false) + creative.formspec_add, true) end, on_enter = function(self, player, context) local player_name = player:get_player_name() diff --git a/mods/sfinv/api.lua b/mods/sfinv/api.lua index cd5b5e8a..509cb904 100644 --- a/mods/sfinv/api.lua +++ b/mods/sfinv/api.lua @@ -37,6 +37,14 @@ function sfinv.get_nav_fs(player, context, nav, current_idx) end local theme_inv = [[ + image[0,4.7;1,1;gui_hb_bg.png] + image[1,4.7;1,1;gui_hb_bg.png] + image[2,4.7;1,1;gui_hb_bg.png] + image[3,4.7;1,1;gui_hb_bg.png] + image[4,4.7;1,1;gui_hb_bg.png] + image[5,4.7;1,1;gui_hb_bg.png] + image[6,4.7;1,1;gui_hb_bg.png] + image[7,4.7;1,1;gui_hb_bg.png] list[current_player;main;0,4.7;8,1;] list[current_player;main;0,5.85;8,3;8] ]] @@ -45,11 +53,9 @@ function sfinv.make_formspec(player, context, content, show_inv, size) local tmp = { size or "size[8,8.6]", sfinv.get_nav_fs(player, context, context.nav_titles, context.nav_idx), + show_inv and theme_inv or "", content } - if show_inv then - tmp[#tmp + 1] = theme_inv - end return table.concat(tmp, "") end diff --git a/mods/sfinv/init.lua b/mods/sfinv/init.lua index a2294a41..2d7172bf 100644 --- a/mods/sfinv/init.lua +++ b/mods/sfinv/init.lua @@ -9,14 +9,6 @@ sfinv.register_page("sfinv:crafting", { image[4.75,1.5;1,1;gui_furnace_arrow_bg.png^[transformR270] listring[current_player;main] listring[current_player;craft] - image[0,4.7;1,1;gui_hb_bg.png] - image[1,4.7;1,1;gui_hb_bg.png] - image[2,4.7;1,1;gui_hb_bg.png] - image[3,4.7;1,1;gui_hb_bg.png] - image[4,4.7;1,1;gui_hb_bg.png] - image[5,4.7;1,1;gui_hb_bg.png] - image[6,4.7;1,1;gui_hb_bg.png] - image[7,4.7;1,1;gui_hb_bg.png] ]], true) end }) From 95aaec6670251edd4f7c51ca40f5cae2d267bc72 Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Fri, 12 Jul 2019 21:01:27 +0200 Subject: [PATCH 28/81] Allow opening chests when wielding corals Code simplification by combining the on_place functions. --- mods/default/nodes.lua | 127 ++++++++++++++--------------------------- 1 file changed, 43 insertions(+), 84 deletions(-) diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index 5909c3e9..15aca96c 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -1996,6 +1996,46 @@ minetest.register_node("default:sand_with_kelp", { -- Corals -- +local function coral_on_place(itemstack, placer, pointed_thing) + if pointed_thing.type ~= "node" or not placer then + return itemstack + end + + local player_name = placer:get_player_name() + local pos_under = pointed_thing.under + local pos_above = pointed_thing.above + local node_under = minetest.get_node(pos_under) + local def_under = minetest.registered_nodes[node_under.name] + + if def_under and def_under.on_rightclick and not placer:get_player_control().sneak then + return def_under.on_rightclick(pos_under, node_under.name, + placer, itemstack, pointed_thing) or itemstack + end + + if node_under.name ~= "default:coral_skeleton" or + minetest.get_node(pos_above).name ~= "default:water_source" then + return itemstack + end + + if minetest.is_protected(pos_under, player_name) or + minetest.is_protected(pos_above, player_name) then + minetest.log("action", player_name + .. " tried to place " .. itemstack:get_name() + .. " at protected position " + .. minetest.pos_to_string(pos_under)) + minetest.record_protection_violation(pos_under, player_name) + return itemstack + end + + node_under.name = itemstack:get_name() + minetest.set_node(pos_under, node_under) + if not (creative and creative.is_enabled_for(player_name)) then + itemstack:take_item() + end + + return itemstack +end + minetest.register_node("default:coral_green", { description = "Green Coral", drawtype = "plantlike_rooted", @@ -2019,34 +2059,7 @@ minetest.register_node("default:coral_green", { dug = {name = "default_grass_footstep", gain = 0.25}, }), - on_place = function(itemstack, placer, pointed_thing) - if pointed_thing.type ~= "node" or not placer then - return itemstack - end - - local player_name = placer:get_player_name() - local pos_under = pointed_thing.under - local pos_above = pointed_thing.above - - if minetest.get_node(pos_under).name ~= "default:coral_skeleton" or - minetest.get_node(pos_above).name ~= "default:water_source" then - return itemstack - end - - if minetest.is_protected(pos_under, player_name) or - minetest.is_protected(pos_above, player_name) then - minetest.chat_send_player(player_name, "Node is protected") - minetest.record_protection_violation(pos_under, player_name) - return itemstack - end - - minetest.set_node(pos_under, {name = "default:coral_green"}) - if not (creative and creative.is_enabled_for(player_name)) then - itemstack:take_item() - end - - return itemstack - end, + on_place = coral_on_place, after_destruct = function(pos, oldnode) minetest.set_node(pos, {name = "default:coral_skeleton"}) @@ -2076,34 +2089,7 @@ minetest.register_node("default:coral_pink", { dug = {name = "default_grass_footstep", gain = 0.25}, }), - on_place = function(itemstack, placer, pointed_thing) - if pointed_thing.type ~= "node" or not placer then - return itemstack - end - - local player_name = placer:get_player_name() - local pos_under = pointed_thing.under - local pos_above = pointed_thing.above - - if minetest.get_node(pos_under).name ~= "default:coral_skeleton" or - minetest.get_node(pos_above).name ~= "default:water_source" then - return itemstack - end - - if minetest.is_protected(pos_under, player_name) or - minetest.is_protected(pos_above, player_name) then - minetest.chat_send_player(player_name, "Node is protected") - minetest.record_protection_violation(pos_under, player_name) - return itemstack - end - - minetest.set_node(pos_under, {name = "default:coral_pink"}) - if not (creative and creative.is_enabled_for(player_name)) then - itemstack:take_item() - end - - return itemstack - end, + on_place = coral_on_place, after_destruct = function(pos, oldnode) minetest.set_node(pos, {name = "default:coral_skeleton"}) @@ -2133,34 +2119,7 @@ minetest.register_node("default:coral_cyan", { dug = {name = "default_grass_footstep", gain = 0.25}, }), - on_place = function(itemstack, placer, pointed_thing) - if pointed_thing.type ~= "node" or not placer then - return itemstack - end - - local player_name = placer:get_player_name() - local pos_under = pointed_thing.under - local pos_above = pointed_thing.above - - if minetest.get_node(pos_under).name ~= "default:coral_skeleton" or - minetest.get_node(pos_above).name ~= "default:water_source" then - return itemstack - end - - if minetest.is_protected(pos_under, player_name) or - minetest.is_protected(pos_above, player_name) then - minetest.chat_send_player(player_name, "Node is protected") - minetest.record_protection_violation(pos_under, player_name) - return itemstack - end - - minetest.set_node(pos_under, {name = "default:coral_cyan"}) - if not (creative and creative.is_enabled_for(player_name)) then - itemstack:take_item() - end - - return itemstack - end, + on_place = coral_on_place, after_destruct = function(pos, oldnode) minetest.set_node(pos, {name = "default:coral_skeleton"}) From 83fb6fe872dc630fc229962461492f67b2f001d2 Mon Sep 17 00:00:00 2001 From: acmgit Date: Sat, 13 Jul 2019 18:47:45 +0200 Subject: [PATCH 29/81] Remove stack_max from bucket:bucket_empty --- mods/bucket/init.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/mods/bucket/init.lua b/mods/bucket/init.lua index 7b89e8e4..e0219142 100644 --- a/mods/bucket/init.lua +++ b/mods/bucket/init.lua @@ -113,7 +113,6 @@ end minetest.register_craftitem("bucket:bucket_empty", { description = "Empty Bucket", inventory_image = "bucket.png", - stack_max = 99, groups = {tool = 1}, liquids_pointable = true, on_use = function(itemstack, user, pointed_thing) From 3bca295da882233b684830d94448298b41553138 Mon Sep 17 00:00:00 2001 From: Paramat Date: Sat, 13 Jul 2019 23:35:25 +0100 Subject: [PATCH 30/81] New lighter, greyer permafrost texture --- mods/default/textures/default_permafrost.png | Bin 266 -> 269 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/default/textures/default_permafrost.png b/mods/default/textures/default_permafrost.png index d7a19a2f599bf7144db376182c03b8cf03fbdf06..6f2567e7d36c668520a3f17f882b7aa1dc52a88d 100644 GIT binary patch delta 241 zcmVQxkal>aazTi077@9L~62TTL3+V zDq^itU?u=F6g6dOmWxsVQCJ43WwMH90CeVim?lP63jl0~CTeB2Dim1&K_w;vWP>Ya z0E8lFwd5jwrT|$TD5h*Af>r=@MrUMZYBUxAR3hnhW=3^w08nJcRv=YsS^#EcCb%Jn rwvhmVf_<^LHmZRD*QX+9q!;W}RIM}}j<_#v00000NkvXXu0mjfA%0Mv delta 238 zcmVwcL0UQjHx$QXAA&(m^XIEJ7*PY08u740(F!;cL0?# zdB(*ejkf@59XYpgC6Z?Vg;#iWcY8$_0A(T?hIdzneE?u}$7e8Rdusr9b~ni}m&c(1 ok&}(V$w#}90NA)Qc(oWDW+VtXRy1M~9{>OV07*qoM6N<$f(Fq{cK`qY From bfb84da39c9266258da8c6d3ab052042b456916f Mon Sep 17 00:00:00 2001 From: TumeniNodes Date: Mon, 15 Jul 2019 12:43:05 -0400 Subject: [PATCH 31/81] Add new 'default_grass' texture --- mods/default/README.txt | 2 +- mods/default/textures/default_grass.png | Bin 377 -> 461 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/default/README.txt b/mods/default/README.txt index 8642b39c..6770d347 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -101,7 +101,6 @@ paramat (CC BY-SA 3.0): default_dry_grass.png default_dry_grass_side.png default_dry_grass_*.png - default_grass.png default_grass_side.png default_mese_block.png default_silver_sand.png @@ -129,6 +128,7 @@ TumeniNodes (CC BY-SA 3.0): default_desert_cobble.png -- Derived from a texture by brunob.santos (CC BY-SA 3.0) default_coniferous_litter.png default_coniferous_litter_side.png + default_grass.png BlockMen (CC BY-SA 3.0): default_aspen_leaves.png -- Derived from Sofar's texture diff --git a/mods/default/textures/default_grass.png b/mods/default/textures/default_grass.png index 0181fabda9fbaba45d8f763107bf0ad88e2f81c5..5778caa1dbabdb9d4cd1ff46e63c8bb810aa9a0c 100644 GIT binary patch delta 435 zcmV;k0Zjh+0?h-EB!8|@OjJcUViq}L7dd1WI%F6+WfwbR7dvDYJ7yR=XBRwW7d&Vf zJ!Tj^X&F6g7(QqiK4}*|YZ*Rp8b4|nKX4d8YZ*Xn7(i|qKyDg9aT!2!8$oRuL2nsB za2P>x8$om&L3JBKa2i5!8A5X#LUbBJb{s==97A;*LwFoSb$=a1b{s@^8$@^-MRy%V zcpOG}9!7Z`M|mGedLT%9A4q&2NqHYhdLBu9AWC~5N_-wleIY!VW{Lm+0NP1JK~xwS z1;K$rf-n>X(1%Tt7ZMSSCS@AJCB!m^v07t8 zOkM8o6ZB#;Xn&^!$ej)udTgovgc*&dvLIfA69qHs(QCS<{2hGhmMVb`ZBNM$7t@=Z z<21;Zub7aN(wZlUe6O-+*==bBy20MStaikCB*k$N$pNQYHfdUV%07Hdm>cv!S^s*n zN`MOzF|@Ag=Ri{I8XU#h57jtGfZ$98DV6Qa@tSf+*(~hOoCBN|m-zUw5=y)0I^L7_ dxoM>N`v*9X8o=o*kt delta 350 zcmV-k0ipiQ1Nj1wB!5>>OjJcSTp2fA8aQ7XIba()VjDYS96V(lJ!Ty}XdOOk9Y1Rx zKy4mDZXZH$A4725NqZtnd?QMJBTIiIOo1d#gCtIbB~OMWQHdr} ziYLsK!WRGl010qNS#tmY3ljhU3ljkVnw%H_000McNliru;C}=f4mS@Pk}$Ra006Z~ zL_t&-(-qHImclR$L{SAyGAOft8 Date: Tue, 16 Jul 2019 20:11:17 +0200 Subject: [PATCH 32/81] Switch dungeon type detection to biome name see #2400, also removed a now unused alias --- mods/default/mapgen.lua | 1 - mods/dungeon_loot/mapgen.lua | 23 +++++++++++------------ 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/mods/default/mapgen.lua b/mods/default/mapgen.lua index 2816efce..bec2a238 100644 --- a/mods/default/mapgen.lua +++ b/mods/default/mapgen.lua @@ -35,7 +35,6 @@ minetest.register_alias("mapgen_cobble", "default:cobble") minetest.register_alias("mapgen_stair_cobble", "stairs:stair_cobble") minetest.register_alias("mapgen_mossycobble", "default:mossycobble") minetest.register_alias("mapgen_stair_desert_stone", "stairs:stair_desert_stone") -minetest.register_alias("mapgen_sandstonebrick", "default:sandstonebrick") -- diff --git a/mods/dungeon_loot/mapgen.lua b/mods/dungeon_loot/mapgen.lua index 366d4ce4..12946d4c 100644 --- a/mods/dungeon_loot/mapgen.lua +++ b/mods/dungeon_loot/mapgen.lua @@ -15,12 +15,8 @@ local function random_sample(rand, list, count) end local function find_walls(cpos) - local wall = minetest.registered_aliases["mapgen_cobble"] - local wall_alt = minetest.registered_aliases["mapgen_mossycobble"] - local wall_ss = minetest.registered_aliases["mapgen_sandstonebrick"] - local wall_ds = minetest.registered_aliases["mapgen_desert_stone"] local is_wall = function(node) - return table.indexof({wall, wall_alt, wall_ss, wall_ds}, node.name) ~= -1 + return node.name ~= "air" and node.name ~= "ignore" end local dirs = {{x=1, z=0}, {x=-1, z=0}, {x=0, z=1}, {x=0, z=-1}} @@ -29,7 +25,6 @@ local function find_walls(cpos) local ret = {} local mindist = {x=0, z=0} local min = function(a, b) return a ~= 0 and math.min(a, b) or b end - local wallnode for _, dir in ipairs(dirs) do for i = 1, 9 do -- 9 = max room size / 2 local pos = vector.add(cpos, {x=dir.x*i, y=0, z=dir.z*i}) @@ -50,7 +45,6 @@ local function find_walls(cpos) else mindist.z = min(mindist.z, i-1) end - wallnode = node.name end -- abort even if it wasn't a wall cause something is in the way break @@ -58,14 +52,19 @@ local function find_walls(cpos) end end - local mapping = { - [wall_ss] = "sandstone", - [wall_ds] = "desert" - } + local biome = minetest.get_biome_data(cpos) + local biome = biome and minetest.get_biome_name(biome.biome) or "" + local type = "normal" + if biome:find("desert") == 1 then + type = "desert" + elseif biome:find("sandstone_desert") == 1 then + type = "sandstone" + end + return { walls = ret, size = {x=mindist.x*2, z=mindist.z*2}, - type = mapping[wallnode] or "normal" + type = type, } end From b701e500aad5ed9d17696b2cb6480ceb10935fe6 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Tue, 16 Jul 2019 20:28:40 +0200 Subject: [PATCH 33/81] Support for icesheet dungeons in dungeon_loot --- game_api.txt | 5 +++-- mods/dungeon_loot/loot.lua | 31 +++++++++++++++++++++---------- mods/dungeon_loot/mapgen.lua | 2 ++ 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/game_api.txt b/game_api.txt index 841c6e20..4f1ff9a2 100644 --- a/game_api.txt +++ b/game_api.txt @@ -276,7 +276,7 @@ The mod that places chests with loot in dungeons provides an API to register add name = "item:name", chance = 0.5, -- ^ chance value from 0.0 to 1.0 that the item will appear in the chest when chosen - -- due to an extra step in the selection process, 0.5 does not(!) mean that + -- Due to an extra step in the selection process, 0.5 does not(!) mean that -- on average every second chest will have this item count = {1, 4}, -- ^ table with minimum and maximum amounts of this item @@ -286,7 +286,8 @@ The mod that places chests with loot in dungeons provides an API to register add -- optional, defaults to no height restrictions types = {"desert"}, -- ^ table with types of dungeons this item can be found in - -- supported types: "normal" (the cobble/mossycobble one), "sandstone", "desert" + -- supported types: "normal" (the cobble/mossycobble one), "sandstone" + -- "desert" and "ice" -- optional, defaults to no type restrictions diff --git a/mods/dungeon_loot/loot.lua b/mods/dungeon_loot/loot.lua index 3fe0bff6..7eb08cd8 100644 --- a/mods/dungeon_loot/loot.lua +++ b/mods/dungeon_loot/loot.lua @@ -1,10 +1,13 @@ dungeon_loot.registered_loot = { -- buckets {name = "bucket:bucket_empty", chance = 0.55}, - -- water in deserts or above ground, lava otherwise - {name = "bucket:bucket_water", chance = 0.45, types = {"sandstone", "desert"}}, - {name = "bucket:bucket_water", chance = 0.45, y = {0, 32768}, types = {"normal"}}, - {name = "bucket:bucket_lava", chance = 0.45, y = {-32768, -1}, types = {"normal"}}, + -- water in deserts/ice or above ground, lava otherwise + {name = "bucket:bucket_water", chance = 0.45, + types = {"sandstone", "desert", "ice"}}, + {name = "bucket:bucket_water", chance = 0.45, y = {0, 32768}, + types = {"normal"}}, + {name = "bucket:bucket_lava", chance = 0.45, y = {-32768, -1}, + types = {"normal"}}, -- various items {name = "default:stick", chance = 0.6, count = {3, 6}}, @@ -16,8 +19,10 @@ dungeon_loot.registered_loot = { {name = "farming:string", chance = 0.5, count = {1, 8}}, {name = "farming:wheat", chance = 0.5, count = {2, 5}}, {name = "default:apple", chance = 0.4, count = {1, 4}}, - {name = "farming:seed_cotton", chance = 0.4, count = {1, 4}, types = {"normal"}}, - {name = "default:cactus", chance = 0.4, count = {1, 4}, types = {"sandstone", "desert"}}, + {name = "farming:seed_cotton", chance = 0.4, count = {1, 4}, + types = {"normal"}}, + {name = "default:cactus", chance = 0.4, count = {1, 4}, + types = {"sandstone", "desert"}}, -- minerals {name = "default:coal_lump", chance = 0.9, count = {1, 12}}, @@ -31,10 +36,16 @@ dungeon_loot.registered_loot = { {name = "default:axe_diamond", chance = 0.05}, -- natural materials - {name = "default:sand", chance = 0.8, count = {4, 32}, y = {-64, 32768}, types = {"normal"}}, - {name = "default:desert_sand", chance = 0.8, count = {4, 32}, y = {-64, 32768}, types = {"sandstone"}}, - {name = "default:desert_cobble", chance = 0.8, count = {4, 32}, types = {"desert"}}, - {name = "default:dirt", chance = 0.6, count = {2, 16}, y = {-64, 32768}}, + {name = "default:sand", chance = 0.8, count = {4, 32}, y = {-64, 32768}, + types = {"normal"}}, + {name = "default:desert_sand", chance = 0.8, count = {4, 32}, y = {-64, 32768}, + types = {"sandstone"}}, + {name = "default:desert_cobble", chance = 0.8, count = {4, 32}, + types = {"desert"}}, + {name = "default:snow", chance = 0.8, count = {8, 64}, y = {-64, 32768}, + types = {"ice"}}, + {name = "default:dirt", chance = 0.6, count = {2, 16}, y = {-64, 32768}, + types = {"normal", "sandstone", "desert"}}, {name = "default:obsidian", chance = 0.25, count = {1, 3}, y = {-32768, -512}}, {name = "default:mese", chance = 0.15, y = {-32768, -512}}, } diff --git a/mods/dungeon_loot/mapgen.lua b/mods/dungeon_loot/mapgen.lua index 12946d4c..06b3bd79 100644 --- a/mods/dungeon_loot/mapgen.lua +++ b/mods/dungeon_loot/mapgen.lua @@ -59,6 +59,8 @@ local function find_walls(cpos) type = "desert" elseif biome:find("sandstone_desert") == 1 then type = "sandstone" + elseif biome:find("icesheet") == 1 then + type = "ice" end return { From c3403936d3569e91af737b961d56078d844a5777 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Tue, 16 Jul 2019 23:17:14 +0200 Subject: [PATCH 34/81] Fix luacheck warning --- mods/dungeon_loot/mapgen.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/dungeon_loot/mapgen.lua b/mods/dungeon_loot/mapgen.lua index 06b3bd79..4a19f3cf 100644 --- a/mods/dungeon_loot/mapgen.lua +++ b/mods/dungeon_loot/mapgen.lua @@ -53,7 +53,7 @@ local function find_walls(cpos) end local biome = minetest.get_biome_data(cpos) - local biome = biome and minetest.get_biome_name(biome.biome) or "" + biome = biome and minetest.get_biome_name(biome.biome) or "" local type = "normal" if biome:find("desert") == 1 then type = "desert" From 773011fd854e4beb1958db27a660b52b7eb325d8 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Tue, 16 Jul 2019 23:18:27 +0200 Subject: [PATCH 35/81] Fix potential crash when few loot items are registered --- mods/dungeon_loot/mapgen.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/dungeon_loot/mapgen.lua b/mods/dungeon_loot/mapgen.lua index 4a19f3cf..624e9a85 100644 --- a/mods/dungeon_loot/mapgen.lua +++ b/mods/dungeon_loot/mapgen.lua @@ -76,8 +76,8 @@ local function populate_chest(pos, rand, dungeontype) local item_list = dungeon_loot._internal_get_loot(pos.y, dungeontype) -- take random (partial) sample of all possible items - assert(#item_list >= dungeon_loot.STACKS_PER_CHEST_MAX) - item_list = random_sample(rand, item_list, dungeon_loot.STACKS_PER_CHEST_MAX) + local sample_n = math.min(#item_list, dungeon_loot.STACKS_PER_CHEST_MAX) + item_list = random_sample(rand, item_list, sample_n) -- apply chances / randomized amounts and collect resulting items local items = {} From 9b226c7045c0dd2e7cf9e53571b845b8e27062d3 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Tue, 16 Jul 2019 22:40:21 +0200 Subject: [PATCH 36/81] Switch to mod.conf, delete deprecated depends.txt --- mods/beds/depends.txt | 2 -- mods/beds/mod.conf | 3 +++ mods/binoculars/depends.txt | 2 -- mods/binoculars/mod.conf | 4 ++++ mods/boats/depends.txt | 2 -- mods/boats/mod.conf | 3 +++ mods/bones/depends.txt | 1 - mods/bones/mod.conf | 3 +++ mods/bucket/depends.txt | 2 -- mods/bucket/mod.conf | 3 +++ mods/butterflies/depends.txt | 2 -- mods/butterflies/mod.conf | 3 +++ mods/carts/depends.txt | 2 -- mods/carts/mod.conf | 3 +++ mods/creative/depends.txt | 2 -- mods/creative/mod.conf | 3 +++ mods/default/depends.txt | 1 - mods/default/mod.conf | 3 +++ mods/doors/depends.txt | 2 -- mods/doors/mod.conf | 4 ++++ mods/dungeon_loot/depends.txt | 1 - mods/dungeon_loot/mod.conf | 3 +++ mods/dye/depends.txt | 0 mods/dye/mod.conf | 2 ++ mods/farming/depends.txt | 3 --- mods/farming/mod.conf | 3 +++ mods/fire/depends.txt | 1 - mods/fire/mod.conf | 3 +++ mods/fireflies/depends.txt | 2 -- mods/fireflies/mod.conf | 3 +++ mods/flowers/depends.txt | 1 - mods/flowers/mod.conf | 3 +++ mods/game_commands/mod.conf | 2 ++ mods/give_initial_stuff/depends.txt | 2 -- mods/give_initial_stuff/mod.conf | 3 +++ mods/map/depends.txt | 3 --- mods/map/mod.conf | 4 ++++ mods/player_api/mod.conf | 2 ++ mods/screwdriver/mod.conf | 2 ++ mods/sethome/mod.conf | 2 ++ mods/sfinv/mod.conf | 2 ++ mods/spawn/depends.txt | 2 -- mods/spawn/mod.conf | 4 ++++ mods/stairs/depends.txt | 1 - mods/stairs/mod.conf | 3 +++ mods/tnt/depends.txt | 3 --- mods/tnt/mod.conf | 3 +++ mods/vessels/depends.txt | 1 - mods/vessels/mod.conf | 3 +++ mods/walls/depends.txt | 1 - mods/walls/mod.conf | 3 +++ mods/wool/depends.txt | 2 -- mods/wool/mod.conf | 3 +++ mods/xpanes/depends.txt | 1 - mods/xpanes/mod.conf | 3 +++ 55 files changed, 88 insertions(+), 42 deletions(-) delete mode 100644 mods/beds/depends.txt create mode 100644 mods/beds/mod.conf delete mode 100644 mods/binoculars/depends.txt create mode 100644 mods/binoculars/mod.conf delete mode 100644 mods/boats/depends.txt create mode 100644 mods/boats/mod.conf delete mode 100644 mods/bones/depends.txt create mode 100644 mods/bones/mod.conf delete mode 100644 mods/bucket/depends.txt create mode 100644 mods/bucket/mod.conf delete mode 100644 mods/butterflies/depends.txt create mode 100644 mods/butterflies/mod.conf delete mode 100644 mods/carts/depends.txt create mode 100644 mods/carts/mod.conf delete mode 100644 mods/creative/depends.txt create mode 100644 mods/creative/mod.conf delete mode 100644 mods/default/depends.txt create mode 100644 mods/default/mod.conf delete mode 100644 mods/doors/depends.txt create mode 100644 mods/doors/mod.conf delete mode 100644 mods/dungeon_loot/depends.txt create mode 100644 mods/dungeon_loot/mod.conf delete mode 100644 mods/dye/depends.txt create mode 100644 mods/dye/mod.conf delete mode 100644 mods/farming/depends.txt create mode 100644 mods/farming/mod.conf delete mode 100644 mods/fire/depends.txt create mode 100644 mods/fire/mod.conf delete mode 100644 mods/fireflies/depends.txt create mode 100644 mods/fireflies/mod.conf delete mode 100644 mods/flowers/depends.txt create mode 100644 mods/flowers/mod.conf create mode 100644 mods/game_commands/mod.conf delete mode 100644 mods/give_initial_stuff/depends.txt create mode 100644 mods/give_initial_stuff/mod.conf delete mode 100644 mods/map/depends.txt create mode 100644 mods/map/mod.conf create mode 100644 mods/player_api/mod.conf create mode 100644 mods/screwdriver/mod.conf create mode 100644 mods/sethome/mod.conf create mode 100644 mods/sfinv/mod.conf delete mode 100644 mods/spawn/depends.txt create mode 100644 mods/spawn/mod.conf delete mode 100644 mods/stairs/depends.txt create mode 100644 mods/stairs/mod.conf delete mode 100644 mods/tnt/depends.txt create mode 100644 mods/tnt/mod.conf delete mode 100644 mods/vessels/depends.txt create mode 100644 mods/vessels/mod.conf delete mode 100644 mods/walls/depends.txt create mode 100644 mods/walls/mod.conf delete mode 100644 mods/wool/depends.txt create mode 100644 mods/wool/mod.conf delete mode 100644 mods/xpanes/depends.txt create mode 100644 mods/xpanes/mod.conf diff --git a/mods/beds/depends.txt b/mods/beds/depends.txt deleted file mode 100644 index 470ec30b..00000000 --- a/mods/beds/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -wool diff --git a/mods/beds/mod.conf b/mods/beds/mod.conf new file mode 100644 index 00000000..450ec138 --- /dev/null +++ b/mods/beds/mod.conf @@ -0,0 +1,3 @@ +name = beds +description = Minetest Game mod: beds +depends = default, wool diff --git a/mods/binoculars/depends.txt b/mods/binoculars/depends.txt deleted file mode 100644 index 1f737c12..00000000 --- a/mods/binoculars/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -creative? diff --git a/mods/binoculars/mod.conf b/mods/binoculars/mod.conf new file mode 100644 index 00000000..7d737415 --- /dev/null +++ b/mods/binoculars/mod.conf @@ -0,0 +1,4 @@ +name = binoculars +description = Minetest Game mod: binoculars +depends = default +optional_depends = creative diff --git a/mods/boats/depends.txt b/mods/boats/depends.txt deleted file mode 100644 index 8e482ce2..00000000 --- a/mods/boats/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -player_api diff --git a/mods/boats/mod.conf b/mods/boats/mod.conf new file mode 100644 index 00000000..a727f8ff --- /dev/null +++ b/mods/boats/mod.conf @@ -0,0 +1,3 @@ +name = boats +description = Minetest Game mod: boats +depends = default, player_api diff --git a/mods/bones/depends.txt b/mods/bones/depends.txt deleted file mode 100644 index 4ad96d51..00000000 --- a/mods/bones/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/mods/bones/mod.conf b/mods/bones/mod.conf new file mode 100644 index 00000000..371997b3 --- /dev/null +++ b/mods/bones/mod.conf @@ -0,0 +1,3 @@ +name = bones +description = Minetest Game mod: bones +depends = default diff --git a/mods/bucket/depends.txt b/mods/bucket/depends.txt deleted file mode 100644 index 3a7daa1d..00000000 --- a/mods/bucket/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default - diff --git a/mods/bucket/mod.conf b/mods/bucket/mod.conf new file mode 100644 index 00000000..1c60a099 --- /dev/null +++ b/mods/bucket/mod.conf @@ -0,0 +1,3 @@ +name = bucket +description = Minetest Game mod: bucket +depends = default diff --git a/mods/butterflies/depends.txt b/mods/butterflies/depends.txt deleted file mode 100644 index df07aca3..00000000 --- a/mods/butterflies/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -flowers \ No newline at end of file diff --git a/mods/butterflies/mod.conf b/mods/butterflies/mod.conf new file mode 100644 index 00000000..1c66497d --- /dev/null +++ b/mods/butterflies/mod.conf @@ -0,0 +1,3 @@ +name = butterflies +description = Minetest Game mod: Butterflies +depends = default, flowers diff --git a/mods/carts/depends.txt b/mods/carts/depends.txt deleted file mode 100644 index 8e482ce2..00000000 --- a/mods/carts/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -player_api diff --git a/mods/carts/mod.conf b/mods/carts/mod.conf new file mode 100644 index 00000000..20357e3e --- /dev/null +++ b/mods/carts/mod.conf @@ -0,0 +1,3 @@ +name = carts +description = Carts (formerly boost_cart) +depends = default, player_api diff --git a/mods/creative/depends.txt b/mods/creative/depends.txt deleted file mode 100644 index 975e6525..00000000 --- a/mods/creative/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -sfinv diff --git a/mods/creative/mod.conf b/mods/creative/mod.conf new file mode 100644 index 00000000..0b3f745d --- /dev/null +++ b/mods/creative/mod.conf @@ -0,0 +1,3 @@ +name = creative +description = Minetest Game mod: creative +depends = default, sfinv diff --git a/mods/default/depends.txt b/mods/default/depends.txt deleted file mode 100644 index e1c38184..00000000 --- a/mods/default/depends.txt +++ /dev/null @@ -1 +0,0 @@ -player_api? diff --git a/mods/default/mod.conf b/mods/default/mod.conf new file mode 100644 index 00000000..c9e74684 --- /dev/null +++ b/mods/default/mod.conf @@ -0,0 +1,3 @@ +name = default +description = Minetest Game mod: default +optional_depends = player_api diff --git a/mods/doors/depends.txt b/mods/doors/depends.txt deleted file mode 100644 index 5e28beeb..00000000 --- a/mods/doors/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -screwdriver? diff --git a/mods/doors/mod.conf b/mods/doors/mod.conf new file mode 100644 index 00000000..de053c27 --- /dev/null +++ b/mods/doors/mod.conf @@ -0,0 +1,4 @@ +name = doors +description = Minetest Game mod: doors +depends = default +optional_depends = screwdriver diff --git a/mods/dungeon_loot/depends.txt b/mods/dungeon_loot/depends.txt deleted file mode 100644 index 4ad96d51..00000000 --- a/mods/dungeon_loot/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/mods/dungeon_loot/mod.conf b/mods/dungeon_loot/mod.conf new file mode 100644 index 00000000..79d80899 --- /dev/null +++ b/mods/dungeon_loot/mod.conf @@ -0,0 +1,3 @@ +name = dungeon_loot +description = Minetest Game mod: dungeon_loot +depends = default diff --git a/mods/dye/depends.txt b/mods/dye/depends.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/mods/dye/mod.conf b/mods/dye/mod.conf new file mode 100644 index 00000000..32bb816c --- /dev/null +++ b/mods/dye/mod.conf @@ -0,0 +1,2 @@ +name = dye +description = Minetest Game mod: dye diff --git a/mods/farming/depends.txt b/mods/farming/depends.txt deleted file mode 100644 index 301d9719..00000000 --- a/mods/farming/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -default -wool -stairs diff --git a/mods/farming/mod.conf b/mods/farming/mod.conf new file mode 100644 index 00000000..c26c28fc --- /dev/null +++ b/mods/farming/mod.conf @@ -0,0 +1,3 @@ +name = farming +description = Minetest Game mod: farming +depends = default, wool, stairs diff --git a/mods/fire/depends.txt b/mods/fire/depends.txt deleted file mode 100644 index 4ad96d51..00000000 --- a/mods/fire/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/mods/fire/mod.conf b/mods/fire/mod.conf new file mode 100644 index 00000000..c70f23b7 --- /dev/null +++ b/mods/fire/mod.conf @@ -0,0 +1,3 @@ +name = fire +description = Minetest Game mod: fire +depends = default diff --git a/mods/fireflies/depends.txt b/mods/fireflies/depends.txt deleted file mode 100644 index e0585b46..00000000 --- a/mods/fireflies/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -vessels \ No newline at end of file diff --git a/mods/fireflies/mod.conf b/mods/fireflies/mod.conf new file mode 100644 index 00000000..a5335880 --- /dev/null +++ b/mods/fireflies/mod.conf @@ -0,0 +1,3 @@ +name = fireflies +description = Minetest Game mod: fireflies +depends = default, vessels diff --git a/mods/flowers/depends.txt b/mods/flowers/depends.txt deleted file mode 100644 index 4ad96d51..00000000 --- a/mods/flowers/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/mods/flowers/mod.conf b/mods/flowers/mod.conf new file mode 100644 index 00000000..cdafe642 --- /dev/null +++ b/mods/flowers/mod.conf @@ -0,0 +1,3 @@ +name = flowers +description = Minetest Game mod: flowers +depends = default diff --git a/mods/game_commands/mod.conf b/mods/game_commands/mod.conf new file mode 100644 index 00000000..5571ff51 --- /dev/null +++ b/mods/game_commands/mod.conf @@ -0,0 +1,2 @@ +name = game_commands +description = Minetest Game mod: game_commands diff --git a/mods/give_initial_stuff/depends.txt b/mods/give_initial_stuff/depends.txt deleted file mode 100644 index 3a7daa1d..00000000 --- a/mods/give_initial_stuff/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default - diff --git a/mods/give_initial_stuff/mod.conf b/mods/give_initial_stuff/mod.conf new file mode 100644 index 00000000..51d31aef --- /dev/null +++ b/mods/give_initial_stuff/mod.conf @@ -0,0 +1,3 @@ +name = give_initial_stuff +description = Minetest Game mod: give_initial_stuff +depends = default diff --git a/mods/map/depends.txt b/mods/map/depends.txt deleted file mode 100644 index 4b15f6a3..00000000 --- a/mods/map/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -default -dye -creative? diff --git a/mods/map/mod.conf b/mods/map/mod.conf new file mode 100644 index 00000000..2099c199 --- /dev/null +++ b/mods/map/mod.conf @@ -0,0 +1,4 @@ +name = map +description = Minetest Game mod: map +depends = default, dye +optional_depends = creative diff --git a/mods/player_api/mod.conf b/mods/player_api/mod.conf new file mode 100644 index 00000000..198b86dc --- /dev/null +++ b/mods/player_api/mod.conf @@ -0,0 +1,2 @@ +name = player_api +description = Minetest Game mod: player_api diff --git a/mods/screwdriver/mod.conf b/mods/screwdriver/mod.conf new file mode 100644 index 00000000..306c52b5 --- /dev/null +++ b/mods/screwdriver/mod.conf @@ -0,0 +1,2 @@ +name = screwdriver +description = Minetest Game mod: screwdriver diff --git a/mods/sethome/mod.conf b/mods/sethome/mod.conf new file mode 100644 index 00000000..00799251 --- /dev/null +++ b/mods/sethome/mod.conf @@ -0,0 +1,2 @@ +name = sethome +description = Minetest Game mod: sethome diff --git a/mods/sfinv/mod.conf b/mods/sfinv/mod.conf new file mode 100644 index 00000000..2934435f --- /dev/null +++ b/mods/sfinv/mod.conf @@ -0,0 +1,2 @@ +name = sfinv +description = Minetest Game mod: sfinv diff --git a/mods/spawn/depends.txt b/mods/spawn/depends.txt deleted file mode 100644 index 548489e2..00000000 --- a/mods/spawn/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -beds? diff --git a/mods/spawn/mod.conf b/mods/spawn/mod.conf new file mode 100644 index 00000000..ec3d5648 --- /dev/null +++ b/mods/spawn/mod.conf @@ -0,0 +1,4 @@ +name = spawn +description = Minetest Game mod: spawn +depends = default +optional_depends = beds diff --git a/mods/stairs/depends.txt b/mods/stairs/depends.txt deleted file mode 100644 index 4ad96d51..00000000 --- a/mods/stairs/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/mods/stairs/mod.conf b/mods/stairs/mod.conf new file mode 100644 index 00000000..7548fa72 --- /dev/null +++ b/mods/stairs/mod.conf @@ -0,0 +1,3 @@ +name = stairs +description = Minetest Game mod: stairs +depends = default diff --git a/mods/tnt/depends.txt b/mods/tnt/depends.txt deleted file mode 100644 index 5ff216f7..00000000 --- a/mods/tnt/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -default -fire - diff --git a/mods/tnt/mod.conf b/mods/tnt/mod.conf new file mode 100644 index 00000000..9385e825 --- /dev/null +++ b/mods/tnt/mod.conf @@ -0,0 +1,3 @@ +name = tnt +description = Minetest Game mod: tnt +depends = default, fire diff --git a/mods/vessels/depends.txt b/mods/vessels/depends.txt deleted file mode 100644 index 4ad96d51..00000000 --- a/mods/vessels/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/mods/vessels/mod.conf b/mods/vessels/mod.conf new file mode 100644 index 00000000..7551b54a --- /dev/null +++ b/mods/vessels/mod.conf @@ -0,0 +1,3 @@ +name = vessels +description = Minetest Game mod: vessels +depends = default diff --git a/mods/walls/depends.txt b/mods/walls/depends.txt deleted file mode 100644 index 4ad96d51..00000000 --- a/mods/walls/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/mods/walls/mod.conf b/mods/walls/mod.conf new file mode 100644 index 00000000..9b8bbe84 --- /dev/null +++ b/mods/walls/mod.conf @@ -0,0 +1,3 @@ +name = walls +description = Minetest Game mod: walls +depends = default diff --git a/mods/wool/depends.txt b/mods/wool/depends.txt deleted file mode 100644 index 2717befb..00000000 --- a/mods/wool/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -dye diff --git a/mods/wool/mod.conf b/mods/wool/mod.conf new file mode 100644 index 00000000..a0ca3f0e --- /dev/null +++ b/mods/wool/mod.conf @@ -0,0 +1,3 @@ +name = wool +description = Minetest Game mod: wool +depends = default, dye diff --git a/mods/xpanes/depends.txt b/mods/xpanes/depends.txt deleted file mode 100644 index 331d858c..00000000 --- a/mods/xpanes/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default \ No newline at end of file diff --git a/mods/xpanes/mod.conf b/mods/xpanes/mod.conf new file mode 100644 index 00000000..bc043614 --- /dev/null +++ b/mods/xpanes/mod.conf @@ -0,0 +1,3 @@ +name = xpanes +description = Minetest Game mod: xpanes +depends = default From 9fe877ef990c0e0036d6f3bae33f89308a436921 Mon Sep 17 00:00:00 2001 From: Paramat Date: Sun, 21 Jul 2019 03:24:47 +0100 Subject: [PATCH 37/81] Creative: Remove unnecessary dependency on 'default' --- mods/creative/mod.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/creative/mod.conf b/mods/creative/mod.conf index 0b3f745d..37d0d67e 100644 --- a/mods/creative/mod.conf +++ b/mods/creative/mod.conf @@ -1,3 +1,3 @@ name = creative description = Minetest Game mod: creative -depends = default, sfinv +depends = sfinv From d16612c1cb86db48e12c211c27e4b78b920fffcd Mon Sep 17 00:00:00 2001 From: Paramat Date: Mon, 22 Jul 2019 02:18:20 +0100 Subject: [PATCH 38/81] Add new, longer 'default_grass_side' texture Update side texture to match the new top texture. 3/4 side coverage instead of 1/2, --- mods/default/README.txt | 2 +- mods/default/textures/default_grass_side.png | Bin 779 -> 590 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/default/README.txt b/mods/default/README.txt index 6770d347..98c8f1ea 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -101,7 +101,7 @@ paramat (CC BY-SA 3.0): default_dry_grass.png default_dry_grass_side.png default_dry_grass_*.png - default_grass_side.png + default_grass_side.png -- Derived from a texture by TumeniNodes (CC-BY-SA 3.0) default_mese_block.png default_silver_sand.png default_mese_post_light_side.png diff --git a/mods/default/textures/default_grass_side.png b/mods/default/textures/default_grass_side.png index bfd538df6e89a653a261b9071753ab2d74125ed1..079d96a29eab8b7ca8199cd34a42e9b5c19893a0 100644 GIT binary patch delta 566 zcmV-60?GZ02F?VKBYy%FNklECZ>_ zq->;E5QTc-P{6!Wx{N4{5k$e~(Qu8>-mmb%A!bA}BErtXA%FEWvs92&&>-|(#tQgK z(K2K3L$Wb!68&g|nIa-sF|IFq zvKh_X<0?mvi2|q-nq`17qp{1RE;IH8oUpS9)bk2gJ4~UfloSj7dIX?!d19gyBW)Ie ze5DP)T%pj9=Q zCL)x+AO*tQQ?&sAGeboF^zk~8BBTU+4;%b;$c%%ryMJF}1%CbLr;KaC2cc>mr7zf! z35`MoE1&_!oYC9dLRuG!_znCD;IkD1OCRrKgAvUyZZlx-*Gn*yk4k=mjD0&07*qoM6N<$ Eg1VXyLjV8( delta 756 zcmVleK~y-)O_M!uTtyUypEEOeX7^t9!!`;rU;#?O zuK-7(K;nl`P(eopTc(31QbfV8ph*GB%2IwsB$GH%kim|<>wn$*H8Y3e;uTYkH1B(K z&UxOE&%Qp=ckhi65&nL@rQCNEV@rDzNxfnVq1_~$H&h1&7pFDW8_KyOwu&3gEI0pj z#8wFt3qW5dx^2c-K{JTR&RmQK4M0~XOtVfHE5s%v2D)vgUPYQ!#09}umdPDYw@Ev* zFAeMSj=oMffPc5I8fJ$9V}%qGsa49o0)YA|qN)@l1Ay}e>xR3pEUuh8LS>1q5}O2o zv4SrR)*Fn?Y%e34GdU?P2-Xj8n!&W2ge`sM>%h|$t!+2Kging1?$>X!d`n<#CqySH!JUqRBi^f-$lgDR^FTVSD z0X+TV=NI>H(Uo(@tv1Ds0LPzybF`ct1};u(p8fjznE#yz-+r`=-H?e;S)M#RJ^u3h zPnOL(v44E@@>st5;U2aSnpLFTBt(SVD=7|JFUFS9#L`?R%KagIvCA~8$n>tq)mL!{ zQkQp}BbgKj&YI!+P0RGXKu&|%SYdkC|EDhv+slZrhWxv!5UPT8uV@}-4wWVKN?#{T zA-G^D_ln`KeEQ%3=Y_7$L#sCl%@8J**kw|u_-(Plc|*BBkm#FCj>`6JkKH>O0T3!n zc*oIgGpb5#mAwx~q+aQ^84)l}$Wck1l6u8h!B{s`A59&XFKTj9a#F;=`n)42r8+3E mg Date: Sun, 21 Jul 2019 21:26:52 -0400 Subject: [PATCH 39/81] Creative: Add 'default' as optional dependency Fixes bugs caused by removing 'default' as a hard dependency. --- mods/creative/mod.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/creative/mod.conf b/mods/creative/mod.conf index 37d0d67e..8f3fcd9f 100644 --- a/mods/creative/mod.conf +++ b/mods/creative/mod.conf @@ -1,3 +1,4 @@ name = creative description = Minetest Game mod: creative depends = sfinv +optional_depends = default From c32b8adaa36353f9b21d896e93cce732e26cf0a0 Mon Sep 17 00:00:00 2001 From: TumeniNodes Date: Fri, 26 Jul 2019 12:50:44 -0400 Subject: [PATCH 40/81] Add 'dry dirt' and 'dry dirt with dry grass' nodes for savanna biome --- mods/default/README.txt | 1 + mods/default/functions.lua | 12 +++--- mods/default/mapgen.lua | 22 +++++------ mods/default/nodes.lua | 23 ++++++++++- mods/default/textures/default_dry_dirt.png | Bin 0 -> 256 bytes mods/farming/nodes.lua | 42 +++++++++++++++++++++ 6 files changed, 82 insertions(+), 18 deletions(-) create mode 100644 mods/default/textures/default_dry_dirt.png diff --git a/mods/default/README.txt b/mods/default/README.txt index 98c8f1ea..1bc899b2 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -129,6 +129,7 @@ TumeniNodes (CC BY-SA 3.0): default_coniferous_litter.png default_coniferous_litter_side.png default_grass.png + default_dry_dirt.png BlockMen (CC BY-SA 3.0): default_aspen_leaves.png -- Derived from Sofar's texture diff --git a/mods/default/functions.lua b/mods/default/functions.lua index 183b5597..ceeeedc6 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -477,7 +477,6 @@ minetest.register_abm({ neighbors = { "air", "group:grass", - "group:dry_grass", "default:snow", }, interval = 6, @@ -504,11 +503,8 @@ minetest.register_abm({ -- Snow check is cheapest, so comes first if name == "default:snow" then minetest.set_node(pos, {name = "default:dirt_with_snow"}) - -- Most likely case first elseif minetest.get_item_group(name, "grass") ~= 0 then minetest.set_node(pos, {name = "default:dirt_with_grass"}) - elseif minetest.get_item_group(name, "dry_grass") ~= 0 then - minetest.set_node(pos, {name = "default:dirt_with_dry_grass"}) end end }) @@ -520,7 +516,7 @@ minetest.register_abm({ minetest.register_abm({ label = "Grass covered", - nodenames = {"group:spreading_dirt_type"}, + nodenames = {"group:spreading_dirt_type", "default:dry_dirt_with_dry_grass"}, interval = 8, chance = 50, catch_up = false, @@ -531,7 +527,11 @@ minetest.register_abm({ if name ~= "ignore" and nodedef and not ((nodedef.sunlight_propagates or nodedef.paramtype == "light") and nodedef.liquidtype == "none") then - minetest.set_node(pos, {name = "default:dirt"}) + if node.name == "default:dry_dirt_with_dry_grass" then + minetest.set_node(pos, {name = "default:dry_dirt"}) + else + minetest.set_node(pos, {name = "default:dirt"}) + end end end }) diff --git a/mods/default/mapgen.lua b/mods/default/mapgen.lua index bec2a238..e930c24c 100644 --- a/mods/default/mapgen.lua +++ b/mods/default/mapgen.lua @@ -575,8 +575,8 @@ function default.register_ores() }, -- Only where default:dirt is present as surface material biomes = {"taiga", "snowy_grassland", "grassland", "coniferous_forest", - "deciduous_forest", "deciduous_forest_shore", "savanna", "savanna_shore", - "rainforest", "rainforest_swamp", "floatland_coniferous_forest"} + "deciduous_forest", "deciduous_forest_shore", "rainforest", + "rainforest_swamp", "floatland_coniferous_forest"} }) -- Gravel @@ -1487,9 +1487,9 @@ function default.register_biomes(upper_limit) minetest.register_biome({ name = "savanna", - node_top = "default:dirt_with_dry_grass", + node_top = "default:dry_dirt_with_dry_grass", depth_top = 1, - node_filler = "default:dirt", + node_filler = "default:dry_dirt", depth_filler = 1, node_riverbed = "default:sand", depth_riverbed = 2, @@ -1504,9 +1504,9 @@ function default.register_biomes(upper_limit) minetest.register_biome({ name = "savanna_shore", - node_top = "default:dirt", + node_top = "default:dry_dirt", depth_top = 1, - node_filler = "default:dirt", + node_filler = "default:dry_dirt", depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, @@ -1798,7 +1798,7 @@ local function register_dry_grass_decoration(offset, scale, length) minetest.register_decoration({ name = "default:dry_grass_" .. length, deco_type = "simple", - place_on = {"default:dirt_with_dry_grass"}, + place_on = {"default:dry_dirt_with_dry_grass"}, sidelen = 16, noise_params = { offset = offset, @@ -2012,7 +2012,7 @@ function default.register_decorations() minetest.register_decoration({ name = "default:acacia_tree", deco_type = "schematic", - place_on = {"default:dirt_with_dry_grass"}, + place_on = {"default:dry_dirt_with_dry_grass"}, sidelen = 16, noise_params = { offset = 0, @@ -2033,7 +2033,7 @@ function default.register_decorations() minetest.register_decoration({ name = "default:acacia_log", deco_type = "schematic", - place_on = {"default:dirt_with_dry_grass"}, + place_on = {"default:dry_dirt_with_dry_grass"}, place_offset_y = 1, sidelen = 16, noise_params = { @@ -2050,7 +2050,7 @@ function default.register_decorations() schematic = minetest.get_modpath("default") .. "/schematics/acacia_log.mts", flags = "place_center_x", rotation = "random", - spawn_by = "default:dirt_with_dry_grass", + spawn_by = "default:dry_dirt_with_dry_grass", num_spawn_by = 8, }) @@ -2218,7 +2218,7 @@ function default.register_decorations() minetest.register_decoration({ name = "default:acacia_bush", deco_type = "schematic", - place_on = {"default:dirt_with_dry_grass"}, + place_on = {"default:dry_dirt_with_dry_grass"}, sidelen = 16, noise_params = { offset = -0.004, diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index 15aca96c..bf7b43aa 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -52,6 +52,8 @@ default:dirt_with_dry_grass default:dirt_with_snow default:dirt_with_rainforest_litter default:dirt_with_coniferous_litter +default:dry_dirt +default:dry_dirt_with_dry_grass default:permafrost default:permafrost_with_stones @@ -459,7 +461,7 @@ minetest.register_node("default:dirt_with_dry_grass", { "default_dirt.png", {name = "default_dirt.png^default_dry_grass_side.png", tileable_vertical = false}}, - groups = {crumbly = 3, soil = 1, spreading_dirt_type = 1}, + groups = {crumbly = 3, soil = 1}, drop = 'default:dirt', sounds = default.node_sound_dirt_defaults({ footstep = {name = "default_grass_footstep", gain = 0.4}, @@ -508,6 +510,25 @@ minetest.register_node("default:dirt_with_coniferous_litter", { }), }) +minetest.register_node("default:dry_dirt", { + description = "Dry Dirt", + tiles = {"default_dry_dirt.png"}, + groups = {crumbly = 3, soil = 1}, + sounds = default.node_sound_dirt_defaults(), +}) + +minetest.register_node("default:dry_dirt_with_dry_grass", { + description = "Dry Dirt with Dry Grass", + tiles = {"default_dry_grass.png", "default_dry_dirt.png", + {name = "default_dry_dirt.png^default_dry_grass_side.png", + tileable_vertical = false}}, + groups = {crumbly = 3, soil = 1}, + drop = "default:dry_dirt", + sounds = default.node_sound_dirt_defaults({ + footstep = {name = "default_grass_footstep", gain = 0.4}, + }), +}) + minetest.register_node("default:permafrost", { description = "Permafrost", tiles = {"default_permafrost.png"}, diff --git a/mods/default/textures/default_dry_dirt.png b/mods/default/textures/default_dry_dirt.png new file mode 100644 index 0000000000000000000000000000000000000000..8ee53984faba09e7c92974d2b0f6fe5b0aaf4dfc GIT binary patch literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;V>zbyJwGE+bn?u*NgspE4 zU*8tFu|0BAN7Uxd=q+6_+j`=5^(5@+P1xI)cwlPUk*OKSre_7lXT}4ycX+xuhDb=V z9&AiJV!*>}_)GPd%CeW`|1-H?L>eoe_`P8wulMYm$NFA1HqH8eXiivG_c5L`-`r(y za8Lir!m{5Y;B9N<#Kgu8bF!Xn)|_N2ubW}zduaNs-^LtMm}VH|wy@sWXHYUB{41}+ zfjz5w=eI85EpNH&x}xzwU{+T;i;`khr1u89&)zopr E0KnvGbpQYW literal 0 HcmV?d00001 diff --git a/mods/farming/nodes.lua b/mods/farming/nodes.lua index cc9d1f66..bcd627fb 100644 --- a/mods/farming/nodes.lua +++ b/mods/farming/nodes.lua @@ -38,6 +38,22 @@ minetest.override_item("default:dirt_with_coniferous_litter", { } }) +minetest.override_item("default:dry_dirt", { + soil = { + base = "default:dry_dirt", + dry = "farming:dry_soil", + wet = "farming:dry_soil_wet" + } +}) + +minetest.override_item("default:dry_dirt_with_dry_grass", { + soil = { + base = "default:dry_dirt_with_dry_grass", + dry = "farming:dry_soil", + wet = "farming:dry_soil_wet" + } +}) + minetest.register_node("farming:soil", { description = "Soil", tiles = {"default_dirt.png^farming_soil.png", "default_dirt.png"}, @@ -64,6 +80,32 @@ minetest.register_node("farming:soil_wet", { } }) +minetest.register_node("farming:dry_soil", { + description = "Dry Soil", + tiles = {"default_dry_dirt.png^farming_soil.png", "default_dry_dirt.png"}, + drop = "default:dry_dirt", + groups = {crumbly=3, not_in_creative_inventory=1, soil=2, grassland = 1, field = 1}, + sounds = default.node_sound_dirt_defaults(), + soil = { + base = "default:dry_dirt", + dry = "farming:dry_soil", + wet = "farming:dry_soil_wet" + } +}) + +minetest.register_node("farming:dry_soil_wet", { + description = "Wet Dry Soil", + tiles = {"default_dry_dirt.png^farming_soil_wet.png", "default_dry_dirt.png^farming_soil_wet_side.png"}, + drop = "default:dry_dirt", + groups = {crumbly=3, not_in_creative_inventory=1, soil=3, wet = 1, grassland = 1, field = 1}, + sounds = default.node_sound_dirt_defaults(), + soil = { + base = "default:dry_dirt", + dry = "farming:dry_soil", + wet = "farming:dry_soil_wet" + } +}) + minetest.override_item("default:desert_sand", { groups = {crumbly=3, falling_node=1, sand=1, soil = 1}, soil = { From 6716fc74ecec814d9e2e6b4134c820252711ded7 Mon Sep 17 00:00:00 2001 From: Paramat Date: Tue, 30 Jul 2019 03:55:17 +0100 Subject: [PATCH 41/81] Add patches of bare 'dry dirt' to savanna Tune noise to appear roughly where long dry grass is least dense and shortest. --- mods/default/mapgen.lua | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/mods/default/mapgen.lua b/mods/default/mapgen.lua index e930c24c..6d68afcf 100644 --- a/mods/default/mapgen.lua +++ b/mods/default/mapgen.lua @@ -1838,6 +1838,30 @@ end function default.register_decorations() + -- Savanna bare dirt patches. + -- Must come before all savanna decorations that are placed on dry grass. + -- Noise is similar to long dry grass noise, but scale inverted, to appear + -- where long dry grass is least dense and shortest. + + minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dry_dirt_with_dry_grass"}, + sidelen = 4, + noise_params = { + offset = -1.5, + scale = -1.5, + spread = {x = 200, y = 200, z = 200}, + seed = 329, + octaves = 4, + persist = 1.0 + }, + biomes = {"savanna"}, + y_max = 31000, + y_min = 1, + decoration = "default:dry_dirt", + place_offset_y = -1, + flags = "force_placement", + }) -- Apple tree and log From a5bde8e9bafb1e4bad6f78807c81764f34c479e4 Mon Sep 17 00:00:00 2001 From: TumeniNodes Date: Tue, 30 Jul 2019 19:16:44 -0400 Subject: [PATCH 42/81] Default: Use " " instead of ' ' for item names --- mods/default/crafting.lua | 494 +++++++++++++++++++------------------- mods/default/nodes.lua | 32 +-- 2 files changed, 263 insertions(+), 263 deletions(-) diff --git a/mods/default/crafting.lua b/mods/default/crafting.lua index b49dc487..94811338 100644 --- a/mods/default/crafting.lua +++ b/mods/default/crafting.lua @@ -1,51 +1,51 @@ -- mods/default/crafting.lua minetest.register_craft({ - output = 'default:wood 4', + output = "default:wood 4", recipe = { - {'default:tree'}, + {"default:tree"}, } }) minetest.register_craft({ - output = 'default:junglewood 4', + output = "default:junglewood 4", recipe = { - {'default:jungletree'}, + {"default:jungletree"}, } }) minetest.register_craft({ - output = 'default:pine_wood 4', + output = "default:pine_wood 4", recipe = { - {'default:pine_tree'}, + {"default:pine_tree"}, } }) minetest.register_craft({ - output = 'default:acacia_wood 4', + output = "default:acacia_wood 4", recipe = { - {'default:acacia_tree'}, + {"default:acacia_tree"}, } }) minetest.register_craft({ - output = 'default:aspen_wood 4', + output = "default:aspen_wood 4", recipe = { - {'default:aspen_tree'}, + {"default:aspen_tree"}, } }) minetest.register_craft({ - output = 'default:wood', + output = "default:wood", recipe = { - {'default:bush_stem'}, + {"default:bush_stem"}, } }) minetest.register_craft({ - output = 'default:acacia_wood', + output = "default:acacia_wood", recipe = { - {'default:acacia_bush_stem'}, + {"default:acacia_bush_stem"}, } }) @@ -57,143 +57,143 @@ minetest.register_craft({ }) minetest.register_craft({ - output = 'default:stick 4', + output = "default:stick 4", recipe = { - {'group:wood'}, + {"group:wood"}, } }) minetest.register_craft({ - output = 'default:sign_wall_steel 3', + output = "default:sign_wall_steel 3", recipe = { - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'', 'group:stick', ''}, + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + {"", "group:stick", ""}, } }) minetest.register_craft({ - output = 'default:sign_wall_wood 3', + output = "default:sign_wall_wood 3", recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'group:wood', 'group:wood', 'group:wood'}, - {'', 'group:stick', ''}, + {"group:wood", "group:wood", "group:wood"}, + {"group:wood", "group:wood", "group:wood"}, + {"", "group:stick", ""}, } }) minetest.register_craft({ - output = 'default:torch 4', + output = "default:torch 4", recipe = { - {'default:coal_lump'}, - {'group:stick'}, + {"default:coal_lump"}, + {"group:stick"}, } }) minetest.register_craft({ - output = 'default:pick_wood', + output = "default:pick_wood", recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'', 'group:stick', ''}, - {'', 'group:stick', ''}, + {"group:wood", "group:wood", "group:wood"}, + {"", "group:stick", ""}, + {"", "group:stick", ""}, } }) minetest.register_craft({ - output = 'default:pick_stone', + output = "default:pick_stone", recipe = { - {'group:stone', 'group:stone', 'group:stone'}, - {'', 'group:stick', ''}, - {'', 'group:stick', ''}, + {"group:stone", "group:stone", "group:stone"}, + {"", "group:stick", ""}, + {"", "group:stick", ""}, } }) minetest.register_craft({ - output = 'default:pick_steel', + output = "default:pick_steel", recipe = { - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'', 'group:stick', ''}, - {'', 'group:stick', ''}, + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + {"", "group:stick", ""}, + {"", "group:stick", ""}, } }) minetest.register_craft({ - output = 'default:pick_bronze', + output = "default:pick_bronze", recipe = { - {'default:bronze_ingot', 'default:bronze_ingot', 'default:bronze_ingot'}, - {'', 'group:stick', ''}, - {'', 'group:stick', ''}, + {"default:bronze_ingot", "default:bronze_ingot", "default:bronze_ingot"}, + {"", "group:stick", ""}, + {"", "group:stick", ""}, } }) minetest.register_craft({ - output = 'default:pick_mese', + output = "default:pick_mese", recipe = { - {'default:mese_crystal', 'default:mese_crystal', 'default:mese_crystal'}, - {'', 'group:stick', ''}, - {'', 'group:stick', ''}, + {"default:mese_crystal", "default:mese_crystal", "default:mese_crystal"}, + {"", "group:stick", ""}, + {"", "group:stick", ""}, } }) minetest.register_craft({ - output = 'default:pick_diamond', + output = "default:pick_diamond", recipe = { - {'default:diamond', 'default:diamond', 'default:diamond'}, - {'', 'group:stick', ''}, - {'', 'group:stick', ''}, + {"default:diamond", "default:diamond", "default:diamond"}, + {"", "group:stick", ""}, + {"", "group:stick", ""}, } }) minetest.register_craft({ - output = 'default:shovel_wood', + output = "default:shovel_wood", recipe = { - {'group:wood'}, - {'group:stick'}, - {'group:stick'}, + {"group:wood"}, + {"group:stick"}, + {"group:stick"}, } }) minetest.register_craft({ - output = 'default:shovel_stone', + output = "default:shovel_stone", recipe = { - {'group:stone'}, - {'group:stick'}, - {'group:stick'}, + {"group:stone"}, + {"group:stick"}, + {"group:stick"}, } }) minetest.register_craft({ - output = 'default:shovel_steel', + output = "default:shovel_steel", recipe = { - {'default:steel_ingot'}, - {'group:stick'}, - {'group:stick'}, + {"default:steel_ingot"}, + {"group:stick"}, + {"group:stick"}, } }) minetest.register_craft({ - output = 'default:shovel_bronze', + output = "default:shovel_bronze", recipe = { - {'default:bronze_ingot'}, - {'group:stick'}, - {'group:stick'}, + {"default:bronze_ingot"}, + {"group:stick"}, + {"group:stick"}, } }) minetest.register_craft({ - output = 'default:shovel_mese', + output = "default:shovel_mese", recipe = { - {'default:mese_crystal'}, - {'group:stick'}, - {'group:stick'}, + {"default:mese_crystal"}, + {"group:stick"}, + {"group:stick"}, } }) minetest.register_craft({ - output = 'default:shovel_diamond', + output = "default:shovel_diamond", recipe = { - {'default:diamond'}, - {'group:stick'}, - {'group:stick'}, + {"default:diamond"}, + {"group:stick"}, + {"group:stick"}, } }) @@ -201,135 +201,135 @@ minetest.register_craft({ -- Recipes face left to match appearence in textures and inventory minetest.register_craft({ - output = 'default:axe_wood', + output = "default:axe_wood", recipe = { - {'group:wood', 'group:wood'}, - {'group:wood', 'group:stick'}, - {'', 'group:stick'}, + {"group:wood", "group:wood"}, + {"group:wood", "group:stick"}, + {"", "group:stick"}, } }) minetest.register_craft({ - output = 'default:axe_stone', + output = "default:axe_stone", recipe = { - {'group:stone', 'group:stone'}, - {'group:stone', 'group:stick'}, - {'', 'group:stick'}, + {"group:stone", "group:stone"}, + {"group:stone", "group:stick"}, + {"", "group:stick"}, } }) minetest.register_craft({ - output = 'default:axe_steel', + output = "default:axe_steel", recipe = { - {'default:steel_ingot', 'default:steel_ingot'}, - {'default:steel_ingot', 'group:stick'}, - {'', 'group:stick'}, + {"default:steel_ingot", "default:steel_ingot"}, + {"default:steel_ingot", "group:stick"}, + {"", "group:stick"}, } }) minetest.register_craft({ - output = 'default:axe_bronze', + output = "default:axe_bronze", recipe = { - {'default:bronze_ingot', 'default:bronze_ingot'}, - {'default:bronze_ingot', 'group:stick'}, - {'', 'group:stick'}, + {"default:bronze_ingot", "default:bronze_ingot"}, + {"default:bronze_ingot", "group:stick"}, + {"", "group:stick"}, } }) minetest.register_craft({ - output = 'default:axe_mese', + output = "default:axe_mese", recipe = { - {'default:mese_crystal', 'default:mese_crystal'}, - {'default:mese_crystal', 'group:stick'}, - {'', 'group:stick'}, + {"default:mese_crystal", "default:mese_crystal"}, + {"default:mese_crystal", "group:stick"}, + {"", "group:stick"}, } }) minetest.register_craft({ - output = 'default:axe_diamond', + output = "default:axe_diamond", recipe = { - {'default:diamond', 'default:diamond'}, - {'default:diamond', 'group:stick'}, - {'', 'group:stick'}, + {"default:diamond", "default:diamond"}, + {"default:diamond", "group:stick"}, + {"", "group:stick"}, } }) minetest.register_craft({ - output = 'default:sword_wood', + output = "default:sword_wood", recipe = { - {'group:wood'}, - {'group:wood'}, - {'group:stick'}, + {"group:wood"}, + {"group:wood"}, + {"group:stick"}, } }) minetest.register_craft({ - output = 'default:sword_stone', + output = "default:sword_stone", recipe = { - {'group:stone'}, - {'group:stone'}, - {'group:stick'}, + {"group:stone"}, + {"group:stone"}, + {"group:stick"}, } }) minetest.register_craft({ - output = 'default:sword_steel', + output = "default:sword_steel", recipe = { - {'default:steel_ingot'}, - {'default:steel_ingot'}, - {'group:stick'}, + {"default:steel_ingot"}, + {"default:steel_ingot"}, + {"group:stick"}, } }) minetest.register_craft({ - output = 'default:sword_bronze', + output = "default:sword_bronze", recipe = { - {'default:bronze_ingot'}, - {'default:bronze_ingot'}, - {'group:stick'}, + {"default:bronze_ingot"}, + {"default:bronze_ingot"}, + {"group:stick"}, } }) minetest.register_craft({ - output = 'default:sword_mese', + output = "default:sword_mese", recipe = { - {'default:mese_crystal'}, - {'default:mese_crystal'}, - {'group:stick'}, + {"default:mese_crystal"}, + {"default:mese_crystal"}, + {"group:stick"}, } }) minetest.register_craft({ - output = 'default:sword_diamond', + output = "default:sword_diamond", recipe = { - {'default:diamond'}, - {'default:diamond'}, - {'group:stick'}, + {"default:diamond"}, + {"default:diamond"}, + {"group:stick"}, } }) minetest.register_craft({ - output = 'default:skeleton_key', + output = "default:skeleton_key", recipe = { - {'default:gold_ingot'}, + {"default:gold_ingot"}, } }) minetest.register_craft({ - output = 'default:chest', + output = "default:chest", recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'group:wood', '', 'group:wood'}, - {'group:wood', 'group:wood', 'group:wood'}, + {"group:wood", "group:wood", "group:wood"}, + {"group:wood", "", "group:wood"}, + {"group:wood", "group:wood", "group:wood"}, } }) minetest.register_craft({ - output = 'default:chest_locked', + output = "default:chest_locked", recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'group:wood', 'default:steel_ingot', 'group:wood'}, - {'group:wood', 'group:wood', 'group:wood'}, + {"group:wood", "group:wood", "group:wood"}, + {"group:wood", "default:steel_ingot", "group:wood"}, + {"group:wood", "group:wood", "group:wood"}, } }) @@ -340,59 +340,59 @@ minetest.register_craft( { }) minetest.register_craft({ - output = 'default:furnace', + output = "default:furnace", recipe = { - {'group:stone', 'group:stone', 'group:stone'}, - {'group:stone', '', 'group:stone'}, - {'group:stone', 'group:stone', 'group:stone'}, + {"group:stone", "group:stone", "group:stone"}, + {"group:stone", "", "group:stone"}, + {"group:stone", "group:stone", "group:stone"}, } }) minetest.register_craft({ - output = 'default:coalblock', + output = "default:coalblock", recipe = { - {'default:coal_lump', 'default:coal_lump', 'default:coal_lump'}, - {'default:coal_lump', 'default:coal_lump', 'default:coal_lump'}, - {'default:coal_lump', 'default:coal_lump', 'default:coal_lump'}, + {"default:coal_lump", "default:coal_lump", "default:coal_lump"}, + {"default:coal_lump", "default:coal_lump", "default:coal_lump"}, + {"default:coal_lump", "default:coal_lump", "default:coal_lump"}, } }) minetest.register_craft({ - output = 'default:coal_lump 9', + output = "default:coal_lump 9", recipe = { - {'default:coalblock'}, + {"default:coalblock"}, } }) minetest.register_craft({ - output = 'default:steelblock', + output = "default:steelblock", recipe = { - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, } }) minetest.register_craft({ - output = 'default:steel_ingot 9', + output = "default:steel_ingot 9", recipe = { - {'default:steelblock'}, + {"default:steelblock"}, } }) minetest.register_craft({ - output = 'default:copperblock', + output = "default:copperblock", recipe = { - {'default:copper_ingot', 'default:copper_ingot', 'default:copper_ingot'}, - {'default:copper_ingot', 'default:copper_ingot', 'default:copper_ingot'}, - {'default:copper_ingot', 'default:copper_ingot', 'default:copper_ingot'}, + {"default:copper_ingot", "default:copper_ingot", "default:copper_ingot"}, + {"default:copper_ingot", "default:copper_ingot", "default:copper_ingot"}, + {"default:copper_ingot", "default:copper_ingot", "default:copper_ingot"}, } }) minetest.register_craft({ - output = 'default:copper_ingot 9', + output = "default:copper_ingot 9", recipe = { - {'default:copperblock'}, + {"default:copperblock"}, } }) @@ -422,50 +422,50 @@ minetest.register_craft({ }) minetest.register_craft({ - output = 'default:bronzeblock', + output = "default:bronzeblock", recipe = { - {'default:bronze_ingot', 'default:bronze_ingot', 'default:bronze_ingot'}, - {'default:bronze_ingot', 'default:bronze_ingot', 'default:bronze_ingot'}, - {'default:bronze_ingot', 'default:bronze_ingot', 'default:bronze_ingot'}, + {"default:bronze_ingot", "default:bronze_ingot", "default:bronze_ingot"}, + {"default:bronze_ingot", "default:bronze_ingot", "default:bronze_ingot"}, + {"default:bronze_ingot", "default:bronze_ingot", "default:bronze_ingot"}, } }) minetest.register_craft({ - output = 'default:bronze_ingot 9', + output = "default:bronze_ingot 9", recipe = { - {'default:bronzeblock'}, + {"default:bronzeblock"}, } }) minetest.register_craft({ - output = 'default:goldblock', + output = "default:goldblock", recipe = { - {'default:gold_ingot', 'default:gold_ingot', 'default:gold_ingot'}, - {'default:gold_ingot', 'default:gold_ingot', 'default:gold_ingot'}, - {'default:gold_ingot', 'default:gold_ingot', 'default:gold_ingot'}, + {"default:gold_ingot", "default:gold_ingot", "default:gold_ingot"}, + {"default:gold_ingot", "default:gold_ingot", "default:gold_ingot"}, + {"default:gold_ingot", "default:gold_ingot", "default:gold_ingot"}, } }) minetest.register_craft({ - output = 'default:gold_ingot 9', + output = "default:gold_ingot 9", recipe = { - {'default:goldblock'}, + {"default:goldblock"}, } }) minetest.register_craft({ - output = 'default:diamondblock', + output = "default:diamondblock", recipe = { - {'default:diamond', 'default:diamond', 'default:diamond'}, - {'default:diamond', 'default:diamond', 'default:diamond'}, - {'default:diamond', 'default:diamond', 'default:diamond'}, + {"default:diamond", "default:diamond", "default:diamond"}, + {"default:diamond", "default:diamond", "default:diamond"}, + {"default:diamond", "default:diamond", "default:diamond"}, } }) minetest.register_craft({ - output = 'default:diamond 9', + output = "default:diamond 9", recipe = { - {'default:diamondblock'}, + {"default:diamondblock"}, } }) @@ -566,57 +566,57 @@ minetest.register_craft({ }) minetest.register_craft({ - output = 'default:clay', + output = "default:clay", recipe = { - {'default:clay_lump', 'default:clay_lump'}, - {'default:clay_lump', 'default:clay_lump'}, + {"default:clay_lump", "default:clay_lump"}, + {"default:clay_lump", "default:clay_lump"}, } }) minetest.register_craft({ - output = 'default:clay_lump 4', + output = "default:clay_lump 4", recipe = { - {'default:clay'}, + {"default:clay"}, } }) minetest.register_craft({ - output = 'default:brick', + output = "default:brick", recipe = { - {'default:clay_brick', 'default:clay_brick'}, - {'default:clay_brick', 'default:clay_brick'}, + {"default:clay_brick", "default:clay_brick"}, + {"default:clay_brick", "default:clay_brick"}, } }) minetest.register_craft({ - output = 'default:clay_brick 4', + output = "default:clay_brick 4", recipe = { - {'default:brick'}, + {"default:brick"}, } }) minetest.register_craft({ - output = 'default:paper', + output = "default:paper", recipe = { - {'default:papyrus', 'default:papyrus', 'default:papyrus'}, + {"default:papyrus", "default:papyrus", "default:papyrus"}, } }) minetest.register_craft({ - output = 'default:book', + output = "default:book", recipe = { - {'default:paper'}, - {'default:paper'}, - {'default:paper'}, + {"default:paper"}, + {"default:paper"}, + {"default:paper"}, } }) minetest.register_craft({ - output = 'default:bookshelf', + output = "default:bookshelf", recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'default:book', 'default:book', 'default:book'}, - {'group:wood', 'group:wood', 'group:wood'}, + {"group:wood", "group:wood", "group:wood"}, + {"default:book", "default:book", "default:book"}, + {"group:wood", "group:wood", "group:wood"}, } }) @@ -630,34 +630,34 @@ minetest.register_craft({ }) minetest.register_craft({ - output = 'default:ladder_steel 15', + output = "default:ladder_steel 15", recipe = { - {'default:steel_ingot', '', 'default:steel_ingot'}, - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'default:steel_ingot', '', 'default:steel_ingot'}, + {"default:steel_ingot", "", "default:steel_ingot"}, + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + {"default:steel_ingot", "", "default:steel_ingot"}, } }) minetest.register_craft({ - output = 'default:mese', + output = "default:mese", recipe = { - {'default:mese_crystal', 'default:mese_crystal', 'default:mese_crystal'}, - {'default:mese_crystal', 'default:mese_crystal', 'default:mese_crystal'}, - {'default:mese_crystal', 'default:mese_crystal', 'default:mese_crystal'}, + {"default:mese_crystal", "default:mese_crystal", "default:mese_crystal"}, + {"default:mese_crystal", "default:mese_crystal", "default:mese_crystal"}, + {"default:mese_crystal", "default:mese_crystal", "default:mese_crystal"}, } }) minetest.register_craft({ - output = 'default:mese_crystal 9', + output = "default:mese_crystal 9", recipe = { - {'default:mese'}, + {"default:mese"}, } }) minetest.register_craft({ - output = 'default:mese_crystal_fragment 9', + output = "default:mese_crystal_fragment 9", recipe = { - {'default:mese_crystal'}, + {"default:mese_crystal"}, } }) @@ -671,10 +671,10 @@ minetest.register_craft({ }) minetest.register_craft({ - output = 'default:meselamp', + output = "default:meselamp", recipe = { - {'default:glass'}, - {'default:mese_crystal'}, + {"default:glass"}, + {"default:mese_crystal"}, } }) @@ -688,85 +688,85 @@ minetest.register_craft({ }) minetest.register_craft({ - output = 'default:obsidian_shard 9', + output = "default:obsidian_shard 9", recipe = { - {'default:obsidian'} + {"default:obsidian"} } }) minetest.register_craft({ - output = 'default:obsidian', + output = "default:obsidian", recipe = { - {'default:obsidian_shard', 'default:obsidian_shard', 'default:obsidian_shard'}, - {'default:obsidian_shard', 'default:obsidian_shard', 'default:obsidian_shard'}, - {'default:obsidian_shard', 'default:obsidian_shard', 'default:obsidian_shard'}, + {"default:obsidian_shard", "default:obsidian_shard", "default:obsidian_shard"}, + {"default:obsidian_shard", "default:obsidian_shard", "default:obsidian_shard"}, + {"default:obsidian_shard", "default:obsidian_shard", "default:obsidian_shard"}, } }) minetest.register_craft({ - output = 'default:obsidianbrick 4', + output = "default:obsidianbrick 4", recipe = { - {'default:obsidian', 'default:obsidian'}, - {'default:obsidian', 'default:obsidian'} + {"default:obsidian", "default:obsidian"}, + {"default:obsidian", "default:obsidian"} } }) minetest.register_craft({ - output = 'default:obsidian_block 9', + output = "default:obsidian_block 9", recipe = { - {'default:obsidian', 'default:obsidian', 'default:obsidian'}, - {'default:obsidian', 'default:obsidian', 'default:obsidian'}, - {'default:obsidian', 'default:obsidian', 'default:obsidian'}, + {"default:obsidian", "default:obsidian", "default:obsidian"}, + {"default:obsidian", "default:obsidian", "default:obsidian"}, + {"default:obsidian", "default:obsidian", "default:obsidian"}, } }) minetest.register_craft({ - output = 'default:stonebrick 4', + output = "default:stonebrick 4", recipe = { - {'default:stone', 'default:stone'}, - {'default:stone', 'default:stone'}, + {"default:stone", "default:stone"}, + {"default:stone", "default:stone"}, } }) minetest.register_craft({ - output = 'default:stone_block 9', + output = "default:stone_block 9", recipe = { - {'default:stone', 'default:stone', 'default:stone'}, - {'default:stone', 'default:stone', 'default:stone'}, - {'default:stone', 'default:stone', 'default:stone'}, + {"default:stone", "default:stone", "default:stone"}, + {"default:stone", "default:stone", "default:stone"}, + {"default:stone", "default:stone", "default:stone"}, } }) minetest.register_craft({ - output = 'default:desert_stonebrick 4', + output = "default:desert_stonebrick 4", recipe = { - {'default:desert_stone', 'default:desert_stone'}, - {'default:desert_stone', 'default:desert_stone'}, + {"default:desert_stone", "default:desert_stone"}, + {"default:desert_stone", "default:desert_stone"}, } }) minetest.register_craft({ - output = 'default:desert_stone_block 9', + output = "default:desert_stone_block 9", recipe = { - {'default:desert_stone', 'default:desert_stone', 'default:desert_stone'}, - {'default:desert_stone', 'default:desert_stone', 'default:desert_stone'}, - {'default:desert_stone', 'default:desert_stone', 'default:desert_stone'}, + {"default:desert_stone", "default:desert_stone", "default:desert_stone"}, + {"default:desert_stone", "default:desert_stone", "default:desert_stone"}, + {"default:desert_stone", "default:desert_stone", "default:desert_stone"}, } }) minetest.register_craft({ - output = 'default:snowblock', + output = "default:snowblock", recipe = { - {'default:snow', 'default:snow', 'default:snow'}, - {'default:snow', 'default:snow', 'default:snow'}, - {'default:snow', 'default:snow', 'default:snow'}, + {"default:snow", "default:snow", "default:snow"}, + {"default:snow", "default:snow", "default:snow"}, + {"default:snow", "default:snow", "default:snow"}, } }) minetest.register_craft({ - output = 'default:snow 9', + output = "default:snow 9", recipe = { - {'default:snowblock'}, + {"default:snowblock"}, } }) @@ -864,16 +864,16 @@ minetest.register_craft({ }) minetest.register_craft({ - type = 'cooking', - output = 'default:gold_ingot', - recipe = 'default:skeleton_key', + type = "cooking", + output = "default:gold_ingot", + recipe = "default:skeleton_key", cooktime = 5, }) minetest.register_craft({ - type = 'cooking', - output = 'default:gold_ingot', - recipe = 'default:key', + type = "cooking", + output = "default:gold_ingot", + recipe = "default:key", cooktime = 5, }) diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index bf7b43aa..b29f6797 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -245,7 +245,7 @@ minetest.register_node("default:stone", { description = "Stone", tiles = {"default_stone.png"}, groups = {cracky = 3, stone = 1}, - drop = 'default:cobble', + drop = "default:cobble", legacy_mineral = true, sounds = default.node_sound_stone_defaults(), }) @@ -289,7 +289,7 @@ minetest.register_node("default:desert_stone", { description = "Desert Stone", tiles = {"default_desert_stone.png"}, groups = {cracky = 3, stone = 1}, - drop = 'default:desert_cobble', + drop = "default:desert_cobble", legacy_mineral = true, sounds = default.node_sound_stone_defaults(), }) @@ -437,7 +437,7 @@ minetest.register_node("default:dirt_with_grass", { {name = "default_dirt.png^default_grass_side.png", tileable_vertical = false}}, groups = {crumbly = 3, soil = 1, spreading_dirt_type = 1}, - drop = 'default:dirt', + drop = "default:dirt", sounds = default.node_sound_dirt_defaults({ footstep = {name = "default_grass_footstep", gain = 0.25}, }), @@ -449,7 +449,7 @@ minetest.register_node("default:dirt_with_grass_footsteps", { {name = "default_dirt.png^default_grass_side.png", tileable_vertical = false}}, groups = {crumbly = 3, soil = 1, not_in_creative_inventory = 1}, - drop = 'default:dirt', + drop = "default:dirt", sounds = default.node_sound_dirt_defaults({ footstep = {name = "default_grass_footstep", gain = 0.25}, }), @@ -462,7 +462,7 @@ minetest.register_node("default:dirt_with_dry_grass", { {name = "default_dirt.png^default_dry_grass_side.png", tileable_vertical = false}}, groups = {crumbly = 3, soil = 1}, - drop = 'default:dirt', + drop = "default:dirt", sounds = default.node_sound_dirt_defaults({ footstep = {name = "default_grass_footstep", gain = 0.4}, }), @@ -474,7 +474,7 @@ minetest.register_node("default:dirt_with_snow", { {name = "default_dirt.png^default_snow_side.png", tileable_vertical = false}}, groups = {crumbly = 3, soil = 1, spreading_dirt_type = 1, snowy = 1}, - drop = 'default:dirt', + drop = "default:dirt", sounds = default.node_sound_dirt_defaults({ footstep = {name = "default_snow_footstep", gain = 0.2}, }), @@ -586,8 +586,8 @@ minetest.register_node("default:gravel", { drop = { max_items = 1, items = { - {items = {'default:flint'}, rarity = 16}, - {items = {'default:gravel'}} + {items = {"default:flint"}, rarity = 16}, + {items = {"default:gravel"}} } } }) @@ -596,7 +596,7 @@ minetest.register_node("default:clay", { description = "Clay", tiles = {"default_clay.png"}, groups = {crumbly = 3}, - drop = 'default:clay_lump 4', + drop = "default:clay_lump 4", sounds = default.node_sound_dirt_defaults(), }) @@ -743,13 +743,13 @@ minetest.register_node("default:leaves", { items = { { -- player will get sapling with 1/20 chance - items = {'default:sapling'}, + items = {"default:sapling"}, rarity = 20, }, { -- player will get leaves only if he get no saplings, -- this is because max_items is 1 - items = {'default:leaves'}, + items = {"default:leaves"}, } } }, @@ -845,8 +845,8 @@ minetest.register_node("default:jungleleaves", { drop = { max_items = 1, items = { - {items = {'default:junglesapling'}, rarity = 20}, - {items = {'default:jungleleaves'}} + {items = {"default:junglesapling"}, rarity = 20}, + {items = {"default:jungleleaves"}} } }, sounds = default.node_sound_leaves_defaults(), @@ -1170,7 +1170,7 @@ minetest.register_node("default:stone_with_coal", { description = "Coal Ore", tiles = {"default_stone.png^default_mineral_coal.png"}, groups = {cracky = 3}, - drop = 'default:coal_lump', + drop = "default:coal_lump", sounds = default.node_sound_stone_defaults(), }) @@ -1187,7 +1187,7 @@ minetest.register_node("default:stone_with_iron", { description = "Iron Ore", tiles = {"default_stone.png^default_mineral_iron.png"}, groups = {cracky = 2}, - drop = 'default:iron_lump', + drop = "default:iron_lump", sounds = default.node_sound_stone_defaults(), }) @@ -1204,7 +1204,7 @@ minetest.register_node("default:stone_with_copper", { description = "Copper Ore", tiles = {"default_stone.png^default_mineral_copper.png"}, groups = {cracky = 2}, - drop = 'default:copper_lump', + drop = "default:copper_lump", sounds = default.node_sound_stone_defaults(), }) From 7f830124f7877d7c92d611c8f771637eba40a4d8 Mon Sep 17 00:00:00 2001 From: TumeniNodes Date: Wed, 31 Jul 2019 21:40:39 -0400 Subject: [PATCH 43/81] Various mods: Use " " instead of ' ' for item names --- mods/bucket/init.lua | 6 +++--- mods/doors/init.lua | 14 +++++++------- mods/dye/init.lua | 4 ++-- mods/farming/nodes.lua | 8 ++++---- mods/stairs/init.lua | 26 +++++++++++++------------- mods/walls/init.lua | 2 +- 6 files changed, 30 insertions(+), 30 deletions(-) diff --git a/mods/bucket/init.lua b/mods/bucket/init.lua index e0219142..ab3ee71f 100644 --- a/mods/bucket/init.lua +++ b/mods/bucket/init.lua @@ -6,10 +6,10 @@ minetest.register_alias("bucket_water", "bucket:bucket_water") minetest.register_alias("bucket_lava", "bucket:bucket_lava") minetest.register_craft({ - output = 'bucket:bucket_empty 1', + output = "bucket:bucket_empty 1", recipe = { - {'default:steel_ingot', '', 'default:steel_ingot'}, - {'', 'default:steel_ingot', ''}, + {"default:steel_ingot", "", "default:steel_ingot"}, + {"", "default:steel_ingot", ""}, } }) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index dff65c7f..9a5c9b43 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -701,19 +701,19 @@ doors.register_trapdoor("doors:trapdoor_steel", { }) minetest.register_craft({ - output = 'doors:trapdoor 2', + output = "doors:trapdoor 2", recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'group:wood', 'group:wood', 'group:wood'}, - {'', '', ''}, + {"group:wood", "group:wood", "group:wood"}, + {"group:wood", "group:wood", "group:wood"}, + {"", "", ""}, } }) minetest.register_craft({ - output = 'doors:trapdoor_steel', + output = "doors:trapdoor_steel", recipe = { - {'default:steel_ingot', 'default:steel_ingot'}, - {'default:steel_ingot', 'default:steel_ingot'}, + {"default:steel_ingot", "default:steel_ingot"}, + {"default:steel_ingot", "default:steel_ingot"}, } }) diff --git a/mods/dye/init.lua b/mods/dye/init.lua index 42f59cf9..ed9da085 100644 --- a/mods/dye/init.lua +++ b/mods/dye/init.lua @@ -94,7 +94,7 @@ local dye_recipes = { for _, mix in pairs(dye_recipes) do minetest.register_craft({ type = "shapeless", - output = 'dye:' .. mix[3] .. ' 2', - recipe = {'dye:' .. mix[1], 'dye:' .. mix[2]}, + output = "dye:" .. mix[3] .. " 2", + recipe = {"dye:" .. mix[1], "dye:" .. mix[2]}, }) end diff --git a/mods/farming/nodes.lua b/mods/farming/nodes.lua index bcd627fb..8e33966e 100644 --- a/mods/farming/nodes.lua +++ b/mods/farming/nodes.lua @@ -217,8 +217,8 @@ for i = 1, 5 do minetest.override_item("default:grass_"..i, {drop = { max_items = 1, items = { - {items = {'farming:seed_wheat'},rarity = 5}, - {items = {'default:grass_1'}}, + {items = {"farming:seed_wheat"},rarity = 5}, + {items = {"default:grass_1"}}, } }}) end @@ -226,7 +226,7 @@ end minetest.override_item("default:junglegrass", {drop = { max_items = 1, items = { - {items = {'farming:seed_cotton'},rarity = 8}, - {items = {'default:junglegrass'}}, + {items = {"farming:seed_cotton"},rarity = 8}, + {items = {"default:junglegrass"}}, } }}) diff --git a/mods/stairs/init.lua b/mods/stairs/init.lua index e9f6dc16..4b80794a 100644 --- a/mods/stairs/init.lua +++ b/mods/stairs/init.lua @@ -109,7 +109,7 @@ function stairs.register_stair(subname, recipeitem, groups, images, description, if recipeitem then -- Recipe matches appearence in inventory minetest.register_craft({ - output = 'stairs:stair_' .. subname .. ' 8', + output = "stairs:stair_" .. subname .. " 8", recipe = { {"", "", recipeitem}, {"", recipeitem, recipeitem}, @@ -119,10 +119,10 @@ function stairs.register_stair(subname, recipeitem, groups, images, description, -- Use stairs to craft full blocks again (1:1) minetest.register_craft({ - output = recipeitem .. ' 3', + output = recipeitem .. " 3", recipe = { - {'stairs:stair_' .. subname, 'stairs:stair_' .. subname}, - {'stairs:stair_' .. subname, 'stairs:stair_' .. subname}, + {"stairs:stair_" .. subname, "stairs:stair_" .. subname}, + {"stairs:stair_" .. subname, "stairs:stair_" .. subname}, }, }) @@ -135,7 +135,7 @@ function stairs.register_stair(subname, recipeitem, groups, images, description, if baseburntime > 0 then minetest.register_craft({ type = "fuel", - recipe = 'stairs:stair_' .. subname, + recipe = "stairs:stair_" .. subname, burntime = math.floor(baseburntime * 0.75), }) end @@ -224,7 +224,7 @@ function stairs.register_slab(subname, recipeitem, groups, images, description, if recipeitem then minetest.register_craft({ - output = 'stairs:slab_' .. subname .. ' 6', + output = "stairs:slab_" .. subname .. " 6", recipe = { {recipeitem, recipeitem, recipeitem}, }, @@ -234,8 +234,8 @@ function stairs.register_slab(subname, recipeitem, groups, images, description, minetest.register_craft({ output = recipeitem, recipe = { - {'stairs:slab_' .. subname}, - {'stairs:slab_' .. subname}, + {"stairs:slab_" .. subname}, + {"stairs:slab_" .. subname}, }, }) @@ -248,7 +248,7 @@ function stairs.register_slab(subname, recipeitem, groups, images, description, if baseburntime > 0 then minetest.register_craft({ type = "fuel", - recipe = 'stairs:slab_' .. subname, + recipe = "stairs:slab_" .. subname, burntime = math.floor(baseburntime * 0.5), }) end @@ -335,7 +335,7 @@ function stairs.register_stair_inner(subname, recipeitem, groups, images, if recipeitem then minetest.register_craft({ - output = 'stairs:stair_inner_' .. subname .. ' 7', + output = "stairs:stair_inner_" .. subname .. " 7", recipe = { {"", recipeitem, ""}, {recipeitem, "", recipeitem}, @@ -352,7 +352,7 @@ function stairs.register_stair_inner(subname, recipeitem, groups, images, if baseburntime > 0 then minetest.register_craft({ type = "fuel", - recipe = 'stairs:stair_inner_' .. subname, + recipe = "stairs:stair_inner_" .. subname, burntime = math.floor(baseburntime * 0.875), }) end @@ -415,7 +415,7 @@ function stairs.register_stair_outer(subname, recipeitem, groups, images, if recipeitem then minetest.register_craft({ - output = 'stairs:stair_outer_' .. subname .. ' 6', + output = "stairs:stair_outer_" .. subname .. " 6", recipe = { {"", recipeitem, ""}, {recipeitem, recipeitem, recipeitem}, @@ -431,7 +431,7 @@ function stairs.register_stair_outer(subname, recipeitem, groups, images, if baseburntime > 0 then minetest.register_craft({ type = "fuel", - recipe = 'stairs:stair_outer_' .. subname, + recipe = "stairs:stair_outer_" .. subname, burntime = math.floor(baseburntime * 0.625), }) end diff --git a/mods/walls/init.lua b/mods/walls/init.lua index 91a89cf1..a14cc7f2 100644 --- a/mods/walls/init.lua +++ b/mods/walls/init.lua @@ -31,7 +31,7 @@ walls.register = function(wall_name, wall_desc, wall_texture_table, wall_mat, wa minetest.register_craft({ output = wall_name .. " 6", recipe = { - { '', '', '' }, + { "", "", "" }, { wall_mat, wall_mat, wall_mat}, { wall_mat, wall_mat, wall_mat}, } From a2254bd0afbec6d81821bd12a5676a8f8c01b957 Mon Sep 17 00:00:00 2001 From: HybridDog Date: Tue, 30 Jul 2019 11:19:22 +0200 Subject: [PATCH 44/81] Warn when a mod registers a stairs node with an existing name --- mods/stairs/init.lua | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/mods/stairs/init.lua b/mods/stairs/init.lua index 4b80794a..8f9c316b 100644 --- a/mods/stairs/init.lua +++ b/mods/stairs/init.lua @@ -44,6 +44,12 @@ local function rotate_and_place(itemstack, placer, pointed_thing) return minetest.item_place(itemstack, placer, pointed_thing, param2) end +local function warn_if_exists(nodename) + if minetest.registered_nodes[nodename] then + minetest.log("warning", "Overwriting stairs node: " .. nodename) + end +end + -- Register stair -- Node will be called stairs:stair_ @@ -73,6 +79,7 @@ function stairs.register_stair(subname, recipeitem, groups, images, description, end local new_groups = table.copy(groups) new_groups.stair = 1 + warn_if_exists("stairs:stair_" .. subname) minetest.register_node(":stairs:stair_" .. subname, { description = description, drawtype = "nodebox", @@ -167,6 +174,7 @@ function stairs.register_slab(subname, recipeitem, groups, images, description, end local new_groups = table.copy(groups) new_groups.slab = 1 + warn_if_exists("stairs:slab_" .. subname) minetest.register_node(":stairs:slab_" .. subname, { description = description, drawtype = "nodebox", @@ -307,6 +315,7 @@ function stairs.register_stair_inner(subname, recipeitem, groups, images, end local new_groups = table.copy(groups) new_groups.stair = 1 + warn_if_exists("stairs:stair_inner_" .. subname) minetest.register_node(":stairs:stair_inner_" .. subname, { description = "Inner " .. description, drawtype = "nodebox", @@ -388,6 +397,7 @@ function stairs.register_stair_outer(subname, recipeitem, groups, images, end local new_groups = table.copy(groups) new_groups.stair = 1 + warn_if_exists("stairs:stair_outer_" .. subname) minetest.register_node(":stairs:stair_outer_" .. subname, { description = "Outer " .. description, drawtype = "nodebox", From 2063fcd07556fdb979ed355600e9baf2b3fe6bc7 Mon Sep 17 00:00:00 2001 From: Paramat Date: Sat, 3 Aug 2019 20:51:58 +0100 Subject: [PATCH 45/81] Make the creative mod hand dig 'dig_immediate' nodes fast Engine change now makes this possible. --- mods/creative/init.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mods/creative/init.lua b/mods/creative/init.lua index 0f8d4dba..d1878f6a 100644 --- a/mods/creative/init.lua +++ b/mods/creative/init.lua @@ -54,6 +54,9 @@ if creative_mode_cache then snappy = caps, choppy = caps, oddly_breakable_by_hand = caps, + -- dig_immediate group doesn't use value 1. Value 3 is instant dig + dig_immediate = + {times = {[2] = digtime, [3] = 0}, uses = 0, maxlevel = 256}, }, damage_groups = {fleshy = 10}, } From e5ebb36cd5184d7faf3a9b91901d9d54b73e147e Mon Sep 17 00:00:00 2001 From: Paul Ouellette Date: Sun, 11 Aug 2019 10:28:02 -0400 Subject: [PATCH 46/81] Furnace: Fix "output full" infotext --- mods/default/furnace.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mods/default/furnace.lua b/mods/default/furnace.lua index a06f3b23..e045080a 100644 --- a/mods/default/furnace.lua +++ b/mods/default/furnace.lua @@ -107,6 +107,7 @@ local function furnace_node_timer(pos, elapsed) local inv = meta:get_inventory() local srclist, fuellist + local dst_full = false local cookable, cooked local fuel @@ -146,6 +147,8 @@ local function furnace_node_timer(pos, elapsed) inv:set_stack("src", 1, aftercooked.items[1]) src_time = src_time - cooked.time update = true + else + dst_full = true end else -- Item could not be cooked: probably missing fuel @@ -195,7 +198,7 @@ local function furnace_node_timer(pos, elapsed) local item_percent = 0 if cookable then item_percent = math.floor(src_time / cooked.time * 100) - if item_percent > 100 then + if dst_full then item_state = "100% (output full)" else item_state = item_percent .. "%" From 4eadf806349e9acfc817db8cdcdc85bc879c1558 Mon Sep 17 00:00:00 2001 From: Paramat Date: Tue, 13 Aug 2019 21:57:32 +0100 Subject: [PATCH 47/81] Sfinv: Add and use a crafting arrow texture instead of using furnace arrow --- mods/sfinv/README.txt | 5 +++ mods/sfinv/init.lua | 2 +- mods/sfinv/license.txt | 35 +++++++++++++++++++ mods/sfinv/textures/sfinv_crafting_arrow.png | Bin 0 -> 469 bytes 4 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 mods/sfinv/textures/sfinv_crafting_arrow.png diff --git a/mods/sfinv/README.txt b/mods/sfinv/README.txt index a7ac794f..a69e3c32 100644 --- a/mods/sfinv/README.txt +++ b/mods/sfinv/README.txt @@ -11,3 +11,8 @@ https://forum.minetest.net/viewtopic.php?t=19765 Authors of source code ---------------------- rubenwardy (MIT) + +Authors of media +---------------- +paramat (CC BY-SA 3.0): + sfinv_crafting_arrow.png - derived from a texture by BlockMen (CC BY-SA 3.0) diff --git a/mods/sfinv/init.lua b/mods/sfinv/init.lua index 2d7172bf..056047f3 100644 --- a/mods/sfinv/init.lua +++ b/mods/sfinv/init.lua @@ -6,7 +6,7 @@ sfinv.register_page("sfinv:crafting", { return sfinv.make_formspec(player, context, [[ list[current_player;craft;1.75,0.5;3,3;] list[current_player;craftpreview;5.75,1.5;1,1;] - image[4.75,1.5;1,1;gui_furnace_arrow_bg.png^[transformR270] + image[4.75,1.5;1,1;sfinv_crafting_arrow.png] listring[current_player;main] listring[current_player;craft] ]], true) diff --git a/mods/sfinv/license.txt b/mods/sfinv/license.txt index e27dc85f..6676d74e 100644 --- a/mods/sfinv/license.txt +++ b/mods/sfinv/license.txt @@ -22,3 +22,38 @@ DEALINGS IN THE SOFTWARE. For more details: https://opensource.org/licenses/MIT + + +License of media +---------------- + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +Copyright (C) 2019 paramat + +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/sfinv/textures/sfinv_crafting_arrow.png b/mods/sfinv/textures/sfinv_crafting_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..df1bbdb4be285ca651ec29982267e61da0cc639c GIT binary patch literal 469 zcmeAS@N?(olHy`uVBq!ia0vp^DIm+Rjsxy=p?Y!B@P zQ)k#YDSmOb*K2WFFd;@PlV7onFVgKzPfO0v4NUb4a);CmjS*mXxxB63mrXkTum1YY z+J4?I{D|SnDJiQ8S$3{-XPlX-v9~E9u!_xb(HFiZXF--WB@P}}0f{aJ0};mrjiv(u zER72}n249KzvmUjCUN>ed5+ho(76AbZBNd6GBc(2`L?SMpM2hUktcp9TR-piDao$& zokn{$o{V%B`L4L37HVDd{fns@)uuaJ1B92<9^ZL#R*G;-V`0@I4Gs=x0f}Sz?vckC z%Iz*?macv0e|_^ghizFKtj$6VBzl(Ix96L2`s7WYLk03ohXq*L6ghZ+I@%NrcpMWX znhqGSG$wM8CQ-$HFj3|2zl7!cLd#TbQ=c=@kj+`MMFuE8# MUHx3vIVCg!0F!X3YybcN literal 0 HcmV?d00001 From fac8f390b165da971b9b6c1b8d29088bb59c38bc Mon Sep 17 00:00:00 2001 From: Paramat Date: Sun, 18 Aug 2019 19:47:06 +0100 Subject: [PATCH 48/81] TNT: Remove unusable sounds, use temporary placeholders --- mods/tnt/sounds/tnt_explode.ogg | Bin 12808 -> 4915 bytes mods/tnt/sounds/tnt_ignite.ogg | Bin 29271 -> 7258 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/tnt/sounds/tnt_explode.ogg b/mods/tnt/sounds/tnt_explode.ogg index a414ea046bf76298f6f1406d574f15741c515248..1748bc56a3a3a32235652cda3f5e31958d0b29e4 100644 GIT binary patch delta 1091 zcmV-J1ibr*WV0q3PiJRS00IC200000000hf77zdc006_n&47^_E+r0d77zgd003r4 zZ(R^w|NsC0|NsC0|NsC0|NqGYc5iZGX>%=+Z5lc;FflPOF(4>YV`yP@W@T=5XJ=(} zDFFZg02}}S07XtiPeeshJwaq|Vr3{&DIh_0WNCD1Z*C}3DY22k4u1r?4*&oF0000E za25~(0000BQUihrCoLPbx6R8S`~mySQmyYcK#i3-Prw++Uz_QHXyXAl1ya$S+|qD9 zIMy^ncrbGT z6pO!Zp5Nx#1=H*(fqw!Zzp;Q&#Y%tQN7(}a`Wfx~e~D0J&zVRmI=}QXog+JkA?-_) z1d@uCcqEg|0B-LMa|KOF>{e4tx0ts+_1nLC)ayu5YQ?LXIXRVx8$Tfi^8 zTUc2YXSdUWtDDz zyQE85UVkF7td-uXs`&cvx^8{aRy>Y-N-01SXP9Mf=H7eO=VJF(HCNS*fm|78vrAhr zcj2U6pq{hYl&kp7L|1Mt_!`CNgLRFAV;ac>06u5@igS7if{{3uFgKov@iqa{BvxBd zu!#)(nEA?*2v!UI|5tJ;b8f$-y*)ekTAXyUHGj@bYoj%h#?wn?S}p)p$mcCLWCKWL zro|?Y&TkFV>exe9Rf!^6_1+v4c=BQ+OjHJ%a<(pbL7x7{PDj+PyV|EKCaqSlK5Gc0 z+rN5B(#GlO{V^m3OFPb{D_E@W=;hkPneuCZ2tVW`@IbN0(^z)H(2w1w1xeyY7(wGG zU^shoNTEwAmm4iaKfku?J|E|Ca$fenK?2@o{O>GZN&p9#GXVeq0001dZS&QyTX~t& JtDwzG(gyRY3&Q{a delta 9046 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 A$p8QV diff --git a/mods/tnt/sounds/tnt_ignite.ogg b/mods/tnt/sounds/tnt_ignite.ogg index 199f20674da82970f6c33acece6f9fc9595f4253..3686fcddb5f3caf1ff812943126794cb1c33ceb5 100644 GIT binary patch delta 6441 zcmai1dpy(M|9=lLm$VoWX=2!1YOYN;lw_kABa<+px!-lu$R#1UjL_U|Wf>7d=)#s; zk~E@{2@Gut#m(@Wga#Dc&jwkct)eP&rDpq zwjXDOdFkL$*&^(6A+#4eMgOM~U3UZlF2+n){uIm%3Tmbj5>d>Y5Kz}&#}Gg?=qO;3 z4!5j^cULPueXe@!tCp>_!E-%xJ9}#)_=USTMtBZJgbzkUIpxGVH$*u##5)hgyDZ1M z%O(6%engEf^UJ#P2nbN5g3TUBmF(DB@*Z0v7?)5X0G#3n1)(mQu>+M+YRUBSsifSf zKYhF2zq>}OyGCMt3;+Sg@V}x=Qvqpeo|jX$=l@?!PIsUI6EJ>Hf)$?xtC|y3pM+?M ztVgv205{Tvpv4K%w+PjL61o>G7GZ}vX;x3aS#A1P;Q4zE045kkPOxGp7yyFyix30H zQ0TtFQ0qa^{mg|8TQh{AcXe0`P%#yjkAo$Jq?rZmI}XK6s%|L83KzG_#odJI zNnkhb2um|n-`9|VZIf7hN6?TtWEFcAX_SiC_?UUZa$+|W+!i6g7676#9hi2xkY3Bq zqC>qH(R^A5R-KXAZ;8^*meWHanNl9(^wNII&N7-DJ}JLU%Hs+f0I1P`2)JkB#eHcq z5ED26kR=FWsCXKo7d4qi=)z1W5^&g?bh}c0XY-?hj|1*8hSN6m=vc#A5o+Gjs9katn^{k!1E)PV*2eYGG zdHyar|LC%Yuj?`-4%Qpkh7oOvo=)~erwC7{WuhZ53J;=o)~{rU#CqbZ@BYN>sIf4j zi=*eOWulYpMd!izv8AXnIVxZE;LC6jcISDz-wPkrpyW|}N^Y_8G+3;1R=q!~lI>hF z%_?Da)p)ZiE4pf`Zddxvf@tL}R*e>mrFFZeVwI&eTYrny#O|uObEES1Z2i1=o7QYo z5UaBCcFi0gZDP-IgJ+v|U0|ZRnYU+}%A1-3W}AY0sP+DerL37&bob*sT{ZKwO*?DD zm2HXPZ)h&#j-V(0u8{@K%kee-dmgY?yFd;7Kd{dN6&t~6cLNka8Fx|hfcx%LhIbyg zR2KUN>-KC-fM#38teGt_$|cKl)X2qYOTeg6s`KF064p!;y1NxLgn7*kRJ^}S(SY6GllQhFI%HVjMwnGm{=hA-DBjsgM zc9!LJpe{z4EFOochdT#gc#7bRGAU=P~ zl|ksCXYy6Wrs6D7^%*#;Vj7i)!&S!yyKz6fCWu4C=}tq<~YL{Ti9sJ|K`sNUob4 z4)rrw8X#5hjo|Beq|j@P-yHzpVYDD%5-sXk)R&e8@K3L4BB9rk0t@NEqD9Smuie$**(b^mbUlgiNmg);WY(?wGSJ?Ur2O_r7NfbB)o@Oor zynuw|8FI0Ga%FH2*basqxHSy82N+(tP)ReiyhpF81}e@5hepN2aF$30_z;UJf)9^h zAMLmzxT3%JiJJsj0+WCUv)4s$j&(p;tK|Xk~ z+jB^o05AuxXm0&NK>}$afQeiwXc+4aBllpZ74^Y8QZY^v&85dmnn7j2bwHKldaz&x zGXnweWh#yZD+aBf4-jx45ugmk2;&1Zf*1gxgTQ5 zb{NG)&@u?1J_fJNV z^SAr&1cUnDxyFC8j{n-`|k=cc_1bNtcfT%SnNh^71!c>36lf>xwaf|$->*> z5>V4+ao`RWAH-obkRVe~D3C(n!KRULxuFCC8p+6}^6!uV5>6XbE`nt62tJ@0V<@9` zfNyKa^azTnDK6RL-LUJVzv7aK*mbs5%}wr4HNz z@TTCAlMQ$zao}A*5Dq-AGME^ct;d_n&tnMSeiZR3qkISlQj1R% ztLg{w;$UPyOW=$f~Ko<7hT!>->TigEG`MkZBt0EhN|yWzawwW1W$4QecY) zYW^#uNr5&%lnM$7d|ral;UnvWU2lmh^CPxCTKVr}zAlibg8U0vWm>hgYloly*keJP z(;YYYQoO(&<=9?SQ@ zVcIHa4pf{*`lbGmin@p%Fat(Ffn6|Vy%-Y+T&@GO6eolNitaq@!<-Nj`XHq%CL#7D zF0`K_2*BbxB+?U)OGrtxVoJ!y!0{7q9U{>ZSFhG4i%;u5+~D#$91({QQcmPR;AzpZ z(gA1QZ#>rUNYvPzA^A69hX6_dkg<`9*s&uIn<{y2QyMINbB0u=G;KY5dIyQ#1VpQD zNK8!hN-b?07gRlTDz2>kgAj5Z=2uYY-$aX_;z6P78NJXe%wL$F(ev#zE0C<@^$g~w z=SP2Nq73!sKYf{96VlVu|E`HPG^~}!Q#Wf%6>S=E6wM;9e$5)YJj|W0T7bUhe1%l^ zGVfWW0t43A&8bRl!i$;x4}AhlAQi}N!DkT(3)yOqe6Io%L*wa@6kaTc*P(DKFH~Uu zlk_Lu+Z?2TA%o=b+uadfXBV@AFtn-DWnD8IR1|G6KFqL*J@5#*gUQAun`$0XSmjS}D$ez3I>94U$k7*rWk-x4q8qBqFHoxwinjW}FP zQ3Xz3Rx}ejKHdN@XD@86eBnMPU|Y#b%9A-2dA>1nY+>mkvG9-g*FOhy_Rz(smzU=5 zD$KU|NaC+5gzOJvO8Yw-mLdqB7G72S86d``_N2DAEDxPi-4Gg2iVSr6D#X3L-$AnXF$U?E@H->hsIjUEe4uo(V)!-efGbNSAF z^%pO@&L+b-5i$p+zqpMC?5~6*j)n?NGT3vyvpGo`~W_j`u3Tu!a-TdR|%2@-mjqu2qaqjHPJrHI=rXd7~=0} zJ)@2(+wkJry|1oULmnMzyC!J3y;9DR?Y|h5eAe&A_wr!On%ekk|JW~=+hNq{Pvip8 zzNg;`1JV`;m%VCR8|K1v7T#7zA5M6V7`{B-a!cZjGW3M;c+#J{Rel1^y)#h{%2-<8 zxu)HZgqk3Cdy*Zxf8W^oE+C!j8BI9;BjBGt%Nq^o``*l7g`L6cQwdRS| zR_gh_rGV>=MnT?Q1`*>+1J~G^)XYlp%=7O(5rvjwPoU`F_-@kkst|FdG3s0*Ng=)q zt$MHKWHVGVsK2r9?ijh}PDS9E;&Ql0tY8Osvw82p=c(oItdZ76n=9w$QeV-1m148z zwoJiIr6jrdqJ24(+~-O=FWP&`URL(HI;u6)KUwT6`or&B+XTvZW4ZZOtGZ`l&p*uV z*ur?xwotp-G_dV!x=Ho7n>I_-=N7M+N*aCMy|;6FAwz&{ha&UrHvuc)Oy%I$h?6&u zcA06o&1J4OvsnE}<&(#QF0|Ia@ZRhBb;Xu)Qd+)kpirT6k#(ji!^JDVy}IQUw6{7Q zv-4Tv3C=d7!0ku3T2*XnSr(}9hntNa41IZ5{9d`y!XBr2{ip*4GCL`QYSbh54;kfX z-P=iJ+TRG$p{tJ=HO?;}3$DBL>jyTi$Oti)E$IF;TLiRy==a_>kqUg}&-0jxYwdFi z-}`kHIJDO}rVpY@oFY!|y{wSAFu&SgHut47T-!F+I&0^*`LGO~(D`A!_t}nb`9BUi zkdNeKXzu&7T`)CAww7_L0X;`O@BvC{*k0bIEOazdyaIJ70N%43dI(wn_|F|PDO^ie zVU_6Ji)JqpOLqjXyb-^>a_hJ{{1?&H)WlO0x}%~hgsf_(^G9!wYDs2)TsmBR>houL z$4?_AhM$*}vB&}U$RAlEh|9(7Mfqr}@WsimPi5|JJR7T(n@5-UOf4$-M%52W9sOiP z)>g|AH9xUK#&Bgq2_iwl|5kDqK(tqU6nK|v$TrNC7QFlu_U+fw)7rYD69-sBT8#WV zcEKm_HX5KqM_FBg(!(NephAb#z<)|>j#eeJ4mRudN)9ALQizthwP-P~OKwAm0X=qi zDI1^l6uC0rwlh%s*!)V+Zff<@)JACW+v_i(mg?6wT8bSWG9q8JZqJiCDP7#;nC>fl z;beo6P4T%aC*NYj7PpL)IxZv!s|-#n#Dhvkfky_c9=P`OYpzuU;G@t{jJd zxJWhBsx|gHHoM!3;Fi0?%%Sv6KS9qO`Y8GB>$Y+{eB`uD`>LbyZ`oQ>8Ro{f>B8?_ z?(|OThNn-0lVmbB!EQL6C_^7lJMM6bD(FO?M*^+)-b+dX=pr|Qd z>NdGhtTNRp_-5&G%-U4%&+jvD8jC%zwT^yuHFL~kZb2%k6skb_e=d#Vd(mnWT;F!lOCM$e91Y$RT_Uup_M>B5jK^f% z+RhW_-&9Rts79^L_L_u&2oLrj_ZwnH)32wU)vO%9VAER$&l$YQ!`w*y;M;M1TYfLW zCdB-)iJUe<|$j8Rf+0~QR^?=0zceOUtr(Ih^)9foQ%tWept+=;Xo>pLu za$;vX4_}dhDC<$kF^8i}Zy&yREvPUtDiBY67}rn;d#tm!+wHE7>@(%vXZpt`n@A-G zkgmUGTFwSy2Pa$-(YyC*X&QJQyo!C`WB2?(lUu~M9^Z^n9T_nm^$7DfO8_u@(v6i& zkKZ7w%3NmU%npj1etVn!CC8yEOOuWEPw8qs%_|9=sTzLCE06O2`87K#l6oGWyio5| znCs)pU<~Xz6J|t)r=;m&xVaC=FLEw67SY7AT;)E}9I~DEGTjVRHpXZ;*{uz!9X^rR z!cWT6FB{_8cAN>xWG~M_Ue2r>rS`%UK1KG_TA?+qGz)#x>ua=%5qX z_k3A*g9npbOLvS*L3a{si+SkJ2}_Y_2@PyLHI?+^K!`=rb3?> z87~Yp7d$A;@5J_qv_UdYy3VLy89mK0LoR$Ytz1wURBbzZPM-C$u($f;P?+!6)0)pu zQ$Bn!EX=-Eq&*a)FU(naCzpa3EzogOG(8`YgT8^Y- z?UE*`o_znS?a@-;r20?1C3MnqxHdp3fZ{yy=D##Pnf3S z=4WnUw%?E}S^9GB(~lFwy9zdwf?EqGim%F@GTfSEkIk6Jz7y7%B5m~H*xop_-!d}x zIxSx=&?TJOu3Z{o6MOqpE0^PcxLaS~pwX?u6Y;W>V#iVDBJJBE5f3|4ZWYTnjiJMS zjQ?&4FG)^rIWgj>wr`*1ypI2gFS03`>C8qKNX14x#Z%pMJk9$YaQI-`el}L)@kk_c zah@^aAoO!@Bkjt_yH?UYS_GsAxsTS243IW;mNo=jX~~~s%ZJ=uEiSHxruOXZd>OWV zxie2`@Uj=Xe*vlf;W5^Bo-Ez04qSMHqxAIzKxy(zFORX>WA0X^<}EHR&g$jOZ_jet d?mZm!am2#U-QoF#?E(@Fp`W+=o@=};^gpjzOltrD literal 29271 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 Date: Mon, 19 Aug 2019 13:24:19 -0400 Subject: [PATCH 49/81] Verify object is player before checking privs (#2448) This prevents a crash when a 'nil' digger is passed by the engine to minetest.node_dig. --- mods/default/functions.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/default/functions.lua b/mods/default/functions.lua index ceeeedc6..0f3cb764 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -573,7 +573,7 @@ minetest.register_abm({ -- function default.can_interact_with_node(player, pos) - if player then + if player and player:is_player() then if minetest.check_player_privs(player, "protection_bypass") then return true end From 72697119116fb3be38b35c97b637afd7d0cb4cbf Mon Sep 17 00:00:00 2001 From: Paul Ouellette Date: Tue, 20 Aug 2019 15:15:28 -0400 Subject: [PATCH 50/81] Furnace: Improve fuel item replacement support The output returned by `get_craft_result` has a replacements table that contains any replacement items that could not be placed in the input (due to the input stack having a count > 1). Put these replacements in the dst list or drop them on the furnace. --- mods/default/furnace.lua | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/mods/default/furnace.lua b/mods/default/furnace.lua index e045080a..cd48923c 100644 --- a/mods/default/furnace.lua +++ b/mods/default/furnace.lua @@ -98,7 +98,7 @@ end local function furnace_node_timer(pos, elapsed) -- - -- Inizialize metadata + -- Initialize metadata -- local meta = minetest.get_meta(pos) local fuel_time = meta:get_float("fuel_time") or 0 @@ -169,6 +169,16 @@ local function furnace_node_timer(pos, elapsed) else -- Take fuel from fuel list inv:set_stack("fuel", 1, afterfuel.items[1]) + -- Put replacements in dst list or drop them on the furnace. + local replacements = fuel.replacements + if replacements[1] then + local leftover = inv:add_item("dst", replacements[1]) + if not leftover:is_empty() then + local above = vector.new(pos.x, pos.y + 1, pos.z) + local drop_pos = minetest.find_node_near(above, 1, {"air"}) or above + minetest.item_drop(replacements[1], nil, drop_pos) + end + end update = true fuel_totaltime = fuel.time + (fuel_totaltime - fuel_time) end From 553b0f9d724fb05a2f4df4aa13a4525f288faf5d Mon Sep 17 00:00:00 2001 From: TumeniNodes Date: Tue, 27 Aug 2019 22:06:23 -0400 Subject: [PATCH 51/81] Add new TNT sounds --- mods/tnt/README.txt | 21 ++++++++++-- mods/tnt/init.lua | 2 +- mods/tnt/license.txt | 38 ++++++++++++++++++++-- mods/tnt/sounds/tnt_explode.ogg | Bin 4915 -> 13580 bytes mods/tnt/sounds/tnt_gunpowder_burning.ogg | Bin 34335 -> 7443 bytes mods/tnt/sounds/tnt_ignite.ogg | Bin 7258 -> 26196 bytes 6 files changed, 56 insertions(+), 5 deletions(-) diff --git a/mods/tnt/README.txt b/mods/tnt/README.txt index 1970804f..df244fe4 100644 --- a/mods/tnt/README.txt +++ b/mods/tnt/README.txt @@ -9,8 +9,8 @@ ShadowNinja (MIT) sofar (sofar@foo-projects.org) (MIT) Various Minetest developers and contributors (MIT) -Authors of media (textures) ---------------------------- +Authors of media +---------------- BlockMen (CC BY-SA 3.0): All textures not mentioned below. @@ -26,6 +26,23 @@ tnt_blast.png paramat (CC BY-SA 3.0) tnt_tnt_stick.png - Derived from a texture by benrob0329. +TumeniNodes (CC0 1.0) +tnt_explode.ogg +renamed, edited, and converted to .ogg from Explosion2.wav +by steveygos93 (CC0 1.0) + + +tnt_ignite.ogg +renamed, edited, and converted to .ogg from sparkler_fuse_nm.wav +by theneedle.tv (CC0 1.0) + + +tnt_gunpowder_burning.ogg +renamed, edited, and converted to .ogg from road flare ignite burns.wav +by frankelmedico (CC0 1.0) + + + Introduction ------------ This mod adds TNT to Minetest. TNT is a tool to help the player diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index 3efc6ec0..0cf3f098 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -396,7 +396,7 @@ function tnt.boom(pos, def) minetest.set_node(pos, {name = "tnt:boom"}) end local sound = def.sound or "tnt_explode" - minetest.sound_play(sound, {pos = pos, gain = 1.5, + minetest.sound_play(sound, {pos = pos, gain = 2.5, max_hear_distance = math.min(def.radius * 20, 128)}) local drops, radius = tnt_explode(pos, def.radius, def.ignore_protection, def.ignore_on_blast, owner, def.explode_center) diff --git a/mods/tnt/license.txt b/mods/tnt/license.txt index 2c57df38..e59ec6ef 100644 --- a/mods/tnt/license.txt +++ b/mods/tnt/license.txt @@ -26,9 +26,10 @@ DEALINGS IN THE SOFTWARE. For more details: https://opensource.org/licenses/MIT +=================================== -Licenses of media (textures) ----------------------------- +Licenses of media +----------------- Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) Copyright (C) 2014-2016 BlockMen @@ -64,3 +65,36 @@ rights may limit how you use the material. For more details: http://creativecommons.org/licenses/by-sa/3.0/ + +==================================================== + +CC0 1.0 Universal (CC0 1.0) Public Domain Dedication +for audio files (found in sounds folder) +TumeniNodes +steveygos93 +theneedle.tv +frankelmedico + +No Copyright + +The person who associated a work with this deed has dedicated the work to the public domain +by waiving all of his or her rights to the work worldwide under copyright law, including all +related and neighboring rights, to the extent allowed by law. + +You can copy, modify, distribute and perform the work, even for commercial purposes, all +without asking permission. See Other Information below. + +In no way are the patent or trademark rights of any person affected by CC0, nor are the +rights that other persons may have in the work or in how the work is used, such as publicity +or privacy rights. + +Unless expressly stated otherwise, the person who associated a work with this deed makes no +warranties about the work, and disclaims liability for all uses of the work, to the fullest +extent permitted by applicable law. + +When using or citing the work, you should not imply endorsement by the author or the affirmer. + +This license is acceptable for Free Cultural Works. +For more Information: +https://creativecommons.org/publicdomain/zero/1.0/ + diff --git a/mods/tnt/sounds/tnt_explode.ogg b/mods/tnt/sounds/tnt_explode.ogg index 1748bc56a3a3a32235652cda3f5e31958d0b29e4..e00a16c1a332404379bc5dfeb74007d6bd3d701d 100644 GIT binary patch literal 13580 zcmd6NcT`l*v*(Z`3zBn?AW3qTAfUhyCC32)VHk!y1j#6%WRRr5Fp`lh8HOk#IcFG2 zlCyy1w1eN@3w!px-Lq%^**<;yc2`$_Zgq84-|CsG4F>B0FaiHc7rE?achy4eCOHfy z3@;aVYY6O)fbp#4?gjt^H~w?4$I!kT`S0m&BnG-=BK{(c z-r!Eowx^_Yl>~qn003!Z7EL5(=(`e3fG_}noyisZiz}8*D!~Rw^_K;`0;B*yn=1wI z14T~-yZR`f`q(oagMbNf1A`M!(9~UK5q(8@hx$~tAT^JUrJd*%4IZ%x4uA!%L1nIX zQmlVd55SsBDx9-=%^wyUVkc$K^JC4!_2I-C(3xj#4GtTWdXx_9lw60yBHitT?9qI1 z7+HuN_dhj6$C?7P=#JJYRS@E)OoQf2t6o!Z5T8WTsH*d&9Qc2rYY$h~fKL1q=-QwZ zn&od%L|p)L)w)B@K3Ow$R-{JPjgHmt*;_eV`3r8Sdk+|68&^DoQOJC?h|mG+A}{}*@mFR5%cwQO6{?0knZuJp=nWZC~I z^ZzyQcmQDd14GXT2DE_#(G`rp+C}>UCcu@bD;{n1Xp8^X9JT+T6$%=``Ogag00^>w z*X2`zi2{@K)ob)MYxLDA4YUpZPf1L3OjHxCSPrz;0otr%zOAyba&WB9leUv4B7`_u zYb;o?KP1cx-J=Xa2xk+y&nqsIhA^R(_5knc*xluBVDnbi6hk0iQvhP+r^ zF!zs7)&pG0)4C-wuvlG{(wrn~zQ|%4 z0bD7Xd;JsaozNNsELLhg(?geM9qyr})lanxX z?;Uc3Cx}MQ;5b0fD{RTbc3~=P!NeIPnKI%TV3q8&WNd396}V)aGIyG6i-t0GnxQc? zp?YU|ma%#gu>9H+MC&}a-jCcT>e|n}>>ZnMvPlh?GqJPuj$NXWZvDMnSX7=~#!FPd zN7%Z%-C1?nQW;&geOZKV@}Sx)wp)&_TE6n->|C@v^tFGTtrhy&;>_3T%FqYh?iJc@ z(W&+Hw|q_T{m8=;LX=w$i`SxjL(6s!L$b9a;e23mj zNLu9%veK!s%n_9h`P+0%%javXEJl^>Y$0<^@(XMwIyu@Az*7hzw7;3_I| zC@Lx~D&jLk_oi(W=0A!=Q}RpGig^0+i)Je!MYWDaMNW-HI~SEs+eow|PDS~T(~BJL zkSqC6NCC7|cgSh$srhIz9Mg(;%@74?cgSlI`Dk#y^!%dUl=ajiH1bvi0{R!(VYUd8 zc8B~pJ)ftq%;~aaySLK0sK^nGynQF6V_(aDZ_(c03H}wM@-eD%zpt|7^6v!i#3%Eu&L7VvZ&+&$%{g|Yzw1K z0-m8wP*2PWh4vG)37*)ZNh6|8W(Edk;+hk+wrCSXZ>d(InlorGn$(=Ab}~tEvZ}RR zLNnLdnw@w~C3{*<1uRe5&aELUcl#e*IAMhbn(zNQ$p6HBwZ*D z06-y$-nXVRxho{^tOX-j9{>nhHb(0++hMlS28cjwwXmpmS2bllA{&BUDKj)Bzp$um zdpqqP%JvpoKYuAmB!60VVNuaGva$@lC`Dzwjg>pw=t|LcZyDcZdl9mX7p>Cm_OIyS z=p{hay8J}%?k)S5?H@|Fk^EQfLPRPUfJOZKfTuX(C9$r$qEyEA-D&_9EI_c}J=PFX z#e1xw@w#fPc}ZmG?RpXYT79WV%O(2iIe_#LS|Li@xp(i}zc1eZwNU-DkGz1(U;Xqni$scEs; z6dX3tP)!9bLr3ATJ|T30j{9i-75w1<7DXii!A#R%rQ3lc#xMWPq%mpp?pQWRb)%)$ z(GPtXcGtvX)xT?ckSczmf!+B@X#C$^bl?QLFa0;z#$`lD+-Q%vbEQyHH7<04?hPfC zzAOIL?h0MCzfJtCq!$3d%Qsknr@_REW4r`dch_ zkrjXlu!wf6Ou)m3X~kdb+q#FR7dL*RLqv3<0-ON=l5)Y};cGm6{DQ)w;*!!b|9)5t z4i5gy^%PwO2mf;%ds_CF1h_kn-7!LV6n?=TvNAHzG0@SoKH}kFW@Kh&PRU|mVNU&& z{vnN?hMtj$iI$m(m6?H_mX3~=j)9q(4oziYWuT>FVP#=rW~OCgp`xRqMJFbv?D+VY z50pewQ&J zy#Fxe9wdx3|B|4Qzy4k{^mT}=$$hG-OK}la;DOmIGZV)CNOCu*@6UmsU38(gIK3CR ziMXzRkO)-lD#{EHTmzfuA9kzvL8roa%I%7(Of*HtjTu zVBoz^60oRWm6awCI{s(bdp7*3NZCi%`wcNBpM0A?zxr7J!L5s}^<>gjnt@#P_0di) zJ6nO_Jw<3>F45(m4e+IBg;lUlwtK*ZR(#{@YI=;Rou`wI4t{Y}`CU~CwVb=DBxL}@ z$KVMasYVR!*m(opfbP#|I@}l5q?Wen}7QVvD`LE9H+dtHP-2`k8y^bH3Ufoa8M+$JR|o_(4W32Au$#ac7Q3;EirOG9*;)jbx*5AEN@nQd^LoW&U)52=2jJ8Gp% za`7ewZJ?h*2@m-)SziSK^UgiGj>todeds=#7;ZRHlz`9LZWL%)d~W?<=C?031ABF) z@`xJ>HM0=U2m?|va=|IJH>6@2Z8}i>-eizu`N!pVskp?E1rA$HHmFv9-l*kop)4Ljh ztCT-{@?UD$e+bm-HCbt%NcogOSDjDv_{vITb4%VEWeW(fDmA(_>c384lta9F9jTen zc=P(phTbG1?0awV8Yd|F!m-IU;py zTVkroM#nw8Ar{}qZxX3vvt9itd^ul%RF z*gu*de=R0J>V`ycPX#2_k~Ie{Hu?<2&UkNItZk3^k^}hG>bZ+7c>nOn^(Aw8#&Jg@o2bFGlq9!1f2KOSa2AoHQP@FVohh7p z;G0hcZ*qL8eGclyQPZ@j89Sq@mduOfXRW`(qW1_FEN-6*#5a_(K6a#YdnC^Ljyhc_ z%=}!M9zLSVyc{h+lD-Un$}9aH7X$T!iFb1jYZBzGmm5w3aCm*|dQtFs9CT?qMY6lf ziqH4;6^NH^Wj#!CpiFK#(M;{=^4h3>vJ86ARv0&|A|a-{?K|QqaX2~q@qOv`oTKsy zj%k-*GUfWDmG|+8`SpdmS!ljf9tVFeF9N1Aw`ODRu5lud@7^h{ z@!XD+21oC^lVmiBrKw^l{K)X3&U+lM-_ps^;KkmXwlO-*4b=SjiCG`xL@Jd*bzZ&G zEOs>7*{;3rJ?-w|l6q49;Nz%1ux@O26yO07R+YCB#N069^kWA%cEruocHKNt-uf1Z z;}1?+yq+Xl{BpFAqt1IYofd8IQFb|_?ZV%N`*OcLzaOyq3|h>j$#Obd z5hQ`_&y+k+*jp$0#Q^@V6h7RZ=_7^${5?6z?f&<1{cT?_Yj?|2zf8{aFf>X@RU1l} zF3dHFJ&^p3;bE&0OdU!WOg}|9c5Dbnm)8cjZJws_Pa@V-PkR;p36&!iKt_LS9C@eU{|JVDCdy5^&%nlPVswq8O zX%rj$*{Nm!??e10tY~OE{|1R)a0e4*wmPTHLKD{Rr__w@mH~BnCn;jIm@=6pinf@o zQ%Rp_fgH7aJUL!Pk`8IV(MCh2z>mkMzGyV8KvwGH{d3k<`*#(BfnWwB2?A)tQmkU6 zIXL2%gmwkG70KbTBEcAFuyztJV#(9MCmLQOh-vGEgxC4p(#GF>h@&A2Kb1Uq7rRqE z-HAWGSKidOSxjye+ z>H|WdWWfS>H5mT*5VARa3V*G-Uy=(PN5)xZ(cqsWgd@alF=Bn#_c}U7tv-h1X0ABz zQ|ddo`&9+dFdO!h*uv~{_^TG6I z%3@NZWZF*ydZq3)xaWc)7;D( zB}2<EA2dX3V41Kinxviz~0+#wD3-sd-clLY|dW$VQcDWq~t<@QkYkU z68q>VB`??+$h%%5xugdsDhOsIk<(&6Eu3ZnUi z-=B_n9fV0ShMXMp^vlf{Q}w1=?@p) z_ffnrRn88{lz~5DqSG;qFm{(U_mvt+`K6LW6_Q{0>#4+4)Cs5L!={UlodS)huf90Q zQ8_;xbJsz_$v@CSm<$BGqzJKaUU8{@pG$OAY#|$tA`_k`-uElV#zF$RN9(!}FTuRe z`G5(}ZfkxyyNFoHQr^_HcgN{XeEvlh=VAmt*o8Ykmgdlz;g6bW9G^R#(%(XDEQnkU z?h%?QgG#lU+1`+wJnq`nJJqiAT>j8wQ1wCqX7z|p&8~$>=l0hvSc(=%O)J9sC>q_MAhjVlz{+;zaZZB)#vlMYbg4}YH1>xMjxxp zvrr%9pKKehBzF|E_`YF7v*gdK>K%u&-6(Q$e4TZDf#~Eh;uf3dqw$;tV`76nHa0Mr zf~Id0-Q50IO~nT~7EY8UL%u5KuLU8lbD*)pc4*pqL%pbDJwazj=AlbA0``59~ zyL-I-fj;5);xfij{#MM@-TZM0_8jl#(}6KAuLWmG_)C?W019M9bN16qdrSNC6?mGaTF_S$7T8=b^{D{YN&9inUOJ-Z5%6}OLT zc*&;^4X+!ia_40S$TgRZVULpl7WM}*8k1Zr*&ej%4u4>uJs(^Qsj17Ef>beiGtGnq zNEjS8Y(^KS<>Oi4JFWtWq2pZ$HvWMvo-x_#`UBLg^*hP%`bNjH{34$M>-4qx$dTr3 zuXV+P!ecn!G+0uP+pF=zL3KZ6L|qB%SQ()T39#e5Q@&(N7Y=o3iwZTZ-{3einHUh~ z-t=`c(j++15ZFep%8IfuoEgP#Zg;QOZ5|=x!TrquL9>(>G#x7vc1v%gvT2kQOqc>~XhLNnkB#-liT#VT}$7mR){O{%g{uOVJp45HL)utYtX z#m|@;ptzobgHjua=6%0=B$|skl`QXO7T z+RHQR%K`wi({Jd<`qZg~!6!t)a=hk>*IQd#;9Gc8mxA1=KTn3=0`B{HdNH6nXG;7@ z<0@M{wj6wF3mD$I4~^rM@w3Qhe9&vES}Ljipd+RrLjS?TR$fIpAGb1w9|JVS1B4$C z(jO}Dt*{naK}vijzruqcDeH~b%~ZH^%bCl2=iS`xJ1c2o=7KaH$$nwHMtvN(ZP}v& z6~z?ch^oc=P&-2Z&5I6PY%qqlO^WSI!(scUvLYY^)59|MIKcisDdox&Y<4H>S5z&d zG4t0Y)OHIbtQd|q%h1aKi?$P}#BO+gJ+V`*h;kKF&)6%WMlWn6#MJR`CDQq zSqr7(DvO36FPV zc}i$I;DXb+@d+FZK&50dfp zWLV34j!RxaMnl3?3QjL=r>?of!n)U5S4ThDW!*R>tD#%HJ&g9(Ui*deh~-LekFc(T&HX3j?KnyZhY?}v>Uw)3k`}nL(^ftqjY6TJlfpcr>&L@ z6B~6yOw-Mh8KZ!-Vb~aZIgB7`9KzrIiA@#-EnpLpvtB$PE-H`y{H*TE~frGjZQRT+8dj6 z3&~BVoJ`aLXX>gwWP18G9Mu5AP3Sh_LiFI1ZR%O4NMofLo@HXptNGXC<~J7b zv;71WnJ8;k(4;&yy}UEEwvHTsa{w`(GpY6F9BzU2AwIsn&@r`Ze{L-{boWRybI#ZJ@z(6yv!F7A zc_*9v(Y%WFz6D6SIr}A3I+OL*{5;WsSx@J{rk=b` zRlsKnFl|3fs?bue^yC}2cXhr<<P^SE>T0A`1gaHZz*;IMk16OQblS} zU2^#Yo~!*W>^X!#?(Nnu`MoKH)5me1KR=O+ncv8jAhtT8ctcP%kBB1sb8pSs1eox0 z?<74YQrA!IaZK;1%4SLBrzsn#uxr~jV>rWrV=wu%I9K+#bb_3)oVX2@+wB=iA`do) ze#Np*%zV$yl7XM0xqD(c`?s`*+nUEi!}^W`*GA5f;Lj0J#^=Yy_6QNB2YRUM4lOXI{B94*=J{l1f8 zUA~MiJY=9^lHpH`OT|kV?DyUcGdJA&$k@nj{* zE9kKBy`g?{S#JnRXey%chCxDnAw_0kU>L_1+$xeNXBj?j*zB7Av;RyY=u93J<3Rg0 z-cy-}c}#;%Xv*o`OFlJ~Z_GmY@Yf}N%$?057D6I+V@wE2l{}Rw(i?9bi)o|v@!7_D zZ@ouUVZRWx7qVyA%e)y9JydcUh&5xU_r@QvmV%y_kKnplKZ(T-&PIP5#NBKne>{6D zQ(6wg0hX&eHoirc9@$ByLlmh@^-iFI8NJ2EV2O+T`7jk9Z*6Tb;pH#2NCUA5)AjPG zl8%SYdl|bl6`N3Y?VX8VH7drBJDvQT25x5R(?2q3sR1_?BiY}tXtp1{L)oT}kbx?y z`g*lB4j1NF$~wQ$XlOes=9@>pv1&XktXIgum196Ovgux;k95dwhB>$_UM3l&b_QjFz$%~B8ofb1rkOspS6$*X?N9AVlHZ4asZhPD|*$8<@``0 zuh;thSSjlzT_dNE5a&&5y=sv%FQUn)BFcgtL=sjZBf;$BTAO|_X6nuMQ1`O=DhwRl zQ$zg`ApojQoqv=cxQDf0X*U3ktfe~e(wxD~qv6*f^&_n(ytle64e)xxuTJZuhl7rD z28`h65Q=NalwAcoFyXfZN}@e&4SaOuSnjjny!5D*c}Kut8LJgcq3JI|yqdbgUmk72 zvktqYj+|8731faF(&y#8_ai_$j;FBvq66`{^2PSSS-9U!s*hr!JnM2NXl})&ZBcs2 z$sa-qG~d-hiRVkIbzNF%>kQg9uS3>&q@9hk{Vu(}_MD0EkKyn6#+mOTV(ulzEgZd{ zYU}gS2k_~c#DiAJGhVvBL##aDXiB(ec}honbq{2fNFZat+G5~O5m!QlML47cIQz$E`bavS~iowJu_h>98I2XbG!fpMODYP0HyT`d!0~pRTPGFBX zmY@7{CTo3*Rdu=4Vi@groS9U~K$Ua9S#h8>yA^Y4B@$K3``wNEHj$k6vtNw!vd?Ed z%>n<9!A7t{?g*??)*A7~k29dnZ@q;(7EOK36|V2PlncjX>FDDsrN!44ARkbh8I0-{ zO+%)S9H_=sMn(J$u>D*uVJ%Y82`}Ni<}cLb&R-2BxVP-Q1k9r{9)*B+ZG@ZS`e{`wGgE|8ODCpFKJkduK(q@$)qXBq~^cyf&S?Tqz$d%Q2d%P81@ zj9^D1NBj6U%rR)(!2Fr4-HHAFLbRx)2BAql|OP*g9M%xf&1q+fXb(C>=0;g z71hkS5V2J0^#13*xR~#+_!_zxD4f7}$6vXn=<=BeX7Y}YH(p_y(y3MM%dHz94th;@ zF97ghqx<>NBt*4kLl;^Op6m&Fye4X5aGK*UVP31-tYcWvI+!zk`imIuXbBnwim{+t zh!`9CR0J{q>G)eG!z&U#KwobqJN|OO{ReYXDSs>r&dVSNChB{yM$P5-oWFdTM)Gps z99fe;-h5jrl{z<-DuVl=P`1T8FIaUbdQtF!%S`hi*fMc^UpUhxH30oBAJFbZTSBFM zY+JkcVto=JG0~qmpYgoTM_V&&!c@r8F>|PK{N3l57G{>z^jd1v^OKQT7%PvBuV3GC zh5-ne8X1cPAb5a%Z>#7~ty&B8*PyuoirB9SpRM*bYFSZkrBrK7y1tlR9NR0+^2=uW@tk!VrM7x=h|+XuKJ04PLpC{6 zkq||z-ab=o&LBHE29Zf6*YFlq=rw*0Is`5A&`CYuKxso`9kIe(i!P~qu!QA3vXWVv z+&$F+^J%3ufL#oXjk2E{F{;bY_fV~+GpA2WH8;)nT=UPz!yXlm6?$uyWhdf07xwb{ zJRik%znD{V89;o0^W`12Wi+M*3e-8NBWy*0cgcefE16EoNKQ`X0P>B^tyTZJ)ZRTs z+^n#bn=rI;TZlL$mNuFfPWFHsXKU-J%7#)&zoZgrNH|EIzHsRkH2L0=%86u@T&peS zIY^rF|E*yZ_i4O)P~%6dM{?Y+13t&bc$cX117Sz>LEr@JN)aX8P&BRRbQ+UUNZvO> zeq_V%>~U7gOzecYLd)4j^8PcDAv3n;xbEIbq2`bGEVy{@PuIjprXJa}3`WE6vAi_l zPGIl+lmfeKO(Ljj)t;Xh_wtib7AcGgev*!qNf0NoDF`h8a2iWi)Xz{Z>iy$#WiQPU zbv@X!j??9r^}|5`)kvqapI7h$G>&}z!dQq>HzR(YtYXE;o4&C<$cuV!|L~V-B&d;@ z;OL#t^Oe_LyDP0h&4l|dw7n`&x5*U1>a!{yI-p{$&4a?p)bLCUc6EhlkPf%P@QM9b z3jx-oER^jqfL*g~xJ(!js%XmTJ@ow)S4C~(XBE?xR{Ai%+0*fqoaaf8sEsHoYl=9D z&5kj_qyq+)1VRYobq64ZUF*)|Q~jem!9vL{bVJqFY8vG-_>^TX)7E?>F(iS~YFSkhP&chbp9TYy&=%&O_B}f{?I0Yp0 z7I$cXCdVA~s@dg#d6C%3g{adNn_TfQFdtMs*YkWJ@}VZ8;^xT9!sm1?rkUDcAbqX4 zTl{)LJgW9I{rog3yl{bW#-Z%dpBV(N!uDz5M`I(h-Hv(zNfpN4@mo)VTu4LyY%~NO8%UwBpR(cXT zC6D*hF9-IGdRb!$;b)}96n`S_V}+6Fs>lL87kBEX$j#V?u40bd3_VC-y1uwxJ)jeh zuO*L2C12;*T2PcvMNohP!;l!$iJ>9V3+tlk&o*ph>(0yE=4WBiQEw|Y4&hmdEnlzY zHpyQi5bqqir!bz+% zt?sU*pG)R?#55-*yrL2FyHO$-BJjXZoktz^i+m{8r^bsITl01qw-D1DVzmqO@_-~# z9Xn)=u6#AXB+@=O#D(Hc3*|mt&mf(M*DGqEZ2hBT`U!xonNxnvO0SyV8b-_1(ssGm z{pMjT4aU{5TqcKlt2L? zA_Oi(@bU_pK&T*~Qd_N<@QxTH;G;!FL50?PtF7AF_S=)#*010F_3m%8?Ah6!*_rvz zoH=YyNr{3MK(CwqUMCzn?Y%rA#w^EV?-6iPh3En%q!s-G+CGf&&pFI?^yKdiJ&971 z!}cWL5`O(ZZNSXL$P3WpQupqDXS*PUl%C3oF|sGoNZxBGYbcZQupw|9AjZ(4hIFtU?42mO$jGy#G|E5 z2m-o%-~!v1C(~estls^@Dp?ph)2u11k`-zQiNzG{Zv)9UX$b_GLt=MpY2yqnO-D^3 zxJdA|e%;W1|SM0)g3kX;)AdH-cXP^V8fSgYN!zV;R zKlx;hz{cZL-C-N=eo}6@_oJrrZ5tk)YLsqx?A|#VWb4(bN5U!NF^O%TTPA!g)KO<^ zUJuqrJxJg#L6*)*xF9Ubz5s5n5&%{vwMdW{s0nR7hNrdThuVoF*Ic%L=Nakfcg-g> zDmsD*nkXSQn>&#$n#j(HugYVe%ZWdi$DYhfc%HY5kpH^B$eDVMcBASf3{CPDH@Eq!}Gj4$}U<=ynQsvG6 zuP4V>a{qe|*xl~|1pr(2WfJ=`T|yZyeF9G_qlNn+;L`wxr$*qrRp{F%{2S<7vqA=B z;Umw&7yaf0)a?)yKp|=}i37kI46iYPU#!r7LKratOo3YDuiGIbUVtLx+T_YKG1jMa zm(eU@z?M*t4Yo5$0vihI?~~-C@~0zId-;PpCI0x>mxa;C-OekkjvGCgu5+FSzJv#> zHFedaa-oi9Cs&weA37YjQY-af&3U%QUhBLI>`T?lt&}(7z}fgw`OK;FcrYuJ9e3+G zA8q3I8Wzg;YII*x?}8JBH;?nqTPJ|o%cPobN37AcKf@;g_-)rDL0fy6lq0p|;K|M8 z^5t1a?aS*Z{czLr66qF1nY)AG?54;%Y}A|tK@yx1#lH{;XyY@!E`fp;SgDdFQyuG4){F%|r*zAn>e~50K%}baRO-Uwf`PDTLmtlgUAULxV#ZLmng(w5KSGP5l>Az`dJwZYFU4UAUTQi zv7;_rkyRS#=6|k?+H3dp4#Ry(NO*3E>pCfE;pOI?v-~+ohJ0womH0o&sO)>(#sJ6)=u}}>TK~~^rTR&R51QURV zAdVfw2F{Z)bnr|mW03NI$UvwkYoc^i>@vw9#j-XR2P=qCI=GK084i34!Iqw@X5~^Oa ziohFLtz}Mh`$c9kBbnUzXl8siH~u*@){sL7)ToFXOPI`V=8f+&n3XwqvzQ67+#AoC z@lFTX6M1)k$hk{EIZup>0CksvyX&lI$~{${n$~biC3jb;l&bCwRhydK@KDvD8th0> zwY3g*eA?2MJ_o36r&JxDDwStTN9#{2&$;eXsvh-V$LZs3Epy#ZYA{XCb3N~NipY^n(O0sB z=~$pg#{2tDu%G93WNf^s{%H^}(7&Kw-9tPNj-BBz1#8-;t2ggjFIA+-!A(`_4CG+2v|%J9<4S87Rs)c`8oDC0qu46v%sEkh7>MHyqbrW|FJD@AB< zcNr26ZiOK2c??!M#ZbdY_XD>AtjdsdFD;85-X+4ZY>l^4cg671)LJ0iRY9O5?Ojeh zK4s=@Bvp+HS8ANtQXo8v=htjVLka8*e}i0zs14T{C4i8a@%gy?z?0uJ=cIXQ4IDKp z+@rms3<#gO$ttGG^c=vdj8P0uu+z^sSEd1ioN=UU=B6;+?}zKGR#XNZydi`~&wn2S zvX0mc3J_a!>(CT}hHYR0Lq|)+35Ka2)Dsv2!@%%fmqir9TkQ(1}fH7;Y9cF z(!}s!7-#`X$~t4%T1FIVFg6S0t)UPQ#aa@`JC@E0LhdM`37?2tp&$UiDDa8EwgjPl zkcV@kF3=s8>_9x=JRCxERe%!M29%l$(nn=+L~tQf9{IqIV@Js+Wkq{?ES7{LZpuTz zqG}Og`E24K~B25-76fI_nRN)>B01kHmB%^UNGD^zL)1rQp6TxtrAGfaI* z^aYubD6#j@*5uj;VV8hwfOpj}6%4o_Kmhe#eJ&UjGCfLQAdg634OV2K1R28yf;{$u zis*D?lJM}cI*>CLKp&zx6QNqw%eKH;lB|pY!~vC*0y|(kO$5iRe%xl>Ske{4uls4@xLOowYayysfo_ zrC3u{zQw`#n3(>$NUt(IzEQLPQN91wjLlO6$h|p00T*qopkJ+)#%x^=zisP@>WH%k zg(m97{CWaw2XyR3mFU#S4Ab7Iiq7k(sL8-ESYcot@d6=-fJaWTUp@nD(M)n$DNT9?h)+UdD+nMK4_uw+1$P-Z z#a+PuAVU~9NBj&dTj&mdFC-2-ota(^y zjF2V34W>0o>F;Z}4YMX_0YJ@~_Q`ex8KH%(2W#*$05W&u%oWV6O$D40j1mV>%EcNQgsO37O-9XS+)Or|MQcF-Q8P3PuYBmzIJhF+_wHr09lQGx zNNfi|nUiUAu%Vx%sgYFDC8Yu!=bgojBI?$5ZkV%%FfOAg@KFrj!x~O;ns@8YH#cJZdz~f4W91uN#Anx?3F_L=xLkH{^Bgc zw>vwe>d6<+Hi_(%$%PhS66LG;)C-?3DXrVTMu@>5xyU~;HFLvaY~KCQ0@B5H@eU30 z_o=Nn%%C5gzj^id!W~IhtHa<87oU08uH5(u`5U^-ysW5Vzf1Wr#DB6-Xc0l1kBOq6 ztvb8u`&$=3x;}r#{}yFnGRmW9X>YHHOFq-Qmbt|~>_`7>YhlH`{NdX* zL#vJwGME>lUh-x}%V5$Mtj+!Fd{YM(1>eg2Buvv`JLD4IRKWh6W;^jdOl_Xph>C->j{ z%=uZ@-HeZae2_F<6cTdp{@&UHU$r|XymJ|Udds`FzN@o(z7CmUZ!B$7cRPH&F=E*% z+UkZPu(hs@t=0 z?D1r9EVFP0>-(>Xj{CpktPGE~lnc7w*&le~m%eRVueW`6^W^GP>X=VA@vw~mg@|7J z=+Vy<7Yq7EUGwU=)+Y}i+`Ll#9Z!tieBb3?0quQbaoN42N55*epxxU-2%L8R;D9i! zp6>CFrCuSMFLuvu`k&cM!FxY^5xC%M?yD!B?<0^^m5=FvT_0yW9siX5Vf9!`-3VQ8 F`M=e90aXA1 diff --git a/mods/tnt/sounds/tnt_gunpowder_burning.ogg b/mods/tnt/sounds/tnt_gunpowder_burning.ogg index 5c5bfaf204db1795ae4e0c1da430fd0b9c777f4a..8581c2d600fa9fac9173561d91080a533edf670f 100644 GIT binary patch literal 7443 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 V+38NfLd4EwiqSafi~lX&{{v}ltsVdX literal 34335 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 DzB1aE literal 7258 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 N@WW2e3-wod{vRheoE`uG From 5c3e4b1d20ca2584b4930cd05989e680425717f9 Mon Sep 17 00:00:00 2001 From: Paramat Date: Wed, 28 Aug 2019 03:19:34 +0100 Subject: [PATCH 52/81] Spawn: Avoid spawning outside small worlds Previously, the value of 'mapgen_limit' was not used to limit the spawn position. If a friendly-biome spawn point is not found within a small world, spawn point falls back to the engine spawn point, which has a larger chance of success. --- mods/spawn/init.lua | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/mods/spawn/init.lua b/mods/spawn/init.lua index 6707932c..7bbec86e 100644 --- a/mods/spawn/init.lua +++ b/mods/spawn/init.lua @@ -56,6 +56,15 @@ local success = false local spawn_pos = {} +-- Get world 'mapgen_limit' and 'chunksize' to calculate 'spawn_limit'. +-- This accounts for how mapchunks are not generated if they or their shell exceed +-- 'mapgen_limit'. + +local mapgen_limit = tonumber(minetest.get_mapgen_setting("mapgen_limit")) +local chunksize = tonumber(minetest.get_mapgen_setting("chunksize")) +local spawn_limit = math.max(mapgen_limit - (chunksize + 1) * 16, 0) + + --Functions ----------- @@ -100,6 +109,10 @@ local function search() end pos = next_pos() + -- Check for position being outside world edge + if math.abs(pos.x) > spawn_limit or math.abs(pos.z) > spawn_limit then + return false + end end return false From e8097c9e87b01771b7d9785d7e68e4a507bce09c Mon Sep 17 00:00:00 2001 From: Paramat Date: Sat, 31 Aug 2019 19:44:17 +0100 Subject: [PATCH 53/81] Creative: Override the hand instead of re-registering Allows the initial hand registration to alter the 'wield_scale' without needing to also alter it in creative mod. Also make default mod a dependency again, as the initial hand registration is required. --- mods/creative/init.lua | 6 ++---- mods/creative/mod.conf | 3 +-- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/mods/creative/init.lua b/mods/creative/init.lua index d1878f6a..7b7903d1 100644 --- a/mods/creative/init.lua +++ b/mods/creative/init.lua @@ -40,10 +40,8 @@ if creative_mode_cache then local digtime = 42 local caps = {times = {digtime, digtime, digtime}, uses = 0, maxlevel = 256} - minetest.register_item(":", { - type = "none", - wield_image = "wieldhand.png", - wield_scale = {x = 1, y = 1, z = 2.5}, + -- Override the hand tool + minetest.override_item("", { range = 10, tool_capabilities = { full_punch_interval = 0.5, diff --git a/mods/creative/mod.conf b/mods/creative/mod.conf index 8f3fcd9f..0b3f745d 100644 --- a/mods/creative/mod.conf +++ b/mods/creative/mod.conf @@ -1,4 +1,3 @@ name = creative description = Minetest Game mod: creative -depends = sfinv -optional_depends = default +depends = default, sfinv From 7e16ec7a2f115e0ebb97d12518d5c63cb0488f9f Mon Sep 17 00:00:00 2001 From: Panquesito7 Date: Thu, 5 Sep 2019 16:39:24 -0500 Subject: [PATCH 54/81] Convert README.txt to Markdown format --- README.md | 34 ++++++++++++++++++++++++++++++++++ README.txt | 28 ---------------------------- 2 files changed, 34 insertions(+), 28 deletions(-) create mode 100644 README.md delete mode 100644 README.txt diff --git a/README.md b/README.md new file mode 100644 index 00000000..d7fcb30c --- /dev/null +++ b/README.md @@ -0,0 +1,34 @@ +# Minetest Game + +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. + +## Installation + +- 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/. + +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 + +## Compatibility + +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. + +When stable releases are made, Minetest Game and the Minetest engine is packaged and made available at + https://minetest.net/downloads/ + +## Licensing + +See `LICENSE.txt` diff --git a/README.txt b/README.txt deleted file mode 100644 index 04f3d43a..00000000 --- a/README.txt +++ /dev/null @@ -1,28 +0,0 @@ -Minetest Game [minetest_game] -============================= -The main game for the Minetest engine -===================================== - -To use this game with the Minetest engine, insert this repository as - /games/minetest_game - -The Minetest engine can be found in: - https://github.com/minetest/minetest/ - -Compatibility --------------- -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 (eg. -0.4.10), Minetest Game is tagged with the version too. - -When stable releases are made, Minetest Game is packaged and made available in - http://minetest.net/downloads/ -and in case the repository has grown too much, it may be reset. In that sense, -this is not a "real" git repository. (Package maintainers please note!) - -Licensing ---------- - -See LICENSE.txt From d99a176b693b7c5bdd9fa9bb2d426499d2128c89 Mon Sep 17 00:00:00 2001 From: mbartlett21 <29034492+mbartlett21@users.noreply.github.com> Date: Sat, 7 Sep 2019 06:39:23 +1000 Subject: [PATCH 55/81] Xpanes: Use 'swap node' instead of 'set node' --- mods/xpanes/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/xpanes/init.lua b/mods/xpanes/init.lua index 653c8cd9..ed68e0af 100644 --- a/mods/xpanes/init.lua +++ b/mods/xpanes/init.lua @@ -27,7 +27,7 @@ local function swap(pos, node, name, param2) return end - minetest.set_node(pos, {name = name, param2 = param2}) + minetest.swap_node(pos, {name = name, param2 = param2}) end local function update_pane(pos) From bb9279ccb843937bc8001ce333e3ccb71b0dba2d Mon Sep 17 00:00:00 2001 From: Yves Quemener Date: Wed, 11 Sep 2019 02:09:51 +0900 Subject: [PATCH 56/81] Add support for MT 5 game translation (rebasing ) (#2466) rebased #2368 --- mods/beds/beds.lua | 9 +- mods/beds/init.lua | 9 +- mods/binoculars/init.lua | 7 +- mods/boats/init.lua | 11 +- mods/bones/init.lua | 23 +-- mods/bucket/init.lua | 12 +- mods/butterflies/init.lua | 15 +- mods/carts/cart_entity.lua | 7 +- mods/carts/init.lua | 5 + mods/carts/rails.lua | 11 +- mods/creative/init.lua | 8 +- mods/creative/inventory.lua | 21 ++- mods/default/chests.lua | 18 +- mods/default/craftitems.lua | 55 +++--- mods/default/furnace.lua | 25 +-- mods/default/init.lua | 4 + mods/default/nodes.lua | 287 +++++++++++++++---------------- mods/default/tools.lua | 53 +++--- mods/default/torch.lua | 7 +- mods/default/trees.lua | 12 +- mods/doors/init.lua | 42 +++-- mods/dye/init.lua | 37 ++-- mods/farming/api.lua | 8 +- mods/farming/hoes.lua | 17 +- mods/farming/init.lua | 17 +- mods/farming/nodes.lua | 19 +- mods/fire/init.lua | 10 +- mods/fireflies/init.lua | 15 +- mods/flowers/init.lua | 27 +-- mods/game_commands/init.lua | 12 +- mods/give_initial_stuff/init.lua | 2 + mods/map/init.lua | 8 +- mods/player_api/init.lua | 2 + mods/screwdriver/init.lua | 8 +- mods/sethome/init.lua | 19 +- mods/sfinv/init.lua | 2 + mods/spawn/init.lua | 2 + mods/stairs/init.lua | 161 ++++++++--------- mods/tnt/init.lua | 12 +- mods/vessels/init.lua | 16 +- mods/walls/init.lua | 12 +- mods/wool/init.lua | 7 +- mods/xpanes/init.lua | 11 +- 43 files changed, 632 insertions(+), 433 deletions(-) diff --git a/mods/beds/beds.lua b/mods/beds/beds.lua index 0bdde9ca..276c05e5 100644 --- a/mods/beds/beds.lua +++ b/mods/beds/beds.lua @@ -1,7 +1,12 @@ +-- beds/beds.lua + +-- support for MT game translation. +local S = beds.get_translator + -- Fancy shaped bed beds.register_bed("beds:fancy_bed", { - description = "Fancy Bed", + description = S("Fancy Bed"), inventory_image = "beds_bed_fancy.png", wield_image = "beds_bed_fancy.png", tiles = { @@ -52,7 +57,7 @@ beds.register_bed("beds:fancy_bed", { -- Simple shaped bed beds.register_bed("beds:bed", { - description = "Simple Bed", + description = S("Simple Bed"), inventory_image = "beds_bed.png", wield_image = "beds_bed.png", tiles = { diff --git a/mods/beds/init.lua b/mods/beds/init.lua index 5a3959cb..869ff0ff 100644 --- a/mods/beds/init.lua +++ b/mods/beds/init.lua @@ -1,13 +1,20 @@ +-- beds/init.lua + +-- Load support for MT game translation. +local S = minetest.get_translator("beds") + + beds = {} beds.player = {} beds.bed_position = {} beds.pos = {} beds.spawn = {} +beds.get_translator = S beds.formspec = "size[8,11;true]" .. "no_prepend[]" .. "bgcolor[#080808BB;true]" .. - "button_exit[2,10;4,0.75;leave;Leave Bed]" + "button_exit[2,10;4,0.75;leave;" .. S("Leave Bed") .. "]" local modpath = minetest.get_modpath("beds") diff --git a/mods/binoculars/init.lua b/mods/binoculars/init.lua index 0b43a061..4a977b8f 100644 --- a/mods/binoculars/init.lua +++ b/mods/binoculars/init.lua @@ -1,7 +1,12 @@ +-- binoculars/init.lua + -- Mod global namespace binoculars = {} +-- Load support for MT game translation. +local S = minetest.get_translator("binoculars") + -- Detect creative mod local creative_mod = minetest.get_modpath("creative") @@ -54,7 +59,7 @@ minetest.after(4.7, cyclic_update) -- Binoculars item minetest.register_craftitem("binoculars:binoculars", { - description = "Binoculars\nUse with 'Zoom' key", + description = S("Binoculars\nUse with 'Zoom' key"), inventory_image = "binoculars_binoculars.png", stack_max = 1, diff --git a/mods/boats/init.lua b/mods/boats/init.lua index 00cf7918..906a0979 100644 --- a/mods/boats/init.lua +++ b/mods/boats/init.lua @@ -1,3 +1,8 @@ +-- boats/init.lua + +-- Load support for MT game translation. +local S = minetest.get_translator("boats") + -- -- Helper functions -- @@ -149,13 +154,13 @@ function boat.on_step(self, dtime) if ctrl.up and ctrl.down then if not self.auto then self.auto = true - minetest.chat_send_player(self.driver, "[boats] Cruise on") + minetest.chat_send_player(self.driver, S("[boats] Cruise on")) end elseif ctrl.down then self.v = self.v - dtime * 1.8 if self.auto then self.auto = false - minetest.chat_send_player(self.driver, "[boats] Cruise off") + minetest.chat_send_player(self.driver, S("[boats] Cruise off")) end elseif ctrl.up or self.auto then self.v = self.v + dtime * 1.8 @@ -242,7 +247,7 @@ minetest.register_entity("boats:boat", boat) minetest.register_craftitem("boats:boat", { - description = "Boat", + description = S("Boat"), inventory_image = "boats_inventory.png", wield_image = "boats_wield.png", wield_scale = {x = 2, y = 2, z = 1}, diff --git a/mods/bones/init.lua b/mods/bones/init.lua index 5fcae411..6e93062d 100644 --- a/mods/bones/init.lua +++ b/mods/bones/init.lua @@ -1,6 +1,11 @@ +-- bones/init.lua + -- Minetest 0.4 mod: bones -- See README.txt for licensing and other information. +-- Load support for MT game translation. +local S = minetest.get_translator("bones") + bones = {} local function is_owner(pos, name) @@ -24,7 +29,7 @@ local share_bones_time = tonumber(minetest.settings:get("share_bones_time")) or local share_bones_time_early = tonumber(minetest.settings:get("share_bones_time_early")) or share_bones_time / 4 minetest.register_node("bones:bones", { - description = "Bones", + description = S("Bones"), tiles = { "bones_top.png^[transform2", "bones_bottom.png", @@ -116,7 +121,7 @@ minetest.register_node("bones:bones", { local meta = minetest.get_meta(pos) local time = meta:get_int("time") + elapsed if time >= share_bones_time then - meta:set_string("infotext", meta:get_string("owner") .. "'s old bones") + meta:set_string("infotext", S("@1's old bones", meta:get_string("owner"))) meta:set_string("owner", "") else meta:set_int("time", time) @@ -194,7 +199,7 @@ minetest.register_on_dieplayer(function(player) minetest.log("action", player_name .. " dies at " .. pos_string .. ". No bones placed") if bones_position_message then - minetest.chat_send_player(player_name, player_name .. " died at " .. pos_string .. ".") + minetest.chat_send_player(player_name, S("@1 died at @2.", player_name, pos_string)) end return end @@ -204,7 +209,7 @@ minetest.register_on_dieplayer(function(player) minetest.log("action", player_name .. " dies at " .. pos_string .. ". No bones placed") if bones_position_message then - minetest.chat_send_player(player_name, player_name .. " died at " .. pos_string .. ".") + minetest.chat_send_player(player_name, S("@1 died at @2.", player_name, pos_string)) end return end @@ -230,8 +235,7 @@ minetest.register_on_dieplayer(function(player) minetest.log("action", player_name .. " dies at " .. pos_string .. ". Inventory dropped") if bones_position_message then - minetest.chat_send_player(player_name, player_name .. " died at " .. pos_string .. - ", and dropped their inventory.") + minetest.chat_send_player(player_name, S("@1 died at @2, and dropped their inventory.", player_name, pos_string)) end return end @@ -242,8 +246,7 @@ minetest.register_on_dieplayer(function(player) minetest.log("action", player_name .. " dies at " .. pos_string .. ". Bones placed") if bones_position_message then - minetest.chat_send_player(player_name, player_name .. " died at " .. pos_string .. - ", and bones were placed.") + minetest.chat_send_player(player_name, S("@1 died at @2, and bones were placed.", player_name, pos_string)) end local meta = minetest.get_meta(pos) @@ -266,7 +269,7 @@ minetest.register_on_dieplayer(function(player) meta:set_string("owner", player_name) if share_bones_time ~= 0 then - meta:set_string("infotext", player_name .. "'s fresh bones") + meta:set_string("infotext", S("@1's fresh bones.", player_name)) if share_bones_time_early == 0 or not minetest.is_protected(pos, player_name) then meta:set_int("time", 0) @@ -276,6 +279,6 @@ minetest.register_on_dieplayer(function(player) minetest.get_node_timer(pos):start(10) else - meta:set_string("infotext", player_name.."'s bones") + meta:set_string("infotext", S("@1's bones.", player_name)) end end) diff --git a/mods/bucket/init.lua b/mods/bucket/init.lua index ab3ee71f..2cf431ca 100644 --- a/mods/bucket/init.lua +++ b/mods/bucket/init.lua @@ -1,6 +1,10 @@ -- Minetest 0.4 mod: bucket -- See README.txt for licensing and other information. +-- Load support for MT game translation. +local S = minetest.get_translator("bucket") + + minetest.register_alias("bucket", "bucket:bucket_empty") minetest.register_alias("bucket_water", "bucket:bucket_water") minetest.register_alias("bucket_lava", "bucket:bucket_lava") @@ -111,7 +115,7 @@ function bucket.register_liquid(source, flowing, itemname, inventory_image, name end minetest.register_craftitem("bucket:bucket_empty", { - description = "Empty Bucket", + description = S("Empty Bucket"), inventory_image = "bucket.png", groups = {tool = 1}, liquids_pointable = true, @@ -185,7 +189,7 @@ bucket.register_liquid( "default:water_flowing", "bucket:bucket_water", "bucket_water.png", - "Water Bucket", + S("Water Bucket"), {tool = 1, water_bucket = 1} ) @@ -200,7 +204,7 @@ bucket.register_liquid( "default:river_water_flowing", "bucket:bucket_river_water", "bucket_river_water.png", - "River Water Bucket", + S("River Water Bucket"), {tool = 1, water_bucket = 1}, true ) @@ -210,7 +214,7 @@ bucket.register_liquid( "default:lava_flowing", "bucket:bucket_lava", "bucket_lava.png", - "Lava Bucket", + S("Lava Bucket"), {tool = 1} ) diff --git a/mods/butterflies/init.lua b/mods/butterflies/init.lua index 008211ee..1263fa6c 100644 --- a/mods/butterflies/init.lua +++ b/mods/butterflies/init.lua @@ -1,8 +1,13 @@ +-- butrerflies/init.lua + +-- Load support for MT game translation. +local S = minetest.get_translator("butterflies") + -- register butterflies local butter_list = { - {"white", "White"}, - {"red", "Red"}, - {"violet", "Violet"} + {"white", S("White")}, + {"red", S("Red")}, + {"violet", S("Violet")} } for i in ipairs (butter_list) do @@ -10,7 +15,7 @@ for i in ipairs (butter_list) do local desc = butter_list[i][2] minetest.register_node("butterflies:butterfly_"..name, { - description = desc.." Butterfly", + description = S("@1 Butterfly", desc), drawtype = "plantlike", tiles = {{ name = "butterflies_butterfly_"..name.."_animated.png", @@ -56,7 +61,7 @@ for i in ipairs (butter_list) do }) minetest.register_node("butterflies:hidden_butterfly_"..name, { - description = "Hidden "..desc.." Butterfly", + description = S("Hidden @1 Butterfly", desc), drawtype = "airlike", inventory_image = "insects_butterfly_"..name..".png", wield_image = "insects_butterfly_"..name..".png", diff --git a/mods/carts/cart_entity.lua b/mods/carts/cart_entity.lua index 855450da..97084ace 100644 --- a/mods/carts/cart_entity.lua +++ b/mods/carts/cart_entity.lua @@ -1,3 +1,8 @@ +-- carts/cart_entity.lua + +-- support for MT game translation. +local S = carts.get_translator + local cart_entity = { initial_properties = { physical = false, -- otherwise going uphill breaks @@ -383,7 +388,7 @@ end minetest.register_entity("carts:cart", cart_entity) minetest.register_craftitem("carts:cart", { - description = "Cart (Sneak+Click to pick up)", + description = S("Cart (Sneak+Click to pick up)"), inventory_image = minetest.inventorycube("carts_cart_top.png", "carts_cart_side.png", "carts_cart_side.png"), wield_image = "carts_cart_side.png", on_place = function(itemstack, placer, pointed_thing) diff --git a/mods/carts/init.lua b/mods/carts/init.lua index fe45303a..a5aa9cb5 100644 --- a/mods/carts/init.lua +++ b/mods/carts/init.lua @@ -1,7 +1,12 @@ +-- carts/init.lua + +-- Load support for MT game translation. +local S = minetest.get_translator("carts") carts = {} carts.modpath = minetest.get_modpath("carts") carts.railparams = {} +carts.get_translator = S -- Maximal speed of the cart in m/s (min = -1) carts.speed_max = 7 diff --git a/mods/carts/rails.lua b/mods/carts/rails.lua index a5fff8a4..8bd2ba1e 100644 --- a/mods/carts/rails.lua +++ b/mods/carts/rails.lua @@ -1,5 +1,10 @@ +-- carts/rails.lua + +-- support for MT game translation. +local S = carts.get_translator + carts:register_rail("carts:rail", { - description = "Rail", + description = S("Rail"), tiles = { "carts_rail_straight.png", "carts_rail_curved.png", "carts_rail_t_junction.png", "carts_rail_crossing.png" @@ -22,7 +27,7 @@ minetest.register_alias("default:rail", "carts:rail") carts:register_rail("carts:powerrail", { - description = "Powered Rail", + description = S("Powered Rail"), tiles = { "carts_rail_straight_pwr.png", "carts_rail_curved_pwr.png", "carts_rail_t_junction_pwr.png", "carts_rail_crossing_pwr.png" @@ -41,7 +46,7 @@ minetest.register_craft({ carts:register_rail("carts:brakerail", { - description = "Brake Rail", + description = S("Brake Rail"), tiles = { "carts_rail_straight_brk.png", "carts_rail_curved_brk.png", "carts_rail_t_junction_brk.png", "carts_rail_crossing_brk.png" diff --git a/mods/creative/init.lua b/mods/creative/init.lua index 7b7903d1..a1d57c88 100644 --- a/mods/creative/init.lua +++ b/mods/creative/init.lua @@ -1,4 +1,10 @@ +-- creative/init.lua + +-- Load support for MT game translation. +local S = minetest.get_translator("creative") + creative = {} +creative.get_translator = S local function update_sfinv(name) minetest.after(0, function() @@ -14,7 +20,7 @@ local function update_sfinv(name) end minetest.register_privilege("creative", { - description = "Allow player to use creative inventory", + description = S("Allow player to use creative inventory"), give_to_singleplayer = false, give_to_admin = false, on_grant = update_sfinv, diff --git a/mods/creative/inventory.lua b/mods/creative/inventory.lua index 3b95e735..08402046 100644 --- a/mods/creative/inventory.lua +++ b/mods/creative/inventory.lua @@ -1,3 +1,8 @@ +-- creative/inventory.lua + +-- support for MT game translation. +local S = creative.get_translator + local player_inventory = {} local inventory_cache = {} @@ -114,10 +119,10 @@ function creative.register_tab(name, title, items) image_button[7.2,3.25;0.8,0.8;creative_next_icon.png;creative_next;] image_button[2.1,3.25;0.8,0.8;creative_search_icon.png;creative_search;] image_button[2.75,3.25;0.8,0.8;creative_clear_icon.png;creative_clear;] - tooltip[creative_search;Search] - tooltip[creative_clear;Reset] - tooltip[creative_prev;Previous page] - tooltip[creative_next;Next page] + tooltip[creative_search;S("Search")] + tooltip[creative_clear;S("Reset")] + tooltip[creative_prev;S("Previous page")] + tooltip[creative_next;S("Next page")] listring[current_player;main] field_close_on_enter[creative_filter;false] ]] .. @@ -174,10 +179,10 @@ function creative.register_tab(name, title, items) }) end -creative.register_tab("all", "All", minetest.registered_items) -creative.register_tab("nodes", "Nodes", minetest.registered_nodes) -creative.register_tab("tools", "Tools", minetest.registered_tools) -creative.register_tab("craftitems", "Items", minetest.registered_craftitems) +creative.register_tab("all", S("All"), minetest.registered_items) +creative.register_tab("nodes", S("Nodes"), minetest.registered_nodes) +creative.register_tab("tools", S("Tools"), minetest.registered_tools) +creative.register_tab("craftitems", S("Items"), minetest.registered_craftitems) local old_homepage_name = sfinv.get_homepage_name function sfinv.get_homepage_name(player) diff --git a/mods/default/chests.lua b/mods/default/chests.lua index b70e5ad2..8dbf9d89 100644 --- a/mods/default/chests.lua +++ b/mods/default/chests.lua @@ -1,5 +1,8 @@ default.chest = {} +-- support for MT game translation. +local S = default.get_translator + function default.chest.get_chest_formspec(pos) local spos = pos.x .. "," .. pos.y .. "," .. pos.z local formspec = @@ -84,7 +87,7 @@ function default.chest.register_chest(name, d) if def.protected then def.on_construct = function(pos) local meta = minetest.get_meta(pos) - meta:set_string("infotext", "Locked Chest") + meta:set_string("infotext", S("Locked Chest")) meta:set_string("owner", "") local inv = meta:get_inventory() inv:set_size("main", 8*4) @@ -92,8 +95,7 @@ function default.chest.register_chest(name, d) def.after_place_node = function(pos, placer) local meta = minetest.get_meta(pos) meta:set_string("owner", placer:get_player_name() or "") - meta:set_string("infotext", "Locked Chest (owned by " .. - meta:get_string("owner") .. ")") + meta:set_string("infotext", S("Locked Chest (owned by @1)", meta:get_string("owner"))) end def.can_dig = function(pos,player) local meta = minetest.get_meta(pos); @@ -171,7 +173,7 @@ function default.chest.register_chest(name, d) -- verify placer is owner of lockable chest if owner ~= pn then minetest.record_protection_violation(pos, pn) - minetest.chat_send_player(pn, "You do not own this chest.") + minetest.chat_send_player(pn, S("You do not own this chest.")) return nil end @@ -181,12 +183,12 @@ function default.chest.register_chest(name, d) meta:set_string("key_lock_secret", secret) end - return secret, "a locked chest", owner + return secret, S("a locked chest"), owner end else def.on_construct = function(pos) local meta = minetest.get_meta(pos) - meta:set_string("infotext", "Chest") + meta:set_string("infotext", S("Chest")) local inv = meta:get_inventory() inv:set_size("main", 8*4) end @@ -285,7 +287,7 @@ function default.chest.register_chest(name, d) end default.chest.register_chest("chest", { - description = "Chest", + description = S("Chest"), tiles = { "default_chest_top.png", "default_chest_top.png", @@ -301,7 +303,7 @@ default.chest.register_chest("chest", { }) default.chest.register_chest("chest_locked", { - description = "Locked Chest", + description = S("Locked Chest"), tiles = { "default_chest_top.png", "default_chest_top.png", diff --git a/mods/default/craftitems.lua b/mods/default/craftitems.lua index 53f4decc..fe226765 100644 --- a/mods/default/craftitems.lua +++ b/mods/default/craftitems.lua @@ -1,13 +1,16 @@ -- mods/default/craftitems.lua +-- support for MT game translation. +local S = default.get_translator + minetest.register_craftitem("default:stick", { - description = "Stick", + description = S("Stick"), inventory_image = "default_stick.png", groups = {stick = 1, flammable = 2}, }) minetest.register_craftitem("default:paper", { - description = "Paper", + description = S("Paper"), inventory_image = "default_paper.png", groups = {flammable = 3}, }) @@ -108,7 +111,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) if #short_title > short_title_size + 3 then short_title = short_title:sub(1, short_title_size) .. "..." end - data.description = "\""..short_title.."\" by "..data.owner + data.description = S("\"@1\" by @2", short_title, data.owner) data.text = fields.text:sub(1, max_text_size) data.text = data.text:gsub("\r\n", "\n"):gsub("\r", "\n") data.page = 1 @@ -155,14 +158,14 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end) minetest.register_craftitem("default:book", { - description = "Book", + description = S("Book"), inventory_image = "default_book.png", groups = {book = 1, flammable = 3}, on_use = book_on_use, }) minetest.register_craftitem("default:book_written", { - description = "Book With Text", + description = S("Book With Text"), inventory_image = "default_book_written.png", groups = {book = 1, not_in_creative_inventory = 1, flammable = 3}, stack_max = 1, @@ -199,7 +202,7 @@ minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv end) minetest.register_craftitem("default:skeleton_key", { - description = "Skeleton Key", + description = S("Skeleton Key"), inventory_image = "default_key_skeleton.png", groups = {key = 1}, on_use = function(itemstack, user, pointed_thing) @@ -238,8 +241,8 @@ minetest.register_craftitem("default:skeleton_key", { local new_stack = ItemStack("default:key") local meta = new_stack:get_meta() meta:set_string("secret", secret) - meta:set_string("description", "Key to "..user:get_player_name().."'s " - ..minetest.registered_nodes[node.name].description) + 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 @@ -255,93 +258,93 @@ minetest.register_craftitem("default:skeleton_key", { }) minetest.register_craftitem("default:coal_lump", { - description = "Coal Lump", + description = S("Coal Lump"), inventory_image = "default_coal_lump.png", groups = {coal = 1, flammable = 1} }) minetest.register_craftitem("default:iron_lump", { - description = "Iron Lump", + description = S("Iron Lump"), inventory_image = "default_iron_lump.png" }) minetest.register_craftitem("default:copper_lump", { - description = "Copper Lump", + description = S("Copper Lump"), inventory_image = "default_copper_lump.png" }) minetest.register_craftitem("default:tin_lump", { - description = "Tin Lump", + description = S("Tin Lump"), inventory_image = "default_tin_lump.png" }) minetest.register_craftitem("default:mese_crystal", { - description = "Mese Crystal", + description = S("Mese Crystal"), inventory_image = "default_mese_crystal.png", }) minetest.register_craftitem("default:gold_lump", { - description = "Gold Lump", + description = S("Gold Lump"), inventory_image = "default_gold_lump.png" }) minetest.register_craftitem("default:diamond", { - description = "Diamond", + description = S("Diamond"), inventory_image = "default_diamond.png", }) minetest.register_craftitem("default:clay_lump", { - description = "Clay Lump", + description = S("Clay Lump"), inventory_image = "default_clay_lump.png", }) minetest.register_craftitem("default:steel_ingot", { - description = "Steel Ingot", + description = S("Steel Ingot"), inventory_image = "default_steel_ingot.png" }) minetest.register_craftitem("default:copper_ingot", { - description = "Copper Ingot", + description = S("Copper Ingot"), inventory_image = "default_copper_ingot.png" }) minetest.register_craftitem("default:tin_ingot", { - description = "Tin Ingot", + description = S("Tin Ingot"), inventory_image = "default_tin_ingot.png" }) minetest.register_craftitem("default:bronze_ingot", { - description = "Bronze Ingot", + description = S("Bronze Ingot"), inventory_image = "default_bronze_ingot.png" }) minetest.register_craftitem("default:gold_ingot", { - description = "Gold Ingot", + description = S("Gold Ingot"), inventory_image = "default_gold_ingot.png" }) minetest.register_craftitem("default:mese_crystal_fragment", { - description = "Mese Crystal Fragment", + description = S("Mese Crystal Fragment"), inventory_image = "default_mese_crystal_fragment.png", }) minetest.register_craftitem("default:clay_brick", { - description = "Clay Brick", + description = S("Clay Brick"), inventory_image = "default_clay_brick.png", }) minetest.register_craftitem("default:obsidian_shard", { - description = "Obsidian Shard", + description = S("Obsidian Shard"), inventory_image = "default_obsidian_shard.png", }) minetest.register_craftitem("default:flint", { - description = "Flint", + description = S("Flint"), inventory_image = "default_flint.png" }) minetest.register_craftitem("default:blueberries", { - description = "Blueberries", + description = S("Blueberries"), inventory_image = "default_blueberries.png", groups = {food_blueberries = 1, food_berry = 1}, on_use = minetest.item_eat(2), diff --git a/mods/default/furnace.lua b/mods/default/furnace.lua index cd48923c..2c9f8645 100644 --- a/mods/default/furnace.lua +++ b/mods/default/furnace.lua @@ -1,3 +1,7 @@ +-- default/furnace.lua + +-- support for MT game translation. +local S = default.get_translator -- -- Formspecs @@ -60,7 +64,7 @@ local function allow_metadata_inventory_put(pos, listname, index, stack, player) if listname == "fuel" then if minetest.get_craft_result({method="fuel", width=1, items={stack}}).time ~= 0 then if inv:is_empty("src") then - meta:set_string("infotext", "Furnace is empty") + meta:set_string("infotext", S("Furnace is empty")) end return stack:get_count() else @@ -209,19 +213,19 @@ local function furnace_node_timer(pos, elapsed) if cookable then item_percent = math.floor(src_time / cooked.time * 100) if dst_full then - item_state = "100% (output full)" + item_state = S("100% (output full)") else - item_state = item_percent .. "%" + item_state = S("@1%", item_percent) end else if srclist[1]:is_empty() then - item_state = "Empty" + item_state = S("Empty") else - item_state = "Not cookable" + item_state = S("Not cookable") end end - local fuel_state = "Empty" + local fuel_state = S("Empty") local active = "inactive" local result = false @@ -243,8 +247,9 @@ local function furnace_node_timer(pos, elapsed) minetest.get_node_timer(pos):stop() end - local infotext = "Furnace " .. active .. "\n(Item: " .. item_state .. - "; Fuel: " .. fuel_state .. ")" +-- local infotext = "Furnace " .. active .. "\n(Item: " .. item_state .. +-- "; Fuel: " .. fuel_state .. ")" + local infotext = S("Furnace @1 \n(Item: @2; Fuel: @3)", active, item_state, fuel_state) -- -- Set meta values @@ -263,7 +268,7 @@ end -- minetest.register_node("default:furnace", { - description = "Furnace", + description = S("Furnace"), tiles = { "default_furnace_top.png", "default_furnace_bottom.png", "default_furnace_side.png", "default_furnace_side.png", @@ -311,7 +316,7 @@ minetest.register_node("default:furnace", { }) minetest.register_node("default:furnace_active", { - description = "Furnace", + description = S("Furnace"), tiles = { "default_furnace_top.png", "default_furnace_bottom.png", "default_furnace_side.png", "default_furnace_side.png", diff --git a/mods/default/init.lua b/mods/default/init.lua index 47827528..015d3dcf 100644 --- a/mods/default/init.lua +++ b/mods/default/init.lua @@ -3,10 +3,14 @@ -- The API documentation in here was moved into game_api.txt +-- Load support for MT game translation. +local S = minetest.get_translator("default") + -- Definitions made by this mod that other mods can use too default = {} default.LIGHT_MAX = 14 +default.get_translator = S -- GUI related stuff minetest.register_on_joinplayer(function(player) diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index b29f6797..da01e938 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -1,5 +1,7 @@ -- mods/default/nodes.lua +-- support for MT game translation. +local S = default.get_translator --[[ Node name convention: @@ -242,7 +244,7 @@ end -- minetest.register_node("default:stone", { - description = "Stone", + description = S("Stone"), tiles = {"default_stone.png"}, groups = {cracky = 3, stone = 1}, drop = "default:cobble", @@ -251,7 +253,7 @@ minetest.register_node("default:stone", { }) minetest.register_node("default:cobble", { - description = "Cobblestone", + description = S("Cobblestone"), tiles = {"default_cobble.png"}, is_ground_content = false, groups = {cracky = 3, stone = 2}, @@ -259,7 +261,7 @@ minetest.register_node("default:cobble", { }) minetest.register_node("default:stonebrick", { - description = "Stone Brick", + description = S("Stone Brick"), paramtype2 = "facedir", place_param2 = 0, tiles = {"default_stone_brick.png"}, @@ -269,7 +271,7 @@ minetest.register_node("default:stonebrick", { }) minetest.register_node("default:stone_block", { - description = "Stone Block", + description = S("Stone Block"), tiles = {"default_stone_block.png"}, is_ground_content = false, groups = {cracky = 2, stone = 1}, @@ -277,7 +279,7 @@ minetest.register_node("default:stone_block", { }) minetest.register_node("default:mossycobble", { - description = "Mossy Cobblestone", + description = S("Mossy Cobblestone"), tiles = {"default_mossycobble.png"}, is_ground_content = false, groups = {cracky = 3, stone = 1}, @@ -286,7 +288,7 @@ minetest.register_node("default:mossycobble", { minetest.register_node("default:desert_stone", { - description = "Desert Stone", + description = S("Desert Stone"), tiles = {"default_desert_stone.png"}, groups = {cracky = 3, stone = 1}, drop = "default:desert_cobble", @@ -295,7 +297,7 @@ minetest.register_node("default:desert_stone", { }) minetest.register_node("default:desert_cobble", { - description = "Desert Cobblestone", + description = S("Desert Cobblestone"), tiles = {"default_desert_cobble.png"}, is_ground_content = false, groups = {cracky = 3, stone = 2}, @@ -303,7 +305,7 @@ minetest.register_node("default:desert_cobble", { }) minetest.register_node("default:desert_stonebrick", { - description = "Desert Stone Brick", + description = S("Desert Stone Brick"), paramtype2 = "facedir", place_param2 = 0, tiles = {"default_desert_stone_brick.png"}, @@ -313,7 +315,7 @@ minetest.register_node("default:desert_stonebrick", { }) minetest.register_node("default:desert_stone_block", { - description = "Desert Stone Block", + description = S("Desert Stone Block"), tiles = {"default_desert_stone_block.png"}, is_ground_content = false, groups = {cracky = 2, stone = 1}, @@ -321,14 +323,14 @@ minetest.register_node("default:desert_stone_block", { }) minetest.register_node("default:sandstone", { - description = "Sandstone", + description = S("Sandstone"), tiles = {"default_sandstone.png"}, groups = {crumbly = 1, cracky = 3}, sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:sandstonebrick", { - description = "Sandstone Brick", + description = S("Sandstone Brick"), paramtype2 = "facedir", place_param2 = 0, tiles = {"default_sandstone_brick.png"}, @@ -338,7 +340,7 @@ minetest.register_node("default:sandstonebrick", { }) minetest.register_node("default:sandstone_block", { - description = "Sandstone Block", + description = S("Sandstone Block"), tiles = {"default_sandstone_block.png"}, is_ground_content = false, groups = {cracky = 2}, @@ -346,14 +348,14 @@ minetest.register_node("default:sandstone_block", { }) minetest.register_node("default:desert_sandstone", { - description = "Desert Sandstone", + description = S("Desert Sandstone"), tiles = {"default_desert_sandstone.png"}, groups = {crumbly = 1, cracky = 3}, sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:desert_sandstone_brick", { - description = "Desert Sandstone Brick", + description = S("Desert Sandstone Brick"), paramtype2 = "facedir", place_param2 = 0, tiles = {"default_desert_sandstone_brick.png"}, @@ -363,7 +365,7 @@ minetest.register_node("default:desert_sandstone_brick", { }) minetest.register_node("default:desert_sandstone_block", { - description = "Desert Sandstone Block", + description = S("Desert Sandstone Block"), tiles = {"default_desert_sandstone_block.png"}, is_ground_content = false, groups = {cracky = 2}, @@ -371,14 +373,14 @@ minetest.register_node("default:desert_sandstone_block", { }) minetest.register_node("default:silver_sandstone", { - description = "Silver Sandstone", + description = S("Silver Sandstone"), tiles = {"default_silver_sandstone.png"}, groups = {crumbly = 1, cracky = 3}, sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:silver_sandstone_brick", { - description = "Silver Sandstone Brick", + description = S("Silver Sandstone Brick"), paramtype2 = "facedir", place_param2 = 0, tiles = {"default_silver_sandstone_brick.png"}, @@ -388,7 +390,7 @@ minetest.register_node("default:silver_sandstone_brick", { }) minetest.register_node("default:silver_sandstone_block", { - description = "Silver Sandstone Block", + description = S("Silver Sandstone Block"), tiles = {"default_silver_sandstone_block.png"}, is_ground_content = false, groups = {cracky = 2}, @@ -396,14 +398,14 @@ minetest.register_node("default:silver_sandstone_block", { }) minetest.register_node("default:obsidian", { - description = "Obsidian", + description = S("Obsidian"), tiles = {"default_obsidian.png"}, sounds = default.node_sound_stone_defaults(), groups = {cracky = 1, level = 2}, }) minetest.register_node("default:obsidianbrick", { - description = "Obsidian Brick", + description = S("Obsidian Brick"), paramtype2 = "facedir", place_param2 = 0, tiles = {"default_obsidian_brick.png"}, @@ -413,7 +415,7 @@ minetest.register_node("default:obsidianbrick", { }) minetest.register_node("default:obsidian_block", { - description = "Obsidian Block", + description = S("Obsidian Block"), tiles = {"default_obsidian_block.png"}, is_ground_content = false, sounds = default.node_sound_stone_defaults(), @@ -425,14 +427,14 @@ minetest.register_node("default:obsidian_block", { -- minetest.register_node("default:dirt", { - description = "Dirt", + description = S("Dirt"), tiles = {"default_dirt.png"}, groups = {crumbly = 3, soil = 1}, sounds = default.node_sound_dirt_defaults(), }) minetest.register_node("default:dirt_with_grass", { - description = "Dirt with Grass", + description = S("Dirt with Grass"), tiles = {"default_grass.png", "default_dirt.png", {name = "default_dirt.png^default_grass_side.png", tileable_vertical = false}}, @@ -444,7 +446,7 @@ minetest.register_node("default:dirt_with_grass", { }) minetest.register_node("default:dirt_with_grass_footsteps", { - description = "Dirt with Grass and Footsteps", + description = S("Dirt with Grass and Footsteps"), tiles = {"default_grass.png^default_footprint.png", "default_dirt.png", {name = "default_dirt.png^default_grass_side.png", tileable_vertical = false}}, @@ -456,7 +458,7 @@ minetest.register_node("default:dirt_with_grass_footsteps", { }) minetest.register_node("default:dirt_with_dry_grass", { - description = "Dirt with Dry Grass", + description = S("Dirt with Dry Grass"), tiles = {"default_dry_grass.png", "default_dirt.png", {name = "default_dirt.png^default_dry_grass_side.png", @@ -469,7 +471,7 @@ minetest.register_node("default:dirt_with_dry_grass", { }) minetest.register_node("default:dirt_with_snow", { - description = "Dirt with Snow", + description = S("Dirt with Snow"), tiles = {"default_snow.png", "default_dirt.png", {name = "default_dirt.png^default_snow_side.png", tileable_vertical = false}}, @@ -481,7 +483,7 @@ minetest.register_node("default:dirt_with_snow", { }) minetest.register_node("default:dirt_with_rainforest_litter", { - description = "Dirt with Rainforest Litter", + description = S("Dirt with Rainforest Litter"), tiles = { "default_rainforest_litter.png", "default_dirt.png", @@ -496,7 +498,7 @@ minetest.register_node("default:dirt_with_rainforest_litter", { }) minetest.register_node("default:dirt_with_coniferous_litter", { - description = "Dirt with Coniferous Litter", + description = S("Dirt with Coniferous Litter"), tiles = { "default_coniferous_litter.png", "default_dirt.png", @@ -530,14 +532,14 @@ minetest.register_node("default:dry_dirt_with_dry_grass", { }) minetest.register_node("default:permafrost", { - description = "Permafrost", + description = S("Permafrost"), tiles = {"default_permafrost.png"}, groups = {cracky = 3}, sounds = default.node_sound_dirt_defaults(), }) minetest.register_node("default:permafrost_with_stones", { - description = "Permafrost with Stones", + description = S("Permafrost with Stones"), tiles = {"default_permafrost.png^default_stones.png", "default_permafrost.png", "default_permafrost.png^default_stones_side.png"}, @@ -546,7 +548,7 @@ minetest.register_node("default:permafrost_with_stones", { }) minetest.register_node("default:permafrost_with_moss", { - description = "Permafrost with Moss", + description = S("Permafrost with Moss"), tiles = {"default_moss.png", "default_permafrost.png", {name = "default_permafrost.png^default_moss_side.png", tileable_vertical = false}}, @@ -557,21 +559,21 @@ minetest.register_node("default:permafrost_with_moss", { }) minetest.register_node("default:sand", { - description = "Sand", + description = S("Sand"), tiles = {"default_sand.png"}, groups = {crumbly = 3, falling_node = 1, sand = 1}, sounds = default.node_sound_sand_defaults(), }) minetest.register_node("default:desert_sand", { - description = "Desert Sand", + description = S("Desert Sand"), tiles = {"default_desert_sand.png"}, groups = {crumbly = 3, falling_node = 1, sand = 1}, sounds = default.node_sound_sand_defaults(), }) minetest.register_node("default:silver_sand", { - description = "Silver Sand", + description = S("Silver Sand"), tiles = {"default_silver_sand.png"}, groups = {crumbly = 3, falling_node = 1, sand = 1}, sounds = default.node_sound_sand_defaults(), @@ -579,7 +581,7 @@ minetest.register_node("default:silver_sand", { minetest.register_node("default:gravel", { - description = "Gravel", + description = S("Gravel"), tiles = {"default_gravel.png"}, groups = {crumbly = 2, falling_node = 1}, sounds = default.node_sound_gravel_defaults(), @@ -593,7 +595,7 @@ minetest.register_node("default:gravel", { }) minetest.register_node("default:clay", { - description = "Clay", + description = S("Clay"), tiles = {"default_clay.png"}, groups = {crumbly = 3}, drop = "default:clay_lump 4", @@ -602,7 +604,7 @@ minetest.register_node("default:clay", { minetest.register_node("default:snow", { - description = "Snow", + description = S("Snow"), tiles = {"default_snow.png"}, inventory_image = "default_snowball.png", wield_image = "default_snowball.png", @@ -634,7 +636,7 @@ minetest.register_node("default:snow", { }) minetest.register_node("default:snowblock", { - description = "Snow Block", + description = S("Snow Block"), tiles = {"default_snow.png"}, groups = {crumbly = 3, cools_lava = 1, snowy = 1}, sounds = default.node_sound_snow_defaults(), @@ -649,7 +651,7 @@ minetest.register_node("default:snowblock", { -- 'is ground content = false' to avoid tunnels in sea ice or ice rivers minetest.register_node("default:ice", { - description = "Ice", + description = S("Ice"), tiles = {"default_ice.png"}, is_ground_content = false, paramtype = "light", @@ -659,7 +661,7 @@ minetest.register_node("default:ice", { -- Mapgen-placed ice with 'is ground content = true' to contain tunnels minetest.register_node("default:cave_ice", { - description = "Cave Ice", + description = S("Cave Ice"), tiles = {"default_ice.png"}, paramtype = "light", groups = {cracky = 3, cools_lava = 1, slippery = 3, @@ -673,7 +675,7 @@ minetest.register_node("default:cave_ice", { -- minetest.register_node("default:tree", { - description = "Apple Tree", + description = S("Apple Tree"), tiles = {"default_tree_top.png", "default_tree_top.png", "default_tree.png"}, paramtype2 = "facedir", is_ground_content = false, @@ -684,7 +686,7 @@ minetest.register_node("default:tree", { }) minetest.register_node("default:wood", { - description = "Apple Wood Planks", + description = S("Apple Wood Planks"), paramtype2 = "facedir", place_param2 = 0, tiles = {"default_wood.png"}, @@ -694,7 +696,7 @@ minetest.register_node("default:wood", { }) minetest.register_node("default:sapling", { - description = "Apple Tree Sapling", + description = S("Apple Tree Sapling"), drawtype = "plantlike", tiles = {"default_sapling.png"}, inventory_image = "default_sapling.png", @@ -730,7 +732,7 @@ minetest.register_node("default:sapling", { }) minetest.register_node("default:leaves", { - description = "Apple Tree Leaves", + description = S("Apple Tree Leaves"), drawtype = "allfaces_optional", waving = 1, tiles = {"default_leaves.png"}, @@ -759,7 +761,7 @@ minetest.register_node("default:leaves", { }) minetest.register_node("default:apple", { - description = "Apple", + description = S("Apple"), drawtype = "plantlike", tiles = {"default_apple.png"}, inventory_image = "default_apple.png", @@ -789,7 +791,7 @@ minetest.register_node("default:apple", { }) minetest.register_node("default:apple_mark", { - description = "Apple Marker", + description = S("Apple Marker"), drawtype = "airlike", paramtype = "light", sunlight_propagates = true, @@ -812,7 +814,7 @@ minetest.register_node("default:apple_mark", { minetest.register_node("default:jungletree", { - description = "Jungle Tree", + description = S("Jungle Tree"), tiles = {"default_jungletree_top.png", "default_jungletree_top.png", "default_jungletree.png"}, paramtype2 = "facedir", @@ -824,7 +826,7 @@ minetest.register_node("default:jungletree", { }) minetest.register_node("default:junglewood", { - description = "Jungle Wood Planks", + description = S("Jungle Wood Planks"), paramtype2 = "facedir", place_param2 = 0, tiles = {"default_junglewood.png"}, @@ -834,7 +836,7 @@ minetest.register_node("default:junglewood", { }) minetest.register_node("default:jungleleaves", { - description = "Jungle Tree Leaves", + description = S("Jungle Tree Leaves"), drawtype = "allfaces_optional", waving = 1, tiles = {"default_jungleleaves.png"}, @@ -855,7 +857,7 @@ minetest.register_node("default:jungleleaves", { }) minetest.register_node("default:junglesapling", { - description = "Jungle Tree Sapling", + description = S("Jungle Tree Sapling"), drawtype = "plantlike", tiles = {"default_junglesapling.png"}, inventory_image = "default_junglesapling.png", @@ -891,7 +893,7 @@ minetest.register_node("default:junglesapling", { }) minetest.register_node("default:emergent_jungle_sapling", { - description = "Emergent Jungle Tree Sapling", + description = S("Emergent Jungle Tree Sapling"), drawtype = "plantlike", tiles = {"default_emergent_jungle_sapling.png"}, inventory_image = "default_emergent_jungle_sapling.png", @@ -927,7 +929,7 @@ minetest.register_node("default:emergent_jungle_sapling", { minetest.register_node("default:pine_tree", { - description = "Pine Tree", + description = S("Pine Tree"), tiles = {"default_pine_tree_top.png", "default_pine_tree_top.png", "default_pine_tree.png"}, paramtype2 = "facedir", @@ -939,7 +941,7 @@ minetest.register_node("default:pine_tree", { }) minetest.register_node("default:pine_wood", { - description = "Pine Wood Planks", + description = S("Pine Wood Planks"), paramtype2 = "facedir", place_param2 = 0, tiles = {"default_pine_wood.png"}, @@ -949,7 +951,7 @@ minetest.register_node("default:pine_wood", { }) minetest.register_node("default:pine_needles",{ - description = "Pine Needles", + description = S("Pine Needles"), drawtype = "allfaces_optional", tiles = {"default_pine_needles.png"}, waving = 1, @@ -969,7 +971,7 @@ minetest.register_node("default:pine_needles",{ }) minetest.register_node("default:pine_sapling", { - description = "Pine Tree Sapling", + description = S("Pine Tree Sapling"), drawtype = "plantlike", tiles = {"default_pine_sapling.png"}, inventory_image = "default_pine_sapling.png", @@ -1006,7 +1008,7 @@ minetest.register_node("default:pine_sapling", { minetest.register_node("default:acacia_tree", { - description = "Acacia Tree", + description = S("Acacia Tree"), tiles = {"default_acacia_tree_top.png", "default_acacia_tree_top.png", "default_acacia_tree.png"}, paramtype2 = "facedir", @@ -1018,7 +1020,7 @@ minetest.register_node("default:acacia_tree", { }) minetest.register_node("default:acacia_wood", { - description = "Acacia Wood Planks", + description = S("Acacia Wood Planks"), paramtype2 = "facedir", place_param2 = 0, tiles = {"default_acacia_wood.png"}, @@ -1028,7 +1030,7 @@ minetest.register_node("default:acacia_wood", { }) minetest.register_node("default:acacia_leaves", { - description = "Acacia Tree Leaves", + description = S("Acacia Tree Leaves"), drawtype = "allfaces_optional", tiles = {"default_acacia_leaves.png"}, special_tiles = {"default_acacia_leaves_simple.png"}, @@ -1049,7 +1051,7 @@ minetest.register_node("default:acacia_leaves", { }) minetest.register_node("default:acacia_sapling", { - description = "Acacia Tree Sapling", + description = S("Acacia Tree Sapling"), drawtype = "plantlike", tiles = {"default_acacia_sapling.png"}, inventory_image = "default_acacia_sapling.png", @@ -1085,7 +1087,7 @@ minetest.register_node("default:acacia_sapling", { }) minetest.register_node("default:aspen_tree", { - description = "Aspen Tree", + description = S("Aspen Tree"), tiles = {"default_aspen_tree_top.png", "default_aspen_tree_top.png", "default_aspen_tree.png"}, paramtype2 = "facedir", @@ -1097,7 +1099,7 @@ minetest.register_node("default:aspen_tree", { }) minetest.register_node("default:aspen_wood", { - description = "Aspen Wood Planks", + description = S("Aspen Wood Planks"), paramtype2 = "facedir", place_param2 = 0, tiles = {"default_aspen_wood.png"}, @@ -1107,7 +1109,7 @@ minetest.register_node("default:aspen_wood", { }) minetest.register_node("default:aspen_leaves", { - description = "Aspen Tree Leaves", + description = S("Aspen Tree Leaves"), drawtype = "allfaces_optional", tiles = {"default_aspen_leaves.png"}, waving = 1, @@ -1127,7 +1129,7 @@ minetest.register_node("default:aspen_leaves", { }) minetest.register_node("default:aspen_sapling", { - description = "Aspen Tree Sapling", + description = S("Aspen Tree Sapling"), drawtype = "plantlike", tiles = {"default_aspen_sapling.png"}, inventory_image = "default_aspen_sapling.png", @@ -1167,7 +1169,7 @@ minetest.register_node("default:aspen_sapling", { -- minetest.register_node("default:stone_with_coal", { - description = "Coal Ore", + description = S("Coal Ore"), tiles = {"default_stone.png^default_mineral_coal.png"}, groups = {cracky = 3}, drop = "default:coal_lump", @@ -1175,7 +1177,7 @@ minetest.register_node("default:stone_with_coal", { }) minetest.register_node("default:coalblock", { - description = "Coal Block", + description = S("Coal Block"), tiles = {"default_coal_block.png"}, is_ground_content = false, groups = {cracky = 3}, @@ -1184,7 +1186,7 @@ minetest.register_node("default:coalblock", { minetest.register_node("default:stone_with_iron", { - description = "Iron Ore", + description = S("Iron Ore"), tiles = {"default_stone.png^default_mineral_iron.png"}, groups = {cracky = 2}, drop = "default:iron_lump", @@ -1192,7 +1194,7 @@ minetest.register_node("default:stone_with_iron", { }) minetest.register_node("default:steelblock", { - description = "Steel Block", + description = S("Steel Block"), tiles = {"default_steel_block.png"}, is_ground_content = false, groups = {cracky = 1, level = 2}, @@ -1201,7 +1203,7 @@ minetest.register_node("default:steelblock", { minetest.register_node("default:stone_with_copper", { - description = "Copper Ore", + description = S("Copper Ore"), tiles = {"default_stone.png^default_mineral_copper.png"}, groups = {cracky = 2}, drop = "default:copper_lump", @@ -1209,7 +1211,7 @@ minetest.register_node("default:stone_with_copper", { }) minetest.register_node("default:copperblock", { - description = "Copper Block", + description = S("Copper Block"), tiles = {"default_copper_block.png"}, is_ground_content = false, groups = {cracky = 1, level = 2}, @@ -1218,7 +1220,7 @@ minetest.register_node("default:copperblock", { minetest.register_node("default:stone_with_tin", { - description = "Tin Ore", + description = S("Tin Ore"), tiles = {"default_stone.png^default_mineral_tin.png"}, groups = {cracky = 2}, drop = "default:tin_lump", @@ -1226,7 +1228,7 @@ minetest.register_node("default:stone_with_tin", { }) minetest.register_node("default:tinblock", { - description = "Tin Block", + description = S("Tin Block"), tiles = {"default_tin_block.png"}, is_ground_content = false, groups = {cracky = 1, level = 2}, @@ -1235,7 +1237,7 @@ minetest.register_node("default:tinblock", { minetest.register_node("default:bronzeblock", { - description = "Bronze Block", + description = S("Bronze Block"), tiles = {"default_bronze_block.png"}, is_ground_content = false, groups = {cracky = 1, level = 2}, @@ -1244,7 +1246,7 @@ minetest.register_node("default:bronzeblock", { minetest.register_node("default:stone_with_mese", { - description = "Mese Ore", + description = S("Mese Ore"), tiles = {"default_stone.png^default_mineral_mese.png"}, groups = {cracky = 1}, drop = "default:mese_crystal", @@ -1252,7 +1254,7 @@ minetest.register_node("default:stone_with_mese", { }) minetest.register_node("default:mese", { - description = "Mese Block", + description = S("Mese Block"), tiles = {"default_mese_block.png"}, paramtype = "light", groups = {cracky = 1, level = 2}, @@ -1262,7 +1264,7 @@ minetest.register_node("default:mese", { minetest.register_node("default:stone_with_gold", { - description = "Gold Ore", + description = S("Gold Ore"), tiles = {"default_stone.png^default_mineral_gold.png"}, groups = {cracky = 2}, drop = "default:gold_lump", @@ -1270,7 +1272,7 @@ minetest.register_node("default:stone_with_gold", { }) minetest.register_node("default:goldblock", { - description = "Gold Block", + description = S("Gold Block"), tiles = {"default_gold_block.png"}, is_ground_content = false, groups = {cracky = 1}, @@ -1279,7 +1281,7 @@ minetest.register_node("default:goldblock", { minetest.register_node("default:stone_with_diamond", { - description = "Diamond Ore", + description = S("Diamond Ore"), tiles = {"default_stone.png^default_mineral_diamond.png"}, groups = {cracky = 1}, drop = "default:diamond", @@ -1287,7 +1289,7 @@ minetest.register_node("default:stone_with_diamond", { }) minetest.register_node("default:diamondblock", { - description = "Diamond Block", + description = S("Diamond Block"), tiles = {"default_diamond_block.png"}, is_ground_content = false, groups = {cracky = 1, level = 3}, @@ -1299,7 +1301,7 @@ minetest.register_node("default:diamondblock", { -- minetest.register_node("default:cactus", { - description = "Cactus", + description = S("Cactus"), tiles = {"default_cactus_top.png", "default_cactus_top.png", "default_cactus_side.png"}, paramtype2 = "facedir", @@ -1309,7 +1311,7 @@ minetest.register_node("default:cactus", { }) minetest.register_node("default:large_cactus_seedling", { - description = "Large Cactus Seedling", + description = S("Large Cactus Seedling"), drawtype = "plantlike", tiles = {"default_large_cactus_seedling.png"}, inventory_image = "default_large_cactus_seedling.png", @@ -1380,7 +1382,7 @@ minetest.register_node("default:large_cactus_seedling", { }) minetest.register_node("default:papyrus", { - description = "Papyrus", + description = S("Papyrus"), drawtype = "plantlike", tiles = {"default_papyrus.png"}, inventory_image = "default_papyrus.png", @@ -1401,7 +1403,7 @@ minetest.register_node("default:papyrus", { }) minetest.register_node("default:dry_shrub", { - description = "Dry Shrub", + description = S("Dry Shrub"), drawtype = "plantlike", waving = 1, tiles = {"default_dry_shrub.png"}, @@ -1422,7 +1424,7 @@ minetest.register_node("default:dry_shrub", { }) minetest.register_node("default:junglegrass", { - description = "Jungle Grass", + description = S("Jungle Grass"), drawtype = "plantlike", waving = 1, visual_scale = 1.69, @@ -1443,7 +1445,7 @@ minetest.register_node("default:junglegrass", { minetest.register_node("default:grass_1", { - description = "Grass", + description = S("Grass"), drawtype = "plantlike", waving = 1, tiles = {"default_grass_1.png"}, @@ -1472,7 +1474,7 @@ minetest.register_node("default:grass_1", { for i = 2, 5 do minetest.register_node("default:grass_" .. i, { - description = "Grass", + description = S("Grass"), drawtype = "plantlike", waving = 1, tiles = {"default_grass_" .. i .. ".png"}, @@ -1495,7 +1497,7 @@ end minetest.register_node("default:dry_grass_1", { - description = "Dry Grass", + description = S("Dry Grass"), drawtype = "plantlike", waving = 1, tiles = {"default_dry_grass_1.png"}, @@ -1524,7 +1526,7 @@ minetest.register_node("default:dry_grass_1", { for i = 2, 5 do minetest.register_node("default:dry_grass_" .. i, { - description = "Dry Grass", + description = S("Dry Grass"), drawtype = "plantlike", waving = 1, tiles = {"default_dry_grass_" .. i .. ".png"}, @@ -1547,7 +1549,7 @@ end minetest.register_node("default:fern_1", { - description = "Fern", + description = S("Fern"), drawtype = "plantlike", waving = 1, tiles = {"default_fern_1.png"}, @@ -1575,7 +1577,7 @@ minetest.register_node("default:fern_1", { for i = 2, 3 do minetest.register_node("default:fern_" .. i, { - description = "Fern", + description = S("Fern"), drawtype = "plantlike", waving = 1, visual_scale = 2, @@ -1599,7 +1601,7 @@ end minetest.register_node("default:marram_grass_1", { - description = "Marram Grass", + description = S("Marram Grass"), drawtype = "plantlike", waving = 1, tiles = {"default_marram_grass_1.png"}, @@ -1627,7 +1629,7 @@ minetest.register_node("default:marram_grass_1", { for i = 2, 3 do minetest.register_node("default:marram_grass_" .. i, { - description = "Marram Grass", + description = S("Marram Grass"), drawtype = "plantlike", waving = 1, tiles = {"default_marram_grass_" .. i .. ".png"}, @@ -1650,7 +1652,7 @@ end minetest.register_node("default:bush_stem", { - description = "Bush Stem", + description = S("Bush Stem"), drawtype = "plantlike", visual_scale = 1.41, tiles = {"default_bush_stem.png"}, @@ -1667,7 +1669,7 @@ minetest.register_node("default:bush_stem", { }) minetest.register_node("default:bush_leaves", { - description = "Bush Leaves", + description = S("Bush Leaves"), drawtype = "allfaces_optional", waving = 1, tiles = {"default_leaves_simple.png"}, @@ -1686,7 +1688,7 @@ minetest.register_node("default:bush_leaves", { }) minetest.register_node("default:bush_sapling", { - description = "Bush Sapling", + description = S("Bush Sapling"), drawtype = "plantlike", tiles = {"default_bush_sapling.png"}, inventory_image = "default_bush_sapling.png", @@ -1721,7 +1723,7 @@ minetest.register_node("default:bush_sapling", { }) minetest.register_node("default:blueberry_bush_leaves_with_berries", { - description = "Blueberry Bush Leaves with Berries", + description = S("Blueberry Bush Leaves with Berries"), drawtype = "allfaces_optional", waving = 1, tiles = {"default_blueberry_bush_leaves.png^default_blueberry_overlay.png"}, @@ -1738,7 +1740,7 @@ minetest.register_node("default:blueberry_bush_leaves_with_berries", { }) minetest.register_node("default:blueberry_bush_leaves", { - description = "Blueberry Bush Leaves", + description = S("Blueberry Bush Leaves"), drawtype = "allfaces_optional", waving = 1, tiles = {"default_blueberry_bush_leaves.png"}, @@ -1765,7 +1767,7 @@ minetest.register_node("default:blueberry_bush_leaves", { }) minetest.register_node("default:blueberry_bush_sapling", { - description = "Blueberry Bush Sapling", + description = S("Blueberry Bush Sapling"), drawtype = "plantlike", tiles = {"default_blueberry_bush_sapling.png"}, inventory_image = "default_blueberry_bush_sapling.png", @@ -1800,7 +1802,7 @@ minetest.register_node("default:blueberry_bush_sapling", { }) minetest.register_node("default:acacia_bush_stem", { - description = "Acacia Bush Stem", + description = S("Acacia Bush Stem"), drawtype = "plantlike", visual_scale = 1.41, tiles = {"default_acacia_bush_stem.png"}, @@ -1817,7 +1819,7 @@ minetest.register_node("default:acacia_bush_stem", { }) minetest.register_node("default:acacia_bush_leaves", { - description = "Acacia Bush Leaves", + description = S("Acacia Bush Leaves"), drawtype = "allfaces_optional", waving = 1, tiles = {"default_acacia_leaves_simple.png"}, @@ -1836,7 +1838,7 @@ minetest.register_node("default:acacia_bush_leaves", { }) minetest.register_node("default:acacia_bush_sapling", { - description = "Acacia Bush Sapling", + description = S("Acacia Bush Sapling"), drawtype = "plantlike", tiles = {"default_acacia_bush_sapling.png"}, inventory_image = "default_acacia_bush_sapling.png", @@ -1871,7 +1873,7 @@ minetest.register_node("default:acacia_bush_sapling", { }) minetest.register_node("default:pine_bush_stem", { - description = "Pine Bush Stem", + description = S("Pine Bush Stem"), drawtype = "plantlike", visual_scale = 1.41, tiles = {"default_pine_bush_stem.png"}, @@ -1888,7 +1890,7 @@ minetest.register_node("default:pine_bush_stem", { }) minetest.register_node("default:pine_bush_needles", { - description = "Pine Bush Needles", + description = S("Pine Bush Needles"), drawtype = "allfaces_optional", waving = 1, tiles = {"default_pine_needles.png"}, @@ -1907,7 +1909,7 @@ minetest.register_node("default:pine_bush_needles", { }) minetest.register_node("default:pine_bush_sapling", { - description = "Pine Bush Sapling", + description = S("Pine Bush Sapling"), drawtype = "plantlike", tiles = {"default_pine_bush_sapling.png"}, inventory_image = "default_pine_bush_sapling.png", @@ -1942,7 +1944,7 @@ minetest.register_node("default:pine_bush_sapling", { }) minetest.register_node("default:sand_with_kelp", { - description = "Kelp", + description = S("Kelp"), drawtype = "plantlike_rooted", waving = 1, tiles = {"default_sand.png"}, @@ -2058,7 +2060,7 @@ local function coral_on_place(itemstack, placer, pointed_thing) end minetest.register_node("default:coral_green", { - description = "Green Coral", + description = S("Green Coral"), drawtype = "plantlike_rooted", waving = 1, paramtype = "light", @@ -2088,7 +2090,7 @@ minetest.register_node("default:coral_green", { }) minetest.register_node("default:coral_pink", { - description = "Pink Coral", + description = S("Pink Coral"), drawtype = "plantlike_rooted", waving = 1, paramtype = "light", @@ -2118,7 +2120,7 @@ minetest.register_node("default:coral_pink", { }) minetest.register_node("default:coral_cyan", { - description = "Cyan Coral", + description = S("Cyan Coral"), drawtype = "plantlike_rooted", waving = 1, paramtype = "light", @@ -2148,7 +2150,7 @@ minetest.register_node("default:coral_cyan", { }) minetest.register_node("default:coral_brown", { - description = "Brown Coral", + description = S("Brown Coral"), tiles = {"default_coral_brown.png"}, groups = {cracky = 3}, drop = "default:coral_skeleton", @@ -2156,7 +2158,7 @@ minetest.register_node("default:coral_brown", { }) minetest.register_node("default:coral_orange", { - description = "Orange Coral", + description = S("Orange Coral"), tiles = {"default_coral_orange.png"}, groups = {cracky = 3}, drop = "default:coral_skeleton", @@ -2164,7 +2166,7 @@ minetest.register_node("default:coral_orange", { }) minetest.register_node("default:coral_skeleton", { - description = "Coral Skeleton", + description = S("Coral Skeleton"), tiles = {"default_coral_skeleton.png"}, groups = {cracky = 3}, sounds = default.node_sound_stone_defaults(), @@ -2176,9 +2178,8 @@ minetest.register_node("default:coral_skeleton", { -- minetest.register_node("default:water_source", { - description = "Water Source", + description = S("Water Source"), drawtype = "liquid", - waving = 3, tiles = { { name = "default_water_source_animated.png", @@ -2220,9 +2221,8 @@ minetest.register_node("default:water_source", { }) minetest.register_node("default:water_flowing", { - description = "Flowing Water", + description = S("Flowing Water"), drawtype = "flowingliquid", - waving = 3, tiles = {"default_water.png"}, special_tiles = { { @@ -2268,7 +2268,7 @@ minetest.register_node("default:water_flowing", { minetest.register_node("default:river_water_source", { - description = "River Water Source", + description = S("River Water Source"), drawtype = "liquid", tiles = { { @@ -2317,7 +2317,7 @@ minetest.register_node("default:river_water_source", { }) minetest.register_node("default:river_water_flowing", { - description = "Flowing River Water", + description = S("Flowing River Water"), drawtype = "flowingliquid", tiles = {"default_river_water.png"}, special_tiles = { @@ -2366,7 +2366,7 @@ minetest.register_node("default:river_water_flowing", { minetest.register_node("default:lava_source", { - description = "Lava Source", + description = S("Lava Source"), drawtype = "liquid", tiles = { { @@ -2410,7 +2410,7 @@ minetest.register_node("default:lava_source", { }) minetest.register_node("default:lava_flowing", { - description = "Flowing Lava", + description = S("Flowing Lava"), drawtype = "flowingliquid", tiles = {"default_lava.png"}, special_tiles = { @@ -2499,15 +2499,14 @@ local function update_bookshelf(pos) end meta:set_string("formspec", formspec) if n_written + n_empty == 0 then - meta:set_string("infotext", "Empty Bookshelf") + meta:set_string("infotext", S("Empty Bookshelf")) else - meta:set_string("infotext", "Bookshelf (" .. n_written .. - " written, " .. n_empty .. " empty books)") + meta:set_string("infotext", S("Bookshelf (@1 written, @2 empty books)", n_written, n_empty)) end end minetest.register_node("default:bookshelf", { - description = "Bookshelf", + description = S("Bookshelf"), tiles = {"default_wood.png", "default_wood.png", "default_wood.png", "default_wood.png", "default_bookshelf.png", "default_bookshelf.png"}, paramtype2 = "facedir", @@ -2557,7 +2556,7 @@ minetest.register_node("default:bookshelf", { local function register_sign(material, desc, def) minetest.register_node("default:sign_wall_" .. material, { - description = desc .. " Sign", + description = S("@1 Sign", desc), drawtype = "nodebox", tiles = {"default_sign_wall_" .. material .. ".png"}, inventory_image = "default_sign_" .. material .. ".png", @@ -2594,7 +2593,7 @@ local function register_sign(material, desc, def) return end if string.len(text) > 512 then - minetest.chat_send_player(player_name, "Text too long") + minetest.chat_send_player(player_name, S("Text too long")) return end minetest.log("action", (player_name or "") .. " wrote \"" .. @@ -2606,18 +2605,18 @@ local function register_sign(material, desc, def) }) end -register_sign("wood", "Wooden", { +register_sign("wood", S("Wooden"), { sounds = default.node_sound_wood_defaults(), groups = {choppy = 2, attached_node = 1, flammable = 2, oddly_breakable_by_hand = 3} }) -register_sign("steel", "Steel", { +register_sign("steel", S("Steel"), { sounds = default.node_sound_metal_defaults(), groups = {cracky = 2, attached_node = 1} }) minetest.register_node("default:ladder_wood", { - description = "Wooden Ladder", + description = S("Wooden Ladder"), drawtype = "signlike", tiles = {"default_ladder_wood.png"}, inventory_image = "default_ladder_wood.png", @@ -2640,7 +2639,7 @@ minetest.register_node("default:ladder_wood", { }) minetest.register_node("default:ladder_steel", { - description = "Steel Ladder", + description = S("Steel Ladder"), drawtype = "signlike", tiles = {"default_ladder_steel.png"}, inventory_image = "default_ladder_steel.png", @@ -2662,7 +2661,7 @@ minetest.register_node("default:ladder_steel", { }) default.register_fence("default:fence_wood", { - description = "Apple Wood Fence", + description = S("Apple Wood Fence"), texture = "default_fence_wood.png", inventory_image = "default_fence_overlay.png^default_wood.png^" .. "default_fence_overlay.png^[makealpha:255,126,126", @@ -2674,7 +2673,7 @@ default.register_fence("default:fence_wood", { }) default.register_fence("default:fence_acacia_wood", { - description = "Acacia Wood Fence", + description = S("Acacia Wood Fence"), texture = "default_fence_acacia_wood.png", inventory_image = "default_fence_overlay.png^default_acacia_wood.png^" .. "default_fence_overlay.png^[makealpha:255,126,126", @@ -2686,7 +2685,7 @@ default.register_fence("default:fence_acacia_wood", { }) default.register_fence("default:fence_junglewood", { - description = "Jungle Wood Fence", + description = S("Jungle Wood Fence"), texture = "default_fence_junglewood.png", inventory_image = "default_fence_overlay.png^default_junglewood.png^" .. "default_fence_overlay.png^[makealpha:255,126,126", @@ -2698,7 +2697,7 @@ default.register_fence("default:fence_junglewood", { }) default.register_fence("default:fence_pine_wood", { - description = "Pine Wood Fence", + description = S("Pine Wood Fence"), texture = "default_fence_pine_wood.png", inventory_image = "default_fence_overlay.png^default_pine_wood.png^" .. "default_fence_overlay.png^[makealpha:255,126,126", @@ -2710,7 +2709,7 @@ default.register_fence("default:fence_pine_wood", { }) default.register_fence("default:fence_aspen_wood", { - description = "Aspen Wood Fence", + description = S("Aspen Wood Fence"), texture = "default_fence_aspen_wood.png", inventory_image = "default_fence_overlay.png^default_aspen_wood.png^" .. "default_fence_overlay.png^[makealpha:255,126,126", @@ -2722,7 +2721,7 @@ default.register_fence("default:fence_aspen_wood", { }) default.register_fence_rail("default:fence_rail_wood", { - description = "Apple Wood Fence Rail", + description = S("Apple Wood Fence Rail"), texture = "default_fence_rail_wood.png", inventory_image = "default_fence_rail_overlay.png^default_wood.png^" .. "default_fence_rail_overlay.png^[makealpha:255,126,126", @@ -2734,7 +2733,7 @@ default.register_fence_rail("default:fence_rail_wood", { }) default.register_fence_rail("default:fence_rail_acacia_wood", { - description = "Acacia Wood Fence Rail", + description = S("Acacia Wood Fence Rail"), texture = "default_fence_rail_acacia_wood.png", inventory_image = "default_fence_rail_overlay.png^default_acacia_wood.png^" .. "default_fence_rail_overlay.png^[makealpha:255,126,126", @@ -2746,7 +2745,7 @@ default.register_fence_rail("default:fence_rail_acacia_wood", { }) default.register_fence_rail("default:fence_rail_junglewood", { - description = "Jungle Wood Fence Rail", + description = S("Jungle Wood Fence Rail"), texture = "default_fence_rail_junglewood.png", inventory_image = "default_fence_rail_overlay.png^default_junglewood.png^" .. "default_fence_rail_overlay.png^[makealpha:255,126,126", @@ -2758,7 +2757,7 @@ default.register_fence_rail("default:fence_rail_junglewood", { }) default.register_fence_rail("default:fence_rail_pine_wood", { - description = "Pine Wood Fence Rail", + description = S("Pine Wood Fence Rail"), texture = "default_fence_rail_pine_wood.png", inventory_image = "default_fence_rail_overlay.png^default_pine_wood.png^" .. "default_fence_rail_overlay.png^[makealpha:255,126,126", @@ -2770,7 +2769,7 @@ default.register_fence_rail("default:fence_rail_pine_wood", { }) default.register_fence_rail("default:fence_rail_aspen_wood", { - description = "Aspen Wood Fence Rail", + description = S("Aspen Wood Fence Rail"), texture = "default_fence_rail_aspen_wood.png", inventory_image = "default_fence_rail_overlay.png^default_aspen_wood.png^" .. "default_fence_rail_overlay.png^[makealpha:255,126,126", @@ -2782,7 +2781,7 @@ default.register_fence_rail("default:fence_rail_aspen_wood", { }) minetest.register_node("default:glass", { - description = "Glass", + description = S("Glass"), drawtype = "glasslike_framed_optional", tiles = {"default_glass.png", "default_glass_detail.png"}, paramtype = "light", @@ -2794,7 +2793,7 @@ minetest.register_node("default:glass", { }) minetest.register_node("default:obsidian_glass", { - description = "Obsidian Glass", + description = S("Obsidian Glass"), drawtype = "glasslike_framed_optional", tiles = {"default_obsidian_glass.png", "default_obsidian_glass_detail.png"}, paramtype = "light", @@ -2807,7 +2806,7 @@ minetest.register_node("default:obsidian_glass", { minetest.register_node("default:brick", { - description = "Brick Block", + description = S("Brick Block"), paramtype2 = "facedir", place_param2 = 0, tiles = {"default_brick.png"}, @@ -2818,7 +2817,7 @@ minetest.register_node("default:brick", { minetest.register_node("default:meselamp", { - description = "Mese Lamp", + description = S("Mese Lamp"), drawtype = "glasslike", tiles = {"default_meselamp.png"}, paramtype = "light", @@ -2830,7 +2829,7 @@ minetest.register_node("default:meselamp", { }) minetest.register_node("default:mese_post_light", { - description = "Mese Post Light", + description = S("Mese Post Light"), tiles = {"default_mese_post_light_top.png", "default_mese_post_light_top.png", "default_mese_post_light_side_dark.png", "default_mese_post_light_side_dark.png", "default_mese_post_light_side.png", "default_mese_post_light_side.png"}, @@ -2855,7 +2854,7 @@ minetest.register_node("default:mese_post_light", { -- minetest.register_node("default:cloud", { - description = "Cloud", + description = S("Cloud"), tiles = {"default_cloud.png"}, is_ground_content = false, sounds = default.node_sound_defaults(), diff --git a/mods/default/tools.lua b/mods/default/tools.lua index f7981157..d792d14a 100644 --- a/mods/default/tools.lua +++ b/mods/default/tools.lua @@ -1,5 +1,8 @@ -- mods/default/tools.lua +-- support for MT game translation. +local S = default.get_translator + -- The hand minetest.register_item(":", { type = "none", @@ -22,7 +25,7 @@ minetest.register_item(":", { -- minetest.register_tool("default:pick_wood", { - description = "Wooden Pickaxe", + description = S("Wooden Pickaxe"), inventory_image = "default_tool_woodpick.png", tool_capabilities = { full_punch_interval = 1.2, @@ -37,7 +40,7 @@ minetest.register_tool("default:pick_wood", { }) minetest.register_tool("default:pick_stone", { - description = "Stone Pickaxe", + description = S("Stone Pickaxe"), inventory_image = "default_tool_stonepick.png", tool_capabilities = { full_punch_interval = 1.3, @@ -52,7 +55,7 @@ minetest.register_tool("default:pick_stone", { }) minetest.register_tool("default:pick_bronze", { - description = "Bronze Pickaxe", + description = S("Bronze Pickaxe"), inventory_image = "default_tool_bronzepick.png", tool_capabilities = { full_punch_interval = 1.0, @@ -67,7 +70,7 @@ minetest.register_tool("default:pick_bronze", { }) minetest.register_tool("default:pick_steel", { - description = "Steel Pickaxe", + description = S("Steel Pickaxe"), inventory_image = "default_tool_steelpick.png", tool_capabilities = { full_punch_interval = 1.0, @@ -82,7 +85,7 @@ minetest.register_tool("default:pick_steel", { }) minetest.register_tool("default:pick_mese", { - description = "Mese Pickaxe", + description = S("Mese Pickaxe"), inventory_image = "default_tool_mesepick.png", tool_capabilities = { full_punch_interval = 0.9, @@ -97,7 +100,7 @@ minetest.register_tool("default:pick_mese", { }) minetest.register_tool("default:pick_diamond", { - description = "Diamond Pickaxe", + description = S("Diamond Pickaxe"), inventory_image = "default_tool_diamondpick.png", tool_capabilities = { full_punch_interval = 0.9, @@ -116,7 +119,7 @@ minetest.register_tool("default:pick_diamond", { -- minetest.register_tool("default:shovel_wood", { - description = "Wooden Shovel", + description = S("Wooden Shovel"), inventory_image = "default_tool_woodshovel.png", wield_image = "default_tool_woodshovel.png^[transformR90", tool_capabilities = { @@ -132,7 +135,7 @@ minetest.register_tool("default:shovel_wood", { }) minetest.register_tool("default:shovel_stone", { - description = "Stone Shovel", + description = S("Stone Shovel"), inventory_image = "default_tool_stoneshovel.png", wield_image = "default_tool_stoneshovel.png^[transformR90", tool_capabilities = { @@ -148,7 +151,7 @@ minetest.register_tool("default:shovel_stone", { }) minetest.register_tool("default:shovel_bronze", { - description = "Bronze Shovel", + description = S("Bronze Shovel"), inventory_image = "default_tool_bronzeshovel.png", wield_image = "default_tool_bronzeshovel.png^[transformR90", tool_capabilities = { @@ -164,7 +167,7 @@ minetest.register_tool("default:shovel_bronze", { }) minetest.register_tool("default:shovel_steel", { - description = "Steel Shovel", + description = S("Steel Shovel"), inventory_image = "default_tool_steelshovel.png", wield_image = "default_tool_steelshovel.png^[transformR90", tool_capabilities = { @@ -180,7 +183,7 @@ minetest.register_tool("default:shovel_steel", { }) minetest.register_tool("default:shovel_mese", { - description = "Mese Shovel", + description = S("Mese Shovel"), inventory_image = "default_tool_meseshovel.png", wield_image = "default_tool_meseshovel.png^[transformR90", tool_capabilities = { @@ -196,7 +199,7 @@ minetest.register_tool("default:shovel_mese", { }) minetest.register_tool("default:shovel_diamond", { - description = "Diamond Shovel", + description = S("Diamond Shovel"), inventory_image = "default_tool_diamondshovel.png", wield_image = "default_tool_diamondshovel.png^[transformR90", tool_capabilities = { @@ -216,7 +219,7 @@ minetest.register_tool("default:shovel_diamond", { -- minetest.register_tool("default:axe_wood", { - description = "Wooden Axe", + description = S("Wooden Axe"), inventory_image = "default_tool_woodaxe.png", tool_capabilities = { full_punch_interval = 1.0, @@ -231,7 +234,7 @@ minetest.register_tool("default:axe_wood", { }) minetest.register_tool("default:axe_stone", { - description = "Stone Axe", + description = S("Stone Axe"), inventory_image = "default_tool_stoneaxe.png", tool_capabilities = { full_punch_interval = 1.2, @@ -246,7 +249,7 @@ minetest.register_tool("default:axe_stone", { }) minetest.register_tool("default:axe_bronze", { - description = "Bronze Axe", + description = S("Bronze Axe"), inventory_image = "default_tool_bronzeaxe.png", tool_capabilities = { full_punch_interval = 1.0, @@ -261,7 +264,7 @@ minetest.register_tool("default:axe_bronze", { }) minetest.register_tool("default:axe_steel", { - description = "Steel Axe", + description = S("Steel Axe"), inventory_image = "default_tool_steelaxe.png", tool_capabilities = { full_punch_interval = 1.0, @@ -276,7 +279,7 @@ minetest.register_tool("default:axe_steel", { }) minetest.register_tool("default:axe_mese", { - description = "Mese Axe", + description = S("Mese Axe"), inventory_image = "default_tool_meseaxe.png", tool_capabilities = { full_punch_interval = 0.9, @@ -291,7 +294,7 @@ minetest.register_tool("default:axe_mese", { }) minetest.register_tool("default:axe_diamond", { - description = "Diamond Axe", + description = S("Diamond Axe"), inventory_image = "default_tool_diamondaxe.png", tool_capabilities = { full_punch_interval = 0.9, @@ -310,7 +313,7 @@ minetest.register_tool("default:axe_diamond", { -- minetest.register_tool("default:sword_wood", { - description = "Wooden Sword", + description = S("Wooden Sword"), inventory_image = "default_tool_woodsword.png", tool_capabilities = { full_punch_interval = 1, @@ -325,7 +328,7 @@ minetest.register_tool("default:sword_wood", { }) minetest.register_tool("default:sword_stone", { - description = "Stone Sword", + description = S("Stone Sword"), inventory_image = "default_tool_stonesword.png", tool_capabilities = { full_punch_interval = 1.2, @@ -340,7 +343,7 @@ minetest.register_tool("default:sword_stone", { }) minetest.register_tool("default:sword_bronze", { - description = "Bronze Sword", + description = S("Bronze Sword"), inventory_image = "default_tool_bronzesword.png", tool_capabilities = { full_punch_interval = 0.8, @@ -355,7 +358,7 @@ minetest.register_tool("default:sword_bronze", { }) minetest.register_tool("default:sword_steel", { - description = "Steel Sword", + description = S("Steel Sword"), inventory_image = "default_tool_steelsword.png", tool_capabilities = { full_punch_interval = 0.8, @@ -370,7 +373,7 @@ minetest.register_tool("default:sword_steel", { }) minetest.register_tool("default:sword_mese", { - description = "Mese Sword", + description = S("Mese Sword"), inventory_image = "default_tool_mesesword.png", tool_capabilities = { full_punch_interval = 0.7, @@ -385,7 +388,7 @@ minetest.register_tool("default:sword_mese", { }) minetest.register_tool("default:sword_diamond", { - description = "Diamond Sword", + description = S("Diamond Sword"), inventory_image = "default_tool_diamondsword.png", tool_capabilities = { full_punch_interval = 0.7, @@ -400,7 +403,7 @@ minetest.register_tool("default:sword_diamond", { }) minetest.register_tool("default:key", { - description = "Key", + description = S("Key"), inventory_image = "default_key.png", groups = {key = 1, not_in_creative_inventory = 1}, stack_max = 1, diff --git a/mods/default/torch.lua b/mods/default/torch.lua index 5de5f89f..fcdc1fec 100644 --- a/mods/default/torch.lua +++ b/mods/default/torch.lua @@ -1,3 +1,8 @@ +-- default/torch.lua + +-- support for MT game translation. +local S = default.get_translator + local function on_flood(pos, oldnode, newnode) minetest.add_item(pos, ItemStack("default:torch 1")) -- Play flame-extinguish sound if liquid is not an 'igniter' @@ -14,7 +19,7 @@ local function on_flood(pos, oldnode, newnode) end minetest.register_node("default:torch", { - description = "Torch", + description = S("Torch"), drawtype = "mesh", mesh = "torch_floor.obj", inventory_image = "default_torch_on_floor.png", diff --git a/mods/default/trees.lua b/mods/default/trees.lua index 564b7141..ad3e3f4c 100644 --- a/mods/default/trees.lua +++ b/mods/default/trees.lua @@ -1,3 +1,8 @@ +-- default/trees.lua + +-- support for MT game translation. +local S = default.get_translator + local random = math.random -- @@ -560,9 +565,12 @@ function default.sapling_on_place(itemstack, placer, pointed_thing, interval) then minetest.record_protection_violation(pos, player_name) -- Print extra information to explain +-- minetest.chat_send_player(player_name, +-- itemstack:get_definition().description .. " will intersect protection " .. +-- "on growth") minetest.chat_send_player(player_name, - itemstack:get_definition().description .. " will intersect protection " .. - "on growth") + S("@1 will intersect protection on growth.", + itemstack:get_definition().description)) return itemstack end diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 9a5c9b43..eb5dd6ba 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -1,9 +1,15 @@ +-- doors/init.lua + -- our API object doors = {} doors.registered_doors = {} doors.registered_trapdoors = {} +-- Load support for MT game translation. +local S = minetest.get_translator("doors") + + local function replace_old_owner_information(pos) local meta = minetest.get_meta(pos) local owner = meta:get_string("doors_owner") @@ -71,7 +77,7 @@ end -- this hidden node is placed on top of the bottom, and prevents -- nodes from being placed in the top half of the door. minetest.register_node("doors:hidden", { - description = "Hidden Door Segment", + description = S("Hidden Door Segment"), -- can't use airlike otherwise falling nodes will turn to entities -- and will be forever stuck until door is removed. drawtype = "nodebox", @@ -327,7 +333,7 @@ function doors.register(name, def) if def.protected then meta:set_string("owner", pn) - meta:set_string("infotext", "Owned by " .. pn) + meta:set_string("infotext", S("Owned by @1", pn)) end if not (creative and creative.is_enabled_for and creative.is_enabled_for(pn)) then @@ -401,7 +407,7 @@ function doors.register(name, def) -- verify placer is owner of lockable door if owner ~= pname then minetest.record_protection_violation(pos, pname) - minetest.chat_send_player(pname, "You do not own this locked door.") + minetest.chat_send_player(pname, S("You do not own this locked door.")) return nil end @@ -411,7 +417,7 @@ function doors.register(name, def) meta:set_string("key_lock_secret", secret) end - return secret, "a locked door", owner + return secret, S("a locked door"), owner end def.node_dig_prediction = "" else @@ -449,7 +455,7 @@ end doors.register("door_wood", { tiles = {{ name = "doors_door_wood.png", backface_culling = true }}, - description = "Wooden Door", + description = S("Wooden Door"), inventory_image = "doors_item_wood.png", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, recipe = { @@ -461,7 +467,7 @@ doors.register("door_wood", { doors.register("door_steel", { tiles = {{name = "doors_door_steel.png", backface_culling = true}}, - description = "Steel Door", + description = S("Steel Door"), inventory_image = "doors_item_steel.png", protected = true, groups = {cracky = 1, level = 2}, @@ -477,7 +483,7 @@ doors.register("door_steel", { doors.register("door_glass", { tiles = {"doors_door_glass.png"}, - description = "Glass Door", + description = S("Glass Door"), inventory_image = "doors_item_glass.png", groups = {cracky=3, oddly_breakable_by_hand=3}, sounds = default.node_sound_glass_defaults(), @@ -492,7 +498,7 @@ doors.register("door_glass", { doors.register("door_obsidian_glass", { tiles = {"doors_door_obsidian_glass.png"}, - description = "Obsidian Glass Door", + description = S("Obsidian Glass Door"), inventory_image = "doors_item_obsidian_glass.png", groups = {cracky=3}, sounds = default.node_sound_glass_defaults(), @@ -580,7 +586,7 @@ function doors.register_trapdoor(name, def) local pn = placer:get_player_name() local meta = minetest.get_meta(pos) meta:set_string("owner", pn) - meta:set_string("infotext", "Owned by "..pn) + meta:set_string("infotext", S("Owned by @1", pn)) return (creative and creative.is_enabled_for and creative.is_enabled_for(pn)) end @@ -599,7 +605,7 @@ function doors.register_trapdoor(name, def) -- verify placer is owner of lockable door if owner ~= pname then minetest.record_protection_violation(pos, pname) - minetest.chat_send_player(pname, "You do not own this trapdoor.") + minetest.chat_send_player(pname, S("You do not own this trapdoor.")) return nil end @@ -609,7 +615,7 @@ function doors.register_trapdoor(name, def) meta:set_string("key_lock_secret", secret) end - return secret, "a locked trapdoor", owner + return secret, S("a locked trapdoor"), owner end def.node_dig_prediction = "" else @@ -679,7 +685,7 @@ function doors.register_trapdoor(name, def) end doors.register_trapdoor("doors:trapdoor", { - description = "Wooden Trapdoor", + description = S("Wooden Trapdoor"), inventory_image = "doors_trapdoor.png", wield_image = "doors_trapdoor.png", tile_front = "doors_trapdoor.png", @@ -688,7 +694,7 @@ doors.register_trapdoor("doors:trapdoor", { }) doors.register_trapdoor("doors:trapdoor_steel", { - description = "Steel Trapdoor", + description = S("Steel Trapdoor"), inventory_image = "doors_trapdoor_steel.png", wield_image = "doors_trapdoor_steel.png", tile_front = "doors_trapdoor_steel.png", @@ -795,35 +801,35 @@ function doors.register_fencegate(name, def) end doors.register_fencegate("doors:gate_wood", { - description = "Apple Wood Fence Gate", + description = S("Apple Wood Fence Gate"), texture = "default_wood.png", material = "default:wood", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2} }) doors.register_fencegate("doors:gate_acacia_wood", { - description = "Acacia Wood Fence Gate", + description = S("Acacia Wood Fence Gate"), texture = "default_acacia_wood.png", material = "default:acacia_wood", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2} }) doors.register_fencegate("doors:gate_junglewood", { - description = "Jungle Wood Fence Gate", + description = S("Jungle Wood Fence Gate"), texture = "default_junglewood.png", material = "default:junglewood", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2} }) doors.register_fencegate("doors:gate_pine_wood", { - description = "Pine Wood Fence Gate", + description = S("Pine Wood Fence Gate"), texture = "default_pine_wood.png", material = "default:pine_wood", groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3} }) doors.register_fencegate("doors:gate_aspen_wood", { - description = "Aspen Wood Fence Gate", + description = S("Aspen Wood Fence Gate"), texture = "default_aspen_wood.png", material = "default:aspen_wood", groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3} diff --git a/mods/dye/init.lua b/mods/dye/init.lua index ed9da085..240ba418 100644 --- a/mods/dye/init.lua +++ b/mods/dye/init.lua @@ -1,23 +1,28 @@ +-- dye/init.lua + dye = {} +-- Load support for MT game translation. +local S = minetest.get_translator("dye") + -- Make dye names and descriptions available globally dye.dyes = { - {"white", "White"}, - {"grey", "Grey"}, - {"dark_grey", "Dark grey"}, - {"black", "Black"}, - {"violet", "Violet"}, - {"blue", "Blue"}, - {"cyan", "Cyan"}, - {"dark_green", "Dark green"}, - {"green", "Green"}, - {"yellow", "Yellow"}, - {"brown", "Brown"}, - {"orange", "Orange"}, - {"red", "Red"}, - {"magenta", "Magenta"}, - {"pink", "Pink"}, + {"white", S("White")}, + {"grey", S("Grey")}, + {"dark_grey", S("Dark Grey")}, + {"black", S("Black")}, + {"violet", S("Violet")}, + {"blue", S("Blue")}, + {"cyan", S("Cyan")}, + {"dark_green", S("Dark Green")}, + {"green", S("Green")}, + {"yellow", S("Yellow")}, + {"brown", S("Brown")}, + {"orange", S("Orange")}, + {"red", S("Red")}, + {"magenta", S("Magenta")}, + {"pink", S("Pink")}, } -- Define items @@ -30,7 +35,7 @@ for _, row in ipairs(dye.dyes) do minetest.register_craftitem("dye:" .. name, { inventory_image = "dye_" .. name .. ".png", - description = description .. " Dye", + description = S("@1 Dye", description), groups = groups }) diff --git a/mods/farming/api.lua b/mods/farming/api.lua index 4a7b93df..6c13b11b 100644 --- a/mods/farming/api.lua +++ b/mods/farming/api.lua @@ -1,3 +1,7 @@ +-- farming/api.lua + +-- support for MT game translation. +local S = farming.get_translator -- Wear out hoes, place soil -- TODO Ignore group:flower @@ -78,7 +82,7 @@ farming.register_hoe = function(name, def) end -- Check def table if def.description == nil then - def.description = "Hoe" + def.description = S("Hoe") end if def.inventory_image == nil then def.inventory_image = "unknown_item.png" @@ -251,7 +255,7 @@ farming.register_plant = function(name, def) -- Check def table if not def.description then - def.description = "Seed" + def.description = S("Seed") end if not def.inventory_image then def.inventory_image = "unknown_item.png" diff --git a/mods/farming/hoes.lua b/mods/farming/hoes.lua index 2f47ec07..d005f6d0 100644 --- a/mods/farming/hoes.lua +++ b/mods/farming/hoes.lua @@ -1,5 +1,10 @@ +-- farming/hoes.lua + +-- support for MT game translation. +local S = farming.get_translator + farming.register_hoe(":farming:hoe_wood", { - description = "Wooden Hoe", + description = S("Wooden Hoe"), inventory_image = "farming_tool_woodhoe.png", max_uses = 30, material = "group:wood", @@ -7,7 +12,7 @@ farming.register_hoe(":farming:hoe_wood", { }) farming.register_hoe(":farming:hoe_stone", { - description = "Stone Hoe", + description = S("Stone Hoe"), inventory_image = "farming_tool_stonehoe.png", max_uses = 90, material = "group:stone", @@ -15,7 +20,7 @@ farming.register_hoe(":farming:hoe_stone", { }) farming.register_hoe(":farming:hoe_steel", { - description = "Steel Hoe", + description = S("Steel Hoe"), inventory_image = "farming_tool_steelhoe.png", max_uses = 500, material = "default:steel_ingot", @@ -28,21 +33,21 @@ farming.register_hoe(":farming:hoe_steel", { -- release. farming.register_hoe(":farming:hoe_bronze", { - description = "Bronze Hoe", + description = S("Bronze Hoe"), inventory_image = "farming_tool_bronzehoe.png", max_uses = 220, groups = {hoe = 1, not_in_creative_inventory = 1}, }) farming.register_hoe(":farming:hoe_mese", { - description = "Mese Hoe", + description = S("Mese Hoe"), inventory_image = "farming_tool_mesehoe.png", max_uses = 350, groups = {hoe = 1, not_in_creative_inventory = 1}, }) farming.register_hoe(":farming:hoe_diamond", { - description = "Diamond Hoe", + description = S("Diamond Hoe"), inventory_image = "farming_tool_diamondhoe.png", max_uses = 500, groups = {hoe = 1, not_in_creative_inventory = 1}, diff --git a/mods/farming/init.lua b/mods/farming/init.lua index 723201de..2344d45e 100644 --- a/mods/farming/init.lua +++ b/mods/farming/init.lua @@ -1,8 +1,13 @@ +-- farming/init.lua + +-- Load support for MT game translation. +local S = minetest.get_translator("farming") + -- Global farming namespace farming = {} farming.path = minetest.get_modpath("farming") - +farming.get_translator = S -- Load files @@ -14,7 +19,7 @@ dofile(farming.path .. "/hoes.lua") -- WHEAT farming.register_plant("farming:wheat", { - description = "Wheat Seed", + description = S("Wheat Seed"), paramtype2 = "meshoptions", inventory_image = "farming_wheat_seed.png", steps = 8, @@ -26,13 +31,13 @@ farming.register_plant("farming:wheat", { }) minetest.register_craftitem("farming:flour", { - description = "Flour", + description = S("Flour"), inventory_image = "farming_flour.png", groups = {food_flour = 1, flammable = 1}, }) minetest.register_craftitem("farming:bread", { - description = "Bread", + description = S("Bread"), inventory_image = "farming_bread.png", on_use = minetest.item_eat(5), groups = {food_bread = 1, flammable = 2}, @@ -55,7 +60,7 @@ minetest.register_craft({ -- Cotton farming.register_plant("farming:cotton", { - description = "Cotton Seed", + description = S("Cotton Seed"), inventory_image = "farming_cotton_seed.png", steps = 8, minlight = 13, @@ -65,7 +70,7 @@ farming.register_plant("farming:cotton", { }) minetest.register_craftitem("farming:string", { - description = "String", + description = S("String"), inventory_image = "farming_string.png", groups = {flammable = 2}, }) diff --git a/mods/farming/nodes.lua b/mods/farming/nodes.lua index 8e33966e..8cc76471 100644 --- a/mods/farming/nodes.lua +++ b/mods/farming/nodes.lua @@ -1,3 +1,8 @@ +-- farming/nodes.lua + +-- support for MT game translation. +local S = farming.get_translator + minetest.override_item("default:dirt", { soil = { base = "default:dirt", @@ -55,7 +60,7 @@ minetest.override_item("default:dry_dirt_with_dry_grass", { }) minetest.register_node("farming:soil", { - description = "Soil", + description = S("Soil"), tiles = {"default_dirt.png^farming_soil.png", "default_dirt.png"}, drop = "default:dirt", groups = {crumbly=3, not_in_creative_inventory=1, soil=2, grassland = 1, field = 1}, @@ -68,7 +73,7 @@ minetest.register_node("farming:soil", { }) minetest.register_node("farming:soil_wet", { - description = "Wet Soil", + description = S("Wet Soil"), tiles = {"default_dirt.png^farming_soil_wet.png", "default_dirt.png^farming_soil_wet_side.png"}, drop = "default:dirt", groups = {crumbly=3, not_in_creative_inventory=1, soil=3, wet = 1, grassland = 1, field = 1}, @@ -115,7 +120,7 @@ minetest.override_item("default:desert_sand", { } }) minetest.register_node("farming:desert_sand_soil", { - description = "Desert Sand Soil", + description = S("Desert Sand Soil"), drop = "default:desert_sand", tiles = {"farming_desert_sand_soil.png", "default_desert_sand.png"}, groups = {crumbly=3, not_in_creative_inventory = 1, falling_node=1, sand=1, soil = 2, desert = 1, field = 1}, @@ -128,7 +133,7 @@ minetest.register_node("farming:desert_sand_soil", { }) minetest.register_node("farming:desert_sand_soil_wet", { - description = "Wet Desert Sand Soil", + description = S("Wet Desert Sand Soil"), drop = "default:desert_sand", tiles = {"farming_desert_sand_soil_wet.png", "farming_desert_sand_soil_wet_side.png"}, groups = {crumbly=3, falling_node=1, sand=1, not_in_creative_inventory=1, soil=3, wet = 1, desert = 1, field = 1}, @@ -141,7 +146,7 @@ minetest.register_node("farming:desert_sand_soil_wet", { }) minetest.register_node("farming:straw", { - description = "Straw", + description = S("Straw"), tiles = {"farming_straw.png"}, is_ground_content = false, groups = {snappy=3, flammable=4, fall_damage_add_percent=-30}, @@ -153,8 +158,8 @@ stairs.register_stair_and_slab( "farming:straw", {snappy = 3, flammable = 4}, {"farming_straw.png"}, - "Straw Stair", - "Straw Slab", + S("Straw Stair"), + S("Straw Slab"), default.node_sound_leaves_defaults(), true ) diff --git a/mods/fire/init.lua b/mods/fire/init.lua index 9c36720a..3c8a8fcf 100644 --- a/mods/fire/init.lua +++ b/mods/fire/init.lua @@ -1,7 +1,13 @@ +-- fire/init.lua + -- Global namespace for functions fire = {} +-- Load support for MT game translation. +local S = minetest.get_translator("fire") + + -- 'Enable fire' setting local fire_enabled = minetest.settings:get_bool("enable_fire") @@ -82,7 +88,7 @@ minetest.register_node("fire:basic_flame", { }) minetest.register_node("fire:permanent_flame", { - description = "Permanent Flame", + description = S("Permanent Flame"), drawtype = "firelike", tiles = { { @@ -113,7 +119,7 @@ minetest.register_node("fire:permanent_flame", { -- Flint and steel minetest.register_tool("fire:flint_and_steel", { - description = "Flint and Steel", + description = S("Flint and Steel"), inventory_image = "fire_flint_steel.png", sound = {breaks = "default_tool_breaks"}, diff --git a/mods/fireflies/init.lua b/mods/fireflies/init.lua index 066bfb4c..866a116a 100644 --- a/mods/fireflies/init.lua +++ b/mods/fireflies/init.lua @@ -1,6 +1,11 @@ --- firefly +-- firefly/init.lua + +-- Load support for MT game translation. +local S = minetest.get_translator("fireflies") + + minetest.register_node("fireflies:firefly", { - description = "Firefly", + description = S("Firefly"), drawtype = "plantlike", tiles = {{ name = "fireflies_firefly_animated.png", @@ -47,7 +52,7 @@ minetest.register_node("fireflies:firefly", { }) minetest.register_node("fireflies:hidden_firefly", { - description = "Hidden Firefly", + description = S("Hidden Firefly"), drawtype = "airlike", inventory_image = "fireflies_firefly.png", wield_image = "fireflies_firefly.png", @@ -84,7 +89,7 @@ minetest.register_node("fireflies:hidden_firefly", { -- bug net minetest.register_tool("fireflies:bug_net", { - description = "Bug Net", + description = S("Bug Net"), inventory_image = "fireflies_bugnet.png", on_use = function(itemstack, player, pointed_thing) if not pointed_thing or pointed_thing.type ~= "node" or @@ -120,7 +125,7 @@ minetest.register_craft( { -- firefly in a bottle minetest.register_node("fireflies:firefly_bottle", { - description = "Firefly in a Bottle", + description = S("Firefly in a Bottle"), inventory_image = "fireflies_bottle.png", wield_image = "fireflies_bottle.png", tiles = {{ diff --git a/mods/flowers/init.lua b/mods/flowers/init.lua index 9da78ed8..97317501 100644 --- a/mods/flowers/init.lua +++ b/mods/flowers/init.lua @@ -1,3 +1,5 @@ +-- flowers/init.lua + -- Minetest 0.4 mod: default -- See README.txt for licensing and other information. @@ -6,6 +8,9 @@ flowers = {} +-- Load support for MT game translation. +local S = minetest.get_translator("flowers") + -- Map Generation @@ -58,49 +63,49 @@ end flowers.datas = { { "rose", - "Red Rose", + S("Red Rose"), {-2 / 16, -0.5, -2 / 16, 2 / 16, 5 / 16, 2 / 16}, {color_red = 1, flammable = 1} }, { "tulip", - "Orange Tulip", + S("Orange Tulip"), {-2 / 16, -0.5, -2 / 16, 2 / 16, 3 / 16, 2 / 16}, {color_orange = 1, flammable = 1} }, { "dandelion_yellow", - "Yellow Dandelion", + S("Yellow Dandelion"), {-4 / 16, -0.5, -4 / 16, 4 / 16, -2 / 16, 4 / 16}, {color_yellow = 1, flammable = 1} }, { "chrysanthemum_green", - "Green Chrysanthemum", + S("Green Chrysanthemum"), {-4 / 16, -0.5, -4 / 16, 4 / 16, -1 / 16, 4 / 16}, {color_green = 1, flammable = 1} }, { "geranium", - "Blue Geranium", + S("Blue Geranium"), {-2 / 16, -0.5, -2 / 16, 2 / 16, 2 / 16, 2 / 16}, {color_blue = 1, flammable = 1} }, { "viola", - "Viola", + S("Viola"), {-5 / 16, -0.5, -5 / 16, 5 / 16, -1 / 16, 5 / 16}, {color_violet = 1, flammable = 1} }, { "dandelion_white", - "White Dandelion", + S("White Dandelion"), {-5 / 16, -0.5, -5 / 16, 5 / 16, -2 / 16, 5 / 16}, {color_white = 1, flammable = 1} }, { "tulip_black", - "Black Tulip", + S("Black Tulip"), {-2 / 16, -0.5, -2 / 16, 2 / 16, 3 / 16, 2 / 16}, {color_black = 1, flammable = 1} }, @@ -180,7 +185,7 @@ minetest.register_abm({ -- minetest.register_node("flowers:mushroom_red", { - description = "Red Mushroom", + description = S("Red Mushroom"), tiles = {"flowers_mushroom_red.png"}, inventory_image = "flowers_mushroom_red.png", wield_image = "flowers_mushroom_red.png", @@ -199,7 +204,7 @@ minetest.register_node("flowers:mushroom_red", { }) minetest.register_node("flowers:mushroom_brown", { - description = "Brown Mushroom", + description = S("Brown Mushroom"), tiles = {"flowers_mushroom_brown.png"}, inventory_image = "flowers_mushroom_brown.png", wield_image = "flowers_mushroom_brown.png", @@ -267,7 +272,7 @@ minetest.register_alias("mushroom:red_natural", "flowers:mushroom_red") -- local waterlily_def = { - description = "Waterlily", + description = S("Waterlily"), drawtype = "nodebox", paramtype = "light", paramtype2 = "facedir", diff --git a/mods/game_commands/init.lua b/mods/game_commands/init.lua index 609c4a75..139a879c 100644 --- a/mods/game_commands/init.lua +++ b/mods/game_commands/init.lua @@ -1,5 +1,11 @@ +-- game_commands/init.lua + +-- Load support for MT game translation. +local S = minetest.get_translator("game_commands") + + minetest.register_chatcommand("killme", { - description = "Kill yourself to respawn", + description = S("Kill yourself to respawn"), func = function(name) local player = minetest.get_player_by_name(name) if player then @@ -15,11 +21,11 @@ minetest.register_chatcommand("killme", { -- There doesn't seem to be a way to get a default spawn pos -- from the lua API - return false, "No static_spawnpoint defined" + return false, S("No static_spawnpoint defined") end else -- Show error message if used when not logged in, eg: from IRC mod - return false, "You need to be online to be killed!" + return false, S("You need to be online to be killed!") end end }) diff --git a/mods/give_initial_stuff/init.lua b/mods/give_initial_stuff/init.lua index 4815bd84..74421dc6 100644 --- a/mods/give_initial_stuff/init.lua +++ b/mods/give_initial_stuff/init.lua @@ -1,3 +1,5 @@ +-- gave_initial_stuff/init.lua + local stuff_string = minetest.settings:get("initial_stuff") or "default:pick_steel,default:axe_steel,default:shovel_steel," .. "default:torch 99,default:cobble 99" diff --git a/mods/map/init.lua b/mods/map/init.lua index e769e77d..c858e141 100644 --- a/mods/map/init.lua +++ b/mods/map/init.lua @@ -1,8 +1,14 @@ +-- map/init.lua + -- Mod global namespace map = {} +-- Load support for MT game translation. +local S = minetest.get_translator("map") + + -- Cache creative mode setting local creative_mode_cache = minetest.settings:get_bool("creative_mode") @@ -49,7 +55,7 @@ minetest.after(5.3, cyclic_update) -- Mapping kit item minetest.register_craftitem("map:mapping_kit", { - description = "Mapping Kit\nUse with 'Minimap' key", + description = S("Mapping Kit\nUse with 'Minimap' key"), inventory_image = "map_mapping_kit.png", stack_max = 1, groups = {flammable = 3}, diff --git a/mods/player_api/init.lua b/mods/player_api/init.lua index 7a1f353e..783ff7e2 100644 --- a/mods/player_api/init.lua +++ b/mods/player_api/init.lua @@ -1,3 +1,5 @@ +-- player/init.lua + dofile(minetest.get_modpath("player_api") .. "/api.lua") -- Default player appearance diff --git a/mods/screwdriver/init.lua b/mods/screwdriver/init.lua index 7fe64a60..59d7b527 100644 --- a/mods/screwdriver/init.lua +++ b/mods/screwdriver/init.lua @@ -1,5 +1,11 @@ +-- screwdriver/init.lua + screwdriver = {} +-- Load support for MT game translation. +local S = minetest.get_translator("screwdriver") + + screwdriver.ROTATE_FACE = 1 screwdriver.ROTATE_AXIS = 2 screwdriver.disallow = function(pos, node, user, mode, new_param2) @@ -144,7 +150,7 @@ end -- Screwdriver minetest.register_tool("screwdriver:screwdriver", { - description = "Screwdriver (left-click rotates face, right-click rotates axis)", + description = S("Screwdriver (left-click rotates face, right-click rotates axis)"), inventory_image = "screwdriver.png", groups = {tool = 1}, on_use = function(itemstack, user, pointed_thing) diff --git a/mods/sethome/init.lua b/mods/sethome/init.lua index 4563381d..bad7806d 100644 --- a/mods/sethome/init.lua +++ b/mods/sethome/init.lua @@ -1,6 +1,11 @@ +-- sethome/init.lua sethome = {} +-- Load support for MT game translation. +local S = minetest.get_translator("sethome") + + local homes_file = minetest.get_worldpath() .. "/homes" local homepos = {} @@ -68,30 +73,30 @@ sethome.go = function(name) end minetest.register_privilege("home", { - description = "Can use /sethome and /home", + description = S("Can use /sethome and /home"), give_to_singleplayer = false }) minetest.register_chatcommand("home", { - description = "Teleport you to your home point", + description = S("Teleport you to your home point"), privs = {home = true}, func = function(name) if sethome.go(name) then - return true, "Teleported to home!" + return true, S("Teleported to home!") end - return false, "Set a home using /sethome" + return false, S("Set a home using /sethome") end, }) minetest.register_chatcommand("sethome", { - description = "Set your home point", + description = S("Set your home point"), privs = {home = true}, func = function(name) name = name or "" -- fallback to blank name if nil local player = minetest.get_player_by_name(name) if player and sethome.set(name, player:get_pos()) then - return true, "Home set!" + return true, S("Home set!") end - return false, "Player not found!" + return false, S("Player not found!") end, }) diff --git a/mods/sfinv/init.lua b/mods/sfinv/init.lua index 056047f3..e9021396 100644 --- a/mods/sfinv/init.lua +++ b/mods/sfinv/init.lua @@ -1,3 +1,5 @@ +-- sfinv/init.lua + dofile(minetest.get_modpath("sfinv") .. "/api.lua") sfinv.register_page("sfinv:crafting", { diff --git a/mods/spawn/init.lua b/mods/spawn/init.lua index 7bbec86e..0e1261e6 100644 --- a/mods/spawn/init.lua +++ b/mods/spawn/init.lua @@ -1,3 +1,5 @@ +-- spawn/init.lua + -- Disable by mapgen, setting or if 'static_spawnpoint' is set -------------------------------------------------------------- diff --git a/mods/stairs/init.lua b/mods/stairs/init.lua index 8f9c316b..86146576 100644 --- a/mods/stairs/init.lua +++ b/mods/stairs/init.lua @@ -1,3 +1,5 @@ +-- stairs/init.lua + -- Minetest 0.4 mod: stairs -- See README.txt for licensing and other information. @@ -6,6 +8,9 @@ stairs = {} +-- Load support for MT game translation. +local S = minetest.get_translator("stairs") + -- Register aliases for new pine node names @@ -317,7 +322,7 @@ function stairs.register_stair_inner(subname, recipeitem, groups, images, new_groups.stair = 1 warn_if_exists("stairs:stair_inner_" .. subname) minetest.register_node(":stairs:stair_inner_" .. subname, { - description = "Inner " .. description, + description = S("Inner @1", description), drawtype = "nodebox", tiles = stair_images, paramtype = "light", @@ -399,7 +404,7 @@ function stairs.register_stair_outer(subname, recipeitem, groups, images, new_groups.stair = 1 warn_if_exists("stairs:stair_outer_" .. subname) minetest.register_node(":stairs:stair_outer_" .. subname, { - description = "Outer " .. description, + description = S("Outer @1", description), drawtype = "nodebox", tiles = stair_images, paramtype = "light", @@ -472,8 +477,8 @@ stairs.register_stair_and_slab( "default:wood", {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, {"default_wood.png"}, - "Wooden Stair", - "Wooden Slab", + S("Wooden Stair"), + S("Wooden Slab"), default.node_sound_wood_defaults(), false ) @@ -483,8 +488,8 @@ stairs.register_stair_and_slab( "default:junglewood", {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, {"default_junglewood.png"}, - "Jungle Wood Stair", - "Jungle Wood Slab", + S("Jungle Wood Stair"), + S("Jungle Wood Slab"), default.node_sound_wood_defaults(), false ) @@ -494,8 +499,8 @@ stairs.register_stair_and_slab( "default:pine_wood", {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}, {"default_pine_wood.png"}, - "Pine Wood Stair", - "Pine Wood Slab", + S("Pine Wood Stair"), + S("Pine Wood Slab"), default.node_sound_wood_defaults(), false ) @@ -505,8 +510,8 @@ stairs.register_stair_and_slab( "default:acacia_wood", {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, {"default_acacia_wood.png"}, - "Acacia Wood Stair", - "Acacia Wood Slab", + S("Acacia Wood Stair"), + S("Acacia Wood Slab"), default.node_sound_wood_defaults(), false ) @@ -516,8 +521,8 @@ stairs.register_stair_and_slab( "default:aspen_wood", {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}, {"default_aspen_wood.png"}, - "Aspen Wood Stair", - "Aspen Wood Slab", + S("Aspen Wood Stair"), + S("Aspen Wood Slab"), default.node_sound_wood_defaults(), false ) @@ -527,8 +532,8 @@ stairs.register_stair_and_slab( "default:stone", {cracky = 3}, {"default_stone.png"}, - "Stone Stair", - "Stone Slab", + S("Stone Stair"), + S("Stone Slab"), default.node_sound_stone_defaults(), true ) @@ -538,8 +543,8 @@ stairs.register_stair_and_slab( "default:cobble", {cracky = 3}, {"default_cobble.png"}, - "Cobblestone Stair", - "Cobblestone Slab", + S("Cobblestone Stair"), + S("Cobblestone Slab"), default.node_sound_stone_defaults(), true ) @@ -549,8 +554,8 @@ stairs.register_stair_and_slab( "default:mossycobble", {cracky = 3}, {"default_mossycobble.png"}, - "Mossy Cobblestone Stair", - "Mossy Cobblestone Slab", + S("Mossy Cobblestone Stair"), + S("Mossy Cobblestone Slab"), default.node_sound_stone_defaults(), true ) @@ -560,8 +565,8 @@ stairs.register_stair_and_slab( "default:stonebrick", {cracky = 2}, {"default_stone_brick.png"}, - "Stone Brick Stair", - "Stone Brick Slab", + S("Stone Brick Stair"), + S("Stone Brick Slab"), default.node_sound_stone_defaults(), false ) @@ -571,8 +576,8 @@ stairs.register_stair_and_slab( "default:stone_block", {cracky = 2}, {"default_stone_block.png"}, - "Stone Block Stair", - "Stone Block Slab", + S("Stone Block Stair"), + S("Stone Block Slab"), default.node_sound_stone_defaults(), true ) @@ -582,8 +587,8 @@ stairs.register_stair_and_slab( "default:desert_stone", {cracky = 3}, {"default_desert_stone.png"}, - "Desert Stone Stair", - "Desert Stone Slab", + S("Desert Stone Stair"), + S("Desert Stone Slab"), default.node_sound_stone_defaults(), true ) @@ -593,8 +598,8 @@ stairs.register_stair_and_slab( "default:desert_cobble", {cracky = 3}, {"default_desert_cobble.png"}, - "Desert Cobblestone Stair", - "Desert Cobblestone Slab", + S("Desert Cobblestone Stair"), + S("Desert Cobblestone Slab"), default.node_sound_stone_defaults(), true ) @@ -604,8 +609,8 @@ stairs.register_stair_and_slab( "default:desert_stonebrick", {cracky = 2}, {"default_desert_stone_brick.png"}, - "Desert Stone Brick Stair", - "Desert Stone Brick Slab", + S("Desert Stone Brick Stair"), + S("Desert Stone Brick Slab"), default.node_sound_stone_defaults(), false ) @@ -615,8 +620,8 @@ stairs.register_stair_and_slab( "default:desert_stone_block", {cracky = 2}, {"default_desert_stone_block.png"}, - "Desert Stone Block Stair", - "Desert Stone Block Slab", + S("Desert Stone Block Stair"), + S("Desert Stone Block Slab"), default.node_sound_stone_defaults(), true ) @@ -626,8 +631,8 @@ stairs.register_stair_and_slab( "default:sandstone", {crumbly = 1, cracky = 3}, {"default_sandstone.png"}, - "Sandstone Stair", - "Sandstone Slab", + S("Sandstone Stair"), + S("Sandstone Slab"), default.node_sound_stone_defaults(), true ) @@ -637,8 +642,8 @@ stairs.register_stair_and_slab( "default:sandstonebrick", {cracky = 2}, {"default_sandstone_brick.png"}, - "Sandstone Brick Stair", - "Sandstone Brick Slab", + S("Sandstone Brick Stair"), + S("Sandstone Brick Slab"), default.node_sound_stone_defaults(), false ) @@ -648,8 +653,8 @@ stairs.register_stair_and_slab( "default:sandstone_block", {cracky = 2}, {"default_sandstone_block.png"}, - "Sandstone Block Stair", - "Sandstone Block Slab", + S("Sandstone Block Stair"), + S("Sandstone Block Slab"), default.node_sound_stone_defaults(), true ) @@ -659,8 +664,8 @@ stairs.register_stair_and_slab( "default:desert_sandstone", {crumbly = 1, cracky = 3}, {"default_desert_sandstone.png"}, - "Desert Sandstone Stair", - "Desert Sandstone Slab", + S("Desert Sandstone Stair"), + S("Desert Sandstone Slab"), default.node_sound_stone_defaults(), true ) @@ -670,8 +675,8 @@ stairs.register_stair_and_slab( "default:desert_sandstone_brick", {cracky = 2}, {"default_desert_sandstone_brick.png"}, - "Desert Sandstone Brick Stair", - "Desert Sandstone Brick Slab", + S("Desert Sandstone Brick Stair"), + S("Desert Sandstone Brick Slab"), default.node_sound_stone_defaults(), false ) @@ -681,8 +686,8 @@ stairs.register_stair_and_slab( "default:desert_sandstone_block", {cracky = 2}, {"default_desert_sandstone_block.png"}, - "Desert Sandstone Block Stair", - "Desert Sandstone Block Slab", + S("Desert Sandstone Block Stair"), + S("Desert Sandstone Block Slab"), default.node_sound_stone_defaults(), true ) @@ -692,8 +697,8 @@ stairs.register_stair_and_slab( "default:silver_sandstone", {crumbly = 1, cracky = 3}, {"default_silver_sandstone.png"}, - "Silver Sandstone Stair", - "Silver Sandstone Slab", + S("Silver Sandstone Stair"), + S("Silver Sandstone Slab"), default.node_sound_stone_defaults(), true ) @@ -703,8 +708,8 @@ stairs.register_stair_and_slab( "default:silver_sandstone_brick", {cracky = 2}, {"default_silver_sandstone_brick.png"}, - "Silver Sandstone Brick Stair", - "Silver Sandstone Brick Slab", + S("Silver Sandstone Brick Stair"), + S("Silver Sandstone Brick Slab"), default.node_sound_stone_defaults(), false ) @@ -714,8 +719,8 @@ stairs.register_stair_and_slab( "default:silver_sandstone_block", {cracky = 2}, {"default_silver_sandstone_block.png"}, - "Silver Sandstone Block Stair", - "Silver Sandstone Block Slab", + S("Silver Sandstone Block Stair"), + S("Silver Sandstone Block Slab"), default.node_sound_stone_defaults(), true ) @@ -725,8 +730,8 @@ stairs.register_stair_and_slab( "default:obsidian", {cracky = 1, level = 2}, {"default_obsidian.png"}, - "Obsidian Stair", - "Obsidian Slab", + S("Obsidian Stair"), + S("Obsidian Slab"), default.node_sound_stone_defaults(), true ) @@ -736,8 +741,8 @@ stairs.register_stair_and_slab( "default:obsidianbrick", {cracky = 1, level = 2}, {"default_obsidian_brick.png"}, - "Obsidian Brick Stair", - "Obsidian Brick Slab", + S("Obsidian Brick Stair"), + S("Obsidian Brick Slab"), default.node_sound_stone_defaults(), false ) @@ -747,8 +752,8 @@ stairs.register_stair_and_slab( "default:obsidian_block", {cracky = 1, level = 2}, {"default_obsidian_block.png"}, - "Obsidian Block Stair", - "Obsidian Block Slab", + S("Obsidian Block Stair"), + S("Obsidian Block Slab"), default.node_sound_stone_defaults(), true ) @@ -758,8 +763,8 @@ stairs.register_stair_and_slab( "default:brick", {cracky = 3}, {"default_brick.png"}, - "Brick Stair", - "Brick Slab", + S("Brick Stair"), + S("Brick Slab"), default.node_sound_stone_defaults(), false ) @@ -769,8 +774,8 @@ stairs.register_stair_and_slab( "default:steelblock", {cracky = 1, level = 2}, {"default_steel_block.png"}, - "Steel Block Stair", - "Steel Block Slab", + S("Steel Block Stair"), + S("Steel Block Slab"), default.node_sound_metal_defaults(), true ) @@ -780,8 +785,8 @@ stairs.register_stair_and_slab( "default:tinblock", {cracky = 1, level = 2}, {"default_tin_block.png"}, - "Tin Block Stair", - "Tin Block Slab", + S("Tin Block Stair"), + S("Tin Block Slab"), default.node_sound_metal_defaults(), true ) @@ -791,8 +796,8 @@ stairs.register_stair_and_slab( "default:copperblock", {cracky = 1, level = 2}, {"default_copper_block.png"}, - "Copper Block Stair", - "Copper Block Slab", + S("Copper Block Stair"), + S("Copper Block Slab"), default.node_sound_metal_defaults(), true ) @@ -802,8 +807,8 @@ stairs.register_stair_and_slab( "default:bronzeblock", {cracky = 1, level = 2}, {"default_bronze_block.png"}, - "Bronze Block Stair", - "Bronze Block Slab", + S("Bronze Block Stair"), + S("Bronze Block Slab"), default.node_sound_metal_defaults(), true ) @@ -813,8 +818,8 @@ stairs.register_stair_and_slab( "default:goldblock", {cracky = 1}, {"default_gold_block.png"}, - "Gold Block Stair", - "Gold Block Slab", + S("Gold Block Stair"), + S("Gold Block Slab"), default.node_sound_metal_defaults(), true ) @@ -824,8 +829,8 @@ stairs.register_stair_and_slab( "default:ice", {cracky = 3, cools_lava = 1, slippery = 3}, {"default_ice.png"}, - "Ice Stair", - "Ice Slab", + S("Ice Stair"), + S("Ice Slab"), default.node_sound_glass_defaults(), true ) @@ -835,8 +840,8 @@ stairs.register_stair_and_slab( "default:snowblock", {crumbly = 3, cools_lava = 1, snowy = 1}, {"default_snow.png"}, - "Snow Block Stair", - "Snow Block Slab", + S("Snow Block Stair"), + S("Snow Block Slab"), default.node_sound_snow_defaults(), true ) @@ -850,7 +855,7 @@ stairs.register_stair( {"stairs_glass_split.png", "default_glass.png", "stairs_glass_stairside.png^[transformFX", "stairs_glass_stairside.png", "default_glass.png", "stairs_glass_split.png"}, - "Glass Stair", + S("Glass Stair"), default.node_sound_glass_defaults(), false ) @@ -860,7 +865,7 @@ stairs.register_slab( "default:glass", {cracky = 3}, {"default_glass.png", "default_glass.png", "stairs_glass_split.png"}, - "Glass Slab", + S("Glass Slab"), default.node_sound_glass_defaults(), false ) @@ -872,7 +877,7 @@ stairs.register_stair_inner( {"stairs_glass_stairside.png^[transformR270", "default_glass.png", "stairs_glass_stairside.png^[transformFX", "default_glass.png", "default_glass.png", "stairs_glass_stairside.png"}, - "Glass Stair", + S("Glass Stair"), default.node_sound_glass_defaults(), false ) @@ -884,7 +889,7 @@ stairs.register_stair_outer( {"stairs_glass_stairside.png^[transformR90", "default_glass.png", "stairs_glass_outer_stairside.png", "stairs_glass_stairside.png", "stairs_glass_stairside.png^[transformR90","stairs_glass_outer_stairside.png"}, - "Glass Stair", + S("Glass Stair"), default.node_sound_glass_defaults(), false ) @@ -896,7 +901,7 @@ stairs.register_stair( {"stairs_obsidian_glass_split.png", "default_obsidian_glass.png", "stairs_obsidian_glass_stairside.png^[transformFX", "stairs_obsidian_glass_stairside.png", "default_obsidian_glass.png", "stairs_obsidian_glass_split.png"}, - "Obsidian Glass Stair", + S("Obsidian Glass Stair"), default.node_sound_glass_defaults(), false ) @@ -906,7 +911,7 @@ stairs.register_slab( "default:obsidian_glass", {cracky = 3}, {"default_obsidian_glass.png", "default_obsidian_glass.png", "stairs_obsidian_glass_split.png"}, - "Obsidian Glass Slab", + S("Obsidian Glass Slab"), default.node_sound_glass_defaults(), false ) @@ -918,7 +923,7 @@ stairs.register_stair_inner( {"stairs_obsidian_glass_stairside.png^[transformR270", "default_obsidian_glass.png", "stairs_obsidian_glass_stairside.png^[transformFX", "default_obsidian_glass.png", "default_obsidian_glass.png", "stairs_obsidian_glass_stairside.png"}, - "Obsidian Glass Stair", + S("Obsidian Glass Stair"), default.node_sound_glass_defaults(), false ) @@ -930,7 +935,7 @@ stairs.register_stair_outer( {"stairs_obsidian_glass_stairside.png^[transformR90", "default_obsidian_glass.png", "stairs_obsidian_glass_outer_stairside.png", "stairs_obsidian_glass_stairside.png", "stairs_obsidian_glass_stairside.png^[transformR90","stairs_obsidian_glass_outer_stairside.png"}, - "Obsidian Glass Stair", + S("Obsidian Glass Stair"), default.node_sound_glass_defaults(), false ) diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index 0cf3f098..0e061fa6 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -1,5 +1,11 @@ +-- tnt/init.lua + tnt = {} +-- Load support for MT game translation. +local S = minetest.get_translator("tnt") + + -- Default to enabled when in singleplayer local enable_tnt = minetest.settings:get_bool("enable_tnt") if enable_tnt == nil then @@ -422,7 +428,7 @@ minetest.register_node("tnt:boom", { }) minetest.register_node("tnt:gunpowder", { - description = "Gun Powder", + description = S("Gun Powder"), drawtype = "raillike", paramtype = "light", is_ground_content = false, @@ -547,7 +553,7 @@ minetest.register_craft({ }) minetest.register_craftitem("tnt:tnt_stick", { - description = "TNT Stick", + description = S("TNT Stick"), inventory_image = "tnt_tnt_stick.png", groups = {flammable = 5}, }) @@ -675,6 +681,6 @@ end tnt.register_tnt({ name = "tnt:tnt", - description = "TNT", + description = S("TNT"), radius = tnt_radius, }) diff --git a/mods/vessels/init.lua b/mods/vessels/init.lua index e5c68a74..6212ba8e 100644 --- a/mods/vessels/init.lua +++ b/mods/vessels/init.lua @@ -1,6 +1,12 @@ +-- vessels/init.lua + -- Minetest 0.4 mod: vessels -- See README.txt for licensing and other information. +-- Load support for MT game translation. +local S = minetest.get_translator("vessels") + + local vessels_shelf_formspec = "size[8,7;]" .. "list[context;vessels;0,0.3;8,2;]" .. @@ -30,7 +36,7 @@ local function get_vessels_shelf_formspec(inv) end minetest.register_node("vessels:shelf", { - description = "Vessels Shelf", + description = S("Vessels Shelf"), tiles = {"default_wood.png", "default_wood.png", "default_wood.png", "default_wood.png", "vessels_shelf.png", "vessels_shelf.png"}, paramtype2 = "facedir", @@ -91,7 +97,7 @@ minetest.register_craft({ }) minetest.register_node("vessels:glass_bottle", { - description = "Empty Glass Bottle", + description = S("Empty Glass Bottle"), drawtype = "plantlike", tiles = {"vessels_glass_bottle.png"}, inventory_image = "vessels_glass_bottle.png", @@ -117,7 +123,7 @@ minetest.register_craft( { }) minetest.register_node("vessels:drinking_glass", { - description = "Empty Drinking Glass", + description = S("Empty Drinking Glass"), drawtype = "plantlike", tiles = {"vessels_drinking_glass.png"}, inventory_image = "vessels_drinking_glass_inv.png", @@ -143,7 +149,7 @@ minetest.register_craft( { }) minetest.register_node("vessels:steel_bottle", { - description = "Empty Heavy Steel Bottle", + description = S("Empty Heavy Steel Bottle"), drawtype = "plantlike", tiles = {"vessels_steel_bottle.png"}, inventory_image = "vessels_steel_bottle.png", @@ -172,7 +178,7 @@ minetest.register_craft( { -- Glass and steel recycling minetest.register_craftitem("vessels:glass_fragments", { - description = "Glass Fragments", + description = S("Glass Fragments"), inventory_image = "vessels_glass_fragments.png", }) diff --git a/mods/walls/init.lua b/mods/walls/init.lua index a14cc7f2..c267eba5 100644 --- a/mods/walls/init.lua +++ b/mods/walls/init.lua @@ -1,5 +1,11 @@ +-- walls/init.lua + walls = {} +-- Load support for MT game translation. +local S = minetest.get_translator("walls") + + walls.register = function(wall_name, wall_desc, wall_texture_table, wall_mat, wall_sounds) --make wall_texture_table paramenter backwards compatible for mods passing single texture if type(wall_texture_table) ~= "table" then @@ -39,12 +45,12 @@ walls.register = function(wall_name, wall_desc, wall_texture_table, wall_mat, wa end -walls.register("walls:cobble", "Cobblestone Wall", {"default_cobble.png"}, +walls.register("walls:cobble", S("Cobblestone Wall"), {"default_cobble.png"}, "default:cobble", default.node_sound_stone_defaults()) -walls.register("walls:mossycobble", "Mossy Cobblestone Wall", {"default_mossycobble.png"}, +walls.register("walls:mossycobble", S("Mossy Cobblestone Wall"), {"default_mossycobble.png"}, "default:mossycobble", default.node_sound_stone_defaults()) -walls.register("walls:desertcobble", "Desert Cobblestone Wall", {"default_desert_cobble.png"}, +walls.register("walls:desertcobble", S("Desert Cobblestone Wall"), {"default_desert_cobble.png"}, "default:desert_cobble", default.node_sound_stone_defaults()) diff --git a/mods/wool/init.lua b/mods/wool/init.lua index d10074a1..1464423e 100644 --- a/mods/wool/init.lua +++ b/mods/wool/init.lua @@ -1,10 +1,15 @@ +-- wool/init.lua + +-- Load support for MT game translation. +local S = minetest.get_translator("wool") + local dyes = dye.dyes for i = 1, #dyes do local name, desc = unpack(dyes[i]) minetest.register_node("wool:" .. name, { - description = desc .. " Wool", + description = S("@1 Wool", desc), tiles = {"wool_" .. name .. ".png"}, is_ground_content = false, groups = {snappy = 2, choppy = 2, oddly_breakable_by_hand = 3, diff --git a/mods/xpanes/init.lua b/mods/xpanes/init.lua index ed68e0af..d978beeb 100644 --- a/mods/xpanes/init.lua +++ b/mods/xpanes/init.lua @@ -1,3 +1,8 @@ +-- xpanes/init.lua + +-- Load support for MT game translation. +local S = minetest.get_translator("xpanes") + local function is_pane(pos) return minetest.get_item_group(minetest.get_node(pos).name, "pane") > 0 @@ -148,7 +153,7 @@ function xpanes.register_pane(name, def) end xpanes.register_pane("pane", { - description = "Glass Pane", + description = S("Glass Pane"), textures = {"default_glass.png","xpanes_pane_half.png","xpanes_edge.png"}, inventory_image = "default_glass.png", wield_image = "default_glass.png", @@ -161,7 +166,7 @@ xpanes.register_pane("pane", { }) xpanes.register_pane("obsidian_pane", { - description = "Obsidian Glass Pane", + description = S("Obsidian Glass Pane"), textures = {"default_obsidian_glass.png","xpanes_pane_half.png","xpanes_edge_obsidian.png"}, inventory_image = "default_obsidian_glass.png", wield_image = "default_obsidian_glass.png", @@ -174,7 +179,7 @@ xpanes.register_pane("obsidian_pane", { }) xpanes.register_pane("bar", { - description = "Steel Bars", + description = S("Steel Bars"), textures = {"xpanes_bar.png","xpanes_bar.png","xpanes_bar_top.png"}, inventory_image = "xpanes_bar.png", wield_image = "xpanes_bar.png", From ea992bdace9c665cd97f6b53c62de759718ee1f0 Mon Sep 17 00:00:00 2001 From: Paramat Date: Thu, 12 Sep 2019 00:46:40 +0100 Subject: [PATCH 57/81] Add initial environmental sounds mod with flowing water sounds default:river_water_source can also create sound if desired as rivers are considered to be flowing water. A simple mod for now, with the intention to later use new engine environmental sound features if/when they appear. --- minetest.conf.example | 4 ++ mods/env_sounds/README.txt | 13 ++++ mods/env_sounds/init.lua | 64 ++++++++++++++++++ mods/env_sounds/license.txt | 57 ++++++++++++++++ mods/env_sounds/mod.conf | 3 + mods/env_sounds/sounds/env_sounds_water.1.ogg | Bin 0 -> 80221 bytes mods/env_sounds/sounds/env_sounds_water.2.ogg | Bin 0 -> 84658 bytes mods/env_sounds/sounds/env_sounds_water.3.ogg | Bin 0 -> 83915 bytes mods/env_sounds/sounds/env_sounds_water.4.ogg | Bin 0 -> 82187 bytes settingtypes.txt | 4 ++ 10 files changed, 145 insertions(+) create mode 100644 mods/env_sounds/README.txt create mode 100644 mods/env_sounds/init.lua create mode 100644 mods/env_sounds/license.txt create mode 100644 mods/env_sounds/mod.conf create mode 100644 mods/env_sounds/sounds/env_sounds_water.1.ogg create mode 100644 mods/env_sounds/sounds/env_sounds_water.2.ogg create mode 100644 mods/env_sounds/sounds/env_sounds_water.3.ogg create mode 100644 mods/env_sounds/sounds/env_sounds_water.4.ogg diff --git a/minetest.conf.example b/minetest.conf.example index 452251e1..d1da0ff8 100644 --- a/minetest.conf.example +++ b/minetest.conf.example @@ -64,3 +64,7 @@ default:torch 99,default:cobble 99 # starting biome, is used. # Default value is false. #engine_spawn = false + +# Whether river water source nodes create flowing sounds. +# Helps rivers create more sound, especially on level sections. +#river_source_sounds = false diff --git a/mods/env_sounds/README.txt b/mods/env_sounds/README.txt new file mode 100644 index 00000000..42835d21 --- /dev/null +++ b/mods/env_sounds/README.txt @@ -0,0 +1,13 @@ +Minetest Game mod: env_sounds +============================= +See license.txt for license information. + +Authors of source code +---------------------- +paramat (MIT) + +Authors of media (sounds) +------------------------- +Yuval (CC0 1.0) +https://freesound.org/people/Yuval/sounds/197023/ + env_sounds_water.*.ogg diff --git a/mods/env_sounds/init.lua b/mods/env_sounds/init.lua new file mode 100644 index 00000000..546e9908 --- /dev/null +++ b/mods/env_sounds/init.lua @@ -0,0 +1,64 @@ +-- Parameters + +local radius = 8 -- Water node search radius around player + +-- End of parameters + + +local river_source_sounds = minetest.settings:get_bool("river_source_sounds") + + +-- Update sound for player + +local function update_sound(player) + local player_name = player:get_player_name() + local ppos = player:get_pos() + local areamin = vector.subtract(ppos, radius) + local areamax = vector.add(ppos, radius) + local water_nodes = {"default:water_flowing", "default:river_water_flowing"} + if river_source_sounds then + table.insert(water_nodes, "default:river_water_source") + end + local wpos, _ = minetest.find_nodes_in_area(areamin, areamax, water_nodes) + local waters = #wpos + if waters == 0 then + return + end + + -- Find average position of water positions + local wposav = vector.new() + for _, pos in ipairs(wpos) do + wposav.x = wposav.x + pos.x + wposav.y = wposav.y + pos.y + wposav.z = wposav.z + pos.z + end + wposav = vector.divide(wposav, waters) + + minetest.sound_play( + "env_sounds_water", + { + pos = wposav, + to_player = player_name, + gain = math.min(0.04 + waters * 0.004, 0.4), + } + ) +end + + +-- Update sound 'on joinplayer' + +minetest.register_on_joinplayer(function(player) + update_sound(player) +end) + + +-- Cyclic sound update + +local function cyclic_update() + for _, player in pairs(minetest.get_connected_players()) do + update_sound(player) + end + minetest.after(3.5, cyclic_update) +end + +minetest.after(0, cyclic_update) diff --git a/mods/env_sounds/license.txt b/mods/env_sounds/license.txt new file mode 100644 index 00000000..ff8867dd --- /dev/null +++ b/mods/env_sounds/license.txt @@ -0,0 +1,57 @@ +License of source code +---------------------- + +The MIT License (MIT) +Copyright (C) 2019 paramat + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +For more details: +https://opensource.org/licenses/MIT + + +Licenses of media (sounds) +-------------------------- + +CC0 1.0 Universal (CC0 1.0) Public Domain Dedication +Yuval + +No Copyright + +The person who associated a work with this deed has dedicated the work to the +public domain by waiving all of his or her rights to the work worldwide under +copyright law, including all related and neighboring rights, to the extent +allowed by law. + +You can copy, modify, distribute and perform the work, even for commercial +purposes, all without asking permission. See Other Information below. + +Other Information: + +In no way are the patent or trademark rights of any person affected by CC0, nor +are the rights that other persons may have in the work or in how the work is +used, such as publicity or privacy rights. + +Unless expressly stated otherwise, the person who associated a work with this +deed makes no warranties about the work, and disclaims liability for all uses +of the work, to the fullest extent permitted by applicable law. + +When using or citing the work, you should not imply endorsement by the author +or the affirmer. + +For more details: +https://creativecommons.org/publicdomain/zero/1.0/ diff --git a/mods/env_sounds/mod.conf b/mods/env_sounds/mod.conf new file mode 100644 index 00000000..ad6feb31 --- /dev/null +++ b/mods/env_sounds/mod.conf @@ -0,0 +1,3 @@ +name = env_sounds +description = Minetest Game mod: env_sounds +depends = default diff --git a/mods/env_sounds/sounds/env_sounds_water.1.ogg b/mods/env_sounds/sounds/env_sounds_water.1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..aa808825e220458a73b20560146d2661cfffe8e8 GIT binary patch literal 80221 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%0A4=sX4d1GNF;SO3^LQ_ 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 Clj-RI literal 0 HcmV?d00001 diff --git a/mods/env_sounds/sounds/env_sounds_water.2.ogg b/mods/env_sounds/sounds/env_sounds_water.2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b3ff114fe9723d317c825fbb10699ee31372d518 GIT binary patch literal 84658 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

Xdq%U?I~`^q>@o>&8u(GVv<`RV5`n-?@Sg%MvG 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 KM-tG;?mGd)h?yV& literal 0 HcmV?d00001 diff --git a/mods/env_sounds/sounds/env_sounds_water.3.ogg b/mods/env_sounds/sounds/env_sounds_water.3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..431a6ed3f1cabf84c65cebb4cd04811bbe40a161 GIT binary patch literal 83915 zcmagG1yo$k(k?u>ySvNagG)%z0E4?jaEIWKUfU>yY-ObmfCc>PQb7NT@>103ORj;Tgz<24F|~1hselP+ zfB6HwJYoL+X@OCG>G?m`OV1a|<3M92w&nBx?;3&ohY=f;u4D7wnnT&eirU`BRO>H$ zYB_3dE)X9Vh>MS!`FncM|0Lkcu<)QiaWxG&bq!HPZ)!CQGba~w8%HZFXtjo%hJv&x zh=)sno5z@o4+h~MDL@HHEf@eYv;jzgdLUprRucfg1_0jC12GdU<$#5dTxRbSi0n&g zfGaEo5;j0=76}^scSg-?P5=PF0|J;)qVxCVY$t`Rh?$~Ya)fM@1dFMW!d1Tsq4eG` znmHCV6xlgW0vV7obP)hh6^hBy1mml{WTv4sA;i$^3%ScMO>u?`DoaVuXH@QC>OckV z!-51Q;lq;rXyGH~hG_{j_J&!o0%$?Ytf~{y(8qOB=pf@?8Oq;zP(#Nefkck0wIfE+rZq#a-$Eot6&p**;tkP29U z`HM=ZQQ~QV@%eH^mbO(k=}p$dDyGIZ;KD28$~)xx3Yuixq(&eL6W0n@|2D#l z*#Q7C5cz;J`3O`SYV30^eA=#}ORkDbP*uEW3=O~KS{C!wIy&gbs#5o zI?Z)b4n3{#pOQCjI#OlnEVPc~AOmxd#01*TW;P9}bVUc+S9dyXzoZo(S_*@tGc~qq z{KM~GuqZXknCubShV}?sO}A@BF@%=x%`?s>P+sc(H+;mPb~9Nf9?bkq?Hi3~iceES zlR)VfgPD*68U_|nMn%5`mj+f zV|&Re`X+^sYx=My(LqoYv++Su9M!m=1%P6oI>J|TOxS#Y>I21Ggm8LGpRdE@hX@;9!okvttLsQ$sK{wfbtvT3m*?nut zcWWuim?-3b1M7c02LN@Npuau|F^vQbWdtfop!{Rte|wHI{!kqGNF2R<9lhc#+r%ZW z@)hq4p0p~jqB?=$41xO`p@llX;T)gEoTkNshs8>hg?_WIZqvUU<{!7&T5|s{&v|hX zTA}D2*?9Q>cuo#;^moB%I=Ogy-FQatB&)Er($uWO(md4vmxOv#9h>6SKXVkFfhyEZn&`g` z004ZAMVJ4(j;N}!FR1Y?sIhBmi2mO_21;GvRh;96DmD=SAOQgAphgbD4tI%_a1_-+ z2JO=$L+%YlpD#BngpR_LWYHy3KM4Kfb2=cJV1sbT(g~w{8_n?0tm5ucxC~v zSy&~s695VNL(83xC4dpb2LMdb)lh-K5Vc9*eyrLkXpdYCEL5DKJ}HDu5i|-y%nZZ^ z7Luz^0*AMwC0;k290RZZ+Fwma_Gq1Tc0GkQ$?LGZe0 z?*uQOs)ptmp5}sv<{F`*W)p)Vo}%Klh9;i0CV}Q$lA>m#!xXQ@iiYL}q2@x9#TucX zc9Q!RkD@O0b`eT-UrO>dUUV=_`4=li{J*UDHJ6(BRNXXHH7#^CG<7{Jbni5^7k%ZS zRCUD_0!_^(&6OJm%_QG#H%&uri|`LcYfT)+2Bs2s_DJ~G2GFH&cngjGfV$2xXwYOyYgWa%3$`F(3BH- zE3{j^BN?=A@QU?~iC}c0RT^}pWtHh=<;Qi7tbG;75~`ZMhKUwi0*1Ooj#~oJ`b$xH zWk+o+V_i@|p!Go~@^&tA!!>>=A+xR$&DU)B4rR)2ZP58ac<0tVzZxB7Cz|&oW4@5iK{Ik$?-f z20~`lka7!Ez;?NiMK!zHqIuI(>HD=u4FfU7Q7+6ZM;SU@Nb1~uX9JAxL;p*;$4_2qzr`05Vq zgK2bw)KFFrp1wk(JGLI$-%(XIYT4OV4nl=96cWpWYa0pe96|e}V4KPp;iUtF z`q5C~>UMlZi?%NWeFxFSG*@ut;=EcElwju2xsdkp{NFP-wPhb%G_8CQ&QhBg4;8+@ zsuw8)nKgy7idTz-_RzO)ElRS564KNn8uwRS?fGu!^(tOu$U~nHt}(4QTF_M|01hA) zfMSvJvV^?2t$3)~q?`@5%eW8=ip01OQ>lxB1Q4h>E{@F5I4J}K4lD{GGZYfav#<|n z*#UvjS+GOnj=ye;s2DZ?gNmVx0+51w@gOyH-9aQNBo3S=F2Fa#rY$6f+NBWR460jV zS4;^O60=EhW?+yCm<1S&4VGglga)0c&QEFQ*=-WwVMVv3r>&% zn5py=RHK#dP$(1*jO*D}HY|%FR|YR~%QHZsU|HFpqQ?pVoInS3@^>9!0K_5z#EA2u za)qq0O~-|Pkn=)UM)Dv`mcfibObKKH=rEwqs&OG`hAjalK;ymKKxkG7nSCLsfe)#n zb-+Tm7Xm~L6#!s)4~>XwRLxyK$K^oROjv;T%bE!mLdu1_1rAa};?J!ET}z09Z#r0@T2f zN%J!iqp{R<|BBiF6TSc6 zO8Rz{P{{pv1`z8;MFKn{k!i^Y0!h)>Ugn662@Ul6QlKM7qzDQD{wN57nkQEhEX2$J zMF|iHg%8xDA$s6cS2Z;jhQg$mrDI+X%ns#^#89}XW($=fj9l0-{~~HxTozcks29Nw zbvZEf)-;kYL=DvS8>L0p7ESg5}E$X2G zzB#@J1jyDnha?u%_s)F#Yik;4ur2Xd+b904tip6Z=<`Qu?RmF*;Z&@L!GHjC z0Kj?K_87Q0Og)ehlq4S%>w;~{fuj~KBvWf4OEN&b009-^tE<`l$S{pmRn9a6gZe5U zT43h5&$BKSjUMCB%_lW7fD4<3=aU!=KJhSAP!K#2kW=$@8e{+uzl+O_ijF!IJWc2T41R1tAfBVw zcMRp09u#5eLd?H=)hQK}}1WCKQbsgB6P%hZB#RfCquX7XYY%3BUpb&?AI~ zhFV7F_wB&ZOPL21^zXtm{3X9+$jJX}Rp9@Y|Jh4_ef1CdWiS0A=GbY9UXWoL$i%?F z!9G4RwL}kO;o{=pVdtV};^g9B00J3!K(m{hjLeJ-j7)5xDP|BCHzyZ}iHU=2d0lXf zyOG7|%`xSNiO*cjOLw=H_I01|Y?2OE$|oy`$S}Wwb3bu2C{N zT@*X#Q9pq(aMqn)^enNEy0zRR(S~<8o{}{w`jP=(IZ`$?&~~bzz~KWoodGT}&N;2YPD5 zjc8*&b;RJ&nKZ1;KLq{IqrtU$?}22twn!pOQvgnap=Xz`6rHu@)X?tC&p_&aBb%*E z(E33wU`nP0BLd;#=xxA!Me1r@1H4>@IB$e1JEk9uZV zR;!pLDo|SZ`<5WIWQC)j`_?0X4+H2@I5^YDnBEp~-+K5cO^>gNOe9)*>+B2iaMNI8 zSGFj(6{Z%pTLP}S)9%cFPF`hEtOPX@jX2H_tUH({e)1O#6j$0HC36CQ@lIK(k?W3} z+hXiQcx|#682$i;sdqhE(z#|tb;fq4#OK^dm(cm{9cQ5yD-t7td|dohq#>(3Vz4vb zd!12v>jaE%$tpSUP5g{%M_G8mvF+l>M2k)-SUQ(5(%gFK^QD=Xdrkuh1Z-oYsho1C zfng#XLkqvXu+;Grpw52`=n5YHM(b_AEi88g{N}?}VH~>YW&Kgp1>!r!1sEpM?()~8 z>Tq{3v+nwnB%eLK1|o49=aO@Q$kE;KQb~_X-E4t4Ek20%5@wDFwl^FoZ}W|jBkTTf zYm)j@=m`ik;Vd0T){(Q;FR!DHenTGKleDOJjoDJhp;e?=-mW5@t16q{nfGw@$DN%N zu9}qPiEzl@dLf#Ah4xFnB{PA_d2SWH`kN#&7Kex!$I z-c5_?s(P|a0q9B`7Xywo)isTMh8x=M!R$}cf%(DkM`tp|APE+brI$kBcjkq5n(pd~ zB3htaymcxrB}8)F=A2Z3i63^>uaJZ><3h$GU^rz-fbLE2_azrz-{z(0 z;NGqq-#(+=Lyz^|EtfOC3jH_9@B43a|*!3>gC z?mIKlcfBS6EC!FiS7M<7)Og7jUwAsKM2k{a=GX|Ss$!}xe?MIM-jpSB1+lqQrV4!1 z%}o@d{P;Vb+%z8kCUu@t5yEeI$^#1DIcVP44{))XvB|Ws zTG=ZV;8k9pjy7^db^l^!uRSr`6x9Y#O7HOcd`Au2(;dKe7f#SeU|u!RBZ?7R6xBs6 z$tKfmRRvVfq_VMimE|2dNVOnTAfI>-VnPwj{XIjgHYsj+L(&|&jX*Zjqe-T zo$S_=p>~V*ReQg~jaTjfbApIk(ezdB6{n`J$X>$v+KQ1{jtzsZah+;YTHWz>`J=Bm zG*IND4tQJb6%^L&y}o_MDstqUi!JP}exD|NV4bCG#_GyPrDgN|E8r2^crGwYNDcFo zsg)uEjg+2Cy(Pjb$F)aJnpuC$i3gtirIpm3n;tztillnVDYU2fb=RtzdR)I_DZe7D8-b_uscMC3-|$&x0Jtdq$AwChimN+@&(MOUr5A zZm0Fedlkk`2@Vzkg*mtz5flxIYW@jiTUY1aeUTHgv;tS(*J4NBv`&xSWI`f6erK%mS;2g?t-|kf?reQO3QgZVwL} z+s&N!joFE$=Z7(;L90Ee6zuyfaw1v+$O*2-+YX4?n$2fiFuOS{nRJNIgztg49Z$y3 zCNKLrEW^0rRD<}}`2-_q(Q(r9ka zXV1?}jBpi9TC@`$?PdS^|64JR(*?`Kj2Jm9;dRc6dqqmH+;=# zc_z#7EV%@`QZHTfj^!5yyrH|OfU&0-lUH`DQv{~|rnz|(<;vz_^;Z%X;oMI!ThfSQOAyPBd-YBTHxyWQ=(WW6)1gVTH0n3O zKus+}mud4wo|W3SFHTT)%A(Sa==8D>-o1d>C?~1yO(B1**=wz07$1@`q#YeqgGn`n zhmc;J*>U|!ri33h&DdmVqcC^&TS%z9=kP2%^ngg5F=;JkjOuTEfn1^Qxh4XIQk~eY zQyXV)iLaHL)BKAQX?uXL2&#$c-Zt?Ieh-(tp_%FNz8f6$NGJdmqz3+6Km2tmtHZ@U z**-bL_hsvcHv5ehump*opgJMzqbpyGDc^%{iJTtsBbx=;!@_^SM|V5xuXfkJwk47~irCa6i++9l`q60qfgeX6X1i89(YmM03?P{D%e>uBg==F8 zyUO^U%*TJu$&BWjV)po?)R2ZI7v;pqKOqNEezi-1g};!wqP|71jK*u{BaM9oX7IKW z>r9~(^KxAA4q(mDe;wGVdsKQhd`h}MWONO4PZjj3#QVyx(JyCh3SgYrpQ6%RVyKbh zK&x@fC|b=wXCuVm!1be}XN>@#{R83%ZqixHC&3@Z8CPOEKb&br7#i=f7M1)lPC~bD z-=ciO#c1o^!-2dr=Dq-AC6Z4Pp{UomtBF{`S&WqYArP%>cq}WsWDYo4^2TDoZF>H* z>G&*k69?TsJ$IvN`Uy8hb=xyMai*erT&W$;?CGtEo73d!tAxM$4h7AR+n(*x3 zZ^G5|{pGASbK^h~ts5$?Y(HoaoZXn}M5ERiF|@~o_~pmO6qwSAavu*EWHW9gKTk$< z3If#|gL8wbso$XS(W>IvtuupR#hjmWG`5{$!XDiW$rcRh z@+uZSc_@@uP&Lkk52pLXmCm(>6$Ly|J|ZJ_lfR;;C#pT0wboofCs|#Ru{!$E^JaSK z*iLf5jlZ&9u_1#$Q41XRLAmD{d)>EQk$)q~a;ttuKI%2Cjdb)fra`^sb$TrG_6(xw zy6TGKTSqN{)AQ2ni*M8;6+VfM@rF5(mB<_8N?L{4b8n2p)kwdhVthYBL;on=h&_Ds z7vN-b(Uwrm9I0Hg{WPcmu^ z@`yJ}u;REyUwGZ^l6dD%8dKH%DC;aaU!~P(EzoKL3<#<*JObS+=8Cd$sPo`Og! zRjgCWsYFyDsFrQ-Y*0y=LdK?lCm;}V3f4`vh_IdVDzR9|S`X)YV_@;J{7FT9ze65= zY9*aU!Hm+f$#x%gM1M>0;K12~c6_3Mjm`pna*=p~rsN#&RXdC~#PA-e{JG<2om=;P z(mE$LM}({nOSPk?$R^=CfSoEd_~$2W=W$B2P4#o$>5hh5i(wv;^B)enu)DwD@s9sS zY2J>~QL+R05Xg6CVPF5AQDs{c$P4UCx&4J(?^Mopd$T+C+W!^R&n60_)Kr-a*(dz- zUv00*5M2`2OOEJki6N+k+cf)s>NYD5Nq8eWyJ{-J7ExtjR(Sl|X)~UjgblsDVxl)M z$1TU^*|YuLy!9x3n|G5k5`)MYLWzg5{h)3UU`XHW@y{yWWb7e!Wo##IpAfFTwX%9pqK^P(s%1d%i6@e^w z^gwnafE$LVNV~WmU93$#dKI~!pX_mG+q0Rr$JTA9Ta)G0_^kxWQQAEv07BuZ;edX@ zCZlUGZU?*PL%u6@Op<8$kdXh{s$GA#)M|m7G^fyNSJ;Gs$~e;oAD}?snchFVH;iq2 zJpv1vYxvdMXydrrrtCDoNK#&cu_ePlmzE`yx2X&Cy&l3o258`TqKV77FGUUC1-})( zJxH|6s(IDQ{`M#KZ~JU(tXn6RJ7Vj}^|a^>Mc0{hOe_UhHiGJAaY?oGtH&<*y^cqL z8|&L$l5>{QX`Ox=>E)w_uTOIU?r*=~nV>o=ZAb&`2|T@E>ARm|crv%{UBoxnRXFzs_V zc||P=QTqqq8;fN=`6 z9GC-yz@w|T0q(ZlS0fGKR{XiI$CJvHVhC>h4~hqi_%;{`p7t}^litDhQ=l=YW3}Ns zJ1Y2UBXEOP>#HAXhEG2n%-Wf-|y!= z|8u4Q2Q79;-3y8>PVcaBfEbvVnHWKwoX{f!PEIba84gYmD>En0H)d|oG8Y$!gPUia znHk!Ik(q~AfQ1{x!^6PD1O)MLg8n3~Q?s7CA&PQ|4tIFm;8Jo$AL3HmZa1i-1LmcD zhjs_Mj0bL(2R*Zsy(lkPSaqsj`=;5=xF+=HI5#@mZ3?$A5s3##j+|0Z?xkU5jvBA@i@?1kVXkq>578(_U^rQW%C1g(+cCiJ zDs2-6YP1Obq;bcM-&m2T*i>O4Ce^z3W&++$=+*Z+3$-Knj@LS}*t~@vbmUcrF^9gN z5vxDI;n%qxvYp!Alhn+ zyTZLi%HbA*M>k3y`6A(xw27GrwVs0%tZg}`t&l{YJnxo)Hm+=>TLBC7Zlx4`iD>yZ z1Mkp_&aXdP*DB0Ro{rL9WcekZ2Yd0*1+t zpb4(M{eca2=G=S`&Bc%C`R&cyrQxi(*&QM7=|2zcSxJ`C+Zie^6QFKZebsBo?u$8u-^|Zr~^i8S2fW| zcse3=<_5cRNq>63&lH@_;6ETKXTJCBJt8iqvkpXn|HB*P@YxA5Ws~VEf=^W}kOA1Y zF!okGb8!~`+ef~r9m6k8@C7jP%pz%BG6Au_Ps=6n-k-a?Dzl*7(IFiatt7KqZ@6^k z53I9=&p_}LtF*9{{5;m%35(M+_G(sJJVb-YYJA;`HG(U|vGk%kAUwJP4uVn5(tZ$% zs6t>(h{>_-V@6yL!@l5^$bxTXnC9KXXhvn&d!!1O$B;*9WvJIgT0UK)P@DA{4CdYt zeM?pmt38`Ab5z9YipTE6N#8*dQE@=$laBj1pPUOLTCW{{zC>`g&&W-Xe6yCc#iHwd zggVN1L%P-M7w_#bngZyDZl103bJKJ7&5Y^T$2S|SHUx0hi`NB)lo{mT3LV_Q_|R8T z%s8IA8N`(8!e$V7s%15UlRh#n+)~V@?mO81Zuqk-ca~l&uQzgQ_=|stdU>0{$nPYf zwMNn&!2qY4Cd(r!U-i+}7l!v+hsd!@nYWP1Tf-)trNL&u#tCvGkAt&0zm9~ZDnES^ zXI~Tug>fKp_%$a{fx{N#tjpP{6<0!IW@08coE9zTg0ou8(K7)IQK^XQl z#(jYvvyo)8T~1Q-m*4O4%u<@stt_a7yc}B_B15Y!6RIvWM6g2NPmoCCHQ_~4RI@x_ z%rX4(m5lR>URkTFPqqpFQz5C3i97nsL+^a;xckmORn(!rieem&2d{v@Q|E!v!U-aI zeQFB+a+A@(NBVF>^UKkmM3ZvS!S|++UmtHX}FBM|}(sTjShD+!204bi?uFX=k#*l$qYGA_H*icHPqZ zDKcD2i@Jc;6bdEGEMD7&>N<`bw*5N!Adj+(#htXC5>G!G_=CC^cJa#};d}n^D)kt8 zF)#GA$Z&jnc=gbZ`oxUfFB1zhuAc4ImZGk;y!XM*`-3WbTJNYu%4QKIa_}OG&(oBY z#$PR9TMFrn$nh54VCPlp3%+rZkyvYPB;Z$%Io-ABa5p;&5c<)2!JyKy?i7>{hU3|a$%}q(R9d4W;0!21DcAo5^g}@@k_owCM#(3keMyd}6 z3J10imM%e^<{Te&)WhV+HpZC{0Tl#eBv_y}ea@9qrx5nZwANYr2_NYN&;AP|q;C$_ zLlr+!MaJKMFfD3%SEW7c?E!$Gcz&f8`MvTgV3cw5h%^lDsa7r-A6Mk{G`}P6qK7#A zr5l4!CsU8tFTgm)SPRqi06HPW3r!qenXJiyi8$iYq5kU+3ZZ~s%DU~*Q70pxSK-GA z#!@geJ<)7eWMs#f{CI_0tsTcNr(`=FPSsZ%LVPl;b(kn$spsuURL1b;!OauMXJX`@ z;Z+WJZsn4HbUa0>J7h9*S9OX~a^CkZ(3Q!BMDD3?hqTY~vUw{lD^=qHa1+;gb)QIx z;D2XH&b}W1W1vc9HHyDFqhh9CD5;8vpx#0!T$uTNH8(pcaecC9yh_v`van`#;mbHl zBB|$Y3OgZjuis!hZA2IoYMRxznL3$oV%XF8=&46=fpIlikbx_rr@K>SQKfQ58GBqy z8KaJCE&a*Kyp39fm2Gd_qj5nfnLAUTX19sxHqq(nt8@<4R>KfTG8T2WV8<`|>CvF`a(FHL#dDCwi0!uuFgj zoIZjRU`|*>{hFZfYx~q6@4x<}_~C?%>`Tjn>OqKBY*i-Gy6CHmv3lm23a`BhMk~mK!-ejptGx$5 z;IR2pv2@8u-Q2s=6`WcJ)R0GaF^0P&0R`ji&#r%7YaZLyv35;twq~UW$8+BJn8l^r zrhYG1a)0zsYDS)DTSg1{)Yxm)Wi$wy74-+VranU1$Xw+@lNruT?qEqIaW79GPEw=1#wc12 zhb6TnZbTZW>GwSIr|0abP#O$quF0H9Qu%H~$9<~0JlMXO)p;?;;oSIKc6XRpS&J$L zTR}30ClX-%68gZ5EnRI%)l%qU+OY7&XT&o_!E-th2vgeSU!`(3!$lw z`_zd$LW+OCh#Wh4k7S&xOTs!P6`eZ4iL}lfM4M5Su*hGH*BHX<#FVBCQ$gX0I~D)F zP$}!K5j*SEL!zydVbPN0z&W$my(VI*56g9@R}u47ncQ3v2dh(uFd&1((^UCk*R*%J z`HRb$<3w7)h1KvMpolRR5#a~mn!Aqc+X>$_zGCB5ru0h+s4oT-TTU1<7Bx1)$__=Z zY`I3n)pY5nf21un1kKIZ2A7>hsZPu&m0mW~F+2=m0{U@0Nv3elCVYd|^c(_2EJ?gt z9f`0Oxtzb;ky4gF7$ly#x$0b|#p{~9(g?;^Wm9Jc#3!ypGLo%{;9Jd1-;m2(#MIo( z)Z!8g1lWwr&}h>VcX|1=^ZgWhlV%gc3pdd`g|#yB_(edYe1>u$L3b(5rwA9nA%6*2 zsGEb*FD1MaZSm&nBYi$@oP!px7k(?9xESRSO=9M;->jgDqfJM@%XCuZ01jQ-F>Oo7@LI@b#Ql|CERjWF75j)?^+Cn<*z@CoNds%_4(Wz zUYjQw@Sx}pp1&pCf2U@&0VK?PFpuR`&*Uhqae2GkRU6djPYzsEDEN-g1J{q@X||R! zVFjyDkNb_mzc^Dr72T!Xx%yWVVIoE!jp)o*`3w{SJCqC*=wV^n1*=l=b!9+LPp+hl z)eWlqv}Kq8t4<}kB^m_Byw+!d70`e)wgY(UK+86i(^ZBq9<-i)5Q1UzYD#2OseXf8 zY2dkaK3cpb45s4A$l_M|#{kVhTGkKx@m61kD_^$efVjL)0eB&6^ ziEqt%X(UtlcE09tS?OmLDrzXDj4V|xwmfA-xBE6uaCi`|Q+P_c$alqG?D^GyiTio) zTpA?Bc{8z+Ah6pmK5EypXxOv46k(+h2m`gFo>Io?A;#SSI zS1sa#h#=ivry*bl1Joe(#a$&I3+M0-+;SU$PH|z>G9~^r+BDW&im4s*Imq?0)PzEX&OHq8NR|vw|4-B9dUJ zyXGD|^08>ZK%Y2(2j`!TzLw}tm4C#(^l$n-``OW?3xVuOD907Z+%23+PBxzT851)u zL_OXk$*g=rG)hI#K&iH+Y@YxzVb@)AOZ3S`9~6(l(eDDWzfWiGG{yhy!_@Y~j;uw1 z!>hm;WA!NJjlluGYczrrEC`fad5tZt=beIF% z!6z??Vmu^0z2VW4JxVPHXxKhQ>k7(;1epX3)PIp^j1~&e@D1LRX$Im_jb*8a^ z1N5$3b&0A*SmrUaYRV4$9(L;&YmZ?aq<`h!k5KLIQB=mv-|9rv5_Eg!K7kN6 zg%OHmy2p<3DatNwnl;6IHxZD5Va#`nU8HbuI}scjg!CIL;lAX%isf0zzJhOv^^eLf0)>>IELDjyTR_r!IL>F-hrpBDYn?P8UOARZBJ`T*BK5P|S9;o9Vz;fl;K zGU4LX`SmCj(e}BuNr~W;?o)#vn7IqwQ4@R=E!Ohq^kkj+pN|*BTK;p;@bXc^R1o_z zD>n#w!obbN!o>?({kE{Vv9inZ@__;u&&KN7HzsB-5I+Mm6EiP2=gQJNj(iF`Du}qo zSI87=Xx8#o^-x4_u`rQ2RQ7b^0YmSlA0dsJOI#A}j>8j5@iD|+es zA~sZ;Xe9H=s2^pA=MF;xxo_%51dtwjNttBeE=DW5TC>z$*#Q{{)kAt?3Yy5DUxz65 zwx6Gt&M_DkQqbBdCwgy;HLh)P_MQIL;d(^y6pYm*59A#bgO6*XhN#XXkxnSH22;F- z&#&4$z@cJI;bHyrQ}?AG3qL?Z5RO3r@M^3JjZhJ5QB5 zd62Xcoi$+w7$=EHnILqH4OGu-XcEoIz@kXqQ;&Z$Oti}6(8ihW;DT38^QohYpku0O zt7Or+0uzvd<4G)%!5%MCB|<9J`nf$OfqJYoZLiZ~k@cQb&Em@xwF?#9;VqCuw5I>e32xcbd(xPuCYBH zq8QT_rW-Tmsn)JL$C-@@iwZwC_-&!@*q7Um>e>{)z`UD(cA0l3ugbviG@Sz3qWt{r zB2{VH!7JMGJ5%wCVJc;fvCa4`UYpXya2jg2X)!}>;~Y;bw-p@pAg(|R^_}Fi;q<57 zv%o(b&0Cojc&9pMHp+JL+z9deMT4n{>XODgx?`4YcdDJ?IqBuL$^KizS5<6>Csy6> za)Qwr>0l6-rlyApzucygaH+3Ph!1N3!y)uP!r;qg%9Q>PK zK0Kj$(bE%fxmdc1!#WaMl39~_!QGL+_l|vqTVD5?utvLAKR3U864Btf21>)x5x7BYZI-L=k4Sv~NS|*)hz6T{Qgsgy~mzvXqavLO9OU ziCh<-PCV_^j_yY~@rxBqRiSi}_EtAdD^_Wj@4^M{ay>q?NE1zq3rJ?`ah-m`Utoxq zwXI~1VKi7v1>k4Ne)yprlwKKq19)w1DO10u``KuEzf&qz$A;Dw|B$nhoFrjfnt>X? z3ryhBisV9m{rKtgNi$+r;`(l+dGpmx{Cw6Nw%it6$fgZj18sR91YK-^7!#l7IWeTW%^VPklJ+ertDB4)MEL?@b^e$Yux|8#h8poq(&?LwMtMv28ob^>V1$@a&Fg~QgU z)~A`Bc5fR`HrIC-yDHwF>+maaoGkU2`j&qwK@rGEA$&(3v#McbVTds~uaD%IrB0t# z+obYKyAfPPNam}qSK)cOuDHrda)uxO+SSh)pzkTEBwF~L#~ z9=ecVX4dJ1s!Ti)Chz&P#&OQ{M@;L-9FdTzvGvvbVREc|UPfz+?PMs`&oa zQeiNyDQ%1qtn$@(MWo}8wMF|xZ3LCWI8D{{m`n@sj{1?a1C9U0Av~2AQ{t63qKvsS zk&eP3#1eQDqUmNG+QGPtUii6qFi3ATGBW)9(aUq_APc5=!c^F6Hz{G6vh*>v%zo)l z{*|Bek=WK`yb_EM_>+-qrlq2@X;}Bb`yTsx7#NB-wSJ68fz@%)a5*h8bee(MHM`Y4QeM8YhSa#1?V z;tyYngW&;PA~Wy-QCl1uD!-^Ek1s4zx+V;~xGa^6LG)#LmZ+h@`t2hiCb9)bJ)sot zs0ZNrxkBfUuw4G?nqf2Cee$i0(4bAT@0kH9gdFv$2;oK7Nwf}=L}6^dFyC@n$>7yy z#j8#=+ayK13VrsKw;ipXLy9&$KRQ`vaI*A1X{>5M&bP;SE3K*^=+4!KwJDPxmxn+T zPg3n~<&OAX%3LV|NW{e+{nI3KC?xtmm(rDGJCv(d(P8!`djFv#2%p`LLK3L*hxdAr zz;OqGUR_{|?jY2F7;zPTO7-C+QnhqqA7&n9%tZNNLIm&wX{iRy)v~hQnl~})db!S{ z%&AM=f`o7hBt@D35KaJqzCIFH7Bpckrncj!3*@pJon)*(n8>C$_$@f;W#T_WnL7$G zb~(+|lS01PqCaT;1#`j|5r$+Wq(TGv_CUJ#^UD5B@Hm!I_p4o0{+aS)V?>HK3BxqT z5zTdkg-i!%80!S`s`-hRl9E}szBnqAMuh8anYeJRXEXe-zGa`SG)SNyck5gC?WAsb zNqWd>Aglw&#HVCc)!B^fgp6aOZ^pOZb+WZ*_q(>{JiH!KTvK)t8+z!>w~@Xd$ft|s zBmqDL)aIgik6~N+>IX);JX}*}zxrD8eT~-zbW!TScH>iyg7;lpl%zt@>fDOx-O&m3 zP?7BDm8X*2{Lwq`!Ni-S)<&>Fim|d{;>6+Sd-6?A3m~}Fv~dA7{j%lPPw?uCTwn)(JghoD>o(WQ-oxDx-- zOjXqDSYkU?<70-c;GJnxF6zh6tEYSXKc|<<>QG(bR53i0zn}QARV*?&NygStPqpVJ)1(A;$K_poM!{>B zqj>l9>q|~&R~qX6hJv%eW4h9|!>ZBD?AAgW+!mvJex=>G)b!4oDy5>`*%$`b|mSHvMy< zTP_9B9IXJR z;kePcuA(cbCpHMfCJ6Jq=|#luuWA=`ekb|Oz5NoTb;+f8Sd&L9Al>BKz<32S`7I_( zAZq+Gk%7O*;__*PfE1;aXEDPT!T5xKOj8;rOFEWko}fS~905tgfkMXRapTAzra^_1 z!VeaJ?Z~CgqO+UK>#Z{x!3dNrVUaw!8)=?ggBV&nVJ zZizGlON$rH;1j=_ezK8HFc*9xnd#;BfQJxxnkeTd2G13|hKKYZUIde_fu4N43!;B^ z3|HRCvM-bCbnKmmTKk?>lGKZ=!UWM6&#a|E2J#sEs|iPiNUoh^(I+$PpC@~z$`1I< z=X-r8ugx_T=AuwKB!7`EUIH{2jK9#c40h@R3l>ewlkg#C*&Ifr9iYMW?_}!zyFSLY zYaMo2D+8PO@9#+Lln&?gc^L>`PH3uK-=XG5+GxQL#oDA(;#T~Qj;oaE|J_z1Do`fY z?@<153Nw#UjYOKTFE?D+#RkINEV@iJBiDSR33B2?^`mU^-(Y&BP#{*O34Oy~4PHxV zr0aIV0Hq!jD?uX-9gtP&xh^YnP!~uQV4HV*(MGWU|7FA(?tL zTL?*esIXpXH^9>HZEkQ)$zC}z(m1=kdsgF2CI!yu=`DtM+xKq?L_G@iN=65@Sps`1 zToc{epF@`@XoTLykMeH6{=Mm>2r~{GJ5KF%KXoz*ygR^v%vDayg@BG9b`I>5m!wEUX(?RGf9SOPqRcdu87B9&gFt`rF56B$<;kfFxmdB8~GySw7mo_t5QIyljuiQDS zU?)lDhQ>@{CC)g5ElAGLeYCb#$DwQB|5G@hHNq5<+h8kS-hSL#ne`RsBJMGGbWx<3 zee73|jf|DbQZbWv6%To&TYc_kJ44Ytj8W41uZo>%6t(rM$+q%6(J@{ zDm?Y_l;eHCINp>J8%>)Xlo>7n_D=mnN=kW5brh>c|cZ~q>u+Q0GgqE%3 zrxRXv%_jkmzSzv&BofwH$p@t({aZ4J%BWP7LB#LpNhJDU9U>kw3lf5yoQWCKrd)r40sGu>f{nYU5hZx5D%DqfUu&l9@^0A5GA4xu<#s(wnR}2Z14CUy4 zoAL0w6k~W(Tt%62@-6)8Fi|Y=XCG3(%2n_9GipY8bc|-^{xtZ4YxErq`gIJ`Pf#s> zT5v6@1s*jUt-ii6!xpkz`zqsOUlHQSRPH?>MVD7M)D{{Swa{YA$ zZ4!NkGnOO*8tPy=eA9W>Cd7G!F%(J%YIYpXo(XD$p+nxOXpi$o|H6fVJ#9AGgO$~{ z$uPG`FdqQ$ug4&7zv(hAl{J2r)FsARtBgnbV0t+}WZ5)Pw)^(#gnPR?>+8xxJVI19 zN8=O#pJmJp!}F9)rC|*zZu0iKJfkl+S0XvlUbDa39DA1T_Iv)=XwrI>=r6*ixrpN! zy9Dw$Q`VRulaoFi_W`ff-{D98LB4xNgQ7wH^T?uaE*viWi!WVJiHSTtKx!{JW%fJR8_#STBF@W=DaBPe>hy#P2<* zFz%+(hlyNfayieFy~NpT3Ud{7;s9D*j_H@IN*B2`ifS>Gm%WW4!eO)wcX7q?V| zbsvnjiPkg;I{SwSc_deWF02zxlB*;Qq_Dn?fOq1abvJanT_Az zUiO=hs!KU?4%jRbYR5y;7mD3x|3qV%@r{_>@5b z-UWC+01>go06%avhcF zZzGUK2mB?A5YI%BTL$!fQp&O4+h*-F&zjewKh`+pe1|-G(59g9B>LI3UsSmB&cRsP zN-qpP%V~CC4L2vse_9L26qFtt^mSU3q>=Gh+g;AZqM+aNJ|!sw2G4tNlB2Kc@9@H- z710F}hTOy);}(7+dJ(q1{6B`_R=#^>>f9LI{x*mp zzH;!Dt2VZyF&tJ%P9#1_CK8Pdz@2u-ozLL(`tr7ZsT&1OzZcy|p*ju@KCxts0U&iL zuk3%1wMqnpPHCa^i2JN{eNa_Z%<18rv0y&PHQKWe6&Q<0r9DJlOkW);wd)U@I1Fq^ z<=ZUGm__ey`|>Q)Af5D!T5YIbRSOXb zmoL6Nd6)LP`Y@qKtfNWL--ZJ$+01SL{3ZQ54VOlJbCI0$9{@=ltDb&-e7o;V3&_Qj}g$+4Tv!gyBNIeJTOFL&d+g!ItJO$5N ze4^(TU2Uxh_y?Z70yLrhC~1?J0JIf%n*7))AUD0GfvSKEOLY7CB9*~nSGi~Biw znjY`x#G1nBli5frADySnq&~Df%E|8=tk; zZk+VLL@oimDX+7^gRusYT5#tA7{i*{DDYIJdD8l4+ifX1GbzKGq>wZnAOh?`uUJnA zcghjGzKV%Uc>ZJ@B$f1o8rO4cH&0gO&=P(qf!W%^rUTS9OGsd|#E|2lybA&8*!4WU zL!4ye@ZfK&Er!nX(5`B_kcbSZA9-fQKg1)~=?S_6v?;G8LBpZx#!*^J0Tsg1TpxU~ zP4-%L!((z_wKww$M)){6U045N8HvsC*-5L|nF$ZN#oUCf;JMC21n?d^7xR6ug08Cv zfOaDLttO*3T2Wiw-xM3h$FhK>bpCOy6HC82l#r^=2V{DqeLjWf4&s)#m>?|Luly7} z^6{L61qBIfZMwyI{?Xb!^okQYZ0bt%7udl|_7`ck#9E^RcePL(0+#YK)sI|ILIJ=wZu8LWN)jK4&}F4THam^844lwvcsj7!r9)x0$E* zNDXT`DV?W!iQB5qf#xKSD>y-|3(Ua~zT|7!nu?oMKu#A-VMme59Aa9QBKw%&s$ z6GOa@>8lcDwpu`McTd(r%nd1(!X%RNm8mzD$yzQ_3vU^EQkcEezLxDznDPMSD3U@Q zK8D=HVU)>wfgVopSmpIMa{_8?t6D!sBeZlty!7z1WqNXKm^a@4V*Sun>u_8$V_qOi zh!wFMwYuKqD4Qh5MW)gVbt__JaS_ELW9$c&x99kO>`auYFGOQ&O4c$wX*4Xy{%g&? zoK_RETC7Rto?HqKm)fv9EHHDL5{Upvq+CuV5h=2un7%RL2BuYoESrZPR%aOl@`s=z4x?pM>)19D=qmt6e$6EZZ&&)=ab+lXJE76q z48&x70T4MjY!l)s1!1d5+$pW+=fw^r)KtLpeN6Lg|Vz7`8nqF`zfy_Fa(JDPhua0{8SEGLCQ`VjD!Y^6Qw92=B z_6AB9Z=bH_U2nRmpQzR@zh5KMo&B-o8m8#;%N*-dF4Y@S6$bs9wPF|D?q$j>FYuim zT0B@PfwU5ry=V1q#XXU-7v~ax?;Xq++M2TE;Ucusf4p;ow5V1Bo)+E2VO{{}=O)s9 z5}LOUL`6gj$0)Vc)3Vd0E5sCl`8;mITN8h?tiEEe5A)VjfBUH5f14gR$<cT@==Nx&oAhArV}&{--&v=8lkn?MS{BrLgnBT-HXmJYzEJQst{fnL+-Cqd-;N)?g z4bgPWqAyVf`ebZLIpC2pc(SDs5e4Z405k632m)Mp}KZ02CI&l~Kp+f)EcyW%^pLqfQT(8kx>6=5+Cvde2%i z=ze9hTefgZL$6p*jA#jEAF{`xm|MG@Kn+zodic8oFtw7zAc5^y}j2j*Gvrk6l12i^NNsXi+*ms*wqya}&B z8$y)ChS#PADfoNK%WTETBtdk?-El?=*{bsN5hi{PmW2)6Eq5{d;?_QG#7W;K%CX7E zCkb=oW-8V69dWHwl^uh<^*HTLXxrV((qG=%$2G;5AFOi>iW^U7XHx(G05bsq00000OboyY1^@s6#@(Jf zJlNmY-rXoCC@?ZJH8m(FF*G#h-zO+3FfuXQDJdy4H83V6GcqtSE-5fEFeoV~CnYg5 zFefH4FDEiDGkTTWv_p=aet-;z|H0jRPSYZ=yFGv!!?Co9mX#wMP=&`)Juk*rqRA28 z_$FgH_|#8W*7s9pCC!OcF)y9-hSq_=Mz*O()@eG?G{Cm6$;`l}N{{>7Z19>QmXhOu zg|6Sjn^sU8&Yrs#$ihd~BpScd=UPNPRP>dwE?tNvcw$0|s4PKVqqzwRXs~bQN|2~jzor~z~rDI!)sFbgjbO3_Kp2C@h zr8QqHo!jj!eKa$@xTm@O4dd20k7l`|6ss z2eP9<&B)M3+$=b*k66>;n52IxrVuM*?>$Esov4RCv_&(b@Ak1^bN>!J~+u~Mo+PkOBbAHm*+2e}YkO_sI+es+Q!U*z?{U`N<<@36P~-}NZQR}vL)*{-io#-rhpa(+UnU71;h=-tv|STvZq};N zPe-yXuA_kP81rx$Hq6eIk62xsKrA>GkZi3u(YwmQ>xX?RnvMs)mfW}ya{GK;`||Mu z|ASek?KkxT6BQl+TqRno=oH}qMv>n687`U&&#&5VE8R34=4_ksX+)CKSurHHn)LmL zqw6Z$R&y5Y?W7ggGE**qJ^5;j)_q5z6+wSg?BM$E7G8Zxa<`by{S~i*qheZjo98$Seb80s3>CYcIsV3xIQxq z0~Utdl)T{3Zh)}(o;^ITQEwlDdO5{pl2(=GkEd|Nf7s%o4NNT8G#qSr-7ALxvI)$P#DzEe*7;a7APfJ_u7+XQyU+}a?l zK9y$fG)02{f(96y1C&!IHw1`vB+!)#uaMYq5LzvG)Tp;bSRR0I6>fK^A}FD6UTmkX zDO4uhb^68|5koC`WU*IvMTxtSOGCB@hax0Q(a+7e$A;uS$EO+8kU@elU*ej?#&X9Z z=U31hgI#zw6I!*;lo|{I%dm!8yMQEYRt+4HH_y^#dacXW^;1f(WZW2qv~3#dI8Iy z3vhus+8!wqT9TycWr4(0RaqP7)=6ET zE@m|QsjX+KWg|=63**SI7fT`&ZcG65DgD@EXEY;%n90HYS)f9EIi`=aWIOHk!snax zA;0b?y{;L>^!5cW6xVmr)oHM_D*)^rcOV|psHP8`9>TsHdcES;KdZZ;4)xx&?b9EH z`dnkbYn}sP-#(ZAzOiVHdI%LsRh@ z+BFI=JC#~3oSl#WEHcY81FllRn|*+YSNwUnCyx`o{I ztYF%DR4YKz`{;f-okkH|%R`w70BWr4#>hq!SrIOK&rOAyjl$UVsQHtNE!yTatxFON zh=D2+1^h?9uzkXCuEHkG18R+|A|q{k!YwxIwWB-Q=ujdqTlNVMfI)fP-L7mVG;JST z@ec|~yuGph-0FRr!T5SdnLXQkm8vgaA9Y|It?#}FzW28@~6;_Doi&7e{?p+kEwBKJkgvnic^{n%A)io6GjX13>en6-1I@mNijiJnOwWaalGC!o^v~n$eF+@fC|g0A|_gE zCVckv+4y>4dy8pU{|i^OXL(yPluFs(rF3n`<=m#Z)Nm-}HHHeJ#KIK==dSzkLm5PV zCCx#V&h>P2ifcrT3i3TYrd?{=qHR32W8uw|ida(hh%+Cp7BVSnQNrJ;oGs~${X%E4 zWVKP3@lY8azC|Y?6r(zHbCmmOvE2}3u%l{C9Kfr9NPlQRM(Hx5-(JcZeG4-$K7pXT zqD-X)V~;!n$spnV>hbY4`o^ZL|wkDk(L70CefRVtOG;nR$*be-T5-LtOw|L;@gWko@bHpvL zOP+?TTAwtpZ-;cA-+R!w-Q`uS^?PGl#ZUD{H#dFRsFDoMg}L6XRpy8@0OV!MNzafZ z0MWh(>)6NK$Eov2Yka&d2Q4Oh;(c7Gd|--h^VA2EuA>jNr4g_VcR7oMZ%sFxkKxqC^Zm_zW&uM(b?MoO5;_nmA&jW4I*fh zT>13j#+v=UpG4EDE4C~=F5Ux zBCmCf{i6s;tM#FSh~S_}+OslNO|weth{Tnk=VnaGHh9D;<7OcXyali2w$X^K@QKb1 zkdm?QH&GR_{#q`D=|cB1duA7676snKwX0Gr1?&xX3JS=YpbI#!Z6Sh#fv>k~sfhSZ zOA5K96(H(Y)9UEI?nnUbzX!BEuQ8rCL9+XDg8Nt%0EKie{w{EPndP+VRx6WLDI3oA z4v}E8w;>Mx9(|V?jjD840K7#@HP2g-QW7FlYXLmUgX7q-dm(SfWcs8jdW&|C!Ox6XzvgE9O?%d-SXK8PUreIZE&;~aTlxJnL|`KMEC7RssHKOie? zZVD16!KKAl=XQ%@ECB=(cTgTk69=hT9yrQNzXx4tC1-&xLVK)-DP~rju8}ROLQXdT z+$qcG07)go*z|$8WMXOgS&X5Ta2vU|(9khhRDu~bkeC?41{@koxCet(f*baIB`Awc z)@c{hb~qGYtC$gAp0J?gA29&sRRioXcak8c*d#=^FGm*7{`rtL zSMx*MD~DGd?G)(z*HPY9=m#{@0ktoycdh}(as>=3OPD8I-(w_~^d6Mu#*<{GpNCWx z8CGZQd|e+TX+M3v);dQ*uJ-#RUomO0Ls0_^B7LYQ00CZWxe3a7@c1sYfx4BM$=^vI z{k_nN+2Z(&;E-L)t4e8=d~gh20wfkoIWvR|h~ixUuEH*Kf!0P#XB}KWTXx;iMYi%& zO3a%DBPvxkQ2|6I3nkFHK!Dp?9W>H;Zpp0lN*=IsJJjm(Mr++rQ=U|%|FYc8rKL+7 z-mi5kX8=?tbqpZ(69IN90jR>hPd-KdB7-A0^J~=~lX1jFh`8kkh3$ap+YF>OGi8$& zTLY&gBFm&bu9iv{`9BGiV+rT9Th^0YAvx^$Rc%x-E1YCs8@T8ojJJTM=W2V;7p4JZ zCJQZ-DhDiRwg*?itz>^Psn}ThleN!^Oi7(@4p#b5%UW^V*Af8)Dz94mA*>V_rDl}q z4D)T|TZI-;jrbv4AAaj?MVd>kI?NQCt|F=d+$Bp{f&ooh2>WJvVkEzOZPsHPsWTmp zjGM;#HoCIrf0-RY?<*kz^d+wZ1Ia9sSApXe3lSWYdBSBvL9YCOaodBLCk1G0!}roa zhgt(fCX1NVq)Z3fEJCL-{eE_(i_{!>_kZK0Sg2OADDm1w@B0-2BszCg8V?|4vU--p$BvT#4o?4ivdp^LbwF1pFz>3HD3V+oq#0+A(L%$~c{FEJDkSah$|X#G-V<)dc|QtVh{h!bb7N zJ-ck+G!^r&>-2~CEw*^ZK6}UNJE#}IPOkw^XJ=CY06=pA00000089+P2?qcG0InmZ z%P`*I;M~>T*)KIPC@Cf{HZ&(IFf%VHD={)OCMGd4>Ez!iCnhm6;V3FAB{DTIHQc(@ z+>D%LUh*KJ!vE0qfA8GwL4x}7fDAzSvI&)TQ7FP?+S}W>*_e}N3m#Z@<}mm4ZT$Gd zR1_;*1#H9&IKj@e2;LreM04fb9Toocif^Yz<#=}kg`6$1Y zOx~h$mh{)wo7#qXx+q~d9EyM2{4g>-n4x-N>Av@crakTueXidDN_!Ad2DzT}a<11` zg~=9z0_puG;;MTN)%iqGUB8|a*bCiAIfgYPokoH}RlL-W)$61<;QGYf61@BsgDnyc zD|VQ5GI1Mm*zWM)u8?{|VZXk=p(>6S+O{Q`;ET;+Oh}0jTJ8f4nA_5hiqB8>EaS$J zrW%tX);1lnt=wA4(g)1%4)#;n4g>Tnwrw!PAD)KXR8_F@xm*z8G#%SMvrYqyonNK> zaFt~W6`u^)4EjfAU3&TpyqkPd7ubPOwUDN3Q)vU6!-oCs*Wxy_t-KAy4&0=^db$o%#mq~Uw_6Q@6 zWpL1kj4oFQn>;d1AXsYQSzAgyb8hO*%+*;0A6|{z7F52i7FuqP2>atD5n0&dNIz0^6aFaUG2sayl`0FKtx1sHVlbY!M@4c0u7oDbG_%*7X9Gx!qQRi zLu(z=gI3mXMO8lgn>%JhT$3qO>3C|di!g`aEqhn)3X6EC7lCz$(l{8EB93e84pKTF z3XV7Lsc`7gd7_YiGBOkR8t!nTV*x5sy9QyO-(UD(N)~>gD;Q=kt*MNFSfww5u)`UQ zr5#o6;v%joE-YWpQe`f?mJ%UwSxCLc$uG;r zpw~OS4myi(L|_Z#D@^q(i?*VkKD(a9A@9W$7c3VIg!0AWu;tQ zF;m)^Wq#}C{0Y8>+(Zj=h8b25mL?-|a6foG4vSo{2;(GNa&#qhNKpWu$t-i@@=S~x z&fiSrOUzA#k9P9`t?UH&ZMmXk0~IuHy&xxZl(QPrC)~XU2)3z@{8HR|N3@(H{dPKm z^{9Zx2q|IJ)N(mnNwQ9vXh)0CC!b;uLxKQ4wJO|$KDy-eFLQ_eZTcA%FGsM_+qEDe zu64=QZ?z+UT#2Z_2j8p9OqfoHE1gf3NO+Q%av_oGd+jdU*=8fzP$rdYi00<|O z*gB#jwbqzEeL1@iZVUE5+|J(1a5(=&bYFe^dHvlnjU@G~O1K)t4RbsCgdA^h7C9ggp6JoikX zlBK9~lYH6gt+Yys!DX*9kyjCuh4Ws4_^W}=>$U>C89i%RO03REq9dq~Mo66P226gGvXeY4geFQ{_DNs_3?_Y|oi=6w>d+NH zI+nM18kF%WyPqf?{q^R6raC_;a|t;6m1F!Frtd9~KhP!QJJSAR`gY!56`q>9wq)H;~dwm^G-*vW5h zcF*c0Q?YryR}M8KGRve9!8a&pY^?yFuKxXOdVL|7d$G-4WEF4lPwf=n+|RqfE&rl>9cu}3Z&JRK}5cS;}~ ztKvKjMb?%Hz$GJs3wFeH#6P;>%WgS8eH5VGP8qi+c`kQ}^k zNy=8XXlW}mu|MGdN(wrB)a_AUpXreRR7$;2+c%YnXP4V{07&O51LDvO zyPW?VUk(#hq8#0(RP+Mg=dw&++gREBg1w#dp=Lw@^l7gRi81)mVfbqoxZoQanUQpE zQ-fvhB3t@2ps5{3)F@A7kpMJacXUq}Z>z%2Z)U?t*nH8Vx{_G+dBV5GNe=z$F~R{W zuJ=X&97;=7LW~a)jA0*u29mEY|5&4M-kC;bk`z0u{!G%3_it?FnY=9Z^A>wLW8>*! z0sJw`Sc0N@*5CnhX!|%w%V%+J{%lAI;lAxta9x;H7T2-h?I7vdpilv0~A*WXJD%K#Z(NlY6`#(Ro(%WdgSRIq; zBJr%`%ZEgddsW^wP*$Ef*Y{HG7!en({0eH5Nd%0xPmxTKg~l@XiI~o0-0Vuq_*xNYOxF=2@L`gFyor#zCCKQH3<%v z2R5|%i>4c73Z})9?g@)DzZKMFnKgBnHQ}YsIUs7n?!blsqXIhW`J(t!m$IMrrd-f!0vj}2r+0Z<*I$ytuNtpfCg!-8Gy@H za#XSsgac@k=hyhs(9+-BnbP0Z@6uP9iICklhiPJR8Op`@#hfzL+=u`--^cD_VL&ID z_#aR1RgkEprFlPj(wa7OD!)cvn_FGjb!C^aWYg3V)Y=q$D!cL$ycr~$^DIcRZ)83* zPy|F|T_<@wb^^nY8wwYH?p31{<>Mr~OFHLV5kE>{dxd!jv9Vv^A-om3&#jg0<#N#_ ziK6;X*doShSt3)sW!Ib%RH75Qi@xbVXv)MTR{DT>?+YW$B2q6W5wQSv_T0pbpwk{; z1^?qXo~rwj`{#4S4$w|3JZce@woK3eceb)uSJ5+5+3V}%I`+@~CA{2xX_G~)Nps(5 zg@ow$<34SI$Tgm}uu%K@Kwn+b!df9L=8cywyO5xrgD0cF&SzM4_&4YEX^;_<-tbUw zSfSvDJ{wo4Pgci8^hPozlPolm5KWu3mDI`e4s%a%u?N{}2&jr8+blBtefs|O2nJt0 zRQDSrpfl?~QHY;kHMs^@ciq{_gtH7wd?|0pG);I3>hAza} z?y3&Rp8y;ROHtOkAOXW{0Yn5=i*D;Gl}XCng1U99e4&#)r(^US>b$%M90C*$cVi=& zCJBTzd${0v)_TyJw)s`)O;sKUo$D;LkDgA<#X(R?0t6CwTLTrt4lqvxF1f9$T#gOI zPs<#17PcT&w-Ik*eRmpcO0WqmD$8?aC<1}&_iZ9Amb|sOTl3=7BFGb8?;txo2=de= zcJIi<`Z?fLLSG&TLZ(>&1TJ?n&uD~-Ad_Z&7}ELwa;#mtu;k>*ifmP3&?dVnealSu zt4DG@mEu^eKkve%XB~2N+_YH%SuJFGa9>2kr;NzG-bDiR(l(W~l5$$hgzp;jquJ zVP~x-i)l_iL&hJ*ELWvmsnibtK6UP#OWYVY^u0>GKwcE}4;1q27NWNK;tjEnx z&$JHp#-H+4@rWr!T&%n+e(0^BGRu!wCe)p!#1@%ZkVE&(K86BLfr z7g)gUV}q8p3*)I>khUA4HTJ%py>LkAg@hN&Xi*3(63d`Q(cKcYJ_whbAH2S-y3Sct zZo-~2j%DW-cOa}Hid%rB4Sx;{7OyjCQ&>aQ`U21e=BDXw%_yBm`<-NA#g`I#&SX|; zKZh#^nD*N}6Z{#kpqh0(1(!y*&6XfFO2(k+-46==jFNwlr8R;#f%6RuqlpD95g~ zuelX^<=LvfN#;$u?H|~fmyHPd62s6>z>X{{WujC00h;#QM4nM&+<35(7~ew<|KB~s zZMM)X0~HQetAx@@dsL>IkKa#I2j_zKp7DXP$=rQEJNws~S>6@%Vm|dFGefnk{7-12 zKuuSM)y-7X4)dy97mQ1qz{XKeYQz;!ovp)EUV43sBP7@sZ2*n$4m*;OJgkj>>V=>{ zrzO`)-wd_&Lc8bjkmHo~V3KUshT>aXb$}`AU8Trz2PfA-C<>y;k>15T(d#?7ii;Io z4n_m2f-i90?vteqi;HXe_Q$j-TBuWe)fS^9**qGkk)|}Hokf}9+%v7Z15amXQvd+K zwgCVD0000?48REp0001#0hX5~G&MFUG&J4Y z*x}XN-`=L&SiqRME>w?|67Rut|9M-(4h_fv)Dpn=bVbKHQUK$Ym(SthRilzeL52aSWK^@3$@q6Ni+?X{^c7zB(quXIf%{}j8ICo-oy z4Kf2uzKJ>9x_o!Xt_#?iqDkT@eJ*1A0O!v$X6e->qVn@cNYkgpSs zl{OmQE~88}(raYjLd&=JeSLikL;+TNiNw1yOMTc4>mxO3yPVAEdcnJ_geWot-NIq! zgdu^>x*}g!AUu$Umj@C}F8U^~me}sIY5k0M6%KE>f*JpFX%AK%Op9ayc6HpWgBr5A z0N_6CzTW>$%r(0J(y^TZc-pg?RGRSr^V6%r*Q?jsn_)9=KWW|A&tniP*4*{t$YLv(GwUQ&uE(>9tdjjw(cH#Pg zdA|Lv_!no3943Jx*c1_+;x%3xtJoA=%5}>nyi`ig3xq9}5g1X}FYc@3N^^B|H(q&0 z1LNzh@rY_eZ>wduCd4t?WPm^$>hiP3ZgZKZuaYtYU2#K_V^s!3VvEH? z6#Gt~M$|eI+!=RcyG>H8D0#gFM#Ad{Q}Lt96|bP4 z7+k4?(3cFyNcj1x#crpa_D45d$jaHYo}K?>S6YI2U3vz@5qDz`008>ZNl0Qpucg{a zz-X)Sg|rF2t2`fMIg-HH{_QdC}To=Z`L zPpj52#%E%F6<)CitadjeDkSs1eI#vGDtXta1OzU3 z5c>fZAdOXaS?H}V-z{D+1?8BuoVEzSzlp+C)M|k$^Y90%K5l# zQBh>Jtx(?ZeMS%-pXVNktp`nDpX#P7IS1M7gU0;{97=a{V@nN!!946clq%l(R$Yk-qp@l{SJ`=95g*RfFW9re`zy{&**|^ z)xptxvt)xa2Y7ZKaQ4ewd|$6UIQG~JPsF)P1@YH)g+n!$$t7~*uPkhas1SZ*QF~LYUJ7YS-a|d7^uLYre_SSB_-mdUx%5m*4z#S z>R>&gl=nXA|C7qwa2d6oCbhpU&sV$G{*V=;|86`)Uyp{8z~wukUai_gSM}!NrH_nt zWw`z@R`_@B4Hixahab%beKtF&QE?23yuTZt12kC`{I+r2Xz9yis&P*pvQM{N9~!frtyD8E z$Hs2zk6ufLNVt&H6eq1=@1}LTOc$j#3+;(KA1JOYWmPw))AgraA9E2br{+s_IQ?QP zhgWpSF>4~$AjE^@tokahtqf}h%QV>ykE#N`6kou5+N`q_xnM6_sLZwdfs()NT!iRf z@NS3DShzZzZvytU-1H48hqeR2_prmg>KNuE+M5$K)|kj7nP^4QdVM+#I)9tHoa{h# zRR7A{ox<)s``Ur2%C1M2&s?C(_GgH!YDL~66VF-L;b9VdF^Ja2qI1HR2LGW;D+ftw zevHqC_m3W-uem>0-QBIH&yT?=#X(bvC}xt;^H;;IO)eR=Eh?ypIWEhd{@QC%3^^lV zO}}3Vc^=+fZ32bg<0IMTjMsAa$G>!EC3(zk)m}`%tD?2ZI?&UMm_tgn=`d3ZCJap+ zRAEgvnz(byMdf&lss>}_+~t`qZ(P2%7i*l{0W3Oq268WC5`Fk<77>x0yLoD8r5n2k zg}ByCi21Rh9fl`UH<@tzCIB23cSv?8DF_SxBw!>5^75`|2@O=4w#|I(u5`}(*efkI zN~3b10}Kv#a3h9vXoPRJ5-Iqgd7uq7uHMsAu$%eHOxKe&0_j~%>1UBy7wn^0@OLLBEdtlq|>^nzO9ieq<-+B z(&Bf=*lZ!b4+##<(PXk1*2#d;J0SzF+ z?f28FB}H0l+H+oo_KcaPCV{l_%DiHc!^AmXi3v(p%M5U&=7j*AVELMVc}3Wjz_ZJG z?f|j=d@|j;q~k3m(Z-1-9{H5_w3m-D&ktsxdV@EJXs7Q%0ld!udyEob0(z*yH_XFOh++xPcC?@4;}V-T++FVVs65D5R`2EC>gXRK^1tjnlbrql=vM?=PoBem-p5mu0s! z#NPP~&`yT-B-Vb#DWBNyZ4eBQmotPl2rPDc*e zE>!M~&0yj1)ldnpC&O^uVpUtvfRg z9=K-2%_6ZF<1~5dL;+2S!raBz4g^a~L;@s^ILD?*5U8>*ca^LfajOqoAPm z%QvS_PuH}betHi_fTTy$MPv^Wpa1lYU3orx04ODjMn<+@y`K1}Hjd!vzDlX+{Gy8s z^rUarm+qOz>pi^trq^2_Daw$Zp+Y|Q+(>}Aw>;Jj;Cm2LK_nDh5H5MFkZjl}MFF%- zIMIbeeX)#j&g#PBlbj`vhg&^6yr%gO$Clw57e%p|=Ef(5`%@D^S8IGVN;3v2T9%rP zxS*L{AcEfWZ-q+JHWkD#wDXJX6yKl*< z;G>Ak8DcXCEB5QNm(AdK;Z5{*lD-2Q(kQBM6|WAGzdo;VxF_T63NuH21M9En=t9!R z5p5Zqjx;+4hFMdIMLVbb1Wutv|E&$@)LR1n#@x6J<)Pg!$lyO#Yh?iY)cc_u{VJuS zh|JOf+h1*Jf7I_(HnYCUcPk~&uz%p_>eVybi}Rfhe=Cl;iFmNBMMvc6X)T!#O}OEv zH(cXm2)klYSTN=Vud{i1w-uZ0oOWKEwEbOyte4Xj^u+EJsr?fLG=3CT%|Wk5_RfO zJ1MHd+_$;KF`;qcc<*s1597|E`05tydb_${vq$=>ebsy_;s)Nv+{h5)s5u@!L|kH= z?}1zQ5dpgh7$;*sDzda-C4B(KJqJJkc^SU1{Co87pJdIxeKP1tW7;DKUG+y?g9+(Q zt?%3-|1?P7-N&FHEHusbY?JuneO;l#j*=u9tZ~wit{|W4Q>4O)@oxRIrFu~WiER$c zE6uv#UuVzZq0|1m`mcXg2>2OPlDbY+Ut7p*;&E{}%LvDuEB_*2IcqL7okbpx>XFeF zYsZv&jBVJ6l80%8(OSqVD+($thu21diy*I!!@aRf=`B}jL#4ZO31=40n$@9vKK#3k z08eLUQvd*f`T+m{0000?48REq000191Fh~U-r?llDJL;7G&D0b zFEZHTC?_W-Fg7wKDJmx?GQI}g#9@@z>diu5;eHRon>lvDGC;V(AAkA^)W3GV9kYaB@jThSQ83&th zCq-$}2pXBBUUx=~`x#W|qRY$;{k{e4n8xUY7OZ^yz{JY(qxrbUYxs>`#H{&**=4cM zHlG#;V}_U9Wo~X`QN}%j=&&7JPN&l@DX~+X3en>Cg847QXYcle-zx6uRNA{VKx?nS z($ZQf^UbArn%d-NVUu>)@UpKGlX!mF#Bx?nx$OZS2i>>;v*+ve5D_Kfd$2FbkpZ&- zlSz06&)a`nRHl7vizz*6oKfZ(`d&YS#P`s@)n_tLfwEc&$ybWEV~N z&@0aAGNFks(T_~&Pg5H|n7x(Whw9KYC^*hV)jU8|rJ>s<@%oDjrIBWQ$kUsTIF(#3 zVX?N5xz38^{r4+!{Xr5&k`{L^b1s6gz*?06D2(qG0SNeC+CzL)QTgQG1+2c>08f`IJfSz%FXz%H-+w?W5~ei=LpuOhn%zUJJN z0mq|tTm=~p?Sr{nY`-P|!qckKa#T@i!T}sO&#dKV-=4qs!@a3*FHS_AWl&sQ+pGt7 z3GObzgS)%CdywD`6PyqvcyM=jcMC294DRj@L4%)ps@^)^zg<)N&(yYi_3FMln&-Cm z(2G(_Uo;RPrfoaR+O?tepQr$e~Dj-Vxa$0&@)BKH0fS;SMw4bI_mGx1_ zjZLvA`54tZ2A=NEdIHhFmG!dBVTu4B3P@|)8VGrrmH zX`y#h_+8qO@M93Y=!7$KxXm#A*r}COyI#P>;GR(go7Gq7<{|3`UxyM8zIVb$1uesO#_RV)j zMqePdeAo{q=HQrtJhh@vEmU6n+jqorePW$gySs(?<(Lj9zFWYw`#kNll!peqHTc(_ zXa7CN;te%Yj_&4*gqL--L5+#7)OG)NAzaX(+s3tdO;j(6Z>Oa%D?R}|!P4e-cHWKS zMC(MW4W|w(4OQQOzffB27^O=G>aN$%#?dl1Zp)0Bli#_@C>U_shR@T|n zvGKNeoo#C2^4>H6vX4psZur{NgH)7~Ir?YuJIMppl5_N`nd|PgOQf~S0j8nOo(^ef zh$}ta=So?;V@41)vU&4+-}?(VbkR#KcL!S85&itAA1Ict z<**^$*G-Q_(4k?*d3qoop%ioi7Wd2=;?9ythi)pU8+Pp4CDbHW3alhw;#*6j0y zTFh3tM3-tOLZxI6_tet*kH4}y3+p-{Q^*SI!-wwceq(f9GDU0sRMrs|VdEL%lWYhO z8Fj=N<;%je;$J2v`uRtr#+p)^Hk&AXwu(k6&k%({M`r;mfg;)Jxmbj!3=Pz(;{>l? ze#LT8v|yfp6%tdA9q{I!e}0@38mbGQOcJ!~=)%(r!R3ssmsLE$n~-M`e#+naY0rb1 z2jkD!UM;0KHe8nn5GduhU**i^L3t@~uHum_kp=njSZxL5S+F%_0>hMVy+UcY(Coxr zGCo7orIZd_gzDEZd}l@{bl|X2A?A?Kg7+PW8Y5M=JH+yS!Kd%TIJI(X?;rQ)Ef%T-4rgz@RNyjjeZ!Y=Fddc^Muep|mTKcJtjYeO? zNcU47p-QG$q2Lo|EMmRH1F6KPSRJpakw|N?C!DRQF0*8c$D~S~2sn|}b(_z6E$BLU z9PB;*+ig-`^?WSglIJ91s~Cd5PW4H=D@i7OtQvVq$#f=)1kr)DFYk+uWf#&vh9!d zXX$W1>>ukK{RorI*`Pw-Us-TJZhC?SUcWyt+s=?yDi@&9YJF?IeuFUIcWUa$!9$-i z#)UoM_PX5|^zq9t8AwqsWaX4E^f-{-J7LnbPB4z8|G_h&$#_{A>cD7VLbXRV`U}+c zRg-g_0U)E#e3j+cTS-B9;Z>iXP&yW~ve_(3LRNJQR>Ul1Yq*1pP-j~$}opO z(d0d5qCPsA@Fn!#kX`INJrj$2ukL0JSEF?|R(6CX_l&x6sOAC(W@M>{$pGZRQe2&U zaRDlQDNHe{b5u?-cs7oT{GhCtq#p3c^i*#z!FoNCje)l|G-&IzJv674QKsu`lQlsK zL8={uh0FNa_)obh5;Zad)Agq}(q>S}83k%pHotu$k)2`x*J|tF*oayLT?$c9y37Lh z0+Slm{#v8uyOW`|<~4w4aXngXuAz~dig8Y4|MsygJb!qJLaYr9EcTm#nyEVddgb4qin(ozGDc36H4R+r8r&fnfXJ5@7*q z*lT7znih#D2}Q_W?v@5yFjU`WV-(B*A*$uZ`IfavX+ zuibRqDjls2Dx0Ew0{8ZxW2<*LqBL^>e$s(y%U4Y*d<#w@>t3wb{Km6dwk~B^<$M*uu5rv1)hen789m_m1K7H z+#L1sLtcF#=>*rflaS@|Lw95|Ng#NFTflz??vA}SUnuhVA_W}Os*f(azwjhDXUV(? zesXivC_L&OE~mR7 zEwiJAd1V2Wn-y^j!1`^;Bpn=u_X?@K3^!c@Q^yTq?;BHCt`0D@%Fi8Wy;|pZq#tZr zVb2+A)xEaQ4U9Tg9>k@xc6uXX(ygi2avPU7J0wgFXWyRok6gSP#oVmvC9xzIp@bCP zg!EWh;zfQF{w3osLmWx1g+@bOJ#(z42z9gLoyvX+;jpsbc=0>iE~zes`1O3N0n8eT zMY0KyOf)Nd^Dt>$&HLj{(Ho73aqU5TSMEHTaHWK4Pkr;Mg@))$R^6|#N`_!*hI0l` zKB>&=RPe9nmhIm)0UnFO8(_tpfg$gb6zj;#1W>rhpV?6L4)-DClgA_2D#=KG5?ojO;6r?jYo5Xoz+;Pt43)F{eyA_~K zKe|@&z^ftgXr6$KJ>4Fk0L-plsQy(IZjE`2xS^Wg=Rec5c!99SX2sE9L)mJqhtPGd zpGoNp`9ahF$nJbooeO(Nk$l9or@5Y0P*#xphjMyy37ycd)_KTy=a0v?jko3B#S?!R zkfu%0`i(BTAjk2%1Baqp?|9b&xeviFtfz!R&pP#%wpe2h@|K>V4R^O==3KlMETI-F ztnz!qQi!ehL&e7>~Wa<>2WpYHb6l@=~C+qu6++h2s$_ zL3@CbbEQ4$e6zX0CEPrBEleMpcnqIOqgrTE-Ky_Isr8k;u=4k17B1zO?#$sDAU~8% zC;F>+?f9Tv$~n&6PDH%Rc`q07O5MErHLPiQnR^C;Zm}vnC}u?#fTIHp3o$c5gt}n* z5q~}2yHwp{*Aq7#RinB&zd(rMT;cAffUOD;;&^MLMhVzQD_$XzsU!903w=Dm)+N;@<4xE;GK=|sE zST(3$Q<%SC3_zs1U>)1}$?f5T$F`}n9qx^HeQF}Xt<%QKK zO+Htp_D)qILA+xJcA90;iJeuh|0(Rcxgs^>4P&`2`P3m0VSrhROuC_xIxPS|B?6ki zgcv~C$z@!~RuGV_2I$OmDpH4Y%~eN>w(uZXDz{dJ+z@I5?g(o+1U3EmI9BhWA-P;h z)!h0^1@^_`@lQBUp8NzT!p0pZd zl`Hy5u}U@dD!n*uXdJw#e1u6tT6z27ABu9M0meTqZpYVj{T#D+%y|l4#0h4Mf0LEq z?&E?u!BG1I>-P%K3hk@l0ePqhcPd3A{l!Do^Xir`yQXQP-{bbS6GhHApm2KP;Qs|d zg1$iif2jc(a>Uro@lBqKlYM`6527hRu$CNL9D5w>yL5CA#wGn{c217ZjBKo23>@t2 z9G^dPeqpC)pkt(C=jQyc)&p`58wUpi#38}SPWu_csYv=%`z>cQ1c!lIdjo0~_aLaa zOYuHZjhgeHPO@%5i=U=1@czoHC2t}_A%C>Y{$*aW4dxuJR*#q?KqJoz=B*)*84vl& zLwIaZ*3YTuozSOgdccxtitVVnzMa^R#>wlLaJ#|7Uo%JBg7#|{3o)9ivgsa0Ult7+Nx2% zuO`6}n#jhyLZ(uroO!rCQabG26X$7by~6#Og=+&85im33(=EzIT&Yi8lkqY`NqmYx z*Y>vt_mmL>Sp`IxS8bS`{sp*o*QQ3)NlX(A6YgHbv);vS_z|xnqluHw##a#cQ(H`b z+lVrG$J)VfG$tRI_VC7Kr?H{Vj5E+ zhpRI`ZJ5yVs}u0f)O9@)uN!N`4(0;n(@DF9bUHd3oa`00!~Nv-5bZL6b_Q2g$fX=Q zw7RmKf1ia(Xp>mLoN!fmBZ}#MzAs$9YnO-I7rS-FX_0x7Gaqz}3+j6H?+M zBojU7vx7MI&>XA zaGE?+X&IV>i%GtgkXo4g6rPIBxqTOt3h5QMcITlj%aW%3c0P!@AGCwKr>Fh~kJe-; z>R?i(oikEa6>Uy*+n=F1uGNf`D4aMMpiAX26jCmxAo7d06k*B1EPRR&5|=Asl7s*zTMsW zaZhBA<~Iwpwm_J3dC+l?KRn&Of&B}B@Zi1F;&5~K_DnQ=g~vGw7^s8?=~ImT~bg4om@8gH@1%b5_$T8V17$z}Vju};>f*JJMf*>lDjkrb0D zbN)=c=gzL{_@$VRCcyGxSNJD*^cGvnKwU^ zy0?0C-G3Mhag{OQum?1toc8bUG{5~a>M_A}2sJS~Zeb!*lD9OwVh0xM&4pEsNh{XJ z`QtR%MXX!HR-3FTpnLX*s~A$G8C>Pv)C{ z5G2TWNoHhfx=jqM)WqQwcQ|rVYiWHBTu0dF2U50Z_+|8?kCWaZ7mUTZCt$R=a`$Ej zC}Pif+Y7OrcF`XvZNHM)PofE6cczE|UaFSgMjC{1KUUI2 zD_mmU#DmqCO?JOU;?EP!>a0ye$Y}zBJCVX-SeMWQ+A|9`+p4st(ECXuuU4ho2F$GQ z_ObiPGn}z)sn&AHOniUz@c!N+=)hMVFZ|VPMYD4Wh`JSp~Rk&)+L)0_> z+sV@gtkwd6;PXPtpsoi(WkTkcqrdHc=inkdwC6R7DCUh7iOV^oFP1{j;Wy)G(ylJDG}YwUKU&9d5a||kSIWd_2f_uVW<8xdYBI`@u&dw7nO>L}HODzzcPNM9(*u+Q zKnxfXLd?d}JoW@g7B;&6s8Jb}YXXXe9G#rz&o2{!5-Kb)(044R+&P@$0FW?>(Y5(o zm|;SaQz!2L6Zj1=nQkD0uN>{@K8DF2k}Izz${bCJHfY#`rb^iBrQ^XR#B!qbi@vi~ zV|7_(OdaiCswjdN5>bqykF<9XKmDE@RH-M8cBfsY#-8L*|A=r3a#FN@U*z$69~DPn z7V+PN-P^{5B`TXGCp^H&OdD<@y0|N`xH7(Ofg?4Y>IQQZ-sf;Z<3;)V_dwktKn7R} zB(e$tOCqM$$%@h4@FjBevGk7nO;H`+uk0!Dw57XwO%wO(+E^to2Nki<%ZpI2lt3|X z7&3>Y5B_gF;x;3?auMS#sZQihLrb;`{Dofc5o}}X9-56B&k{JU&~!4!|3);IIPnZI z{KPvX-QAHZHcRRUIF4C946y0CVci>U>OW82m^D-=95TgrbH77Y%&&5dh(C`O*HcS{ z`u~l7yM3m4LA>en_l5S=O9X8MVM1d5Kt(I}XCsWuURul3v6b7$&1ez!B!kb-o?jyL zY!3d`e&fb{$5?Mpy?R&6LpbLK<&(Woc@YkapxU-uUA0eG@;*!nmw9_oMs-_+prOF(EXR&$dxns+C@$C((5A6J@d~WDvH5rN#jU(OT0A{X{Nf8ld##ISHG9NVsz)f&gKdNnN2G62K2b^WOl zg4Bz+#L*!Ucdfr_|MY04ezb_HU{{~Fa~o*2h-_6p=v;{%hbC4Dqy$GMHpu&=ra|rV zLo8>}hXh=6_;h1~Ji_fQy+Y{tS07jH6F#}fZ&%Mx@{Z z#l#Cix$eZ2-)FidS-Wn7(Wt%lNmt`VJ*M;4IzyHE3r4Z1a7=qC9l*YLAjQRKi7R9B zs(?IzHE+ivI|-5Wo4aC#bfOcGEkMM1!!{%`8kUBq7KKdnttv0|<%WjJ%#X!1GWF9x z-2Pma3(Vec5fgHehtPX_qW}nWxIIKa{qwLPuOiXGvh17L-M#hgXWiwIH>tUK#{BbN zEkz)Yx2@JH`f9;~6#T$204fJ)kD@;T$;5#L#*)MPX^f5?W9Xlt-Y@^T(FBX+DTT^~ zDbp=Yl^DJ=)sXBc=yO6~&>x%mnV_w3>cq^PSI!BOw8sIzL{a;bzRjeSe9Qi=tCPYO6GISyYeZ77jpk1F# zl_{Z{G4ADRb68N2>zU`*9qSrq9B%{cvp}Aedi@P)zQYF}GuNi{HH@rz!xk3eda71B zdFr+DJQBdSU)3vxSa-OAS>F&4cPPj@)qN4VI zr)cF5zOp8Cb_hmpP0d%!G$ovHMNWp7jGG~JZn}3`C@FM*oX;du5p~wME|NO!cTy5} zup`(4JHM&ixZxXMI-0#6Ib%LW<1jbxtWg8Ob#7e$co&>b(bastvw0RczW9w~G%R z6a}E-fg}YPEZd`8!WFdv4qu0EJy3?^OLIk1VO2Y`$FPZT%BLBlojYm&T90=is3l@R zLGEW8!6Gs;8IrruGmkIJABTLSli$v~ww3wt-h6u!TNc`}Q-8aO#rKr|Q!u#^E(6@* zf{?;oe_sKrJc-knAtFUU5+~ZzW2zkbG8rQg>%$?I{LCncivmvK zGJt|4BHOYZZ*Ik;Y+01^NIJddFJ-{Ml@YVvKA(lP2*nB{ap4$Egj$EmlZPyAY2giM z7-m-gKiJA!R+NYL2Xew!tHs2?AszgWbqO*Q(e}o#SNhMn9+dGu((9IJO8cz@v#=00 znlzSLJYHTLos7%rb!w!i@ci7qEiVas4qK2eTL08v3o{6m2`C|{&%qRI5e-G%&TfH1 zq2M+dKJ$F)Ro~4b#T2|4{-uCnco?t`!CdD|m@CV{vTTZ%?keZpHyaqJNDV6?;g9s5 zamf_;W~eh_L>2+M*lS@T$iy>nKT&ZR@_HmxzO*`S;Iy}Vr^8s_nB>yRe>Th_kw}b$ z#o_TEyd|~zT~Z%=YC|q1K;9tKEWAN?#eAfqc`ec!Q%>ERJ>zMrPW!w-vadB+KGg6( z#{bcKV@pCP3i^z5AMT-+Q?jPzf)Id|7~ zcD6sWvwxwdhiDe;yi6=~kctkjT{?(8fP+4fU`y+v6+sB=ftRv!;f5PFmd$tB6_j-Emco5zy;+Cm}T z!p?NfLPlw5b<^2#KWw@d&jtWirj|5kD2_KhtjNHb1#fzsFd%2kMmWvj?-}cjQv=Sg zp1aq9FG5A#-|Cx}OkVCy?a?4>EIkZiBZ0wyEkvM`a^_Y-4+&Pn4fYGGNY%)gb$04H zVfSz@TmOjk)75?k05aUr6Q`>oQEs)$9PuMuIV)u6h&X>+AyBp<;)plsNYS%yBn ztwuQtIJo3JTP#YQoxVxk6{}Kf{egZE_kZ_qiv6ohfp|$8h%<7F<1y+7~YhJM1 zv@}taTd~D%VsopH_4iXyLa!DFHhQ1dyq%5P%_^tX>sgQWd15kwIg-G zcNN<0nfY*0=E>9EZI7>iAg4^W3W?Mldyqu=QWNfznrhLG`W2X0ejMCag58 zQUm6BdvsW$DCsq|Dp`abg*@gK+lIEI$o%}y^1N6TT{LOl3t4neta;MEDr}ljh+}<< zw?9q*^Q1tDIL9NQIleSmq@tmYqVFOKTsxJeDJNYSBl#!JBr-X3w#fmEv(RVIexI>D z&Y@>L*Cz;(pE{tF&izk2E=u#`@T(nTc6v1G74)ctKOozdSU+rLfh0NamAE>anz^+$ zRaHc$$t$6!P#00@pifotg5!Y%wL#dNnv^<;gouz9IivKxH9kbZqDyR<}PO?YnHlcPC?!n)<`Z#Cnko# zg3;d~Gq!Nb8&v7NpZRGem*Fz~O7lyFM-YoE@vNxtpFqvI-sC$(ZV0@NwWdkt!Oru1&O?quljI>&nyWoSkWPioWH-YalWVs z@qh@z(04q3_{aU2wYVp@^uqv|l-eGf>F(b4l6_%${yCoFg|A3^!4sT%8%KeC3Ze7Y zQi>C3^O5rZ?lFjQGpOxS{kPOX(rY06;2i;D9`zQ{orC(JjLY@ixst63bprv15$I}x z%ujf4`Lb9xcqo*{W{^X2yz=NjJxHDL*JqaQ5=nE%?#)bDYc7MSI#@igNp4f`F!qqOKX^<`Jd)?t`q`F5MB zQC^UFdb59r+Hq9+Ef%-@c<9sB#*E#6(Z(+?Q1(ZdnTui2v-P?xiRMnp&6a_R3ULTl z8qOz?QT`T(?vHkS2Fu-3^a|1U{*45X(#4^Wfo&pd%mgFyG_LJad@v{T86Q$2`zY&x z=9Jz!pL64ZW>-wnCqv}k?nEP3DZMgy5)nl;u;L*&TgkDgmV#*ahA$h7)zdwaoO8w) zY)S%|hf(##-`8Yqm0#YoKZTtu00!l2OR;fn2|wj>*oe*QcAB|ly*lYKwwd8Z#}5?0 z75Y<5cPINhzH&?h&ZR-rP*wbQh$k1B_%40mfrXF*xz)wUq9!%kK3-jnYAVuO79hW( z3ZP58b~i+9Y<-lsSsWETU{QE&nWnSxrbdM2H4be{*eape+nBr-9##jq9|E1vO^5M< zDR8hJaJ8p1JRe2bZQ%H~sg}3;jZhm0*dd32&$#w40A*7ddtTer0{UhiH&>(7H3sT; z$`R*4v)1MvJgMcwcb>N%G6N?Zc_wcs`wveQmUp-FO}O=EDgYO26oabF_2eE-pfHlq z?AL+aNO_|N`oz{0gG8RO`|$n&TS5<$_b5DO*T0O>{7kmSgU_MsNDsnH`SeG^UZ$SLv*SNPz#sRGH zqzxY1{p$t_e4YaHG^*w^7h}=;=9kQ_M4E-sYU=&4zc~%86bR(nO(rdzi9{jj_$o{5 zyf&33oeYtQBwU4H@eMZde1|-ZI7|rx#0@e7%&B!Hl5&t;qqbOr^4`FXRIs1PJ^H(= zL2!+GwMJ9(^yL7u!cus2bKV(amPV%mDV+Bo_5gU_)VFpM@j6&^Fv6dU@g}@aW0gAE zQN$PlOY3@J{)OVXjDLLVQu7h&0CNdO9ZJzioN&K+nlegDGFt^+^SpB1Oya=zf13LQ zO~<*Ie7R1{s8k+gCcRBwFN0Ya2*2D&RA}%qqpa~aEz_P;N59JTe3-tLw&+p!U?1=t zS+joSjMvstpWf@``5t9FL6B{{RHcSg_F|Nx&fVQ}+TGfg@utid7NlQoe~iU?aW<>r zJW4APUVZUH8 z(s}YhFQ`5%eQsjSBo{lNWPKiLtRDl@*9iOdXI9;wzuY=(iFPt$`=|Jb5SZD?Q2vFf z+pS1_+)2%o7W}YTufAn}XNj)Sb;)8H$wD40Ne{4d*{mwtBU79*J72fQE zVkgj({DTN4`GMnJRPEwd8^r9eg2Rsh}!uBP8DbkfBPn@BkA*(X7DHnn>_XFWy3hlZZpyQ@?bQJ zP}4dTr~9y$tlV5L;W($)mYIrP)f{dXt(q5ve&d`zdEbArAAUklviTI9J4H*w& zZ0y=udUyMTNZkJd1!w~dyTq{DRX6G2440DD>F~Y1a7X=k>zcZ{ydu}DN?EKQ*c9=7 zZ7BCKQT3geDy(-}W1w`Sx)i7PR_JYaqH7MfyB(F8+-t@9J}~GqnfQ;S9N~;KQ#|0r zSg)N?%0F6O zXbtstIu97xD-obnh(t#TEXc921<_U4@2thm0qM2~J)AbOq44mf_y*MT9S zLdh3qMGH$ItY)V;^;>wq^eJ2;8hgVyXiv)mPQ)&P_C5B56J1Xg10MY4?H&kmu%dpE z{s{Wj6Z}41zNXhAx0#T>e-S%6-(Gu$TXLgy61gbwMUnK5oBk4Z7a)iMl?6(XipM4#j0;*))}LdFG?H>2p{VyhUhe3qm1sYQb>9QvBk&M zJiaC!_ZkKf@+WmUvA#++%)za**Fr(5XYueVU4=$h9A(#Jv3OQ0FWs&mBNk?R`WQ|_ zAzalmOHr4dBgG3#;2z*mLE*4QeFiV<7l(=ScM3wC_yunInh0gXe&uhuR(4C@`{hjB zP7Lb(L7-Imrd7o(DGGJRQ0ocro-Z#a>#w~T1%V=Gv}cmf=Awo?G=6jYcRr#xCwzIy z-z1aJ0zAt@>g0erC#~fG({6sF68;$+zgR|57rR0J-EIx*1q5|IB&V-}!o4w6gPV0W zt$1!2V8KyD> z1hQNi63brH*O1-LW$O41>dx@;|u2f8gymT+L zCzogCRPZs0kA;ykTd7Gvlmvtn z$B;Y>i~sa=UsW|OmO_{XfN+B6gQ!{pev5y)iXZvwDv}x(_La|uY28P~-dF`wL^P1y zMU&5GcjFQKV~ zkWu23=u6CT^0X%?1Rlz0{?e436 z3+k0&$^9u0;ecrphqR4qf&;e?y^kOR zHx~y4amo3G^}lEZ3#4h|zs?QTFB|(z^o(5W9Gj3I7$Ci$pCL6Hd#j%rSU5R&=@__p zc6YZRp+((?Jw0B$CZBUdYO0;58K&|EYe$I{M8`|jlAQ!<3m(k?CX7yaSVj;rIMK|p zI8@%Ai6X*l`{RYTk&b>6WelbesMwIn(W8Fhmbl-$DDu8xPk$06`)gPqfCGVN9cgHf z!SOdY@BB`3_jINUL{aT9dLO58Aeni_G-4`JeX%K!J#5>0J#&`*EqI5@*X9_{Vu7P~`!y-q(^DZ+lki3^2A%zRTkx|T(RghRB{CEKz2(7yN`sbWpL`||@zkErmCBpMHH*5k>7%83 zVIlt$+ZTPyll=GM`LS*N`JsMkMvbni?lrsVv`k~eU>6U6bzACKnx+fk+VC*^Pqcj& z;0mmsCni?+^qKfc`~As)Ow;jUH)ue&P3EY16;3H$znHTz@jAD&GDov)8w#=()5s|l zV5M=g{{@v~;Ve5h_3tr}8zWv(hzPduLoeGkYl@IZ-9ShEF#rMpths$$g29o1^k|0O ztt8K$OplZ&S^T^(0i|3#b_5tK$g!AgYBVd1J+ULTxi85JF{tN#Bq=eT0A7WoLI7Be zM8!P}VVB%x%6V^&Q7FTL9E0Dv*9>oPB9Qf!&74I}6 z4LS_cjadTn&3=9!s);33D~8fKgsuv$TlgI{kz>v3zgg;wR*?#`T6(_ z4)ixvnE0F$7z~i{fNN!lKq>j){YHw4LdY^7u<=a{&W+?01b9;f8`(*O2fMmrFG7q%j@VtL^XVq7lHz=Nr%Ml>U;Mph=^F=_E$?FV?^Zy%**DinB4GrKqwAUu&p( zpTU~+GFB{+Zt@+Ff98Tt2Gj@?F z1B-{gI3L9o$5!|5o6KE0#cYG|V!HC2<6QpQT(87zlK)91$trQl>=Bz~m4|J|x#0nI z7)`tv?YndlZe;r$zrcpx=sdRH=G9FRcjrNTTyMfq33>$W6(9vr z<$6PLKrXvc0f?`PtNYW|fU6+mCb}@Q5wwNrcZVd*)%p^1g6@URI5+-Et7~-`cc39B zI;j$A<54tO$;exj!^lymRV-aUhZAz^Fp|QFkXe#huY8~gtNnh38~-TnZKRcXg9$qp z>yK{mP@UjqChsiW&LRBqs1^FgLR=elSv_)MaNcPt==c+V4xXD7c-eW``L@cqFSOm` zn}5e@=Wh|m`8xr=BsIcmL%%K1d)y{2KHZ zecU=^WEk7Qh2I;8!)I@BOVomLdyT)&ibh!3&>l@cKOnub1Kr}jCB!C>bWBoQCx8!r zpqLxmRljxgzFpy(Ovn<`cuc_Co6bYM^81s4A2R_qd=HL4J>Q?^zZnWWae-Hx7-GRm zTQ3_0S9rtLB!*d(D%IcGhb%l0&y_(TM$tpwCcB>V?~ibT2Y#2mb42{@-4Jc)28^-w z3D>-Bzrv%-COuWlOdkZr00k=o+!I3vE!Gw4_=hW%IG@itryT8ldR4p8VY*J+Th1-y zS0$8kTzVlSy~o}hrvt!p)HaiKrV>`E60G$Qw1sTYuSM{8q~!2oQsJfF;#)VKrD`ht zr9&j4s^xRc(z^V^Ln<>Q=+4t%!L_UF4lWSwlbO7#h9M_w<1zS zRwl1fk^Fq0?P8}hSV^W7Oa)Bk8!dg#8?F&U7d51#O&ok6%Gv;&a1od*cirI`yxiu`)B)<1=WmLJ4q%gE^I|%5k+>6Tck$Dj0S^3 zjC33V+EoHvG^J1C6`I@)cPs^#J5UP?vJcjE^l_d1p<*@WKG}wtx_A{H3qLx|a_H?W zVdy~WNQJNfB^h~VQWHUs;!j;Y?inn^d<2#KWZ2CdN;F1Y8+KnZkuiu6;g?uV=*ISb z+P6s}#6+MCh`C%h3%m+5pk+*^9Y0639zBwA^e2-(^)TdYpO~r`u9*`JebI}v+(6?@ zWuEJRK-qi4*+H}C*3*`giRqT~KOr18SEuAvFQ6lU*??z>{ zGJ=Cq!OZQ3JEx864AjmB@>X+P%AvV7^-pO3>ZiZQG`K4iQoPh;C6|VnjBVmraPC%{ zfP;!wpmo*0t*HWkSXqMtccho&h)=R!Vb~9NTdR21sEWcFRe` zLZLle0eOmdr}LT07CRP=e}Pkj)sy{RaFMq&VIVv&hBccq=Z-0{lYm-!_PXU1Z;L?S zWxKTA;1)ga&<}5X6mu{cdBw*2Sq^fzQPL+Z#W6lee>w;oBYFscw8$(gB{B6ZR6iB! zy2Su_8(cC~lW1jg2!F!-3QNKP)b*mzYQm3~ZcLUVA$e;OLUF1pod;%^c<%qZ{%G_!UzYgi1CUJsXdT z9Qt)Tt}GNn8f#vUt~yi<7{yi3a@ko!SbEBwYv*%FDzW&kVL)tcj);&Vm z(?IB3GaOatFOy1D1=F(DKy74F2S}rQ15(&xN z^G*t*l&r0h$6M zo`ElF#_*8p>E~F8p?Yg@H%e9HRYbw&?JWYzIdPKSgyIpwSHaU5u}8|?x|WvJcn^X4 zOv5X`TUZgj=<=6=;ub{8%f(sBQ#m&E%lRiu!>Eb`cj{GXllFhZg1T-MR&{2Dh`NTq z4t~4#p_Y9KmA0u!moZ_F*yGMdcjRX&CuOqYttc;QOLjlU)5@B^L5X|uPK0_tT;Dg3 z?FEmZaCChn41KM%75?*CyN5v^8&{LU-)(1g0!8s*uj!8=aNuoEOhp!Ca&^v zD?6a28LrbX&mEwZTl0ox0ED!Yu&I0v2vvPUVX1hvIVHd$%S*vBjqM%~W~~h&B?!o{ zs6y|&4>lsXcoQbNm*8Qpbu!kWz#*FtjjjgDj8>80$In>ErcBl;%9&)L9~{9Y76u#K z7hh@&UH{A87~|Z zm2W!za$=a6|L1M^v-N*c0~$nXXwPa4;M|zs*xKA?_{>Dl&cVsfvA4@WOUnpp@nmCw zpdIKSF^VscOvM*YNag|pc;IB`+})es^jhai*;(}Uro^5Wxzg)a@P+=O1D~fXG0eCa z>9Wm!m3xNK)&0*kXS6ZEl(!Zg;pLF4ay`NB)CY}Se!SX>FlUy|RoNej$2!vV(ySH3 z#{zXquvdduaA_i?>-!^9DauUd%}uyQf|FsOyd_`NYjC0w_*j2Fqa2^E<G+O-(nzYd16Ry?nLe$7h!8_VfZoZbJH-wjARc z-4eQ-Ciy)n4h3*LYo(uzzpbWcBv?m$#f)oVySXLeh|jIgo?W8<#Ng8V|A;!Ps5aYh z+a|bMffjdncPUWZ-QC@TL($?+an~ZjU5gW3i#rr6rMRE`XOBJhRYsEAjQ4x9p7qRm z@KCh=LR&^6a9xquv)VjW$L~7|IM$;7#$`n15T=Q1AvJEY!|FXOs;5aU z>{n;uNS-f$RPyHXOBvm%{9`Upd4YWgVt`{;kk=WS!9P0kXa*X*eRI%>txM3Wy4 zTtkv8LoVm`Mx%zx8WyoM2G_9rSO1b`LeSz7W)pUKOFgwTvt7kw67L0EI$tl{5De-$ znrX#NoH>Pk z4RVJh^o%)w;-K1|FtMpKVg?iRzs(hj)pNynJ~+Q*BxxYUnDiE~qOyy4j?5qQd@&s= zbO{BrTU;LJ$GfCO&!V|?JU?!xwm9foecXZ?uxH&^*AN%sW$p)5^$IYUGZu<60K2+s zK6AF^A&Lp{1>T~TRF~!8lBI)}a>uTMAiWj6!in6@OesH&s-6Hbk*u|)EFt|67*@ZQ z=_r}(J^uC^d7R#= z=$sc37&k#J|5Jnv`@=--mDnyGbLK&@v44ucX-B>D)^vJLvxgT9Z^j0TQ(8e5PgL1~-8WCwC#%RK^a0vd z>YXV|XK36}QT7Gc#64*v`ZIcpW8L&(Y7Ll>RkIqMqqe1=nl|xlu`Pp|sTnQr+O412 z9g=brKnQjiHuE8^j2 zibRIhz%5-actX?-5y#MsIfSUU16pWW0QVyi5vEI=4O6w`K;WnmD!pug% zRsAIl_`(7bO617m6hA>cJ4HM~bGc12-sMCa6b!6Z^Eg>b?tUewnrEBV%dr(u#UrSQ zg#NPxtpYL$#WB`&hz@@x>KK!4tT&kjnqd5!rV|dVBD&QzSpQuth9pe9#fLgF>|F#{ zTiQ4P4owaz-9zAC5;woA-TEb*B&)*HYFY5eV_nND*f`uvuHs+2Tf1H{F628qb_L&! zhRyL3aqu?w+P;qhl=)mF%E`yamP0M4O9Ip_BqC#O)p^nW*}N&Hd`^#cR21sGYHTte z=nU_%%%kaCEXry?Laixe@wO__BSSA@w~Q5~eORAM{)GK8_r!v2+S&eQKa186y$SMI z7{M?8LhFMBy7<~E0#?_5mKnE%IAbK*Q3OH=Y%_4PUV`0Cv zGjkbJW$2n9>zhOTjci@MFB_W#5$5L3$pE=ILGrNk2Aov9IcC(`Z@Ij}w#`%*>HhYl z&Dk5|ZBT}1BQClyEh+=iG6C#t4R2id3eMnEvA`DVZB1teqaZ=F;Cvo9&ksgjidBSO z_T@352>F+P#b-?k*fwg>Kk2bXILU&UW9}bOLLT=Q+hRJ~P|y@vQGrQMgW|d)pV)Cy zOuI_A<_v1K43x~z!=-j?tIMk=zY;5?i z1MDIUxFJTZ`@d_tNWa&eXX{`BakXRV4H~?D;-O1fc_D{*1?f~PmKY{iEZNyrv$w(Y zJwFF_A?;#g&e>9)tT>GHzabE_qGHXc&yfN3w~NxQrSG1OMw5k#0` zIU}|e_tNku@}eHWu+)SQGs!_AK$^};b;xu-V<44vJiY*~_Q*tg0=bb*@Puirl6yb&xp1M8LPCBOkyEHh5Qm!W@nbZ%i1y-IUv!Sb_ND zvg7@a&0`h{3!I()1$$FXJCIut42QYclDfl-*nJS;^jLRKBjpk3p3Yjfm5my9PGFQ? z!wduDri5@1`N-@}V=3ssNH_lCT#Q_m?*(?X9(D)7bgWLvzra!Hq#!^^$NVbVx9I%^ zh+|0JEzl&dEOz4W#G@QzL~}$Z7jeiRl94-v&tjA@e-Rg|KfZ{7>O%&2vOkxPw7Ps2 z%!u#%(2>vgGHFqQ>96sc!g2S@IKA&KeiZ+?NdnYTO%jhd#9=b^we-{?gz<%`kU6Wg zEhKJVKzSz1(_7{qBmQBgLnuju+)T2Ash&=HOhw?oXNJCt6p3ow(&9&{p@z@?!A(cf zy&e@vi= zJl&7Dejjb)0fbU?@Mu17NL>FS+U7Ue%s34N#W++U@teHTP3zRj!(x|x@93GkbQq`x zHta4;9Tv+;n~1^IV<UbG{R~K(H25>~LFY0h zdEPoAW;gfbHAq^~Ksu}QE&8NUhjb>L<~nrHSzEL;ZR_qS2r5X_XyrJN#d>?DmlJMt zp0UkxSkOfmgBLjIkFf$J+%;*v{Oaqvb5Ys|h!fxokmf;%)0dg%xHW+3>2LT0pIXF+ z+%)zT3#~Es4tcY$A6H}DM95ybO>&Y$9!WNZ8py34+mSq=6<%Kzv%Jucflghmhj-AJ zKvysr*NmD)hrCvIv3zeUZANnBY{1>G+GkIW%g|k!_ucRPH96dVg|$FW(g_p_6E@Dl=EMcy2IPeL_JHC*}Uu zBRR-Yj+TnUctV#d0U0DeP!)2*Et21wAoi91>gdT4e|tNqM|(fbu*hz?v9uuH*2jbv z_an7%qRuTp^QD~*Kb=%UVv?ya9@DtmA5d}YR2*N=8X1yu@Fn##@D1fZYFZqi7#2IB z7tt-wG)Jl561MV3uk9B~%M(BvCQ+r6^*Igf>lrEyznN;_8GdEh+sO)i37$*#_1sTVe8i}LL$>oQJk=;B30cKU zas2gxCZMvHq$a2pdhO0WbeL1+dclmujA}*v%2NZ-(qi^ZLsuX(Z3z_!a`v<#TgPr? zWet-wwn}|xVH&!p`-m8DW8|o@XEF8z0jbz0IR1~aAHf$m|5C-|>n_ZhMS-xKi+b@; zioZQAds~=Uu{`Hg_KX{gYTN!IbC+}V{CXHb{<(GyY8-9v3ASf6(}2FZ<}jfp#ykx8 z6J7oc$00grH}P*EuSr@|r(E2`Y`JhnlfX)%vG_$H`xn&|f;j&Y8k-+0G}h!sx$J9nHf8)&=n9^L z&)55#g#A;9qlukA`k7uPuinU;;V1h;Iwz+>vfJaG_i%_~5hGf@ne4Eiy8j1(x#CY# z3K_^5?SmEvq@f1h)v9;)34gjL1#~j%&jZqUdHKC8xT)cPXs^i$;fYzph6MHguEuBL ztIE3eE`c?M!sRK(lHb}<2yDrQrU`mvfFX6EjF;mvMvJ)p)G-}gj{*MO&xtydQCVAb zch%=7GJY#R4h!2oC7yS;@aJ8(xBAtns!KnOyJ2Z-vjOspY!1npL(KJ7gmE6tiTzW5 zj~Ezp2@4`~70g< zGhjc2n`Y89kE>)R)~nZhW2k0F6`A+<`UR6l% zwiaw0#KGkyWECj5)EW8XvU5d2Pv1lxyB0O-*@&s-O4rJ@hiAmRfrp_m#l>}|xALsl z@ zYkc|NS7ZxvMStJtUC{vN)&_yCt)T8#ib8ML@L(eZH`v$*=?9~aBR3b3zBPz~I4&J0 zZ!ix#3`%XDzgU#SmbMEY?6~f+#z`B-Y`cE*!nayMIYLQ%E}K?vMyMEPgIm5H2kQnl z2HaSz<4c5kOouW*dnyv9HABC?EtI#tudmQ)M_%R!iS_)7GM!SJa>kp{6yDzJ_>i-v zpn<}mJ4Vv?;7O*?gL2y%f8PFnidI&>Kqkz-aCc+M!4&n63+-r}Xx8pDAv;6ONMCAUu=(@W z*rUb#zs&ACpwK`O##X{$;V&VAnX?Lq7*&^oa+=J}3A~@6;uHG^G*jCE^7gW;a{>4r zghdvU5@DCR3>5VR=$+tx0dc8bvy_7$>#8a6E6!9DXnM_#ucnCz4T^(^0|2&hkg5v( zJpmtKZy8xQbh{JJ=CbYW@pIe+mMUq0#FQX6gCCtWp2khO-(-XMAGp@_31(JuZPOdG zomKHqC;!$7F4Ij(;+afydO@Yy?rJs4#NgmpD9X zaQ#=jbl^qR5VYi1Mu&ik9pKY0BS1E`C&xR&E<-shI?c?-V)gVlNmS}J=45bysX}%T z>eus99WAU40*IM~eN1gbw|uG=x22nz;G^oitEGvIPLzj^FJ;PLc}0w5>zL9&P5$Hs zbF}`NLpM}+ct<}HDS&VrLH>dD1(f?bkYk_nBjDyPV_>q)pM;m`PU0w#Ro+>oM~w(t zI7{WNaX}kP?cEWdpATx_7=5Ul;$o1li%xXbNY#()taxRu01`9zMMzZ<3di5A~UrSj^KOda~Ph=c`4PYY#B0{2IR-MxlLS-BqJli`Xco z7=z^lbVohu1b5P|3Xm6y^Cwr+JVjUVC?KXq4wUU<8U-JE`vc>W6uJ82-;pZQN|XA^#BT_X zFA3zWY0W1SAkKs7-g4a*nwF$GoS|3T;<7%4>=r_jGWHy5!nlmJiYdCVQlqPk(#`Se zNa`oNR01b1b5d5g({XvT%bHiwI&xdHZk54L*N7%$gXAAz4v!iLaf-dwwpt0cC8daF z?CR-P=bCXK_>mjj0^`)Qv&eWCk|qUj53`<>c%Me?E!5qc)n*@F`^R_t>N{We^GVw8 zixgyfJ=POngWERKjDOR6InG?i3Km8GX6M+xCSLYC#J%y1EsDn6Ebll+xCF0MV2inVyT^HD1k2H2MW`g)9)u2?Oybj8(Wo4Wy zR`|JSGgKpBYh&!r;2uD6&}ny|OTbcmyu~`%8UK-lwn~Rl;S=qzo?+$|0K&B!AN@8?4p zW0_B*Ue%X z$dYCBeoJVYdA2)gGR{oVFhI~}LXZx{(&9F^UxOl_Z6qgbtTMn4BDk0Kh)|JYh{O63L z7xUT@evd~r%|2}7ieO^W&K>Iah>S}aTfeC*75};Dw+jO>p4P14SF7(@+^>g|SA)hU zAlVMz(M|rNWTqs+l$xu8*6(vGWQisYz|DW#=!+y;Y4Oo(_km2w`1yT(AD@o$L)q#s zjx=0d#hLm>KZq#GB~VJ272GpLKo2y+z~W8Q_GNm*i=|2g5{`PfS{E56e2est#+Jjs4m)Yi-r z+FO;I?j~aAMf7@-eU=S6Y)aW-N$u~(12yg7B5<5EEt2W|l3pW2^zUj{%nMpK(U7wB z*lwtDazxWV@VHltpvl^Gcz^rphI&o_)@r3V zpxEb`;)P-B2)=%o&Qc>WV|x833qEMXagl(erz1FNAWxD&*;h*Nu7m3{z(d1HJ+6ff za*GMx6HLMjfBHLf%+#^`saEouKkq7@rqHGoCp~ zo4pI!A9El}porILndyrOm$Rk>oCCq8wX!y_utzB3AD}FSmKw_;8LHqFNxrOg(OK^i zTv#DBWH@y&|IA3q=Wqp41@b(}1D`y#_+jsX=C-X{O7nXMtXZT|YxCEg(t^DdpUoWL zjTRVThVKMTVA}Ae16Org>FZINW^N6{$gODmY4D{rZHt0j)&Krd#2}&I_maUlCgA1^ zWEDt}EOfO+7WqZO$j`glJqNwYN}X1xOcjE+#<)SDI4lOSyC0}nMy7o!vFlAHg{N%(dU zW>AhO!Taw{khFWIWuF8PxTe{0Po{v&)eO_kV4{`Zx_52~Xtw5X8)wroa3}g?uM#oE zt23q84r7cA>xAUc(gw(-fi^n$#yK)utSuzjc3;MTa_y%RW<@^^MjA%jtC(S^#xglS zz;>g98E2#iG)jGKvx|}wNPhXznTV0`y^o%5pZ<~i;js*vCN*9gFWPsoc!r!h754Sv zLMw0NUk7ySu<83wa@6YH`Wtf6S~+^$C_4D6qytJ?$JFwqAr4$eHg>MV@Vc?NGgucW zH#Cs(egxGq-R-!>ja=*I9tGz%_tz99;~!7Xb2bY3CLhe4n>{CMiS8juO2sCa&^_D+ zI17GSqRERy&)bt1jU(#<6=T8FE#sKAw&|q~Ca1qsGkeUgD$hT^EV`jCeGMVNBbnJ2+ruye#WjOuo?UP@nub5T_j_I-^DnN=gR)8t>#60qj^(z|ScA>&^ zc)91UO#n|K#BR=IszRJ>GjgX&LF{D46)%setB}9<0~#%AmXl++tQ*|WTN{dMbb44x z!zU?OHp40F`^Sv?=*_&~Q5aH6S1S@rr{?h3M+j5V|3(b5{}(YpMT3AAbsj4fUg$Ok zEfht`!A;LV1I0pc^D%P&7ctPYbFedUvhy6!FwjF`5S-8^1+-NGB~wDVmGlf;JY4%U z^#2hn8KEqR-*lWjtPIq&w6q-Ecwq4v!c)z~u5l+8gxOi$;Q^>yZPHv9#Gtp8ht8Cv z2YJ5E)sPmNDAS9wWsCSB<@&<6mE*A^%zGdi4*ZzZW zGYkLv9E0!1m=|VPbrr0_B6O__q*YS;&sdrjzBdr-(DiV|!W-v$_z_Wpgmk^G*tpbg zQ!_ffV?c9j*iYg@Yr_`m5x$)rL14;S?BZgcHxHZH^jUwt`07`}Jj$g~Te#y1l3P#Jq|6c`ntx4)u~Y+wmXBc4 zERK1DM@PLrS*vU_cBOA!`hRGf-O6UJ-T&K1(t1&eR-0;Tj)5x(!Jbi@gR7{&sO~VM zws{p)7j$%Ov;F%T`f*(B;omb7pSwU@7#y_(C>tOl70=J%)Wjr3-L~n^`8^!m`bYO) zH^n}4LP6Niq%^_L)g~}dC;-9CSYhb=3OkOoh|spaw&30L>gyh*zpoFrA7xJXNpm(Z zT*L(IekB|F?dyDbBC6V`v6$t7XX@78C1`Q2rd^%1!XpPKK>6#;0u-a9^%7v>`nUkx z5CH9v;{F}npZ#!Vz)K%n7FwmLvUjoWzJ7gmDJdWHU=*3sW7e^ehRM?vC$brxKr?R~UO*4jTu^d0`e&(f$%etS=PVKU)Z*--I8bq8jV zLm_#{CmeGZ>C5^VeU#m;UqUBfmRYIr{nNcojp;{aKRLBusT>=E-?VBy*LL z8{wSBq+u=7h(_x3iKK1&f!BVujLFcaE9D1t`J;Ho+vQC=e`=ylM^|VXz!)1>@j87w zdx_!x+)6<>5;xOylf)YR5IgR4rhH*oF|WL9MfnY_loT8DI%Os@+{)4)SMU`+AH5_v zT&U9DF&=P|8vKES|_yf#f8zEX2xUg$jY$=2)VlZ8$E(_=;0r|p~>;xeb zc`dEEil1h^`9kuYhZZm0jJ>vrTaOpZHfHeuXq87KXbv^Y4_Rt^9dJOt4qf0Z}N>9A~rp}k|a)~F%GMU@>>it7-PwMU1`Bty| zxFqqnQ*(CKTfQpf*BxUTk;eI;0Vnzk2Sh?#vvF*Uh?gneQ=i3U#(wg9=Cz*@EArON zSi8p1P3Jt0?fcL@Ccf52)kkQrG}i2|1^7E5{8B5g3VB{sLR=OHU&7PjkSqF!V84sd zwTWtcLb1Q5Iai(sr_cfJIY*DVD#1hMNBqD|S>a1z0avPW4x!nzLrVTF;%mEQwzvMR zvy3LL$+(W{=ddK4MH+|(viv^fOm4~3QG!B{&7VWeY>^As-px$#L)01d;w3jWVW%3Q@Yry@-Ez)^8`{${1-mZ9K*V*3#TO4 zhl4L*syiXO3*w(oOd*~@-Hz5Y??})0SWze7rH9P2!<#QtLVGdS>KBROyBIt6>u~m9 zWCT4X@gW4|mQGx9Ih&H?#G_W8z^Q8|_Mp61{V zHkv;lC|yhM%~h?xpLLS<{J!w*Vu43W6zNDKYgvwYw_H(W-|O4jQeLgGLxM6?1yt!mFd87%w+|`r2=l7Dlw9Oj?1pLOgx(m zp6?d++4j zs>}1cBXO9Cw5j*f^nRR$k2RtrBPz^TH~{al67{*$ULQD#A^Uu~1 z4AgwGj~uxA)tZ>&z|!M&Qn!xx^N(_Lr3}eRz5R+RH8CT|U2-A;?Wr<;JcQQP6Yt}X zw00D2TJO~Xa)ZwMRds?}#~EOW<+_&x)hNzoC1^8I!%6wZ(rHEtj^ zojTmego*{ToOby@>@xWl*W#+7YUl5SpzikHoc1l+s{$qy^-KAcl#lxWW_bmyh|e_1 zm05>xXla9*7^C?M>w*vbK>JW;Ix3cmZVP|=6r*X{ z!}UY2+3nm0M!MCF!$cs8lEdeS+hTX;Dj+m=&{N?r$-?=-9VHchvf8vPeeGCANoUUU z#oYp@uys@2e!iLsa3ccN6@p(B|7+a@pdj9;GK}QJBOqS*eqs6Aa)1l0c2tBxofL!u z;us9FYHD|Qp*Z($PLY0N`x@6XwI$*>F>p>$)T;?@8)ojTBeVkKHsg29VBzt63Pbg{ zS5PbMtk=1az%u{h>HkK#HH@UlyB1j-hdxPQB6)uDlMq(!0+ND72|BB3CSUM5!CF^) zv6R!=%?%FZz!amSb=;sZvAC#g+}ts1Qi~&gXSEU;QU&%WjV1K+ygg(23mBes)>Ft%)y5Ua1hS^{qD;FG?C)ncyCV zT0)^n#{Zu;FX=fXX*vM$DA3-|FamrT^{7?pSOR$W&kL+m9*WmXJ{?Ww~9o>?$T>Xr@zHMuwvWA4V$8 zQu}62(}bYDS+~tGA-9Zf?V{hGthDuf_wCKUB0Cp<7J3md(Qz77u^W(L+wyiD|5y-d zz*Dy#sNFhNLcd#j2dmt()z0BB zb0rYD%?{R?k%5-bD$Ye%QSjB002;S-H!PTji6CkuqN@i(^nY5 z@1@(t$oUxkA<@oZ>$h61rgb)?dPGShXjaape8WF^t5GaTd3EZ6nIyEZWqZG7V_l&! zq_mnOuRlVaBr$ZJcv&9+Wc`*n!Lntg@FnoCU;iAMJit$qFKc4z}7GOh2n z04tJbTTFD78z0-GJ=l)8sdezeg=yKRi!7Nj4X;=8u{-12lW}h1?3z}EBiPqOnad6x zXZaD^hBhx|t5-Dm_m`diB#_sV9%{nw#lA(56vJh#pCu1x%NcPWNw|z32hm=s9ko}ljz{V z{128m!asS4V$wG5Sw4EqHJwQj{jSj^OvSGRmuqsmbELrW4q=;^MGo+@Xw0^W#O;U? z%yA;SQEV3NFc~NFJ5_-LzhqK0$`r#+qJzi>BvT9kOXAx|R6hK#kMcjH1r>oJb55<> zp5VlPQf;iNPc|?^G+>%&cKnz{tR6V*Lt&EVHBOG6mE2F*6t&s*C<0E;i`*)XDOo%z zz#$P(b$@TWwB-igvwG?ELX8ZUlX*&}rX>R7XrdzoN9HbxXTJOuUU+|f%EIP%Dn<`Vux#9RQj{ zT$6{_>xFksE=ymkW|$O+5$}BrL<6IF`Zhlly&NLPdJW+@4Eg$hyjHed+s>V@wFE*z z2?v0Zk4|QDCExBXt$PimI#3(pLx84eIwca?keaft?#${XL%&W#7ZpAPjlQan2`q^7 z#tlAv!guoa4^MKRs94f|c>Wws2DL|&WN)CMs;d1EcZ|ZNi6{Ia7-IC@^Yk&_wg~Ja zIpR6?CCB&5k=&`hQ9os>hws%zZkycEYRHht!?Sl|e6g)1v+onXNr8PlNY%AwNv-kk2 z8&5khWRnEkkbv1S;kYc%)hodZkKTUh`IQYOL%;7b=no}MA zHRBxJgrcTL&#MqP63B~2IxX6_e)1!7@O->P?ZIN1qDgkj%1+G%ehPq#5Bj`A-XGT% zGB?IBsHUS1`cZAbS5VQj^ivJlFxlE1RRMT|2j(Oq@A^H`9B4p}ZT5HfQn=05TG=_p z^|0dg=snb$*+mQn{stX{EhI<>o3|_zU1B)j$EZYcqyfs!L98=VT!%#tqB*$zrVo37 z40fG@bETeD-T>r<|4dAd{chY5BQT0F%G&DQ_9o@H>YdIB+&~BIkk=?iOx{L(>Db#J z+4|};yQh$j={S$i9_{rwm5y%LQmhh4^+!PM^s7SjJna9#BLKet7e!z}qX^))BQp&s zHiDZ6N}*)upobP17@-mjIxa3I8mJqCmyVHv4*D5%nS%?u%fZgd$$or5&p<~_%MDE` zpxYnNxPpz1mYR`?o)*fxWME{Zfl??qSUJ&f0*6W%6kvLLiR~5(TwKP}((SaC67(+l zFeHV^M7}g(lKJnkPM>65pAtsZtJb2zp(vDb!{Fi+vK5C}fORFUWg&qxS?k}sO@E;9 z+PXcCh1MC;^jRka;KOb`*4-9d-~6|mCa$90*+u}kpaRajGe|o?@Uo0~9_v9WXUdRm zg{FX@yOc@1(}Tf8ksq142*fxFndnss(a3Adr?YC&d1UKWqfYqDcLphII@ewS+0o9+ zT?6ZM#qU7Jsh`w;ekx6oBS2TvuxH|Gknf_)!G-FtcUPuu+X1n8f!=~$*9%oVe{^!D zm3$KA#$$zb_xGYc@$BV&YlF&cK%6rIiW&mlEBedgOrvkT@Afq(JxX6|%WX2+e8VIZ zOzaTG8`6bV2n-fh-{^Sk(4lB=g>T2YJ!V)u4N&Q$tWJU9yS}V*u8t$y{&zw!i%)*j zoR0>Bba7T{*+YfuSfrmE;UqlR3W1SO{BIxd@HFepe8`Z^*I-&7?uVz>yLX+_={mco z7@bzxF#B-*GU^xq4cJ@~lfm;C9uUe~ENmscHJ|omi+Q$yAPaLhh^(kD^<31`x_mPh zL6c5;2UBJL2f&lYgzkg+rqHC%HxvA{Ymv7h%lVN5d_DUaT=TX^_+Z8-=?YOm-p+;(t0SUkjdTbVn zJbuMPV7UAF-F?K6@#<0NvzQ(dsYaKKtVPCk!>T)v3^lhH!01$Sj*$lb#?|z@dsC;)4e%N`R<-PYAo)2o6!|w^kGCe#|94*=B>lE zvI*Zru3H=5+o#J!$(uXtDZ6zF+!$QY01KtM3RpRwL)o^^SSGOlO zUZ`nX@@Zt=@Q8IKFnpG0JjMN%z!yAF(H-u0!BSZ+?18JhoY#h5+HTDTtayLVZ9&au zS;0CxTn_WPfOB*OyY--B5=|szK6o_Bj;w06!kz8{A&HOnIL*cWlOtMnp?y@C-9T_e zzH0(dQ8Ywh}$J>{>|#Qqe0%;sGPa&%6S`#FgM{9D0Jt5or(K(c{F_g}4HAf?ien>He6&L=40f0kszwgo z{P%~;k<_>Y>p;^fPST_Z72&2-z}I&uxqb~0hJhsBM8gpp)!S`36fIvhJX$%AyZva2 zKvVT|K`H^ZnE-m@&`;%Sml`pIA(^P!{Zw6~e%%rX&-ky~e3Oy&QC?3O=X z<5z-9_^XZl>eun$!gFrHICdsV(DU-=)x2M?8>id<+HVTVnx+M!;UGNFXcT7#Byr9x z=4BH26{U*EgzU_0Lst3U{ZPj@DuwY@vd7Mmj)8KvV>?sfLd`=YYRNzF=QIj=$0g+1 za1&h@>yh%eLQ%%q3t^i_A_u>FUqr!X*NH&Epv^n!B3>g?ZSR$3UYLu+vw1X15Q2ZM zJTk?+FmWisMwsB_|O`R8yddTO+KZTlARzVeu^ylxkvR>mt-SALEJS2^- zCcW@pAL914&LfA8&na!eW^)#8QUyMb7(* zHpzqD!GISUkSV6&HYyB{%QMC8uLv;j@KF8%{4>MiR|X6H)rQdih+fBlJV{?e>KPID z>=qJ~7YYS>|CDq_$(FV!7;=`JU%B#kD9OG98AEs4XI@^d-FeBN4?*qm=T2X04`sH} z#(o3NNl@v#?&=*Q+>8KY=1Fw6rn;;)Jf`cy4#v1+?;hSFO>NUQd8N2{Cp%Fb90~P6 zN5)q`rDL9gz>^Tr&Ud4NL|{orIrzA=m*t*j%DyYo_2{dPORD|WWr*Dsz%v=3DXl=j zK>KxH6)jkUoQ3=LfuHV;#lO|XUs&4b`o-s^0spsixS*d||DWj&Q7T1V)Q+gCZZyZd z#T8j2SH-qCQL+mQVoG;2g5$l?d&t{GS7&COs**LA*rgz(A^x5oO&xVeO5_Bd_v(rD zBqZv3zasj${2%^VZZ6oRjln0<*J=v5bMp&~Z5FKzkKWExK3|F&o%iw*jZ=Q69+BJVEO`)` z7fTN{-klb%c$*>^hnPdj9WSHym)mF#Be$;== z>tbZDx z+mua^hoJVOkY@`2(>S6=t;`P?hnfvD-{-kMP$pkVSvZwT9SV?H0&4Ed(~l|` zf&T;)GoWQyGk15_I_fOZo*{OsQISZOrlIB*jm<>2djy^s1F70Yb(#`dihG1$r_^78 zZRHhaM^?Lz%}$B%!h)zZbP~$xl+D_J!_({39xZ+YCq<=m=g*&hw>Y{NPb;7Otx6h_ z!!IyU8SuWp>VA#FU>1zcMRbl)ZVeQIQiG4zF|r45m9nED|7OaSKlu+Yzr}jtee0aw zC7q)A_tJk5<^%J>fvSZyWxm(>YHD=#Fw7Vza6h2n;x~P~y3nh{auV>ihWtbC?Y{ob ztm#Fqr4fc1AHuI{qfyAb>`2mnaPRSK+yVFwqBiV0Li>5?^*F}Exq|5Xr3LXE84_Y6 zd#OF{?0^^I-rMOlG2&CB5c!_Yp0DJhsitN4HCF&$F@mvab zFW%oLLHazuyb8kSkM38$J@b0?{IzTISZpuk>sFshJ?_#GFeljTWT;`72}Sx7rlcs= zMUmQm#Y%!}qN>MPuDX^wQA20M`lcuIk5;mRK$p8M!_#ADTd>)mp|A$jZxtlu{Z5fo zBoH6h*&s@^ZLul7+{W3{rgmndKh0_KLz=gU`d@x*UP<%iHvU5~oGpH`|E~GCJIP6qyB4y8c5}j z6g(_{xIAbLKK~(@YptJ#Gvo}!Z(pTV-Mkbky=LLMb!=FLIEe-Rle&#sasJF*|4aIv zGt&5!VQ7)+9%op97$2m^;N{E`<(mNfILpqbls1ARmS(Mm`}WVf?Vz}S(BptT8yPy` z)RlyU0uEJR5F+lDxixBRy#_3(<%o{CiTGH?Rh#GC;h6~`dZOA)H1t;j(ji3CS8Ipg z>g~Jfb{o?jDlX=t@<-aPa($lAl5CJSkRfLNnoDX}s?7H)Aqa3@cUzg2?S5>^%91cW z1cHwJd&WIkj%SFxPjF}$kPoVI6op!Ub&zGhl9U?}nSI*xm_<;=Zg_1^vbpW^iNxYa zPeLZffC#A~dv(@doJq-x20r51e5SnGM-MoQyl+FTyS(lfmoN%Jh7w2Mk=J(YqcvE2 z3DGw=x}MU_2yC*+2q-qiF5ddgReq{KBDfSSVVtLi>S$i9?%aXUiq2>9p0bpZHGKqn zoxX?LKW=lH9;Z<N~HyTLEUccSc?lSh0JWcBgyQ_8b zmfNhw*NqfO+P5i?6@Dy(YV9Cc&*qkvXss@r(XyfsOPsPR4I3tQ@z$O1B!5wt<72aG zgt-5GvxB3?hh(Ayk~Xbj+YiE2oTqN_H8Tu@Pj48p-m#Um%L&#NT40cwQNGwlQLs=? z;)@d+vu*j>h3ZU5OK!Z#&2q?2QIyBm-t0POS}As8o7lvg?uPh;x#IDS7d%f%R?F^* zfxL+Ds1o{jmGL4z@^MyI!(qG%cDbb)P?7XNli3#z;rsYNOpd^^QdmYAuUMsJo4(Bn z(tEcbDM%aY6McC`$k2iqa0ct2IQ7s19%}LQ#x-8mjr;m&51NzCDhmMAmN z;_Qe0hW)B2D(LMDlC*;W*a)H@Ew8h-9$U2UU{kN4f7jJ=kBjGbVd|K&N+$X8nDVYA zLJ^2Yi?GY9z4I|qPK?vl9@Vxd!UTRd%>%eQyrZn1+eO|5eGP5?G&58%6A z_d1KCQsg+#hISXhYWm25I?vD?qo5rRHRoRSMZg#|% z)YAx?9Tdqt8iWmZAqn>hdx0bYaec)Cy~6#mAb2lbQ5-x&+Q$Q`u2HH=gbSVur&TUPY(Bi|RIa8w!*euTsIyvMEF4 zKVrcxmh*Z3M2b;1et$yI^Od>Z^sB+u+awpCzO|lZ0x!2HNiBN-!pgOO2TH7CUC-4d>}LNG|1>( z_e~yA!4b($=@lZjP^l8?ZzBN=B0W@KYx2$jb%%X9$~nwGb!KktpC(tBcVn_+^^&lk zDF#gt0{_^eCsir2OQ#3?F$*bAJ8L!|kNak%^S^6;alGhDr24Ym-S&Ddc=lzu0y55tuY1f5{7Qrl+zoe=K&rAwdIbD6fOPfe!s|XqXNue%?X>4# zF?K)dng>_;gPUAD)FP6g-{9M1B3Tds1SZQ!FwF&U$G&BfuCRVNv1=QCAeN=%AB$GI z-lDsTTsY#s`|j7d2_E{)H+-MPEgQO(+>`;q8QZG}78K%pc7F5q&GRw`%o5O6Z_+Bi zWVV7<_XgAJ=KeD1O6=JnY=eBc4YnAy);gd`ialtk=3RNX;6jCh+6d|W(w{Ih}W zO(H&B@2g0OFlZu3d(ZcAT0&W03O2$++4f}L{zh0q6v)ry4Nfzv+w~!h&`uqa?jvp= z0^^d6epXZ}yB{5<{oz=tfkPa$oS6Yg5BcZVz72KVgx>x|n1V#HAun``TD;!aUBDl# z6C)`!&h+A`Euv|CP3vC7@k*Ie>XT1Z`z$qL%jmB;WzLE7hEce(=N-0{+~knaFY5s{ zg72}%cfL6dy-6N*KzJICr9{*o3&LklUwXEWBcrp!{1|TZ-ss-O^tq+!Oz$SAUaPNg z`$KnwY!Sa6$3%N&W(I)fD%>-+Lkz4P3v723nc0)bhJo8JYiinL)424#TyNHP(OOU^ zdXI#ov`FwO9P!_K*!jtkEPcA<*HKpMe?68JJihh$iU?D&kKtOZ z$}}j6TPGC>+8aP9XKNMore>w${d+a)gC+nQSz0ia*}GO(#t+NPom&$vaI#ns@Ak2J zXk}3V#1*gM!3bgC64z{a5K-cWr_ClOwKzWQ`dJ;QAVdqdNRph^q!K#R9m|6Rpc7&E ztx5yZVruu5y*U{y*1Izp@7Ed&UDxKv;|P)KCF*s86dxp<@xTiNPD{AKdTFeuX0X0X z0Uf;*lQkmDl7@_#FfF%yu<8HYiZPkCXU`tAW~4t81pu5OUqyn(%MY9gEih`(1-dX|DqBiyRYd@xMoaI|wDjK(XE=qJz`IOpwWUJCUcG+F zcXmbUlYP^O5Jt`zNY!Etss~O|8PO`+!jILw!3Fr%uZEhpg;w$^a&G(FgWh|@s%3sp zp#`eddkEr2e*lDXhpMM2qVfX!CEkdfA`lk_&Xq;Jw`Vt zlZG9GUM89}k$SdLk35-P9#ark;06~*X!|Wymx3qL^_D-#gX|n~5})DS#u}^%T;`&s zPR@>Bs2gh<1mBDMUe*v8Vel?%U`dDU1|z*XIhX#0ocuPPl93g%L4r_TaLtBEYjhrr z{c?S}TwA|02_W8ZRi{@$nAWKLN&2eL-k?kauyd1PU6@Ocv!Yz3WX{g#Kt$^U`_n+v zgFd~E6J{Y?0rq4pSjQXZuEHDx6gmq*&=#8Uc#Q9&K|~oxjUzMBJ=#t0&~uU9T9Rqm z8iKD!lJv7|&;j&COF%+X;43cT6RwXtX_>Iy$g^2Cx97RC+EwJq0$V(yKTuzp()$hG zqU(!RYc#9@>@7=$L}FA;i}bae%Yt(LTx2Sna>Z(LyngmCkC3KYO-(4b(KNqz5>aNW z_RKK8;sM+#%d-ScD^N=_+EA@+56I-4Pd}_{>ysWnoSzYw$4fXn|COEe-T=S<+8E0c zS=dgpo$&>LAG>j#;BoPw=v2%CBBj5V)3u!)e(qmJ6UUQpxUEdPt zxE5P?rHYjhb>j)lCCgCzQr!DHtok>W&?!P#`o^-ZE6uAC{%5_~`@Gz?TsN4RE9c07 z25J?oL(S>+GpqoV9j}22S|O8%SibDT<|$XKt;Yt2-;4e^^Y)-!_DRMsei&r))Y#C+ zo-^IEEr8=+obpaJ+!=RA&v14WhLQG;EcHRR@7eZbW=iWqI%E32&9uwys-X2cwuS1S zIUp)D^6eR;HY@{Lh1^V`V~*_x-Njn*d+6uW!befoioYX2nbB#zW#ZZ=^B;K>B*JKa)k?n&hdGE<@bE~tG_Iw z+3#=%+kz{bjd_*sEYt3&p!_{Q3uP|!ZNL4Z>tQ%Id`u)AQ=UB2HP=c#^rNR z4m2ZF^KJc6!Sl8iIa5O9f0E^xS(D_%ot7+A3b0@_1Lk&++}s9xKy6gw^ws|A@FnYS!*QME6(fw*2~hFfpJkgr zxc9>>HM>OfMhvy1G3fJxFw8I7jA;r+OtD8cEBtTXlO2#7S)0>b&8KCO0p6wDL`zc_ zb<;;y@ICNamNnq2Ks$zYMNwKQML2-c&=75|Hy#__j>mXn_jB_tXkgOrOPF0k1vsV!2yhXv2XXR@0 zGAJHAO}<-1aG?8ILWqR3(R#tiDNUHe5)Q<}v5V7ILqHr<_Ml2W#wA^5epH!RspyXQ zI@h#YjzAz(^X(uZkQ-!TY&&|9`dOcn5I<8NKNQfsq)>Zly-JxtbV}>12A3Fic0d0e z0hj=OmfV=7dGXt)OA6pW1}xjW5EG!Ccx@S93#$wT&R_n1*?-+S_QkR*n@tzqAKKCn z465j3roiEftp$8H64qjK3q?DaGZ~9v&eRNe2Iqk?%Key@d9SCwq%i2MU)ty9H6@29 z?%nq2iKK*qQzW}AAXXBc#0n*c10ps_C{6~mXQ-b@!J*)5ۅ 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

5tb5^`9tZNkERDXi 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

+ZM| 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 literal 0 HcmV?d00001 diff --git a/settingtypes.txt b/settingtypes.txt index 7f6a12ba..6e3f4ab4 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -64,3 +64,7 @@ enable_stairs_replace_abm (Replace old stairs) bool false # If enabled, use the engine's spawn search which does not check for a # suitable starting biome. engine_spawn (Use engine spawn search) bool false + +# Whether river water source nodes create flowing sounds. +# Helps rivers create more sound, especially on level sections. +river_source_sounds (River source node sounds) bool false From e4adb01fbf5d036383ec1aab545f14d353f5af7c Mon Sep 17 00:00:00 2001 From: sfan5 Date: Thu, 12 Sep 2019 19:03:10 +0200 Subject: [PATCH 58/81] Fix and improve translation strings (#2471) --- game_api.txt | 10 +- mods/binoculars/init.lua | 2 +- mods/boats/init.lua | 4 +- mods/bones/init.lua | 4 +- mods/butterflies/init.lua | 15 +- mods/carts/cart_entity.lua | 2 +- mods/default/craftitems.lua | 2 +- mods/default/furnace.lua | 19 +- mods/default/nodes.lua | 10 +- mods/dye/init.lua | 54 +++-- mods/farming/nodes.lua | 4 +- mods/map/init.lua | 2 +- mods/screwdriver/init.lua | 2 +- mods/stairs/init.lua | 399 +++++++++++++++++++++++++----------- mods/wool/init.lua | 24 ++- 15 files changed, 387 insertions(+), 166 deletions(-) diff --git a/game_api.txt b/game_api.txt index 4f1ff9a2..6ddeb980 100644 --- a/game_api.txt +++ b/game_api.txt @@ -726,27 +726,29 @@ delivered with Minetest Game, to keep them compatible with other mods. * `sounds`: See [#Default sounds] * `worldaligntex`: A bool to set all textures world-aligned. Default false. See [Tile definition] -`stairs.register_stair_inner(subname, recipeitem, groups, images, description, sounds, worldaligntex)` +`stairs.register_stair_inner(subname, recipeitem, groups, images, description, sounds, worldaligntex, full_description)` * Registers an inner corner stair * `subname`: Basically the material name (e.g. cobble) used for the stair name. Nodename pattern: "stairs:stair_inner_subname" * `recipeitem`: Item used in the craft recipe, e.g. "default:cobble", may be `nil` * `groups`: See [Known damage and digging time defining groups] * `images`: See [Tile definition] - * `description`: Used for the description field in the stair's definition + * `description`: Used for the description field in the stair's definition with "Inner" prepended * `sounds`: See [#Default sounds] * `worldaligntex`: A bool to set all textures world-aligned. Default false. See [Tile definition] + * `full_description`: Overrides the description, bypassing string concatenation. This is useful for translation. (optional) -`stairs.register_stair_outer(subname, recipeitem, groups, images, description, sounds, worldaligntex)` +`stairs.register_stair_outer(subname, recipeitem, groups, images, description, sounds, worldaligntex, full_description)` * Registers an outer corner stair * `subname`: Basically the material name (e.g. cobble) used for the stair name. Nodename pattern: "stairs:stair_outer_subname" * `recipeitem`: Item used in the craft recipe, e.g. "default:cobble", may be `nil` * `groups`: See [Known damage and digging time defining groups] * `images`: See [Tile definition] - * `description`: Used for the description field in the stair's definition + * `description`: Used for the description field in the stair's definition with "Outer" prepended * `sounds`: See [#Default sounds] * `worldaligntex`: A bool to set all textures world-aligned. Default false. See [Tile definition] + * `full_description`: Overrides the description, bypassing string concatenation. This is useful for translation. (optional) `stairs.register_stair_and_slab(subname, recipeitem, groups, images, desc_stair, desc_slab, sounds, worldaligntex)` diff --git a/mods/binoculars/init.lua b/mods/binoculars/init.lua index 4a977b8f..76858977 100644 --- a/mods/binoculars/init.lua +++ b/mods/binoculars/init.lua @@ -59,7 +59,7 @@ minetest.after(4.7, cyclic_update) -- Binoculars item minetest.register_craftitem("binoculars:binoculars", { - description = S("Binoculars\nUse with 'Zoom' key"), + description = S("Binoculars") .. "\n" .. S("Use with 'Zoom' key"), inventory_image = "binoculars_binoculars.png", stack_max = 1, diff --git a/mods/boats/init.lua b/mods/boats/init.lua index 906a0979..a785bdc6 100644 --- a/mods/boats/init.lua +++ b/mods/boats/init.lua @@ -154,13 +154,13 @@ function boat.on_step(self, dtime) if ctrl.up and ctrl.down then if not self.auto then self.auto = true - minetest.chat_send_player(self.driver, S("[boats] Cruise on")) + minetest.chat_send_player(self.driver, S("Boat cruise mode on")) end elseif ctrl.down then self.v = self.v - dtime * 1.8 if self.auto then self.auto = false - minetest.chat_send_player(self.driver, S("[boats] Cruise off")) + minetest.chat_send_player(self.driver, S("Boat cruise mode off")) end elseif ctrl.up or self.auto then self.v = self.v + dtime * 1.8 diff --git a/mods/bones/init.lua b/mods/bones/init.lua index 6e93062d..5e542593 100644 --- a/mods/bones/init.lua +++ b/mods/bones/init.lua @@ -269,7 +269,7 @@ minetest.register_on_dieplayer(function(player) meta:set_string("owner", player_name) if share_bones_time ~= 0 then - meta:set_string("infotext", S("@1's fresh bones.", player_name)) + meta:set_string("infotext", S("@1's fresh bones", player_name)) if share_bones_time_early == 0 or not minetest.is_protected(pos, player_name) then meta:set_int("time", 0) @@ -279,6 +279,6 @@ minetest.register_on_dieplayer(function(player) minetest.get_node_timer(pos):start(10) else - meta:set_string("infotext", S("@1's bones.", player_name)) + meta:set_string("infotext", S("@1's bones", player_name)) end end) diff --git a/mods/butterflies/init.lua b/mods/butterflies/init.lua index 1263fa6c..6fd839fb 100644 --- a/mods/butterflies/init.lua +++ b/mods/butterflies/init.lua @@ -1,13 +1,13 @@ --- butrerflies/init.lua +-- butterflies/init.lua -- Load support for MT game translation. local S = minetest.get_translator("butterflies") -- register butterflies local butter_list = { - {"white", S("White")}, - {"red", S("Red")}, - {"violet", S("Violet")} + {"white", S("White Butterfly")}, + {"red", S("Red Butterfly")}, + {"violet", S("Violet Butterfly")} } for i in ipairs (butter_list) do @@ -15,7 +15,7 @@ for i in ipairs (butter_list) do local desc = butter_list[i][2] minetest.register_node("butterflies:butterfly_"..name, { - description = S("@1 Butterfly", desc), + description = desc, drawtype = "plantlike", tiles = {{ name = "butterflies_butterfly_"..name.."_animated.png", @@ -61,10 +61,9 @@ for i in ipairs (butter_list) do }) minetest.register_node("butterflies:hidden_butterfly_"..name, { - description = S("Hidden @1 Butterfly", desc), drawtype = "airlike", - inventory_image = "insects_butterfly_"..name..".png", - wield_image = "insects_butterfly_"..name..".png", + inventory_image = "butterflies_butterfly_"..name..".png", + wield_image = "butterflies_butterfly_"..name..".png", paramtype = "light", sunlight_propagates = true, walkable = false, diff --git a/mods/carts/cart_entity.lua b/mods/carts/cart_entity.lua index 97084ace..3c131a66 100644 --- a/mods/carts/cart_entity.lua +++ b/mods/carts/cart_entity.lua @@ -388,7 +388,7 @@ end minetest.register_entity("carts:cart", cart_entity) minetest.register_craftitem("carts:cart", { - description = S("Cart (Sneak+Click to pick up)"), + description = S("Cart") .. "\n" .. S("(Sneak+Click to pick up)"), inventory_image = minetest.inventorycube("carts_cart_top.png", "carts_cart_side.png", "carts_cart_side.png"), wield_image = "carts_cart_side.png", on_place = function(itemstack, placer, pointed_thing) diff --git a/mods/default/craftitems.lua b/mods/default/craftitems.lua index fe226765..dd76d1e5 100644 --- a/mods/default/craftitems.lua +++ b/mods/default/craftitems.lua @@ -165,7 +165,7 @@ minetest.register_craftitem("default:book", { }) minetest.register_craftitem("default:book_written", { - description = S("Book With Text"), + description = S("Book with Text"), inventory_image = "default_book_written.png", groups = {book = 1, not_in_creative_inventory = 1, flammable = 3}, stack_max = 1, diff --git a/mods/default/furnace.lua b/mods/default/furnace.lua index 2c9f8645..d36a7f66 100644 --- a/mods/default/furnace.lua +++ b/mods/default/furnace.lua @@ -226,20 +226,20 @@ local function furnace_node_timer(pos, elapsed) end local fuel_state = S("Empty") - local active = "inactive" + local active = false local result = false if fuel_totaltime ~= 0 then - active = "active" + active = true local fuel_percent = math.floor(fuel_time / fuel_totaltime * 100) - fuel_state = fuel_percent .. "%" + fuel_state = S("@1%", fuel_percent) formspec = default.get_furnace_active_formspec(fuel_percent, item_percent) swap_node(pos, "default:furnace_active") -- make sure timer restarts automatically result = true else if not fuellist[1]:is_empty() then - fuel_state = "0%" + fuel_state = S("@1%", 0) end formspec = default.get_furnace_inactive_formspec() swap_node(pos, "default:furnace") @@ -247,9 +247,14 @@ local function furnace_node_timer(pos, elapsed) minetest.get_node_timer(pos):stop() end --- local infotext = "Furnace " .. active .. "\n(Item: " .. item_state .. --- "; Fuel: " .. fuel_state .. ")" - local infotext = S("Furnace @1 \n(Item: @2; Fuel: @3)", active, item_state, fuel_state) + + local infotext + if active then + infotext = S("Furnace active") + else + infotext = S("Furnace inactive") + end + infotext = infotext .. "\n" .. S("(Item: @1; Fuel: @2)", item_state, fuel_state) -- -- Set meta values diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index da01e938..a93f2799 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -513,14 +513,14 @@ minetest.register_node("default:dirt_with_coniferous_litter", { }) minetest.register_node("default:dry_dirt", { - description = "Dry Dirt", + description = S("Dry Dirt"), tiles = {"default_dry_dirt.png"}, groups = {crumbly = 3, soil = 1}, sounds = default.node_sound_dirt_defaults(), }) minetest.register_node("default:dry_dirt_with_dry_grass", { - description = "Dry Dirt with Dry Grass", + description = S("Dry Dirt with Dry Grass"), tiles = {"default_dry_grass.png", "default_dry_dirt.png", {name = "default_dry_dirt.png^default_dry_grass_side.png", tileable_vertical = false}}, @@ -2556,7 +2556,7 @@ minetest.register_node("default:bookshelf", { local function register_sign(material, desc, def) minetest.register_node("default:sign_wall_" .. material, { - description = S("@1 Sign", desc), + description = desc, drawtype = "nodebox", tiles = {"default_sign_wall_" .. material .. ".png"}, inventory_image = "default_sign_" .. material .. ".png", @@ -2605,12 +2605,12 @@ local function register_sign(material, desc, def) }) end -register_sign("wood", S("Wooden"), { +register_sign("wood", S("Wooden Sign"), { sounds = default.node_sound_wood_defaults(), groups = {choppy = 2, attached_node = 1, flammable = 2, oddly_breakable_by_hand = 3} }) -register_sign("steel", S("Steel"), { +register_sign("steel", S("Steel Sign"), { sounds = default.node_sound_metal_defaults(), groups = {cracky = 2, attached_node = 1} }) diff --git a/mods/dye/init.lua b/mods/dye/init.lua index 240ba418..f0affe8b 100644 --- a/mods/dye/init.lua +++ b/mods/dye/init.lua @@ -8,21 +8,21 @@ local S = minetest.get_translator("dye") -- Make dye names and descriptions available globally dye.dyes = { - {"white", S("White")}, - {"grey", S("Grey")}, - {"dark_grey", S("Dark Grey")}, - {"black", S("Black")}, - {"violet", S("Violet")}, - {"blue", S("Blue")}, - {"cyan", S("Cyan")}, - {"dark_green", S("Dark Green")}, - {"green", S("Green")}, - {"yellow", S("Yellow")}, - {"brown", S("Brown")}, - {"orange", S("Orange")}, - {"red", S("Red")}, - {"magenta", S("Magenta")}, - {"pink", S("Pink")}, + {"white", "White"}, + {"grey", "Grey"}, + {"dark_grey", "Dark Grey"}, + {"black", "Black"}, + {"violet", "Violet"}, + {"blue", "Blue"}, + {"cyan", "Cyan"}, + {"dark_green", "Dark Green"}, + {"green", "Green"}, + {"yellow", "Yellow"}, + {"brown", "Brown"}, + {"orange", "Orange"}, + {"red", "Red"}, + {"magenta", "Magenta"}, + {"pink", "Pink"}, } -- Define items @@ -35,7 +35,7 @@ for _, row in ipairs(dye.dyes) do minetest.register_craftitem("dye:" .. name, { inventory_image = "dye_" .. name .. ".png", - description = S("@1 Dye", description), + description = S(description .. " Dye"), groups = groups }) @@ -103,3 +103,25 @@ for _, mix in pairs(dye_recipes) do recipe = {"dye:" .. mix[1], "dye:" .. mix[2]}, }) end + +-- Dummy calls to S() to allow translation scripts to detect the strings. +-- To update this run: +-- for _,e in ipairs(dye.dyes) do print(("S(%q)"):format(e[2].." Dye")) end + +--[[ +S("White Dye") +S("Grey Dye") +S("Dark Grey Dye") +S("Black Dye") +S("Violet Dye") +S("Blue Dye") +S("Cyan Dye") +S("Dark Green Dye") +S("Green Dye") +S("Yellow Dye") +S("Brown Dye") +S("Orange Dye") +S("Red Dye") +S("Magenta Dye") +S("Pink Dye") +--]] diff --git a/mods/farming/nodes.lua b/mods/farming/nodes.lua index 8cc76471..806f46d4 100644 --- a/mods/farming/nodes.lua +++ b/mods/farming/nodes.lua @@ -86,7 +86,7 @@ minetest.register_node("farming:soil_wet", { }) minetest.register_node("farming:dry_soil", { - description = "Dry Soil", + description = S("Dry Soil"), tiles = {"default_dry_dirt.png^farming_soil.png", "default_dry_dirt.png"}, drop = "default:dry_dirt", groups = {crumbly=3, not_in_creative_inventory=1, soil=2, grassland = 1, field = 1}, @@ -99,7 +99,7 @@ minetest.register_node("farming:dry_soil", { }) minetest.register_node("farming:dry_soil_wet", { - description = "Wet Dry Soil", + description = S("Wet Dry Soil"), tiles = {"default_dry_dirt.png^farming_soil_wet.png", "default_dry_dirt.png^farming_soil_wet_side.png"}, drop = "default:dry_dirt", groups = {crumbly=3, not_in_creative_inventory=1, soil=3, wet = 1, grassland = 1, field = 1}, diff --git a/mods/map/init.lua b/mods/map/init.lua index c858e141..7c1e36fc 100644 --- a/mods/map/init.lua +++ b/mods/map/init.lua @@ -55,7 +55,7 @@ minetest.after(5.3, cyclic_update) -- Mapping kit item minetest.register_craftitem("map:mapping_kit", { - description = S("Mapping Kit\nUse with 'Minimap' key"), + description = S("Mapping Kit") .. "\n" .. S("Use with 'Minimap' key"), inventory_image = "map_mapping_kit.png", stack_max = 1, groups = {flammable = 3}, diff --git a/mods/screwdriver/init.lua b/mods/screwdriver/init.lua index 59d7b527..82fbaab2 100644 --- a/mods/screwdriver/init.lua +++ b/mods/screwdriver/init.lua @@ -150,7 +150,7 @@ end -- Screwdriver minetest.register_tool("screwdriver:screwdriver", { - description = S("Screwdriver (left-click rotates face, right-click rotates axis)"), + description = S("Screwdriver") .. "\n" .. S("(left-click rotates face, right-click rotates axis)"), inventory_image = "screwdriver.png", groups = {tool = 1}, on_use = function(itemstack, user, pointed_thing) diff --git a/mods/stairs/init.lua b/mods/stairs/init.lua index 86146576..e2984f66 100644 --- a/mods/stairs/init.lua +++ b/mods/stairs/init.lua @@ -296,7 +296,7 @@ end -- Node will be called stairs:stair_inner_ function stairs.register_stair_inner(subname, recipeitem, groups, images, - description, sounds, worldaligntex) + description, sounds, worldaligntex, full_description) -- Set backface culling and world-aligned textures local stair_images = {} for i, image in ipairs(images) do @@ -320,9 +320,14 @@ function stairs.register_stair_inner(subname, recipeitem, groups, images, end local new_groups = table.copy(groups) new_groups.stair = 1 + if full_description then + description = full_description + else + description = "Inner " .. description + end warn_if_exists("stairs:stair_inner_" .. subname) minetest.register_node(":stairs:stair_inner_" .. subname, { - description = S("Inner @1", description), + description = description, drawtype = "nodebox", tiles = stair_images, paramtype = "light", @@ -378,7 +383,7 @@ end -- Node will be called stairs:stair_outer_ function stairs.register_stair_outer(subname, recipeitem, groups, images, - description, sounds, worldaligntex) + description, sounds, worldaligntex, full_description) -- Set backface culling and world-aligned textures local stair_images = {} for i, image in ipairs(images) do @@ -402,9 +407,14 @@ function stairs.register_stair_outer(subname, recipeitem, groups, images, end local new_groups = table.copy(groups) new_groups.stair = 1 + if full_description then + description = full_description + else + description = "Outer " .. description + end warn_if_exists("stairs:stair_outer_" .. subname) minetest.register_node(":stairs:stair_outer_" .. subname, { - description = S("Outer @1", description), + description = description, drawtype = "nodebox", tiles = stair_images, paramtype = "light", @@ -469,379 +479,392 @@ function stairs.register_stair_and_slab(subname, recipeitem, groups, images, sounds, worldaligntex) end +-- Local function so we can apply translations +local function my_register_stair_and_slab(subname, recipeitem, groups, images, + desc_stair, desc_slab, sounds, worldaligntex) + stairs.register_stair(subname, recipeitem, groups, images, S(desc_stair), + sounds, worldaligntex) + stairs.register_stair_inner(subname, recipeitem, groups, images, "", + sounds, worldaligntex, S("Inner " .. desc_stair)) + stairs.register_stair_outer(subname, recipeitem, groups, images, "", + sounds, worldaligntex, S("Outer " .. desc_stair)) + stairs.register_slab(subname, recipeitem, groups, images, S(desc_slab), + sounds, worldaligntex) +end + -- Register default stairs and slabs -stairs.register_stair_and_slab( +my_register_stair_and_slab( "wood", "default:wood", {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, {"default_wood.png"}, - S("Wooden Stair"), - S("Wooden Slab"), + "Wooden Stair", + "Wooden Slab", default.node_sound_wood_defaults(), false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "junglewood", "default:junglewood", {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, {"default_junglewood.png"}, - S("Jungle Wood Stair"), - S("Jungle Wood Slab"), + "Jungle Wood Stair", + "Jungle Wood Slab", default.node_sound_wood_defaults(), false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "pine_wood", "default:pine_wood", {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}, {"default_pine_wood.png"}, - S("Pine Wood Stair"), - S("Pine Wood Slab"), + "Pine Wood Stair", + "Pine Wood Slab", default.node_sound_wood_defaults(), false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "acacia_wood", "default:acacia_wood", {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, {"default_acacia_wood.png"}, - S("Acacia Wood Stair"), - S("Acacia Wood Slab"), + "Acacia Wood Stair", + "Acacia Wood Slab", default.node_sound_wood_defaults(), false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "aspen_wood", "default:aspen_wood", {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}, {"default_aspen_wood.png"}, - S("Aspen Wood Stair"), - S("Aspen Wood Slab"), + "Aspen Wood Stair", + "Aspen Wood Slab", default.node_sound_wood_defaults(), false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "stone", "default:stone", {cracky = 3}, {"default_stone.png"}, - S("Stone Stair"), - S("Stone Slab"), + "Stone Stair", + "Stone Slab", default.node_sound_stone_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "cobble", "default:cobble", {cracky = 3}, {"default_cobble.png"}, - S("Cobblestone Stair"), - S("Cobblestone Slab"), + "Cobblestone Stair", + "Cobblestone Slab", default.node_sound_stone_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "mossycobble", "default:mossycobble", {cracky = 3}, {"default_mossycobble.png"}, - S("Mossy Cobblestone Stair"), - S("Mossy Cobblestone Slab"), + "Mossy Cobblestone Stair", + "Mossy Cobblestone Slab", default.node_sound_stone_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "stonebrick", "default:stonebrick", {cracky = 2}, {"default_stone_brick.png"}, - S("Stone Brick Stair"), - S("Stone Brick Slab"), + "Stone Brick Stair", + "Stone Brick Slab", default.node_sound_stone_defaults(), false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "stone_block", "default:stone_block", {cracky = 2}, {"default_stone_block.png"}, - S("Stone Block Stair"), - S("Stone Block Slab"), + "Stone Block Stair", + "Stone Block Slab", default.node_sound_stone_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "desert_stone", "default:desert_stone", {cracky = 3}, {"default_desert_stone.png"}, - S("Desert Stone Stair"), - S("Desert Stone Slab"), + "Desert Stone Stair", + "Desert Stone Slab", default.node_sound_stone_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "desert_cobble", "default:desert_cobble", {cracky = 3}, {"default_desert_cobble.png"}, - S("Desert Cobblestone Stair"), - S("Desert Cobblestone Slab"), + "Desert Cobblestone Stair", + "Desert Cobblestone Slab", default.node_sound_stone_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "desert_stonebrick", "default:desert_stonebrick", {cracky = 2}, {"default_desert_stone_brick.png"}, - S("Desert Stone Brick Stair"), - S("Desert Stone Brick Slab"), + "Desert Stone Brick Stair", + "Desert Stone Brick Slab", default.node_sound_stone_defaults(), false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "desert_stone_block", "default:desert_stone_block", {cracky = 2}, {"default_desert_stone_block.png"}, - S("Desert Stone Block Stair"), - S("Desert Stone Block Slab"), + "Desert Stone Block Stair", + "Desert Stone Block Slab", default.node_sound_stone_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "sandstone", "default:sandstone", {crumbly = 1, cracky = 3}, {"default_sandstone.png"}, - S("Sandstone Stair"), - S("Sandstone Slab"), + "Sandstone Stair", + "Sandstone Slab", default.node_sound_stone_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "sandstonebrick", "default:sandstonebrick", {cracky = 2}, {"default_sandstone_brick.png"}, - S("Sandstone Brick Stair"), - S("Sandstone Brick Slab"), + "Sandstone Brick Stair", + "Sandstone Brick Slab", default.node_sound_stone_defaults(), false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "sandstone_block", "default:sandstone_block", {cracky = 2}, {"default_sandstone_block.png"}, - S("Sandstone Block Stair"), - S("Sandstone Block Slab"), + "Sandstone Block Stair", + "Sandstone Block Slab", default.node_sound_stone_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "desert_sandstone", "default:desert_sandstone", {crumbly = 1, cracky = 3}, {"default_desert_sandstone.png"}, - S("Desert Sandstone Stair"), - S("Desert Sandstone Slab"), + "Desert Sandstone Stair", + "Desert Sandstone Slab", default.node_sound_stone_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "desert_sandstone_brick", "default:desert_sandstone_brick", {cracky = 2}, {"default_desert_sandstone_brick.png"}, - S("Desert Sandstone Brick Stair"), - S("Desert Sandstone Brick Slab"), + "Desert Sandstone Brick Stair", + "Desert Sandstone Brick Slab", default.node_sound_stone_defaults(), false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "desert_sandstone_block", "default:desert_sandstone_block", {cracky = 2}, {"default_desert_sandstone_block.png"}, - S("Desert Sandstone Block Stair"), - S("Desert Sandstone Block Slab"), + "Desert Sandstone Block Stair", + "Desert Sandstone Block Slab", default.node_sound_stone_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "silver_sandstone", "default:silver_sandstone", {crumbly = 1, cracky = 3}, {"default_silver_sandstone.png"}, - S("Silver Sandstone Stair"), - S("Silver Sandstone Slab"), + "Silver Sandstone Stair", + "Silver Sandstone Slab", default.node_sound_stone_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "silver_sandstone_brick", "default:silver_sandstone_brick", {cracky = 2}, {"default_silver_sandstone_brick.png"}, - S("Silver Sandstone Brick Stair"), - S("Silver Sandstone Brick Slab"), + "Silver Sandstone Brick Stair", + "Silver Sandstone Brick Slab", default.node_sound_stone_defaults(), false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "silver_sandstone_block", "default:silver_sandstone_block", {cracky = 2}, {"default_silver_sandstone_block.png"}, - S("Silver Sandstone Block Stair"), - S("Silver Sandstone Block Slab"), + "Silver Sandstone Block Stair", + "Silver Sandstone Block Slab", default.node_sound_stone_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "obsidian", "default:obsidian", {cracky = 1, level = 2}, {"default_obsidian.png"}, - S("Obsidian Stair"), - S("Obsidian Slab"), + "Obsidian Stair", + "Obsidian Slab", default.node_sound_stone_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "obsidianbrick", "default:obsidianbrick", {cracky = 1, level = 2}, {"default_obsidian_brick.png"}, - S("Obsidian Brick Stair"), - S("Obsidian Brick Slab"), + "Obsidian Brick Stair", + "Obsidian Brick Slab", default.node_sound_stone_defaults(), false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "obsidian_block", "default:obsidian_block", {cracky = 1, level = 2}, {"default_obsidian_block.png"}, - S("Obsidian Block Stair"), - S("Obsidian Block Slab"), + "Obsidian Block Stair", + "Obsidian Block Slab", default.node_sound_stone_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "brick", "default:brick", {cracky = 3}, {"default_brick.png"}, - S("Brick Stair"), - S("Brick Slab"), + "Brick Stair", + "Brick Slab", default.node_sound_stone_defaults(), false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "steelblock", "default:steelblock", {cracky = 1, level = 2}, {"default_steel_block.png"}, - S("Steel Block Stair"), - S("Steel Block Slab"), + "Steel Block Stair", + "Steel Block Slab", default.node_sound_metal_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "tinblock", "default:tinblock", {cracky = 1, level = 2}, {"default_tin_block.png"}, - S("Tin Block Stair"), - S("Tin Block Slab"), + "Tin Block Stair", + "Tin Block Slab", default.node_sound_metal_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "copperblock", "default:copperblock", {cracky = 1, level = 2}, {"default_copper_block.png"}, - S("Copper Block Stair"), - S("Copper Block Slab"), + "Copper Block Stair", + "Copper Block Slab", default.node_sound_metal_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "bronzeblock", "default:bronzeblock", {cracky = 1, level = 2}, {"default_bronze_block.png"}, - S("Bronze Block Stair"), - S("Bronze Block Slab"), + "Bronze Block Stair", + "Bronze Block Slab", default.node_sound_metal_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "goldblock", "default:goldblock", {cracky = 1}, {"default_gold_block.png"}, - S("Gold Block Stair"), - S("Gold Block Slab"), + "Gold Block Stair", + "Gold Block Slab", default.node_sound_metal_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "ice", "default:ice", {cracky = 3, cools_lava = 1, slippery = 3}, {"default_ice.png"}, - S("Ice Stair"), - S("Ice Slab"), + "Ice Stair", + "Ice Slab", default.node_sound_glass_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "snowblock", "default:snowblock", {crumbly = 3, cools_lava = 1, snowy = 1}, {"default_snow.png"}, - S("Snow Block Stair"), - S("Snow Block Slab"), + "Snow Block Stair", + "Snow Block Slab", default.node_sound_snow_defaults(), true ) @@ -877,9 +900,10 @@ stairs.register_stair_inner( {"stairs_glass_stairside.png^[transformR270", "default_glass.png", "stairs_glass_stairside.png^[transformFX", "default_glass.png", "default_glass.png", "stairs_glass_stairside.png"}, - S("Glass Stair"), + "", default.node_sound_glass_defaults(), - false + false, + S("Inner Glass Stair") ) stairs.register_stair_outer( @@ -889,9 +913,10 @@ stairs.register_stair_outer( {"stairs_glass_stairside.png^[transformR90", "default_glass.png", "stairs_glass_outer_stairside.png", "stairs_glass_stairside.png", "stairs_glass_stairside.png^[transformR90","stairs_glass_outer_stairside.png"}, - S("Glass Stair"), + "", default.node_sound_glass_defaults(), - false + false, + S("Outer Glass Stair") ) stairs.register_stair( @@ -923,9 +948,10 @@ stairs.register_stair_inner( {"stairs_obsidian_glass_stairside.png^[transformR270", "default_obsidian_glass.png", "stairs_obsidian_glass_stairside.png^[transformFX", "default_obsidian_glass.png", "default_obsidian_glass.png", "stairs_obsidian_glass_stairside.png"}, - S("Obsidian Glass Stair"), + "", default.node_sound_glass_defaults(), - false + false, + S("Inner Obsidian Glass Stair") ) stairs.register_stair_outer( @@ -935,7 +961,152 @@ stairs.register_stair_outer( {"stairs_obsidian_glass_stairside.png^[transformR90", "default_obsidian_glass.png", "stairs_obsidian_glass_outer_stairside.png", "stairs_obsidian_glass_stairside.png", "stairs_obsidian_glass_stairside.png^[transformR90","stairs_obsidian_glass_outer_stairside.png"}, - S("Obsidian Glass Stair"), + "", default.node_sound_glass_defaults(), - false + false, + S("Outer Obsidian Glass Stair") ) + +-- Dummy calls to S() to allow translation scripts to detect the strings. +-- To update this add this code to my_register_stair_and_slab: +-- for _,x in ipairs({"","Inner ","Outer "}) do print(("S(%q)"):format(x..desc_stair)) end +-- print(("S(%q)"):format(desc_slab)) + +--[[ +S("Wooden Stair") +S("Inner Wooden Stair") +S("Outer Wooden Stair") +S("Wooden Slab") +S("Jungle Wood Stair") +S("Inner Jungle Wood Stair") +S("Outer Jungle Wood Stair") +S("Jungle Wood Slab") +S("Pine Wood Stair") +S("Inner Pine Wood Stair") +S("Outer Pine Wood Stair") +S("Pine Wood Slab") +S("Acacia Wood Stair") +S("Inner Acacia Wood Stair") +S("Outer Acacia Wood Stair") +S("Acacia Wood Slab") +S("Aspen Wood Stair") +S("Inner Aspen Wood Stair") +S("Outer Aspen Wood Stair") +S("Aspen Wood Slab") +S("Stone Stair") +S("Inner Stone Stair") +S("Outer Stone Stair") +S("Stone Slab") +S("Cobblestone Stair") +S("Inner Cobblestone Stair") +S("Outer Cobblestone Stair") +S("Cobblestone Slab") +S("Mossy Cobblestone Stair") +S("Inner Mossy Cobblestone Stair") +S("Outer Mossy Cobblestone Stair") +S("Mossy Cobblestone Slab") +S("Stone Brick Stair") +S("Inner Stone Brick Stair") +S("Outer Stone Brick Stair") +S("Stone Brick Slab") +S("Stone Block Stair") +S("Inner Stone Block Stair") +S("Outer Stone Block Stair") +S("Stone Block Slab") +S("Desert Stone Stair") +S("Inner Desert Stone Stair") +S("Outer Desert Stone Stair") +S("Desert Stone Slab") +S("Desert Cobblestone Stair") +S("Inner Desert Cobblestone Stair") +S("Outer Desert Cobblestone Stair") +S("Desert Cobblestone Slab") +S("Desert Stone Brick Stair") +S("Inner Desert Stone Brick Stair") +S("Outer Desert Stone Brick Stair") +S("Desert Stone Brick Slab") +S("Desert Stone Block Stair") +S("Inner Desert Stone Block Stair") +S("Outer Desert Stone Block Stair") +S("Desert Stone Block Slab") +S("Sandstone Stair") +S("Inner Sandstone Stair") +S("Outer Sandstone Stair") +S("Sandstone Slab") +S("Sandstone Brick Stair") +S("Inner Sandstone Brick Stair") +S("Outer Sandstone Brick Stair") +S("Sandstone Brick Slab") +S("Sandstone Block Stair") +S("Inner Sandstone Block Stair") +S("Outer Sandstone Block Stair") +S("Sandstone Block Slab") +S("Desert Sandstone Stair") +S("Inner Desert Sandstone Stair") +S("Outer Desert Sandstone Stair") +S("Desert Sandstone Slab") +S("Desert Sandstone Brick Stair") +S("Inner Desert Sandstone Brick Stair") +S("Outer Desert Sandstone Brick Stair") +S("Desert Sandstone Brick Slab") +S("Desert Sandstone Block Stair") +S("Inner Desert Sandstone Block Stair") +S("Outer Desert Sandstone Block Stair") +S("Desert Sandstone Block Slab") +S("Silver Sandstone Stair") +S("Inner Silver Sandstone Stair") +S("Outer Silver Sandstone Stair") +S("Silver Sandstone Slab") +S("Silver Sandstone Brick Stair") +S("Inner Silver Sandstone Brick Stair") +S("Outer Silver Sandstone Brick Stair") +S("Silver Sandstone Brick Slab") +S("Silver Sandstone Block Stair") +S("Inner Silver Sandstone Block Stair") +S("Outer Silver Sandstone Block Stair") +S("Silver Sandstone Block Slab") +S("Obsidian Stair") +S("Inner Obsidian Stair") +S("Outer Obsidian Stair") +S("Obsidian Slab") +S("Obsidian Brick Stair") +S("Inner Obsidian Brick Stair") +S("Outer Obsidian Brick Stair") +S("Obsidian Brick Slab") +S("Obsidian Block Stair") +S("Inner Obsidian Block Stair") +S("Outer Obsidian Block Stair") +S("Obsidian Block Slab") +S("Brick Stair") +S("Inner Brick Stair") +S("Outer Brick Stair") +S("Brick Slab") +S("Steel Block Stair") +S("Inner Steel Block Stair") +S("Outer Steel Block Stair") +S("Steel Block Slab") +S("Tin Block Stair") +S("Inner Tin Block Stair") +S("Outer Tin Block Stair") +S("Tin Block Slab") +S("Copper Block Stair") +S("Inner Copper Block Stair") +S("Outer Copper Block Stair") +S("Copper Block Slab") +S("Bronze Block Stair") +S("Inner Bronze Block Stair") +S("Outer Bronze Block Stair") +S("Bronze Block Slab") +S("Gold Block Stair") +S("Inner Gold Block Stair") +S("Outer Gold Block Stair") +S("Gold Block Slab") +S("Ice Stair") +S("Inner Ice Stair") +S("Outer Ice Stair") +S("Ice Slab") +S("Snow Block Stair") +S("Inner Snow Block Stair") +S("Outer Snow Block Stair") +S("Snow Block Slab") +--]] diff --git a/mods/wool/init.lua b/mods/wool/init.lua index 1464423e..4cf7dc3a 100644 --- a/mods/wool/init.lua +++ b/mods/wool/init.lua @@ -9,7 +9,7 @@ for i = 1, #dyes do local name, desc = unpack(dyes[i]) minetest.register_node("wool:" .. name, { - description = S("@1 Wool", desc), + description = S(desc .. " Wool"), tiles = {"wool_" .. name .. ".png"}, is_ground_content = false, groups = {snappy = 2, choppy = 2, oddly_breakable_by_hand = 3, @@ -28,3 +28,25 @@ end -- Backwards compatibility with jordach's 16-color wool mod minetest.register_alias("wool:dark_blue", "wool:blue") minetest.register_alias("wool:gold", "wool:yellow") + +-- Dummy calls to S() to allow translation scripts to detect the strings. +-- To update this run: +-- for _,e in ipairs(dye.dyes) do print(("S(%q)"):format(e[2].." Wool")) end + +--[[ +S("White Wool") +S("Grey Wool") +S("Dark Grey Wool") +S("Black Wool") +S("Violet Wool") +S("Blue Wool") +S("Cyan Wool") +S("Dark Green Wool") +S("Green Wool") +S("Yellow Wool") +S("Brown Wool") +S("Orange Wool") +S("Red Wool") +S("Magenta Wool") +S("Pink Wool") +--]] From 88114a74e90dc7ac3a81f47ba93916e1dc925324 Mon Sep 17 00:00:00 2001 From: An0n3m0us Date: Fri, 13 Sep 2019 19:47:09 +0100 Subject: [PATCH 59/81] Add vessels group to firefly vessel --- mods/fireflies/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/fireflies/init.lua b/mods/fireflies/init.lua index 866a116a..1c533a12 100644 --- a/mods/fireflies/init.lua +++ b/mods/fireflies/init.lua @@ -142,7 +142,7 @@ minetest.register_node("fireflies:firefly_bottle", { sunlight_propagates = true, light_source = 9, walkable = false, - groups = {dig_immediate = 3, attached_node = 1}, + groups = {vessel = 1, dig_immediate = 3, attached_node = 1}, selection_box = { type = "fixed", fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} From 888383a81272c908458308441517d08190435573 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sat, 14 Sep 2019 14:30:44 +0200 Subject: [PATCH 60/81] Fix water no longer waving broken by bb9279ccb843937bc8001ce333e3ccb71b0dba2d --- mods/default/nodes.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index a93f2799..4c895c5c 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -2180,6 +2180,7 @@ minetest.register_node("default:coral_skeleton", { minetest.register_node("default:water_source", { description = S("Water Source"), drawtype = "liquid", + waving = 3, tiles = { { name = "default_water_source_animated.png", @@ -2223,6 +2224,7 @@ minetest.register_node("default:water_source", { minetest.register_node("default:water_flowing", { description = S("Flowing Water"), drawtype = "flowingliquid", + waving = 3, tiles = {"default_water.png"}, special_tiles = { { From 1f7ea89cb6ba6e50f6e6866c7f3901080ac428bb Mon Sep 17 00:00:00 2001 From: An0n3m0us Date: Sat, 14 Sep 2019 19:30:26 +0100 Subject: [PATCH 61/81] Add missing infotext to nodes (#2477) --- mods/default/furnace.lua | 12 ++++++------ mods/default/nodes.lua | 7 ++++++- mods/doors/init.lua | 4 ++-- mods/vessels/init.lua | 31 +++++++++++++++++++++---------- 4 files changed, 35 insertions(+), 19 deletions(-) diff --git a/mods/default/furnace.lua b/mods/default/furnace.lua index d36a7f66..3fd775d7 100644 --- a/mods/default/furnace.lua +++ b/mods/default/furnace.lua @@ -200,7 +200,7 @@ local function furnace_node_timer(pos, elapsed) if fuel and fuel_totaltime > fuel.time then fuel_totaltime = fuel.time end - if srclist[1]:is_empty() then + if srclist and srclist[1]:is_empty() then src_time = 0 end @@ -218,10 +218,10 @@ local function furnace_node_timer(pos, elapsed) item_state = S("@1%", item_percent) end else - if srclist[1]:is_empty() then - item_state = S("Empty") - else + if srclist and not srclist[1]:is_empty() then item_state = S("Not cookable") + else + item_state = S("Empty") end end @@ -238,7 +238,7 @@ local function furnace_node_timer(pos, elapsed) -- make sure timer restarts automatically result = true else - if not fuellist[1]:is_empty() then + if fuellist and not fuellist[1]:is_empty() then fuel_state = S("@1%", 0) end formspec = default.get_furnace_inactive_formspec() @@ -291,11 +291,11 @@ minetest.register_node("default:furnace", { on_construct = function(pos) local meta = minetest.get_meta(pos) - meta:set_string("formspec", default.get_furnace_inactive_formspec()) local inv = meta:get_inventory() inv:set_size('src', 1) inv:set_size('fuel', 1) inv:set_size('dst', 4) + furnace_node_timer(pos, 0) end, on_metadata_inventory_move = function(pos) diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index 4c895c5c..5dbee7d0 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -2602,7 +2602,12 @@ local function register_sign(material, desc, def) text .. "\" to sign at " .. minetest.pos_to_string(pos)) local meta = minetest.get_meta(pos) meta:set_string("text", text) - meta:set_string("infotext", '"' .. text .. '"') + + if #text > 0 then + meta:set_string("infotext", '"' .. text .. '"') + else + meta:set_string("infotext", '') + end end, }) end diff --git a/mods/doors/init.lua b/mods/doors/init.lua index eb5dd6ba..ed686213 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -333,7 +333,7 @@ function doors.register(name, def) if def.protected then meta:set_string("owner", pn) - meta:set_string("infotext", S("Owned by @1", pn)) + meta:set_string("infotext", S("Steel Door") .. "\n" .. S("Owned by @1", pn)) end if not (creative and creative.is_enabled_for and creative.is_enabled_for(pn)) then @@ -586,7 +586,7 @@ function doors.register_trapdoor(name, def) local pn = placer:get_player_name() local meta = minetest.get_meta(pos) meta:set_string("owner", pn) - meta:set_string("infotext", S("Owned by @1", pn)) + meta:set_string("infotext", S("Steel Trapdoor") .. "\n" .. S("Owned by @1", pn)) return (creative and creative.is_enabled_for and creative.is_enabled_for(pn)) end diff --git a/mods/vessels/init.lua b/mods/vessels/init.lua index 6212ba8e..3f001c19 100644 --- a/mods/vessels/init.lua +++ b/mods/vessels/init.lua @@ -16,11 +16,15 @@ local vessels_shelf_formspec = "listring[current_player;main]" .. default.get_hotbar_bg(0, 2.85) -local function get_vessels_shelf_formspec(inv) +local function update_vessels_shelf(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local invlist = inv:get_list("vessels") + local formspec = vessels_shelf_formspec - local invlist = inv and inv:get_list("vessels") -- Inventory slots overlay local vx, vy = 0, 0.3 + local n_items = 0 for i = 1, 16 do if i == 9 then vx = 0 @@ -29,10 +33,20 @@ local function get_vessels_shelf_formspec(inv) if not invlist or invlist[i]:is_empty() then formspec = formspec .. "image[" .. vx .. "," .. vy .. ";1,1;vessels_shelf_slot.png]" + else + local stack = invlist[i] + if not stack:is_empty() then + n_items = n_items + stack:get_count() + end end vx = vx + 1 end - return formspec + meta:set_string("formspec", formspec) + if n_items == 0 then + meta:set_string("infotext", S("Empty Vessel Shelf")) + else + meta:set_string("infotext", S("Vessel Shelf (@1 items)", n_items)) + end end minetest.register_node("vessels:shelf", { @@ -46,7 +60,7 @@ minetest.register_node("vessels:shelf", { on_construct = function(pos) local meta = minetest.get_meta(pos) - meta:set_string("formspec", get_vessels_shelf_formspec(nil)) + update_vessels_shelf(pos) local inv = meta:get_inventory() inv:set_size("vessels", 8 * 2) end, @@ -63,20 +77,17 @@ minetest.register_node("vessels:shelf", { on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) minetest.log("action", player:get_player_name() .. " moves stuff in vessels shelf at ".. minetest.pos_to_string(pos)) - local meta = minetest.get_meta(pos) - meta:set_string("formspec", get_vessels_shelf_formspec(meta:get_inventory())) + update_vessels_shelf(pos) end, on_metadata_inventory_put = function(pos, listname, index, stack, player) minetest.log("action", player:get_player_name() .. " moves stuff to vessels shelf at ".. minetest.pos_to_string(pos)) - local meta = minetest.get_meta(pos) - meta:set_string("formspec", get_vessels_shelf_formspec(meta:get_inventory())) + update_vessels_shelf(pos) end, on_metadata_inventory_take = function(pos, listname, index, stack, player) minetest.log("action", player:get_player_name() .. " takes stuff from vessels shelf at ".. minetest.pos_to_string(pos)) - local meta = minetest.get_meta(pos) - meta:set_string("formspec", get_vessels_shelf_formspec(meta:get_inventory())) + update_vessels_shelf(pos) end, on_blast = function(pos) local drops = {} From c42a525ce8203dd738ea2f968f46a34ea3110d57 Mon Sep 17 00:00:00 2001 From: mbartlett21 <29034492+mbartlett21@users.noreply.github.com> Date: Tue, 17 Sep 2019 06:38:02 +1000 Subject: [PATCH 62/81] Add option for non-jumpable fences and walls Add an option, default disabled, to extend the collision boxes upwards. --- minetest.conf.example | 3 ++ mods/default/functions.lua | 65 +++++++++++++++++++++++--------------- mods/doors/init.lua | 9 +++--- mods/walls/init.lua | 23 ++++++++++---- settingtypes.txt | 3 ++ 5 files changed, 68 insertions(+), 35 deletions(-) diff --git a/minetest.conf.example b/minetest.conf.example index d1da0ff8..f599ca7a 100644 --- a/minetest.conf.example +++ b/minetest.conf.example @@ -60,6 +60,9 @@ default:torch 99,default:cobble 99 # Default value is true. #enable_bed_night_skip = true +# If enabled, fences and walls cannot be jumped over. +#enable_fence_tall = false + # Whether the engine's spawn search, which does not check for a suitable # starting biome, is used. # Default value is false. diff --git a/mods/default/functions.lua b/mods/default/functions.lua index 0f3cb764..2a4fdfeb 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -273,6 +273,7 @@ end -- -- Fence registration helper -- +local fence_collision_extra = minetest.settings:get_bool("enable_fence_tall") and 3/8 or 0 function default.register_fence(name, def) minetest.register_craft({ @@ -291,17 +292,27 @@ function default.register_fence(name, def) drawtype = "nodebox", node_box = { type = "connected", - fixed = {{-1/8, -1/2, -1/8, 1/8, 1/2, 1/8}}, + fixed = {-1/8, -1/2, -1/8, 1/8, 1/2, 1/8}, -- connect_top = -- connect_bottom = - connect_front = {{-1/16,3/16,-1/2,1/16,5/16,-1/8}, - {-1/16,-5/16,-1/2,1/16,-3/16,-1/8}}, - connect_left = {{-1/2,3/16,-1/16,-1/8,5/16,1/16}, - {-1/2,-5/16,-1/16,-1/8,-3/16,1/16}}, - connect_back = {{-1/16,3/16,1/8,1/16,5/16,1/2}, - {-1/16,-5/16,1/8,1/16,-3/16,1/2}}, - connect_right = {{1/8,3/16,-1/16,1/2,5/16,1/16}, - {1/8,-5/16,-1/16,1/2,-3/16,1/16}}, + connect_front = {{-1/16, 3/16, -1/2, 1/16, 5/16, -1/8 }, + {-1/16, -5/16, -1/2, 1/16, -3/16, -1/8 }}, + connect_left = {{-1/2, 3/16, -1/16, -1/8, 5/16, 1/16}, + {-1/2, -5/16, -1/16, -1/8, -3/16, 1/16}}, + connect_back = {{-1/16, 3/16, 1/8, 1/16, 5/16, 1/2 }, + {-1/16, -5/16, 1/8, 1/16, -3/16, 1/2 }}, + connect_right = {{ 1/8, 3/16, -1/16, 1/2, 5/16, 1/16}, + { 1/8, -5/16, -1/16, 1/2, -3/16, 1/16}} + }, + collision_box = { + type = "connected", + fixed = {-1/8, -1/2, -1/8, 1/8, 1/2 + fence_collision_extra, 1/8}, + -- connect_top = + -- connect_bottom = + connect_front = {-1/8, -1/2, -1/2, 1/8, 1/2 + fence_collision_extra, -1/8}, + connect_left = {-1/2, -1/2, -1/8, -1/8, 1/2 + fence_collision_extra, 1/8}, + connect_back = {-1/8, -1/2, 1/8, 1/8, 1/2 + fence_collision_extra, 1/2}, + connect_right = { 1/8, -1/2, -1/8, 1/2, 1/2 + fence_collision_extra, 1/8} }, connects_to = {"group:fence", "group:wood", "group:tree", "group:wall"}, inventory_image = fence_texture, @@ -349,24 +360,28 @@ function default.register_fence_rail(name, def) drawtype = "nodebox", node_box = { type = "connected", - fixed = { - {-1/16, 3/16, -1/16, 1/16, 5/16, 1/16}, - {-1/16, -3/16, -1/16, 1/16, -5/16, 1/16} - }, + fixed = {{-1/16, 3/16, -1/16, 1/16, 5/16, 1/16}, + {-1/16, -3/16, -1/16, 1/16, -5/16, 1/16}}, -- connect_top = -- connect_bottom = - connect_front = { - {-1/16, 3/16, -1/2, 1/16, 5/16, -1/16}, - {-1/16, -5/16, -1/2, 1/16, -3/16, -1/16}}, - connect_left = { - {-1/2, 3/16, -1/16, -1/16, 5/16, 1/16}, - {-1/2, -5/16, -1/16, -1/16, -3/16, 1/16}}, - connect_back = { - {-1/16, 3/16, 1/16, 1/16, 5/16, 1/2}, - {-1/16, -5/16, 1/16, 1/16, -3/16, 1/2}}, - connect_right = { - {1/16, 3/16, -1/16, 1/2, 5/16, 1/16}, - {1/16, -5/16, -1/16, 1/2, -3/16, 1/16}}, + connect_front = {{-1/16, 3/16, -1/2, 1/16, 5/16, -1/16}, + {-1/16, -5/16, -1/2, 1/16, -3/16, -1/16}}, + connect_left = {{-1/2, 3/16, -1/16, -1/16, 5/16, 1/16}, + {-1/2, -5/16, -1/16, -1/16, -3/16, 1/16}}, + connect_back = {{-1/16, 3/16, 1/16, 1/16, 5/16, 1/2 }, + {-1/16, -5/16, 1/16, 1/16, -3/16, 1/2 }}, + connect_right = {{ 1/16, 3/16, -1/16, 1/2, 5/16, 1/16}, + { 1/16, -5/16, -1/16, 1/2, -3/16, 1/16}} + }, + collision_box = { + type = "connected", + fixed = {-1/8, -1/2, -1/8, 1/8, 1/2 + fence_collision_extra, 1/8}, + -- connect_top = + -- connect_bottom = + connect_front = {-1/8, -1/2, -1/2, 1/8, 1/2 + fence_collision_extra, -1/8}, + connect_left = {-1/2, -1/2, -1/8, -1/8, 1/2 + fence_collision_extra, 1/8}, + connect_back = {-1/8, -1/2, 1/8, 1/8, 1/2 + fence_collision_extra, 1/2}, + connect_right = { 1/8, -1/2, -1/8, 1/2, 1/2 + fence_collision_extra, 1/8} }, connects_to = {"group:fence", "group:wall"}, inventory_image = fence_rail_texture, diff --git a/mods/doors/init.lua b/mods/doors/init.lua index ed686213..99b9e07e 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -725,6 +725,7 @@ minetest.register_craft({ ----fence gate---- +local fence_collision_extra = minetest.settings:get_bool("enable_fence_tall") and 3/8 or 0 function doors.register_fencegate(name, def) local fence = { @@ -748,7 +749,7 @@ function doors.register_fencegate(name, def) end, selection_box = { type = "fixed", - fixed = {-1/2, -1/2, -1/4, 1/2, 1/2, 1/4}, + fixed = {-1/2, -1/2, -1/4, 1/2, 1/2, 1/4} }, } @@ -774,7 +775,7 @@ function doors.register_fencegate(name, def) fence_closed.sound = "doors_fencegate_open" fence_closed.collision_box = { type = "fixed", - fixed = {-1/2, -1/2, -1/4, 1/2, 1/2, 1/4}, + fixed = {-1/2, -1/2, -1/8, 1/2, 1/2 + fence_collision_extra, 1/8} } local fence_open = table.copy(fence) @@ -784,8 +785,8 @@ function doors.register_fencegate(name, def) fence_open.groups.not_in_creative_inventory = 1 fence_open.collision_box = { type = "fixed", - fixed = {{-1/2, -1/2, -1/4, -3/8, 1/2, 1/4}, - {-1/2, -3/8, -1/2, -3/8, 3/8, 0}}, + fixed = {{-1/2, -1/2, -1/8, -3/8, 1/2 + fence_collision_extra, 1/8}, + {-1/2, -3/8, -1/2, -3/8, 3/8, 0 }} } minetest.register_node(":" .. name .. "_closed", fence_closed) diff --git a/mods/walls/init.lua b/mods/walls/init.lua index c267eba5..b2a163fc 100644 --- a/mods/walls/init.lua +++ b/mods/walls/init.lua @@ -2,10 +2,11 @@ walls = {} +local fence_collision_extra = minetest.settings:get_bool("enable_fence_tall") and 3/8 or 0 + -- Load support for MT game translation. local S = minetest.get_translator("walls") - walls.register = function(wall_name, wall_desc, wall_texture_table, wall_mat, wall_sounds) --make wall_texture_table paramenter backwards compatible for mods passing single texture if type(wall_texture_table) ~= "table" then @@ -17,12 +18,22 @@ walls.register = function(wall_name, wall_desc, wall_texture_table, wall_mat, wa drawtype = "nodebox", node_box = { type = "connected", - fixed = {{-1/4, -1/2, -1/4, 1/4, 1/2, 1/4}}, + fixed = {-1/4, -1/2, -1/4, 1/4, 1/2, 1/4}, -- connect_bottom = - connect_front = {{-3/16, -1/2, -1/2, 3/16, 3/8, -1/4}}, - connect_left = {{-1/2, -1/2, -3/16, -1/4, 3/8, 3/16}}, - connect_back = {{-3/16, -1/2, 1/4, 3/16, 3/8, 1/2}}, - connect_right = {{ 1/4, -1/2, -3/16, 1/2, 3/8, 3/16}}, + connect_front = {-3/16, -1/2, -1/2, 3/16, 3/8, -1/4}, + connect_left = {-1/2, -1/2, -3/16, -1/4, 3/8, 3/16}, + connect_back = {-3/16, -1/2, 1/4, 3/16, 3/8, 1/2}, + connect_right = { 1/4, -1/2, -3/16, 1/2, 3/8, 3/16}, + }, + collision_box = { + type = "connected", + fixed = {-1/4, -1/2, -1/4, 1/4, 1/2 + fence_collision_extra, 1/4}, + -- connect_top = + -- connect_bottom = + connect_front = {-1/4,-1/2,-1/2,1/4,1/2 + fence_collision_extra,-1/4}, + connect_left = {-1/2,-1/2,-1/4,-1/4,1/2 + fence_collision_extra,1/4}, + connect_back = {-1/4,-1/2,1/4,1/4,1/2 + fence_collision_extra,1/2}, + connect_right = {1/4,-1/2,-1/4,1/2,1/2 + fence_collision_extra,1/4}, }, connects_to = { "group:wall", "group:stone", "group:fence" }, paramtype = "light", diff --git a/settingtypes.txt b/settingtypes.txt index 6e3f4ab4..a0d5fead 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -32,6 +32,9 @@ enable_bed_respawn (Respawn at bed) bool true # in beds. enable_bed_night_skip (Skip night when sleeping) bool true +# If enabled, fences and walls cannot be jumped over. +enable_fence_tall (Tall fences and walls) bool false + # When TNT explodes, it destroys nearby nodes and damages nearby players. # This setting is disabled by default on servers. enable_tnt (TNT) bool true From b4c752224833b3ef69c2f1f8ecb3001bf9221324 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Wed, 18 Sep 2019 20:38:27 +0200 Subject: [PATCH 63/81] Fix more translation strings (#2487) --- game_api.txt | 2 ++ mods/beds/functions.lua | 17 +++++++++++------ mods/creative/inventory.lua | 15 ++++++++------- mods/default/craftitems.lua | 17 +++++++++-------- mods/default/nodes.lua | 2 +- mods/farming/api.lua | 5 ++++- mods/farming/init.lua | 2 ++ mods/farming/nodes.lua | 25 +++++++++++++++---------- mods/sfinv/init.lua | 5 ++++- 9 files changed, 56 insertions(+), 34 deletions(-) diff --git a/game_api.txt b/game_api.txt index 6ddeb980..a066a087 100644 --- a/game_api.txt +++ b/game_api.txt @@ -359,6 +359,8 @@ The farming API allows you to easily register plants and hoes. { description = "", -- Description of seed item + harvest_description = "", -- Description of harvest item + -- (optional, derived automatically if not provided) inventory_image = "unknown_item.png", -- Image to be used as seed's wield- and inventory image steps = 8, -- How many steps the plant has to grow, until it can be harvested -- ^ Always provide a plant texture for each step, format: modname_plantname_i.png (i = stepnumber) diff --git a/mods/beds/functions.lua b/mods/beds/functions.lua index ae632a98..0b79bfb5 100644 --- a/mods/beds/functions.lua +++ b/mods/beds/functions.lua @@ -5,6 +5,9 @@ if enable_respawn == nil then enable_respawn = true end +-- support for MT game translation. +local S = beds.get_translator + -- Helper functions local function get_look_yaw(pos) @@ -108,17 +111,19 @@ end local function update_formspecs(finished) local ges = #minetest.get_connected_players() - local form_n local player_in_bed = get_player_in_bed_count() local is_majority = (ges / 2) < player_in_bed + local form_n + local esc = minetest.formspec_escape if finished then - form_n = beds.formspec .. "label[2.7,9; Good morning.]" + form_n = beds.formspec .. "label[2.7,9;" .. esc(S("Good morning.")) .. "]" else - form_n = beds.formspec .. "label[2.2,9;" .. tostring(player_in_bed) .. - " of " .. tostring(ges) .. " players are in bed]" + form_n = beds.formspec .. "label[2.2,9;" .. + esc(S("@1 of @2 players are in bed", player_in_bed, ges)) .. "]" if is_majority and is_night_skip_enabled() then - form_n = form_n .. "button_exit[2,6;4,0.75;force;Force night skip]" + form_n = form_n .. "button_exit[2,6;4,0.75;force;" .. + esc(S("Force night skip")) .. "]" end end @@ -150,7 +155,7 @@ function beds.on_rightclick(pos, player) if beds.player[name] then lay_down(player, nil, nil, false) end - minetest.chat_send_player(name, "You can only sleep at night.") + minetest.chat_send_player(name, S("You can only sleep at night.")) return end diff --git a/mods/creative/inventory.lua b/mods/creative/inventory.lua index 08402046..27dee782 100644 --- a/mods/creative/inventory.lua +++ b/mods/creative/inventory.lua @@ -108,6 +108,7 @@ function creative.register_tab(name, title, items) local start_i = inv.start_i or 0 local pagenum = math.floor(start_i / (3*8) + 1) local pagemax = math.ceil(inv.size / (3*8)) + local esc = minetest.formspec_escape return sfinv.make_formspec(player, context, "label[6.2,3.35;" .. minetest.colorize("#FFFF00", tostring(pagenum)) .. " / " .. tostring(pagemax) .. "]" .. [[ @@ -119,14 +120,14 @@ function creative.register_tab(name, title, items) image_button[7.2,3.25;0.8,0.8;creative_next_icon.png;creative_next;] image_button[2.1,3.25;0.8,0.8;creative_search_icon.png;creative_search;] image_button[2.75,3.25;0.8,0.8;creative_clear_icon.png;creative_clear;] - tooltip[creative_search;S("Search")] - tooltip[creative_clear;S("Reset")] - tooltip[creative_prev;S("Previous page")] - tooltip[creative_next;S("Next page")] - listring[current_player;main] - field_close_on_enter[creative_filter;false] ]] .. - "field[0.3,3.5;2.2,1;creative_filter;;" .. minetest.formspec_escape(inv.filter) .. "]" .. + "tooltip[creative_search;" .. esc(S("Search")) .. "]" .. + "tooltip[creative_clear;" .. esc(S("Reset")) .. "]" .. + "tooltip[creative_prev;" .. esc(S("Previous page")) .. "]" .. + "tooltip[creative_next;" .. esc(S("Next page")) .. "]" .. + "listring[current_player;main]" .. + "field_close_on_enter[creative_filter;false]" .. + "field[0.3,3.5;2.2,1;creative_filter;;" .. esc(inv.filter) .. "]" .. "listring[detached:creative_" .. player_name .. ";main]" .. "list[detached:creative_" .. player_name .. ";main;0,0;8,3;" .. tostring(start_i) .. "]" .. creative.formspec_add, true) diff --git a/mods/default/craftitems.lua b/mods/default/craftitems.lua index dd76d1e5..e2e92bf2 100644 --- a/mods/default/craftitems.lua +++ b/mods/default/craftitems.lua @@ -52,23 +52,24 @@ local function book_on_use(itemstack, user) 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;Title:;" .. - minetest.formspec_escape(title) .. "]" .. - "textarea[0.5,1.5;7.5,7;text;Contents:;" .. - minetest.formspec_escape(text) .. "]" .. - "button_exit[2.5,7.5;3,1;save;Save]" + "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")) .. "]" else formspec = "size[8,8]" .. - "label[0.5,0.5;by " .. owner .. "]" .. + "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," .. minetest.formspec_escape(title) .. "]" .. + "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;Page " .. page .. " of " .. page_max .. "]" .. + "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 diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index 5dbee7d0..cee1242a 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -2604,7 +2604,7 @@ local function register_sign(material, desc, def) meta:set_string("text", text) if #text > 0 then - meta:set_string("infotext", '"' .. text .. '"') + meta:set_string("infotext", S('"@1"', text)) else meta:set_string("infotext", '') end diff --git a/mods/farming/api.lua b/mods/farming/api.lua index 6c13b11b..c2c549e4 100644 --- a/mods/farming/api.lua +++ b/mods/farming/api.lua @@ -257,6 +257,9 @@ farming.register_plant = function(name, def) if not def.description then def.description = S("Seed") end + if not def.harvest_description then + def.harvest_description = pname:gsub("^%l", string.upper) + end if not def.inventory_image then def.inventory_image = "unknown_item.png" end @@ -325,7 +328,7 @@ farming.register_plant = function(name, def) -- Register harvest minetest.register_craftitem(":" .. mname .. ":" .. pname, { - description = pname:gsub("^%l", string.upper), + description = def.harvest_description, inventory_image = mname .. "_" .. pname .. ".png", groups = def.groups or {flammable = 2}, }) diff --git a/mods/farming/init.lua b/mods/farming/init.lua index 2344d45e..e6dfd579 100644 --- a/mods/farming/init.lua +++ b/mods/farming/init.lua @@ -20,6 +20,7 @@ dofile(farming.path .. "/hoes.lua") farming.register_plant("farming:wheat", { description = S("Wheat Seed"), + harvest_description = S("Wheat"), paramtype2 = "meshoptions", inventory_image = "farming_wheat_seed.png", steps = 8, @@ -61,6 +62,7 @@ minetest.register_craft({ farming.register_plant("farming:cotton", { description = S("Cotton Seed"), + harvest_description = S("Cotton"), inventory_image = "farming_cotton_seed.png", steps = 8, minlight = 13, diff --git a/mods/farming/nodes.lua b/mods/farming/nodes.lua index 806f46d4..22dd51c8 100644 --- a/mods/farming/nodes.lua +++ b/mods/farming/nodes.lua @@ -153,16 +153,21 @@ minetest.register_node("farming:straw", { sounds = default.node_sound_leaves_defaults(), }) -stairs.register_stair_and_slab( - "straw", - "farming:straw", - {snappy = 3, flammable = 4}, - {"farming_straw.png"}, - S("Straw Stair"), - S("Straw Slab"), - default.node_sound_leaves_defaults(), - true -) +do + local recipe = "farming:straw" + local groups = {snappy = 3, flammable = 4} + local images = {"farming_straw.png"} + local sounds = default.node_sound_leaves_defaults() + + stairs.register_stair("straw", recipe, groups, images, S("Straw Stair"), + sounds, true) + stairs.register_stair_inner("straw", recipe, groups, images, "", + sounds, true, S("Inner Straw Stair")) + stairs.register_stair_outer("straw", recipe, groups, images, "", + sounds, true, S("Outer Straw Stair")) + stairs.register_slab("straw", recipe, groups, images, S("Straw Slab"), + sounds, true) +end minetest.register_abm({ label = "Farming soil", diff --git a/mods/sfinv/init.lua b/mods/sfinv/init.lua index e9021396..71e9ee70 100644 --- a/mods/sfinv/init.lua +++ b/mods/sfinv/init.lua @@ -2,8 +2,11 @@ dofile(minetest.get_modpath("sfinv") .. "/api.lua") +-- Load support for MT game translation. +local S = minetest.get_translator("sfinv") + sfinv.register_page("sfinv:crafting", { - title = "Crafting", + title = S("Crafting"), get = function(self, player, context) return sfinv.make_formspec(player, context, [[ list[current_player;craft;1.75,0.5;3,3;] From cbb0529ace1d9ebfb01909478a005c71a034e6f2 Mon Sep 17 00:00:00 2001 From: An0n3m0us Date: Wed, 18 Sep 2019 23:36:50 +0100 Subject: [PATCH 64/81] Set fuel percentage to decrease (#2481) --- mods/default/furnace.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/default/furnace.lua b/mods/default/furnace.lua index 3fd775d7..d133a3a1 100644 --- a/mods/default/furnace.lua +++ b/mods/default/furnace.lua @@ -12,7 +12,7 @@ function default.get_furnace_active_formspec(fuel_percent, item_percent) "list[context;src;2.75,0.5;1,1;]".. "list[context;fuel;2.75,2.5;1,1;]".. "image[2.75,1.5;1,1;default_furnace_fire_bg.png^[lowpart:".. - (100-fuel_percent)..":default_furnace_fire_fg.png]".. + (fuel_percent)..":default_furnace_fire_fg.png]".. "image[3.75,1.5;1,1;gui_furnace_arrow_bg.png^[lowpart:".. (item_percent)..":gui_furnace_arrow_fg.png^[transformR270]".. "list[context;dst;4.75,0.96;2,2;]".. @@ -231,7 +231,7 @@ local function furnace_node_timer(pos, elapsed) if fuel_totaltime ~= 0 then active = true - local fuel_percent = math.floor(fuel_time / fuel_totaltime * 100) + local fuel_percent = 100 - math.floor(fuel_time / fuel_totaltime * 100) fuel_state = S("@1%", fuel_percent) formspec = default.get_furnace_active_formspec(fuel_percent, item_percent) swap_node(pos, "default:furnace_active") From 00f9287075cd3d1f42cc626944bd110402fe08c2 Mon Sep 17 00:00:00 2001 From: leucome Date: Wed, 18 Sep 2019 21:13:18 -0400 Subject: [PATCH 65/81] Leafdecay: Use param2 ~= 1 instead of param2 == 0 --- mods/default/functions.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/default/functions.lua b/mods/default/functions.lua index 2a4fdfeb..9d6c5937 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -427,7 +427,7 @@ local function leafdecay_after_destruct(pos, oldnode, def) vector.add(pos, def.radius), def.leaves)) do local node = minetest.get_node(v) local timer = minetest.get_node_timer(v) - if node.param2 == 0 and not timer:is_started() then + if node.param2 ~= 1 and not timer:is_started() then timer:start(math.random(20, 120) / 10) end end From 09bed49b5a1b9fbbfec3090f1d4f78452a1dba15 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Fri, 20 Sep 2019 20:10:58 +0200 Subject: [PATCH 66/81] Fix door infotext to correctly describe the type of door --- mods/doors/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 99b9e07e..6cc7d23f 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -333,7 +333,7 @@ function doors.register(name, def) if def.protected then meta:set_string("owner", pn) - meta:set_string("infotext", S("Steel Door") .. "\n" .. S("Owned by @1", pn)) + meta:set_string("infotext", def.description .. "\n" .. S("Owned by @1", pn)) end if not (creative and creative.is_enabled_for and creative.is_enabled_for(pn)) then From 3f7cd062c381eb4b83636f9e46aebfe58709a784 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Fri, 20 Sep 2019 20:56:20 +0200 Subject: [PATCH 67/81] Fix trapdoor infotext to correctly describe the type of trapdoor --- mods/doors/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 6cc7d23f..85af0ef8 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -586,7 +586,7 @@ function doors.register_trapdoor(name, def) local pn = placer:get_player_name() local meta = minetest.get_meta(pos) meta:set_string("owner", pn) - meta:set_string("infotext", S("Steel Trapdoor") .. "\n" .. S("Owned by @1", pn)) + meta:set_string("infotext", def.description .. "\n" .. S("Owned by @1", pn)) return (creative and creative.is_enabled_for and creative.is_enabled_for(pn)) end From b31795dd041a0e3221bdc4b74a739b2df85d02af Mon Sep 17 00:00:00 2001 From: An0n3m0us Date: Sat, 21 Sep 2019 10:45:03 +0100 Subject: [PATCH 68/81] Vessels: Fix vessels shelf infotext --- mods/vessels/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/vessels/init.lua b/mods/vessels/init.lua index 3f001c19..b330efc2 100644 --- a/mods/vessels/init.lua +++ b/mods/vessels/init.lua @@ -43,9 +43,9 @@ local function update_vessels_shelf(pos) end meta:set_string("formspec", formspec) if n_items == 0 then - meta:set_string("infotext", S("Empty Vessel Shelf")) + meta:set_string("infotext", S("Empty Vessels Shelf")) else - meta:set_string("infotext", S("Vessel Shelf (@1 items)", n_items)) + meta:set_string("infotext", S("Vessels Shelf (@1 items)", n_items)) end end From 86a55d3584560e29d82575c6b43d6f19fbeb873f Mon Sep 17 00:00:00 2001 From: Paramat Date: Sat, 21 Sep 2019 21:28:09 +0100 Subject: [PATCH 69/81] Marram grass: Fix noise flags to make 2D noise 'eased' (#2493) Increase noise resolution from 4 to 2 nodes for a higher quality distribution. Retune noise parameters to compensate for using eased noise. --- mods/default/mapgen.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/default/mapgen.lua b/mods/default/mapgen.lua index 6d68afcf..a361f894 100644 --- a/mods/default/mapgen.lua +++ b/mods/default/mapgen.lua @@ -2348,13 +2348,13 @@ function default.register_decorations() place_on = {"default:sand"}, sidelen = 4, noise_params = { - offset = -0.4, - scale = 3.0, + offset = -0.7, + scale = 4.0, spread = {x = 16, y = 16, z = 16}, seed = 513337, octaves = 1, - persist = 0.5, - flags = "absvalue" + persist = 0.0, + flags = "absvalue, eased" }, biomes = {"coniferous_forest_dunes", "grassland_dunes"}, y_max = 6, From 106c36da33070478efd0a598bae70804d9658844 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 17 Sep 2019 17:51:24 +0200 Subject: [PATCH 70/81] Add translation templates and German translation --- mods/beds/locale/beds.de.tr | 8 + mods/beds/locale/template.txt | 8 + mods/binoculars/locale/binoculars.de.tr | 3 + mods/binoculars/locale/template.txt | 3 + mods/boats/locale/boats.de.tr | 4 + mods/boats/locale/template.txt | 4 + mods/bones/locale/bones.de.tr | 8 + mods/bones/locale/template.txt | 8 + mods/bucket/locale/bucket.de.tr | 5 + mods/bucket/locale/template.txt | 5 + mods/butterflies/locale/butterflies.de.tr | 4 + mods/butterflies/locale/template.txt | 4 + mods/carts/locale/carts.de.tr | 6 + mods/carts/locale/template.txt | 6 + mods/creative/locale/creative.de.tr | 10 + mods/creative/locale/template.txt | 10 + mods/default/locale/default.de.tr | 211 ++++++++++++++++++ mods/default/locale/template.txt | 211 ++++++++++++++++++ mods/doors/locale/doors.de.tr | 18 ++ mods/doors/locale/template.txt | 18 ++ mods/dye/locale/dye.de.tr | 16 ++ mods/dye/locale/template.txt | 16 ++ mods/farming/locale/farming.de.tr | 25 +++ mods/farming/locale/template.txt | 25 +++ mods/fire/locale/fire.de.tr | 3 + mods/fire/locale/template.txt | 3 + mods/fireflies/locale/fireflies.de.tr | 5 + mods/fireflies/locale/template.txt | 5 + mods/flowers/locale/flowers.de.tr | 12 + mods/flowers/locale/template.txt | 12 + mods/game_commands/locale/game_commands.de.tr | 4 + mods/game_commands/locale/template.txt | 4 + mods/map/locale/map.de.tr | 3 + mods/map/locale/template.txt | 3 + mods/screwdriver/locale/screwdriver.de.tr | 3 + mods/screwdriver/locale/template.txt | 3 + mods/sethome/locale/sethome.de.tr | 8 + mods/sethome/locale/template.txt | 8 + mods/sfinv/locale/sfinv.de.tr | 2 + mods/sfinv/locale/template.txt | 2 + mods/stairs/locale/stairs.de.tr | 145 ++++++++++++ mods/stairs/locale/template.txt | 145 ++++++++++++ mods/tnt/locale/template.txt | 4 + mods/tnt/locale/tnt.de.tr | 4 + mods/vessels/locale/template.txt | 8 + mods/vessels/locale/vessels.de.tr | 8 + mods/walls/locale/template.txt | 4 + mods/walls/locale/walls.de.tr | 4 + mods/wool/locale/template.txt | 16 ++ mods/wool/locale/wool.de.tr | 16 ++ mods/xpanes/locale/template.txt | 4 + mods/xpanes/locale/xpanes.de.tr | 4 + 52 files changed, 1078 insertions(+) create mode 100644 mods/beds/locale/beds.de.tr create mode 100644 mods/beds/locale/template.txt create mode 100644 mods/binoculars/locale/binoculars.de.tr create mode 100644 mods/binoculars/locale/template.txt create mode 100644 mods/boats/locale/boats.de.tr create mode 100644 mods/boats/locale/template.txt create mode 100644 mods/bones/locale/bones.de.tr create mode 100644 mods/bones/locale/template.txt create mode 100644 mods/bucket/locale/bucket.de.tr create mode 100644 mods/bucket/locale/template.txt create mode 100644 mods/butterflies/locale/butterflies.de.tr create mode 100644 mods/butterflies/locale/template.txt create mode 100644 mods/carts/locale/carts.de.tr create mode 100644 mods/carts/locale/template.txt create mode 100644 mods/creative/locale/creative.de.tr create mode 100644 mods/creative/locale/template.txt create mode 100644 mods/default/locale/default.de.tr create mode 100644 mods/default/locale/template.txt create mode 100644 mods/doors/locale/doors.de.tr create mode 100644 mods/doors/locale/template.txt create mode 100644 mods/dye/locale/dye.de.tr create mode 100644 mods/dye/locale/template.txt create mode 100644 mods/farming/locale/farming.de.tr create mode 100644 mods/farming/locale/template.txt create mode 100644 mods/fire/locale/fire.de.tr create mode 100644 mods/fire/locale/template.txt create mode 100644 mods/fireflies/locale/fireflies.de.tr create mode 100644 mods/fireflies/locale/template.txt create mode 100644 mods/flowers/locale/flowers.de.tr create mode 100644 mods/flowers/locale/template.txt create mode 100644 mods/game_commands/locale/game_commands.de.tr create mode 100644 mods/game_commands/locale/template.txt create mode 100644 mods/map/locale/map.de.tr create mode 100644 mods/map/locale/template.txt create mode 100644 mods/screwdriver/locale/screwdriver.de.tr create mode 100644 mods/screwdriver/locale/template.txt create mode 100644 mods/sethome/locale/sethome.de.tr create mode 100644 mods/sethome/locale/template.txt create mode 100644 mods/sfinv/locale/sfinv.de.tr create mode 100644 mods/sfinv/locale/template.txt create mode 100644 mods/stairs/locale/stairs.de.tr create mode 100644 mods/stairs/locale/template.txt create mode 100644 mods/tnt/locale/template.txt create mode 100644 mods/tnt/locale/tnt.de.tr create mode 100644 mods/vessels/locale/template.txt create mode 100644 mods/vessels/locale/vessels.de.tr create mode 100644 mods/walls/locale/template.txt create mode 100644 mods/walls/locale/walls.de.tr create mode 100644 mods/wool/locale/template.txt create mode 100644 mods/wool/locale/wool.de.tr create mode 100644 mods/xpanes/locale/template.txt create mode 100644 mods/xpanes/locale/xpanes.de.tr diff --git a/mods/beds/locale/beds.de.tr b/mods/beds/locale/beds.de.tr new file mode 100644 index 00000000..e77f654c --- /dev/null +++ b/mods/beds/locale/beds.de.tr @@ -0,0 +1,8 @@ +# textdomain: beds +Fancy Bed=Schickes Bett +Simple Bed=Schlichtes Bett +Leave Bed=Bett verlassen +Good morning.=Guten Morgen. +@1 of @2 players are in bed=@1 von @2 Spielern sind im Bett +Force night skip=Überspringen der Nacht erzwingen +You can only sleep at night.=Sie können nur nachts schlafen. diff --git a/mods/beds/locale/template.txt b/mods/beds/locale/template.txt new file mode 100644 index 00000000..518fdbff --- /dev/null +++ b/mods/beds/locale/template.txt @@ -0,0 +1,8 @@ +# textdomain: beds +Fancy Bed= +Simple Bed= +Leave Bed= +Good morning.= +@1 of @2 players are in bed= +Force night skip= +You can only sleep at night.= diff --git a/mods/binoculars/locale/binoculars.de.tr b/mods/binoculars/locale/binoculars.de.tr new file mode 100644 index 00000000..7bd9b9d5 --- /dev/null +++ b/mods/binoculars/locale/binoculars.de.tr @@ -0,0 +1,3 @@ +# textdomain: binoculars +Binoculars=Fernglas +Use with 'Zoom' key=Mit „Zoom“-Taste benutzen diff --git a/mods/binoculars/locale/template.txt b/mods/binoculars/locale/template.txt new file mode 100644 index 00000000..a5264627 --- /dev/null +++ b/mods/binoculars/locale/template.txt @@ -0,0 +1,3 @@ +# textdomain: binoculars +Binoculars= +Use with 'Zoom' key= diff --git a/mods/boats/locale/boats.de.tr b/mods/boats/locale/boats.de.tr new file mode 100644 index 00000000..d8eb8d74 --- /dev/null +++ b/mods/boats/locale/boats.de.tr @@ -0,0 +1,4 @@ +# textdomain: boats +Boat cruise mode on=Schneller Bootsmodus an +Boat cruise mode off=Schneller Bootsmodus aus +Boat=Boot diff --git a/mods/boats/locale/template.txt b/mods/boats/locale/template.txt new file mode 100644 index 00000000..17aedc89 --- /dev/null +++ b/mods/boats/locale/template.txt @@ -0,0 +1,4 @@ +# textdomain: boats +Boat cruise mode on= +Boat cruise mode off= +Boat= diff --git a/mods/bones/locale/bones.de.tr b/mods/bones/locale/bones.de.tr new file mode 100644 index 00000000..83f5c28a --- /dev/null +++ b/mods/bones/locale/bones.de.tr @@ -0,0 +1,8 @@ +# textdomain: bones +Bones=Knochen +@1's old bones=Alte Knochen von @1 +@1 died at @2.=@1 starb bei @2. +@1 died at @2, and dropped their inventory.=@1 starb bei @2 und ließ das Inventar fallen. +@1 died at @2, and bones were placed.=@1 starb bei @2 und Knochen wurden platziert. +@1's fresh bones=Frische Knochen von @1 +@1's bones=Knochen von @1 diff --git a/mods/bones/locale/template.txt b/mods/bones/locale/template.txt new file mode 100644 index 00000000..4ac8d459 --- /dev/null +++ b/mods/bones/locale/template.txt @@ -0,0 +1,8 @@ +# textdomain: bones +Bones= +@1's old bones= +@1 died at @2.= +@1 died at @2, and dropped their inventory.= +@1 died at @2, and bones were placed.= +@1's fresh bones= +@1's bones= diff --git a/mods/bucket/locale/bucket.de.tr b/mods/bucket/locale/bucket.de.tr new file mode 100644 index 00000000..570dff15 --- /dev/null +++ b/mods/bucket/locale/bucket.de.tr @@ -0,0 +1,5 @@ +# textdomain: bucket +Empty Bucket=Leerer Eimer +Water Bucket=Wassereimer +River Water Bucket=Flusswassereimer +Lava Bucket=Lavaeimer diff --git a/mods/bucket/locale/template.txt b/mods/bucket/locale/template.txt new file mode 100644 index 00000000..a37c103b --- /dev/null +++ b/mods/bucket/locale/template.txt @@ -0,0 +1,5 @@ +# textdomain: bucket +Empty Bucket= +Water Bucket= +River Water Bucket= +Lava Bucket= diff --git a/mods/butterflies/locale/butterflies.de.tr b/mods/butterflies/locale/butterflies.de.tr new file mode 100644 index 00000000..2f1b982f --- /dev/null +++ b/mods/butterflies/locale/butterflies.de.tr @@ -0,0 +1,4 @@ +# textdomain: butterflies +White Butterfly=Weißer Schmetterling +Red Butterfly=Roter Schmetterling +Violet Butterfly=Violetter Schmetterling diff --git a/mods/butterflies/locale/template.txt b/mods/butterflies/locale/template.txt new file mode 100644 index 00000000..d89503aa --- /dev/null +++ b/mods/butterflies/locale/template.txt @@ -0,0 +1,4 @@ +# textdomain: butterflies +White Butterfly= +Red Butterfly= +Violet Butterfly= diff --git a/mods/carts/locale/carts.de.tr b/mods/carts/locale/carts.de.tr new file mode 100644 index 00000000..89a33ac3 --- /dev/null +++ b/mods/carts/locale/carts.de.tr @@ -0,0 +1,6 @@ +# textdomain: carts +Cart=Lore +(Sneak+Click to pick up)=(Schleichen u. Klicken zum Aufheben) +Rail=Schiene +Powered Rail=Antriebsschiene +Brake Rail=Bremsschiene diff --git a/mods/carts/locale/template.txt b/mods/carts/locale/template.txt new file mode 100644 index 00000000..a67d95fd --- /dev/null +++ b/mods/carts/locale/template.txt @@ -0,0 +1,6 @@ +# textdomain: carts +Cart= +(Sneak+Click to pick up)= +Rail= +Powered Rail= +Brake Rail= diff --git a/mods/creative/locale/creative.de.tr b/mods/creative/locale/creative.de.tr new file mode 100644 index 00000000..02b02777 --- /dev/null +++ b/mods/creative/locale/creative.de.tr @@ -0,0 +1,10 @@ +# textdomain: creative +Allow player to use creative inventory=Spieler erlauben, das Kreativinventar zu benutzen +Search=Suchen +Reset=Zurücksetzen +Previous page=Vorherige Seite +Next page=Nächste Seite +All=Alles +Nodes=Blöcke +Tools=Werkzeuge +Items=Gegenstände diff --git a/mods/creative/locale/template.txt b/mods/creative/locale/template.txt new file mode 100644 index 00000000..3e79730c --- /dev/null +++ b/mods/creative/locale/template.txt @@ -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.de.tr b/mods/default/locale/default.de.tr new file mode 100644 index 00000000..c842b85c --- /dev/null +++ b/mods/default/locale/default.de.tr @@ -0,0 +1,211 @@ +# textdomain: default +Locked Chest=Abgeschlossene Truhe +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 +Stick=Stock +Paper=Papier +"@1" by @2=„@1“ von @2 +Book=Buch +Book with Text=Buch mit Text +Skeleton Key=Skelettschlüssel +Key to @1's @2=Schlüssel für @2 von @1 +Coal Lump=Kohleklumpen +Iron Lump=Eisenklumpen +Copper Lump=Kupferklumpen +Tin Lump=Zinnklumpen +Mese Crystal=Mesekristall +Gold Lump=Goldklumpen +Diamond=Diamant +Clay Lump=Tonklumpen +Steel Ingot=Stahlbarren +Copper Ingot=Kupferbarren +Tin Ingot=Zinnbarren +Bronze Ingot=Bronzebarren +Gold Ingot=Goldbarren +Mese Crystal Fragment=Mesekristallfragment +Clay Brick=Tonziegel +Obsidian Shard=Obsidianscherbe +Flint=Feuerstein +Blueberries=Blaubeeren +Furnace is empty=Ofen ist leer +100% (output full)=100% (Ausgabe voll) +@1%=@1% +Empty=Leer +Not cookable=Nicht kochbar +Furnace active=Ofen aktiv +Furnace inactive=Ofen inaktiv +(Item: @1; Fuel: @2)=(Gegenstand: @1; Brennstoff: @2) +Furnace=Ofen +Stone=Stein +Cobblestone=Kopfsteinpflaster +Stone Brick=Steinziegel +Stone Block=Steinblock +Mossy Cobblestone=Mosiges Kopfsteinpflaster +Desert Stone=Wüstenstein +Desert Cobblestone=Wüstenkopfsteinpflaster +Desert Stone Brick=Wüstensteinziegel +Desert Stone Block=Wüstensteinblock +Sandstone=Sandstein +Sandstone Brick=Sandsteinziegel +Sandstone Block=Sandsteinblock +Desert Sandstone=Wüstensandstein +Desert Sandstone Brick=Wüstensandsteinziegel +Desert Sandstone Block=Wüstensandsteinblock +Silver Sandstone=Silbersandstein +Silver Sandstone Brick=Silbersandsteinziegel +Silver Sandstone Block=Silbersandsteinblock +Obsidian=Obsidian +Obsidian Brick=Obsidianziegel +Obsidian Block=Obsidianblock +Dirt=Erde +Dirt with Grass=Erde mit Gras +Dirt with Grass and Footsteps=Erde mit Gras und Fußstapfen +Dirt with Dry Grass=Erde mit trockenem Gras +Dirt with Snow=Erde mit Schnee +Dirt with Rainforest Litter=Erde mit Regenwaldboden +Dirt with Coniferous Litter=Erde mit Nadelwaldboden +Dry Dirt=Trockene Erde +Dry Dirt with Dry Grass=Trockene Erde mit trockenem Gras +Permafrost=Permafrost +Permafrost with Stones=Permafrost mit Steinen +Permafrost with Moss=Permafrost mit Moos +Sand=Sand +Desert Sand=Wüstensand +Silver Sand=Silbersand +Gravel=Kies +Clay=Ton +Snow=Schnee +Snow Block=Schneeblock +Ice=Eis +Cave Ice=Höhleneis +Apple Tree=Apfelbaum +Apple Wood Planks=Apfelbaumplanken +Apple Tree Sapling=Apfelbaumsetzling +Apple Tree Leaves=Apfelbaumblätter +Apple=Apfel +Apple Marker=Apfelmarkierung +Jungle Tree=Dschungelbaum +Jungle Wood Planks=Dschungelholzplanken +Jungle Tree Leaves=Dschungelbaumblätter +Jungle Tree Sapling=Dschungelbaumsetzling +Emergent Jungle Tree Sapling=Hervorstehender Dschungelbaumsetzling +Pine Tree=Kiefernbaum +Pine Wood Planks=Kiefernholzplanken +Pine Needles=Kiefernnadeln +Pine Tree Sapling=Kiefernbaumsetzling +Acacia Tree=Akazienbaum +Acacia Wood Planks=Akazienholzplanken +Acacia Tree Leaves=Akazienbaumblätter +Acacia Tree Sapling=Akazienbaumsetzling +Aspen Tree=Espenbaum +Aspen Wood Planks=Espenholzplanken +Aspen Tree Leaves=Espenbaumblätter +Aspen Tree Sapling=Esepenbaumsetzling +Coal Ore=Kohleerz +Coal Block=Kohleblock +Iron Ore=Eisenerz +Steel Block=Stahlblock +Copper Ore=Kupfererz +Copper Block=Kupferblock +Tin Ore=Zinnerz +Tin Block=Zinnblock +Bronze Block=Bronzeblock +Mese Ore=Meseerz +Mese Block=Meseblock +Gold Ore=Golderz +Gold Block=Goldblock +Diamond Ore=Diamanterz +Diamond Block=Diamantblock +Cactus=Kaktus +Large Cactus Seedling=Großer Kaktussämling +Papyrus=Papyrus +Dry Shrub=Trockener Busch +Jungle Grass=Dschungelgras +Grass=Gras +Dry Grass=Trockenes Gras +Fern=Farn +Marram Grass=Dünengras +Bush Stem=Buschstamm +Bush Leaves=Buschblätter +Bush Sapling=Buschsetzling +Blueberry Bush Leaves with Berries=Blaubeerbuschblätter mit Beeren +Blueberry Bush Leaves=Blaubeerbuschblätter +Blueberry Bush Sapling=Blaubeerbuschsetzling +Acacia Bush Stem=Akazienbuschstamm +Acacia Bush Leaves=Akazienbuschblätter +Acacia Bush Sapling=Akazienbuschsetzling +Pine Bush Stem=Kiefernbuschstamm +Pine Bush Needles=Kiefernbuschnadeln +Pine Bush Sapling=Kiefernbuschsetzling +Kelp=Seetang +Green Coral=Grüne Koralle +Pink Coral=Rosa Koralle +Cyan Coral=Türkise Koralle +Brown Coral=Braune Koralle +Orange Coral=Orange Koralle +Coral Skeleton=Korallenskelett +Water Source=Wasserquelle +Flowing Water=Fließendes Wasser +River Water Source=Flusswasserquelle +Flowing River Water=Fließendes Flusswasser +Lava Source=Lavaquelle +Flowing Lava=Fließende Lava +Empty Bookshelf=Leeres Bücherregal +Bookshelf (@1 written, @2 empty books)=Bücherregal (@1 beschriebene, @2 leere Bücher) +Bookshelf=Bücherregal +Text too long=Text zu lang +Wooden Sign=Holzschild +Steel Sign=Stahlschild +Wooden Ladder=Holzleiter +Steel Ladder=Stahlleiter +Apple Wood Fence=Apfelholzzaun +Acacia Wood Fence=Akazienholzzaun +Jungle Wood Fence=Dschungelholzzaun +Pine Wood Fence=Kiefernholzzaun +Aspen Wood Fence=Espenholzzaun +Apple Wood Fence Rail=Apfelholzzaungeländer +Acacia Wood Fence Rail=Akazienholzzaungeländer +Jungle Wood Fence Rail=Dschungelholzzaungeländer +Pine Wood Fence Rail=Kiefernholzzaungeländer +Aspen Wood Fence Rail=Espenholzzaungeländer +Glass=Glas +Obsidian Glass=Obsidianglas +Brick Block=Ziegelblock +Mese Lamp=Meselampe +Mese Post Light=Mesestandlampe +Cloud=Wolke +Wooden Pickaxe=Holzspitzhacke +Stone Pickaxe=Steinspitzhacke +Bronze Pickaxe=Bronzespitzhacke +Steel Pickaxe=Stahlspitzhacke +Mese Pickaxe=Mesespitzhacke +Diamond Pickaxe=Diamantspitzhacke +Wooden Shovel=Holzschaufel +Stone Shovel=Steinschaufel +Bronze Shovel=Bronzeschaufel +Steel Shovel=Stahlschaufel +Mese Shovel=Meseschaufel +Diamond Shovel=Diamantschaufel +Wooden Axe=Holzaxt +Stone Axe=Steinaxt +Bronze Axe=Bronzeaxt +Steel Axe=Stahlaxt +Mese Axe=Meseaxt +Diamond Axe=Diamantaxt +Wooden Sword=Holzschwert +Stone Sword=Steinschwert +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. +Title:=Titel: +Contents:=Inhalt: +Save=Speichern +by @1=von @1 +Page @1 of @2=Seite @1 von @2 +"@1"=„@1“ diff --git a/mods/default/locale/template.txt b/mods/default/locale/template.txt new file mode 100644 index 00000000..c8e616cd --- /dev/null +++ b/mods/default/locale/template.txt @@ -0,0 +1,211 @@ +# textdomain: default +Locked Chest= +Locked Chest (owned by @1)= +You do not own this chest.= +a locked chest= +Chest= +Stick= +Paper= +"@1" by @2= +Book= +Book with Text= +Skeleton Key= +Key to @1's @2= +Coal Lump= +Iron Lump= +Copper Lump= +Tin Lump= +Mese Crystal= +Gold Lump= +Diamond= +Clay Lump= +Steel Ingot= +Copper Ingot= +Tin Ingot= +Bronze Ingot= +Gold Ingot= +Mese Crystal Fragment= +Clay Brick= +Obsidian Shard= +Flint= +Blueberries= +Furnace is empty= +100% (output full)= +@1%= +Empty= +Not cookable= +Furnace active= +Furnace inactive= +(Item: @1; Fuel: @2)= +Furnace= +Stone= +Cobblestone= +Stone Brick= +Stone Block= +Mossy Cobblestone= +Desert Stone= +Desert Cobblestone= +Desert Stone Brick= +Desert Stone Block= +Sandstone= +Sandstone Brick= +Sandstone Block= +Desert Sandstone= +Desert Sandstone Brick= +Desert Sandstone Block= +Silver Sandstone= +Silver Sandstone Brick= +Silver Sandstone Block= +Obsidian= +Obsidian Brick= +Obsidian Block= +Dirt= +Dirt with Grass= +Dirt with Grass and Footsteps= +Dirt with Dry Grass= +Dirt with Snow= +Dirt with Rainforest Litter= +Dirt with Coniferous Litter= +Dry Dirt= +Dry Dirt with Dry Grass= +Permafrost= +Permafrost with Stones= +Permafrost with Moss= +Sand= +Desert Sand= +Silver Sand= +Gravel= +Clay= +Snow= +Snow Block= +Ice= +Cave Ice= +Apple Tree= +Apple Wood Planks= +Apple Tree Sapling= +Apple Tree Leaves= +Apple= +Apple Marker= +Jungle Tree= +Jungle Wood Planks= +Jungle Tree Leaves= +Jungle Tree Sapling= +Emergent Jungle Tree Sapling= +Pine Tree= +Pine Wood Planks= +Pine Needles= +Pine Tree Sapling= +Acacia Tree= +Acacia Wood Planks= +Acacia Tree Leaves= +Acacia Tree Sapling= +Aspen Tree= +Aspen Wood Planks= +Aspen Tree Leaves= +Aspen Tree Sapling= +Coal Ore= +Coal Block= +Iron Ore= +Steel Block= +Copper Ore= +Copper Block= +Tin Ore= +Tin Block= +Bronze Block= +Mese Ore= +Mese Block= +Gold Ore= +Gold Block= +Diamond Ore= +Diamond Block= +Cactus= +Large Cactus Seedling= +Papyrus= +Dry Shrub= +Jungle Grass= +Grass= +Dry Grass= +Fern= +Marram Grass= +Bush Stem= +Bush Leaves= +Bush Sapling= +Blueberry Bush Leaves with Berries= +Blueberry Bush Leaves= +Blueberry Bush Sapling= +Acacia Bush Stem= +Acacia Bush Leaves= +Acacia Bush Sapling= +Pine Bush Stem= +Pine Bush Needles= +Pine Bush Sapling= +Kelp= +Green Coral= +Pink Coral= +Cyan Coral= +Brown Coral= +Orange Coral= +Coral Skeleton= +Water Source= +Flowing Water= +River Water Source= +Flowing River Water= +Lava Source= +Flowing Lava= +Empty Bookshelf= +Bookshelf (@1 written, @2 empty books)= +Bookshelf= +Text too long= +Wooden Sign= +Steel Sign= +Wooden Ladder= +Steel Ladder= +Apple Wood Fence= +Acacia Wood Fence= +Jungle Wood Fence= +Pine Wood Fence= +Aspen Wood Fence= +Apple Wood Fence Rail= +Acacia Wood Fence Rail= +Jungle Wood Fence Rail= +Pine Wood Fence Rail= +Aspen Wood Fence Rail= +Glass= +Obsidian Glass= +Brick Block= +Mese Lamp= +Mese Post Light= +Cloud= +Wooden Pickaxe= +Stone Pickaxe= +Bronze Pickaxe= +Steel Pickaxe= +Mese Pickaxe= +Diamond Pickaxe= +Wooden Shovel= +Stone Shovel= +Bronze Shovel= +Steel Shovel= +Mese Shovel= +Diamond Shovel= +Wooden Axe= +Stone Axe= +Bronze Axe= +Steel Axe= +Mese Axe= +Diamond Axe= +Wooden Sword= +Stone Sword= +Bronze Sword= +Steel Sword= +Mese Sword= +Diamond Sword= +Key= +Torch= +@1 will intersect protection on growth.= +Title:= +Contents:= +Save= +by @1= +Page @1 of @2= +"@1"= diff --git a/mods/doors/locale/doors.de.tr b/mods/doors/locale/doors.de.tr new file mode 100644 index 00000000..79707ce8 --- /dev/null +++ b/mods/doors/locale/doors.de.tr @@ -0,0 +1,18 @@ +# textdomain: doors +Hidden Door Segment=Verborgenes Türsegment +Owned by @1=Eigentum von @1 +You do not own this locked door.=Diese abgeschlossene Tür gehört Ihnen nicht. +a locked door=eine abgeschlossene Tür +Wooden Door=Holztür +Steel Door=Stahltür +Glass Door=Glastür +Obsidian Glass Door=Obsidianglastür +You do not own this trapdoor.=Diese Falltür gehört Ihnen nicht. +a locked trapdoor=eine abgeschlossene Falltür +Wooden Trapdoor=Holzfalltür +Steel Trapdoor=Stahlfalltür +Apple Wood Fence Gate=Apfelholzzauntor +Acacia Wood Fence Gate=Akazienholzzauntor +Jungle Wood Fence Gate=Dschungelholzzauntor +Pine Wood Fence Gate=Kiefernholzzauntor +Aspen Wood Fence Gate=Espenholzzauntor diff --git a/mods/doors/locale/template.txt b/mods/doors/locale/template.txt new file mode 100644 index 00000000..8b5c349c --- /dev/null +++ b/mods/doors/locale/template.txt @@ -0,0 +1,18 @@ +# textdomain: doors +Hidden Door Segment= +Owned by @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.de.tr b/mods/dye/locale/dye.de.tr new file mode 100644 index 00000000..f73fb572 --- /dev/null +++ b/mods/dye/locale/dye.de.tr @@ -0,0 +1,16 @@ +# textdomain: dye +White Dye=Weißer Farbstoff +Grey Dye=Grauer Farbstoff +Dark Grey Dye=Dunkelgrauer Farbstoff +Black Dye=Schwarzer Farbstoff +Violet Dye=Violetter Farbstoff +Blue Dye=Blauer Farbstoff +Cyan Dye=Türkiser Farbstoff +Dark Green Dye=Dunkelgrüner Farbstoff +Green Dye=Grüner Farbstoff +Yellow Dye=Gelber Farbstoff +Brown Dye=Brauner Farbstoff +Orange Dye=Orange Farbstoff +Red Dye=Roter Farbstoff +Magenta Dye=Magenta Farbstoff +Pink Dye=Rosa Farbstoff diff --git a/mods/dye/locale/template.txt b/mods/dye/locale/template.txt new file mode 100644 index 00000000..c20bab5f --- /dev/null +++ b/mods/dye/locale/template.txt @@ -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.de.tr b/mods/farming/locale/farming.de.tr new file mode 100644 index 00000000..13a363b4 --- /dev/null +++ b/mods/farming/locale/farming.de.tr @@ -0,0 +1,25 @@ +# textdomain: farming +Wooden Hoe=Holzhacke +Stone Hoe=Steinhacke +Steel Hoe=Stahlhacke +Bronze Hoe=Bronzehacke +Mese Hoe=Mesehacke +Diamond Hoe=Diamanthacke +Wheat Seed=Weizensamen +Flour=Mehl +Bread=Brot +Cotton Seed=Baumwollsamen +String=Faden +Soil=Ackerboden +Wet Soil=Nasser Ackerboden +Dry Soil=Trockener Ackerboden +Wet Dry Soil=Nasser trockener Ackerboden +Desert Sand Soil=Wüsensandackerboden +Wet Desert Sand Soil=Nasser Wüstensandackerboden +Straw=Stroh +Straw Stair=Strohtreppe +Straw Slab=Strohplatte +Inner Straw Stair=Innere Strohtreppe +Outer Straw Stair=Äußere Strohtreppe +Wheat=Weizen +Cotton=Baumwolle diff --git a/mods/farming/locale/template.txt b/mods/farming/locale/template.txt new file mode 100644 index 00000000..92d113e9 --- /dev/null +++ b/mods/farming/locale/template.txt @@ -0,0 +1,25 @@ +# textdomain: farming +Wooden Hoe= +Stone Hoe= +Steel Hoe= +Bronze Hoe= +Mese Hoe= +Diamond Hoe= +Wheat Seed= +Flour= +Bread= +Cotton Seed= +String= +Soil= +Wet Soil= +Dry Soil= +Wet Dry Soil= +Desert Sand Soil= +Wet Desert Sand Soil= +Straw= +Straw Stair= +Inner Straw Stair= +Outer Straw Stair= +Straw Slab= +Wheat= +Cotton= diff --git a/mods/fire/locale/fire.de.tr b/mods/fire/locale/fire.de.tr new file mode 100644 index 00000000..d6f8dde8 --- /dev/null +++ b/mods/fire/locale/fire.de.tr @@ -0,0 +1,3 @@ +# textdomain: fire +Permanent Flame=Permanente Flamme +Flint and Steel=Feuerstein und Stahl diff --git a/mods/fire/locale/template.txt b/mods/fire/locale/template.txt new file mode 100644 index 00000000..79ea7a29 --- /dev/null +++ b/mods/fire/locale/template.txt @@ -0,0 +1,3 @@ +# textdomain: fire +Permanent Flame= +Flint and Steel= diff --git a/mods/fireflies/locale/fireflies.de.tr b/mods/fireflies/locale/fireflies.de.tr new file mode 100644 index 00000000..c5d116a7 --- /dev/null +++ b/mods/fireflies/locale/fireflies.de.tr @@ -0,0 +1,5 @@ +# textdomain: fireflies +Firefly=Glühwürmchen +Hidden Firefly=Verborgenes Glühwürmchen +Bug Net=Insektennetz +Firefly in a Bottle=Glühwürmchen in einer Flasche diff --git a/mods/fireflies/locale/template.txt b/mods/fireflies/locale/template.txt new file mode 100644 index 00000000..91aa8ffa --- /dev/null +++ b/mods/fireflies/locale/template.txt @@ -0,0 +1,5 @@ +# textdomain: fireflies +Firefly= +Hidden Firefly= +Bug Net= +Firefly in a Bottle= diff --git a/mods/flowers/locale/flowers.de.tr b/mods/flowers/locale/flowers.de.tr new file mode 100644 index 00000000..18afb2af --- /dev/null +++ b/mods/flowers/locale/flowers.de.tr @@ -0,0 +1,12 @@ +# textdomain: flowers +Red Rose=Rote Rose +Orange Tulip=Orange Tulpe +Yellow Dandelion=Gelber Löwenzahn +Green Chrysanthemum=Grüne Chrysantheme +Blue Geranium=Blaue Geranie +Viola=Veilchen +White Dandelion=Weißer Löwenzahn +Black Tulip=Schwarze Tulpe +Red Mushroom=Roter Pilz +Brown Mushroom=Brauner Pilz +Waterlily=Wasserlilie diff --git a/mods/flowers/locale/template.txt b/mods/flowers/locale/template.txt new file mode 100644 index 00000000..a3a687fd --- /dev/null +++ b/mods/flowers/locale/template.txt @@ -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.de.tr b/mods/game_commands/locale/game_commands.de.tr new file mode 100644 index 00000000..24b0e25d --- /dev/null +++ b/mods/game_commands/locale/game_commands.de.tr @@ -0,0 +1,4 @@ +# textdomain: game_commands +Kill yourself to respawn=Selbstmord begehen, um zu Respawnen +No static_spawnpoint defined=Kein static_spawnpoint definiert +You need to be online to be killed!=Sie müssen online sein, um getötet zu werden! diff --git a/mods/game_commands/locale/template.txt b/mods/game_commands/locale/template.txt new file mode 100644 index 00000000..903f1603 --- /dev/null +++ b/mods/game_commands/locale/template.txt @@ -0,0 +1,4 @@ +# textdomain: game_commands +Kill yourself to respawn= +No static_spawnpoint defined= +You need to be online to be killed!= diff --git a/mods/map/locale/map.de.tr b/mods/map/locale/map.de.tr new file mode 100644 index 00000000..1a784abf --- /dev/null +++ b/mods/map/locale/map.de.tr @@ -0,0 +1,3 @@ +# textdomain: map +Mapping Kit=Kartenset +Use with 'Minimap' key=Mit „Karte an/aus“-Taste benutzen diff --git a/mods/map/locale/template.txt b/mods/map/locale/template.txt new file mode 100644 index 00000000..2dbe2eea --- /dev/null +++ b/mods/map/locale/template.txt @@ -0,0 +1,3 @@ +# textdomain: map +Mapping Kit= +Use with 'Minimap' key= diff --git a/mods/screwdriver/locale/screwdriver.de.tr b/mods/screwdriver/locale/screwdriver.de.tr new file mode 100644 index 00000000..3c48ab4f --- /dev/null +++ b/mods/screwdriver/locale/screwdriver.de.tr @@ -0,0 +1,3 @@ +# textdomain: screwdriver +Screwdriver=Schraubendreher +(left-click rotates face, right-click rotates axis)=(Linksklick dreht Seite, Rechtsklick dreht Achse) diff --git a/mods/screwdriver/locale/template.txt b/mods/screwdriver/locale/template.txt new file mode 100644 index 00000000..4cc8e2a6 --- /dev/null +++ b/mods/screwdriver/locale/template.txt @@ -0,0 +1,3 @@ +# textdomain: screwdriver +Screwdriver= +(left-click rotates face, right-click rotates axis)= diff --git a/mods/sethome/locale/sethome.de.tr b/mods/sethome/locale/sethome.de.tr new file mode 100644 index 00000000..46279dd5 --- /dev/null +++ b/mods/sethome/locale/sethome.de.tr @@ -0,0 +1,8 @@ +# textdomain: sethome +Can use /sethome and /home=Kann /sethome und /home benutzen +Teleport you to your home point=Teleportieren Sie sich zu Ihrem Zuhause-Punkt +Teleported to home!=Nach Hause teleportiert! +Set a home using /sethome=Ein Zuhause mit /sethome setzen +Set your home point=Ihren Zuhause-Punkt setzen +Home set!=Zuhause gesetzt! +Player not found!=Spieler nicht gefunden! diff --git a/mods/sethome/locale/template.txt b/mods/sethome/locale/template.txt new file mode 100644 index 00000000..d04bd50a --- /dev/null +++ b/mods/sethome/locale/template.txt @@ -0,0 +1,8 @@ +# textdomain: sethome +Can use /sethome and /home= +Teleport you to your home point= +Teleported to home!= +Set a home using /sethome= +Set your home point= +Home set!= +Player not found!= diff --git a/mods/sfinv/locale/sfinv.de.tr b/mods/sfinv/locale/sfinv.de.tr new file mode 100644 index 00000000..1ba6acbf --- /dev/null +++ b/mods/sfinv/locale/sfinv.de.tr @@ -0,0 +1,2 @@ +# textdomain:sfinv +Crafting=Fertigung diff --git a/mods/sfinv/locale/template.txt b/mods/sfinv/locale/template.txt new file mode 100644 index 00000000..913ba9fc --- /dev/null +++ b/mods/sfinv/locale/template.txt @@ -0,0 +1,2 @@ +# textdomain:sfinv +Crafting= diff --git a/mods/stairs/locale/stairs.de.tr b/mods/stairs/locale/stairs.de.tr new file mode 100644 index 00000000..41c055b5 --- /dev/null +++ b/mods/stairs/locale/stairs.de.tr @@ -0,0 +1,145 @@ +# textdomain: stairs +Glass Stair=Glastreppe +Glass Slab=Glasplatte +Inner Glass Stair=Innere Glastreppe +Outer Glass Stair=Äußere Glastreppe +Obsidian Glass Stair=Obsidianglastreppe +Obsidian Glass Slab=Obsidianglasplatte +Inner Obsidian Glass Stair=Innere Obsidianglastreppe +Outer Obsidian Glass Stair=Äußere Obsidianglastreppe +Wooden Stair=Holztreppe +Inner Wooden Stair=Innere Holztreppe +Outer Wooden Stair=Äußere Holztreppe +Wooden Slab=Holzplatte +Jungle Wood Stair=Dschungelholztreppe +Inner Jungle Wood Stair=Innere Dschungelholztreppe +Outer Jungle Wood Stair=Äußere Dschungelholztreppe +Jungle Wood Slab=Dschungelholzplatte +Pine Wood Stair=Kiefernholztreppe +Inner Pine Wood Stair=Innere Kiefernholztreppe +Outer Pine Wood Stair=Äußere Kiefernholztreppe +Pine Wood Slab=Kiefernholzplatte +Acacia Wood Stair=Akazienholztreppe +Inner Acacia Wood Stair=Innere Akazienholztreppe +Outer Acacia Wood Stair=Äußere Akazienholztreppe +Acacia Wood Slab=Akazienholzplatte +Aspen Wood Stair=Espenholztreppe +Inner Aspen Wood Stair=Innere Espenholztreppe +Outer Aspen Wood Stair=Äußere Espenholztreppe +Aspen Wood Slab=Espenholzplatte +Stone Stair=Steintreppe +Inner Stone Stair=Innere Steintreppe +Outer Stone Stair=Äußere Steintreppe +Stone Slab=Steinplatte +Cobblestone Stair=Kopfsteinpflastertreppe +Inner Cobblestone Stair=Innere Kopfsteinpflastertreppe +Outer Cobblestone Stair=Äußere Kopfsteinpflastertreppe +Cobblestone Slab=Kopfsteinpflasterplatte +Mossy Cobblestone Stair=Mosige Kopfsteinpflastertreppe +Inner Mossy Cobblestone Stair=Innere mosige Kopfsteinpflastertreppe +Outer Mossy Cobblestone Stair=Äußere mosige Kopfsteinpflastertreppe +Mossy Cobblestone Slab=Mosige Kopfsteinpflasterplatte +Stone Brick Stair=Steinziegeltreppe +Inner Stone Brick Stair=Innere Steinziegeltreppe +Outer Stone Brick Stair=Äußere Steinziegeltreppe +Stone Brick Slab=Steinziegelplatte +Stone Block Stair=Steinblocktreppe +Inner Stone Block Stair=Innere Steinblocktreppe +Outer Stone Block Stair=Äußere Steinblocktreppe +Stone Block Slab=Steinblockplatte +Desert Stone Stair=Wüstensteintreppe +Inner Desert Stone Stair=Innere Wüstensteintreppe +Outer Desert Stone Stair=Äußere Wüstensteintreppe +Desert Stone Slab=Wüstensteinplatte +Desert Cobblestone Stair=Wüstenkopfsteinpflastertreppe +Inner Desert Cobblestone Stair=Innere Wüstenkopfsteinpflastertreppe +Outer Desert Cobblestone Stair=Äußere Wüstenkopfsteinpflastertreppe +Desert Cobblestone Slab=Wüstenkopfsteinpflasterplatte +Desert Stone Brick Stair=Wüstensteinziegeltreppe +Inner Desert Stone Brick Stair=Innere Wüstensteinziegeltreppe +Outer Desert Stone Brick Stair=Äußere Wüstensteinziegeltreppe +Desert Stone Brick Slab=Wüstensteinziegelplatte +Desert Stone Block Stair=Wüstensteinblocktreppe +Inner Desert Stone Block Stair=Innere Wüstensteinblocktreppe +Outer Desert Stone Block Stair=Äußere Wüstensteinblocktreppe +Desert Stone Block Slab=Wüstensteinblockplatte +Sandstone Stair=Sandsteintreppe +Inner Sandstone Stair=Innere Sandsteintreppe +Outer Sandstone Stair=Äußere Sandsteintreppe +Sandstone Slab=Sandsteinplatte +Sandstone Brick Stair=Sandsteinziegeltreppe +Inner Sandstone Brick Stair=Innere Sandsteinziegeltreppe +Outer Sandstone Brick Stair=Äußere Sandsteinziegeltreppe +Sandstone Brick Slab=Sandsteinziegelplatte +Sandstone Block Stair=Sandsteinblocktreppe +Inner Sandstone Block Stair=Innere Sandsteinblocktreppe +Outer Sandstone Block Stair=Äußere Sandsteinblocktreppe +Sandstone Block Slab=Sandsteinblockplatte +Desert Sandstone Stair=Wüstensandsteintreppe +Inner Desert Sandstone Stair=Innere Wüstensandsteintreppe +Outer Desert Sandstone Stair=Äußere Wüstensandsteintreppe +Desert Sandstone Slab=Wüstensandsteinplatte +Desert Sandstone Brick Stair=Wüstensandsteinziegeltreppe +Inner Desert Sandstone Brick Stair=Innere Wüstensandsteinziegeltreppe +Outer Desert Sandstone Brick Stair=Äußere Wüstensandsteinziegeltreppe +Desert Sandstone Brick Slab=Wüstensandsteinziegelplatte +Desert Sandstone Block Stair=Wüstensandsteinblocktreppe +Inner Desert Sandstone Block Stair=Innere Wüstensandsteinblocktreppe +Outer Desert Sandstone Block Stair=Äußere Wüstensandsteinblocktreppe +Desert Sandstone Block Slab=Wüstensandsteinblockplatte +Silver Sandstone Stair=Silbersandsteintreppe +Inner Silver Sandstone Stair=Innere Silbersandsteintreppe +Outer Silver Sandstone Stair=Äußere Silbersandsteintreppe +Silver Sandstone Slab=Silbersandsteinplatte +Silver Sandstone Brick Stair=Silbersandsteinziegeltreppe +Inner Silver Sandstone Brick Stair=Innere Silbersandsteinziegeltreppe +Outer Silver Sandstone Brick Stair=Äußere Silbersandsteinziegeltreppe +Silver Sandstone Brick Slab=Silbersandsteinziegelplatte +Silver Sandstone Block Stair=Silbersandsteinblocktreppe +Inner Silver Sandstone Block Stair=Innere Silbersandsteinblocktreppe +Outer Silver Sandstone Block Stair=Äußere Silbersandsteinblocktreppe +Silver Sandstone Block Slab=Silbersandsteinblockplatte +Obsidian Stair=Obsidiantreppe +Inner Obsidian Stair=Innere Obsidiantreppe +Outer Obsidian Stair=Äußere Obsidiantreppe +Obsidian Slab=Obsidianplatte +Obsidian Brick Stair=Obsidianziegeltreppe +Inner Obsidian Brick Stair=Innere Obsidianziegeltreppe +Outer Obsidian Brick Stair=Äußere Obsidianziegeltreppe +Obsidian Brick Slab=Obsidianziegelplatte +Obsidian Block Stair=Obsidianblocktreppe +Inner Obsidian Block Stair=Innere Obsidianblocktreppe +Outer Obsidian Block Stair=Äußere Obsidianblocktreppe +Obsidian Block Slab=Obsidianblockplatte +Brick Stair=Ziegeltreppe +Inner Brick Stair=Innere Ziegeltreppe +Outer Brick Stair=Äußere Ziegeltreppe +Brick Slab=Ziegelplatte +Steel Block Stair=Stahlblocktreppe +Inner Steel Block Stair=Innere Stahlblocktreppe +Outer Steel Block Stair=Äußere Stahlblocktreppe +Steel Block Slab=Stahlblockplatte +Tin Block Stair=Zinnblocktreppe +Inner Tin Block Stair=Innere Zinnblocktreppe +Outer Tin Block Stair=Äußere Zinnblocktreppe +Tin Block Slab=Zinnblockplatte +Copper Block Stair=Kupferblocktreppe +Inner Copper Block Stair=Innere Kupferblocktreppe +Outer Copper Block Stair=Äußere Kupferblocktreppe +Copper Block Slab=Kupferblockplatte +Bronze Block Stair=Bronzeblocktreppe +Inner Bronze Block Stair=Innere Bronzeblocktreppe +Outer Bronze Block Stair=Äußere Bronzeblocktreppe +Bronze Block Slab=Bronzeblockplatte +Gold Block Stair=Goldblocktreppe +Inner Gold Block Stair=Innere Goldblocktreppe +Outer Gold Block Stair=Äußere Goldblocktreppe +Gold Block Slab=Goldblockplatte +Ice Stair=Eistreppe +Inner Ice Stair=Innere Eistreppe +Outer Ice Stair=Äußere Eistreppe +Ice Slab=Eisplatte +Snow Block Stair=Schneeblocktreppe +Inner Snow Block Stair=Innere Schneeblocktreppe +Outer Snow Block Stair=Äußere Schneeblocktreppe +Snow Block Slab=Schneeblockplatte diff --git a/mods/stairs/locale/template.txt b/mods/stairs/locale/template.txt new file mode 100644 index 00000000..ca2c8657 --- /dev/null +++ b/mods/stairs/locale/template.txt @@ -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/template.txt b/mods/tnt/locale/template.txt new file mode 100644 index 00000000..62bcb150 --- /dev/null +++ b/mods/tnt/locale/template.txt @@ -0,0 +1,4 @@ +# textdomain: tnt +Gun Powder= +TNT Stick= +TNT= diff --git a/mods/tnt/locale/tnt.de.tr b/mods/tnt/locale/tnt.de.tr new file mode 100644 index 00000000..09d2ac26 --- /dev/null +++ b/mods/tnt/locale/tnt.de.tr @@ -0,0 +1,4 @@ +# textdomain: tnt +Gun Powder=Schießpulver +TNT Stick=TNT-Stange +TNT=TNT diff --git a/mods/vessels/locale/template.txt b/mods/vessels/locale/template.txt new file mode 100644 index 00000000..f79c13e1 --- /dev/null +++ b/mods/vessels/locale/template.txt @@ -0,0 +1,8 @@ +# textdomain: vessels +Vessels Shelf= +Empty Glass Bottle= +Empty Drinking Glass= +Empty Heavy Steel Bottle= +Glass Fragments= +Empty Vessel Shelf= +Vessel Shelf (@1 items)= diff --git a/mods/vessels/locale/vessels.de.tr b/mods/vessels/locale/vessels.de.tr new file mode 100644 index 00000000..14043fb0 --- /dev/null +++ b/mods/vessels/locale/vessels.de.tr @@ -0,0 +1,8 @@ +# textdomain: vessels +Vessels Shelf=Gefäßregal +Empty Glass Bottle=Leere Glasflasche +Empty Drinking Glass=Leeres Trinkglas +Empty Heavy Steel Bottle=Leere schwere Stahlflasche +Glass Fragments=Glasfragmente +Empty Vessel Shelf=Leeres Gefäßregal +Vessel Shelf (@1 items)=Gefäßregal (@1 Gegenstände) diff --git a/mods/walls/locale/template.txt b/mods/walls/locale/template.txt new file mode 100644 index 00000000..6721dc6f --- /dev/null +++ b/mods/walls/locale/template.txt @@ -0,0 +1,4 @@ +# textdomain: walls +Cobblestone Wall= +Mossy Cobblestone Wall= +Desert Cobblestone Wall= diff --git a/mods/walls/locale/walls.de.tr b/mods/walls/locale/walls.de.tr new file mode 100644 index 00000000..76449f6c --- /dev/null +++ b/mods/walls/locale/walls.de.tr @@ -0,0 +1,4 @@ +# textdomain: walls +Cobblestone Wall=Kopfsteinpflastermauer +Mossy Cobblestone Wall=Mosige Kopfsteinpflastermauer +Desert Cobblestone Wall=Wüstenkopfsteinpflastermauer diff --git a/mods/wool/locale/template.txt b/mods/wool/locale/template.txt new file mode 100644 index 00000000..316cd2c0 --- /dev/null +++ b/mods/wool/locale/template.txt @@ -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/wool/locale/wool.de.tr b/mods/wool/locale/wool.de.tr new file mode 100644 index 00000000..9b6b8ab8 --- /dev/null +++ b/mods/wool/locale/wool.de.tr @@ -0,0 +1,16 @@ +# textdomain: wool +White Wool=Weiße Wolle +Grey Wool=Graue Wolle +Dark Grey Wool=Dunkelgraue Wolle +Black Wool=Schwarze Wolle +Violet Wool=Violette Wolle +Blue Wool=Blaue Wolle +Cyan Wool=Türkise Wolle +Dark Green Wool=Dunkelgrüne Wolle +Green Wool=Grüne Wolle +Yellow Wool=Gelbe Wolle +Brown Wool=Braune Wolle +Orange Wool=Orange Wolle +Red Wool=Rote Wolle +Magenta Wool=Magenta Wolle +Pink Wool=Rosa Wolle diff --git a/mods/xpanes/locale/template.txt b/mods/xpanes/locale/template.txt new file mode 100644 index 00000000..365fd9c7 --- /dev/null +++ b/mods/xpanes/locale/template.txt @@ -0,0 +1,4 @@ +# textdomain: xpanes +Glass Pane= +Obsidian Glass Pane= +Steel Bars= diff --git a/mods/xpanes/locale/xpanes.de.tr b/mods/xpanes/locale/xpanes.de.tr new file mode 100644 index 00000000..c9e14e0b --- /dev/null +++ b/mods/xpanes/locale/xpanes.de.tr @@ -0,0 +1,4 @@ +# textdomain: xpanes +Glass Pane=Glasscheibe +Obsidian Glass Pane=Obsidianglasscheibe +Steel Bars=Stahlgitter From 23ceb30e88d85a2a997713f99e296d64545458a4 Mon Sep 17 00:00:00 2001 From: TumeniNodes Date: Sun, 22 Sep 2019 18:05:38 -0400 Subject: [PATCH 71/81] Xpanes: Register steel bar door and steel bar trapdoor Register using the 'doors' mod API. --- mods/xpanes/README.txt | 6 +++ mods/xpanes/init.lua | 42 ++++++++++++++++++ mods/xpanes/license.txt | 1 + mods/xpanes/mod.conf | 1 + .../xpanes/textures/xpanes_door_steel_bar.png | Bin 0 -> 605 bytes .../xpanes/textures/xpanes_item_steel_bar.png | Bin 0 -> 354 bytes .../textures/xpanes_trapdoor_steel_bar.png | Bin 0 -> 261 bytes .../xpanes_trapdoor_steel_bar_side.png | Bin 0 -> 98 bytes 8 files changed, 50 insertions(+) create mode 100644 mods/xpanes/textures/xpanes_door_steel_bar.png create mode 100644 mods/xpanes/textures/xpanes_item_steel_bar.png create mode 100644 mods/xpanes/textures/xpanes_trapdoor_steel_bar.png create mode 100644 mods/xpanes/textures/xpanes_trapdoor_steel_bar_side.png diff --git a/mods/xpanes/README.txt b/mods/xpanes/README.txt index 47161da5..2e0afe49 100644 --- a/mods/xpanes/README.txt +++ b/mods/xpanes/README.txt @@ -22,3 +22,9 @@ paramat (CC BY-SA 3.0): Krock (CC0 1.0): xpanes_edge.png + +TumeniNodes (CC BY-SA 3.0): + xpanes_door_steel_bar.png + xpanes_item_steel_bar.png + xpanes_trapdoor_steel_bar.png + xpanes_trapdoor_steel_bar_side.png diff --git a/mods/xpanes/init.lua b/mods/xpanes/init.lua index d978beeb..8dcbb5fa 100644 --- a/mods/xpanes/init.lua +++ b/mods/xpanes/init.lua @@ -202,3 +202,45 @@ minetest.register_lbm({ end end }) + +-- Register steel bar doors and trapdoors + +if minetest.get_modpath("doors") then + + doors.register("xpanes:door_steel_bar", { + tiles = {{name = "xpanes_door_steel_bar.png", backface_culling = true}}, + description = S("Steel Bar Door"), + inventory_image = "xpanes_item_steel_bar.png", + protected = true, + groups = {cracky = 1, level = 2}, + sounds = default.node_sound_metal_defaults(), + sound_open = "doors_steel_door_open", + sound_close = "doors_steel_door_close", + recipe = { + {"xpanes:bar_flat", "xpanes:bar_flat"}, + {"xpanes:bar_flat", "xpanes:bar_flat"}, + {"xpanes:bar_flat", "xpanes:bar_flat"}, + }, + }) + + doors.register_trapdoor("xpanes:trapdoor_steel_bar", { + description = S("Steel Bar Trapdoor"), + inventory_image = "xpanes_trapdoor_steel_bar.png", + wield_image = "xpanes_trapdoor_steel_bar.png", + tile_front = "xpanes_trapdoor_steel_bar.png", + tile_side = "xpanes_trapdoor_steel_bar_side.png", + protected = true, + groups = {cracky = 1, level = 2, door = 1}, + sounds = default.node_sound_metal_defaults(), + sound_open = "doors_steel_door_open", + sound_close = "doors_steel_door_close", + }) + + minetest.register_craft({ + output = "xpanes:trapdoor_steel_bar", + recipe = { + {"xpanes:bar_flat", "xpanes:bar_flat"}, + {"xpanes:bar_flat", "xpanes:bar_flat"}, + } + }) +end diff --git a/mods/xpanes/license.txt b/mods/xpanes/license.txt index dff72274..7e922b9a 100644 --- a/mods/xpanes/license.txt +++ b/mods/xpanes/license.txt @@ -34,6 +34,7 @@ Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) Copyright (C) 2014-2016 xyz Copyright (C) 2013-2016 Gambit Copyright (C) 2016 paramat +Copyright (C) 2019 TumeniNodes You are free to: Share — copy and redistribute the material in any medium or format. diff --git a/mods/xpanes/mod.conf b/mods/xpanes/mod.conf index bc043614..dcb07167 100644 --- a/mods/xpanes/mod.conf +++ b/mods/xpanes/mod.conf @@ -1,3 +1,4 @@ name = xpanes description = Minetest Game mod: xpanes depends = default +optional_depends = doors diff --git a/mods/xpanes/textures/xpanes_door_steel_bar.png b/mods/xpanes/textures/xpanes_door_steel_bar.png new file mode 100644 index 0000000000000000000000000000000000000000..435af148df7b0401acfa6cfa4cb23e28f80258cd GIT binary patch literal 605 zcmV-j0;2tiP)Ou#^hu00015P)t-s0000cCMGd4F!>k00DGTPE!Ct=GbNc0004EOGiWqhTfHW z0004eNklP10QtgBc!CG1KwocWzWO2!x@rkCp!wObf#kzR|h*8>Z z-YD}F`g!xhK}v5gZ(2~LZ1)PzFbi) z^mS!_%poMEFE4oeFGzWQfKP}kNSlU+zP^4^Qc`kqa#~tidU|?hW@c7aR(5uFZfa!?aF=@EE#o=nh5-A6*hDkiS31@k2POvSS w&3q+i)=qYvO9CtSCRr7K&q=#Eb8|YwlrJVabEZ`40nKOdboFyt=akR{0Ivv9M*si- literal 0 HcmV?d00001 diff --git a/mods/xpanes/textures/xpanes_trapdoor_steel_bar_side.png b/mods/xpanes/textures/xpanes_trapdoor_steel_bar_side.png new file mode 100644 index 0000000000000000000000000000000000000000..a71231e84cf289acdb40c000f88ef44ea73d8274 GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|u0VSF^y%~G&tEW|>ot%g t;_2cT!f`!0f|Z45p~C?O&W71c46cXSe?Ba}J_{(%;OXk;vd$@?2>=ua8NvVn literal 0 HcmV?d00001 From 05375c0fd481b2278721509402bfe471d1feaed9 Mon Sep 17 00:00:00 2001 From: An0n3m0us Date: Thu, 26 Sep 2019 23:35:06 +0100 Subject: [PATCH 72/81] Fix glass panes sides (#2500) --- game_api.txt | 6 +++++- mods/xpanes/init.lua | 9 ++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/game_api.txt b/game_api.txt index a066a087..c6d07908 100644 --- a/game_api.txt +++ b/game_api.txt @@ -773,7 +773,11 @@ Creates panes that automatically connect to each other ### Pane definition { - textures = {"texture for sides", (unused), "texture for top and bottom"}, -- More tiles aren't supported + textures = { + "texture for front and back", + (unused), + "texture for the 4 edges" + }, -- More tiles aren't supported groups = {group = rating}, -- Uses the known node groups, see [Known damage and digging time defining groups] sounds = SoundSpec, -- See [#Default sounds] recipe = {{"","","","","","","","",""}}, -- Recipe field only diff --git a/mods/xpanes/init.lua b/mods/xpanes/init.lua index 8dcbb5fa..27f4c013 100644 --- a/mods/xpanes/init.lua +++ b/mods/xpanes/init.lua @@ -105,7 +105,14 @@ function xpanes.register_pane(name, def) inventory_image = def.inventory_image, wield_image = def.wield_image, paramtype2 = "facedir", - tiles = {def.textures[3], def.textures[3], def.textures[1]}, + tiles = { + def.textures[3], + def.textures[3], + def.textures[3], + def.textures[3], + def.textures[1], + def.textures[1] + }, groups = flatgroups, drop = "xpanes:" .. name .. "_flat", sounds = def.sounds, From c800398593ac6836056a1c94cb46f6b7497a0d79 Mon Sep 17 00:00:00 2001 From: Alex Yst Date: Sat, 28 Sep 2019 13:10:26 -0700 Subject: [PATCH 73/81] Always disable leafdecay for player-placed leaves, even when 'sneaking' Avoids player-placed leaves decaying when building while sneaking, which is common. --- mods/default/functions.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/default/functions.lua b/mods/default/functions.lua index 9d6c5937..91f8bb39 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -414,7 +414,7 @@ end -- Prevent decay of placed leaves default.after_place_leaves = function(pos, placer, itemstack, pointed_thing) - if placer and placer:is_player() and not placer:get_player_control().sneak then + if placer and placer:is_player() then local node = minetest.get_node(pos) node.param2 = 1 minetest.set_node(pos, node) From f2a07b0a515821d5919c5b5d5aa7264f21e4768e Mon Sep 17 00:00:00 2001 From: TumeniNodes Date: Sat, 28 Sep 2019 16:53:51 -0400 Subject: [PATCH 74/81] Xpanes: Add new steel bar door/trapdoor sounds No longer use the unsuitable steel door/trapdoor sound. --- mods/xpanes/README.txt | 2 ++ mods/xpanes/init.lua | 8 ++++---- .../sounds/xpanes_steel_bar_door_close.ogg | Bin 0 -> 17553 bytes .../sounds/xpanes_steel_bar_door_open.ogg | Bin 0 -> 21837 bytes 4 files changed, 6 insertions(+), 4 deletions(-) create mode 100644 mods/xpanes/sounds/xpanes_steel_bar_door_close.ogg create mode 100644 mods/xpanes/sounds/xpanes_steel_bar_door_open.ogg diff --git a/mods/xpanes/README.txt b/mods/xpanes/README.txt index 2e0afe49..0e34d232 100644 --- a/mods/xpanes/README.txt +++ b/mods/xpanes/README.txt @@ -28,3 +28,5 @@ TumeniNodes (CC BY-SA 3.0): xpanes_item_steel_bar.png xpanes_trapdoor_steel_bar.png xpanes_trapdoor_steel_bar_side.png + xpanes_steel_bar_door_close.ogg + xpanes_steel_bar_door_open.ogg diff --git a/mods/xpanes/init.lua b/mods/xpanes/init.lua index 27f4c013..758fbbb7 100644 --- a/mods/xpanes/init.lua +++ b/mods/xpanes/init.lua @@ -221,8 +221,8 @@ if minetest.get_modpath("doors") then protected = true, groups = {cracky = 1, level = 2}, sounds = default.node_sound_metal_defaults(), - sound_open = "doors_steel_door_open", - sound_close = "doors_steel_door_close", + sound_open = "xpanes_steel_bar_door_open", + sound_close = "xpanes_steel_bar_door_close", recipe = { {"xpanes:bar_flat", "xpanes:bar_flat"}, {"xpanes:bar_flat", "xpanes:bar_flat"}, @@ -239,8 +239,8 @@ if minetest.get_modpath("doors") then protected = true, groups = {cracky = 1, level = 2, door = 1}, sounds = default.node_sound_metal_defaults(), - sound_open = "doors_steel_door_open", - sound_close = "doors_steel_door_close", + sound_open = "xpanes_steel_bar_door_open", + sound_close = "xpanes_steel_bar_door_close", }) minetest.register_craft({ diff --git a/mods/xpanes/sounds/xpanes_steel_bar_door_close.ogg b/mods/xpanes/sounds/xpanes_steel_bar_door_close.ogg new file mode 100644 index 0000000000000000000000000000000000000000..0620bfb8a151b9434bcf0dab73f89d67579e233e GIT binary patch literal 17553 zcmb`ubzEFM_b)o70<>5Qr9jc*+79j%XpzAk1}pARyg0>+yK7-^DKfaU#ogVCySvWW z(C2x7?>+Z^&iUtV!Y0XDSxLTYeUr>)kBpI#0tgB8&$aWlg#0e+@8Nj#fcSxfm5r{6 z?Onx#4~2JsK%jSd5AXk0Kaja=`Jd~qW|FZn zA~iSBRlc`RDo)D$4$Srr{Em&3W--a{QjjMwO^|2=j(90fcPU}-Acf2! zgB&*7Aj?MuMJXlVve#5`Fc^2RA9rw5i}zKpc2leNRiE(HJoDAT^ZO^AyUm~7rTeLq zJ^-bYbHy&vet$#oeUaU zirTWa+wuZQ)b2xPv}EtGB<8=hsgi= z`g$KPz(mMW3}a0_QCPxt?qTr+%;IIB2&4V&2~Y^gSSC#zNIdH0!bn_6&%;R?{`E~U ziMl2)KIz_r=6(1}fG=sg5?a#}1`=)i#L*IAe{)VRl8}q?hJZT!wPcJod>uf~WGE3i zZ&DR#t2U6hnp=Yd zJ$&8+e$$!2YfJGWbqjr>i$j)87Da3qh7pwx?x4*g4ha>3t_6hBe2X>tmY84j-Mp)KtM>nz{=*zm8wwx+%=u_T@n6jO2__T< z*i^b{}8;w*x?+pW$c{_v?t9JmaW5+o(LFk|N*#nK6KLlvQe&6#zB{ z1i}Y_)>{G8u_7~Lp;(P7U0gJ5XIfxGoR&EkSiE4U&3=L|go_5A(+7qHL};kfN4#m# z!QfVsrp*;x8xu!iL|wipl^N*ERd0tlGbDD?ZpQ7N-ZeeXt95ep3j!*KOzVE3KF zfX?BScb!)#%A4G^FfD2WI?n?pXa=qvGYtW^5$g4F!Ep3UY1>Ai!HkuJdWCF`_cO-@ zMg<21jBNlU_oHG2T1XbP5p}}i1aD2IX@w5OJ+f#ZN>9xBZc94W6`$8+hV2BTYQNl)`L1aGi5OGRatZon($N_rM&>(QEqC6xI&;2tLP(dKN&%oyULr&k;D8@c?ZU7^@g~ z6&N%m?{6_${%?_%@=i(yc;`+k1kmoT2!IAjxhrNwM+>0<+XR4|F90|!S`kVI1C#-% zl>g#tS_A^^KSBnjBfVA@<)kHe#&AE!2cVw-mj$1Y>D`@-e1ID;PQ1HuzRN(vAt-wR z5(7?UXu$lD0e0QT7DSx(E-LOKeE@5s&9yY6kZEThv3l8@L&G40w*7MG=l()Gb>_Siw3AY2DR;b3?gOa1bGro{NVmAKB)RBgN*)xCoc#jMtgs-1lV;4 z`kgoaJ!gWm|C9Tly8GPfKZ2e+=LB=D65h2vd;JA7r zM8Ikm$k;|;y8}Q2%m;{1U=f@ERK^m8Y422kiE04N06{N&?G6wiS5%X8XJt&oc8~AQ z3Vb!$1%M%*mlO1!a)PrNGNiU({P`Y-84yT>7MKCXKc0&DOVhuOqXQU!9};&({X72J z{S^px{FlII;Eve$0$Cwi7|;Uw-sxmMvXFlTFCa9q=zmSY?s)l+%8R?elIQ*#CV$T) ze@)#-oIC{euipJ(CHlqPApf=i0`N{RGkHOW=!B-*vO8yj|>My?*fbH*JT~msG+mi$9%s-a? z9mW6u#sAMPK)Ky$$UoOnUmK~4bJG)|Gu?9#7hqg-yk4jvH9%viS-h95(0W$Z5X8Kc z4I+34mOMa{G3NE$=tu~ps1;W)IKf+9o(@<+f%R|4K2yA=V&SoS4%ZX;i zY{+T0SlO@%(-5|`WEU*%^ATuB%__0ofZ!Uj9i#}@1^f7r$z1nq;HqZ5Y-@AgnA|Ay zrUgJ?o9*$PrFvU}fk+g;40^BeE;5|E`^QkgYnh)| zUxD@IDJTHg(1L*l$mg$5bOZlV{lCZzd`O_;1PF(4hLbyyz*P_Y1k}HxWI?)8B zp=ONw9W>P7N*rb%oQf&v2C$s#7L?irgT?b&VAy!xI z$@EZTpj8uD2t^3XOO^2b15{4V1wZP!eV^CK=?aRQcm3RbuKoj{FbR6|Jt1Lfeg7PU z`W&B(7R)6mE(a{fz(oo=2NpqP&j4e?RZebR{`W#3M8qJH(z5c3|9O_+>FIf|`yRM^ zdj5S{@Sga-3Uv3h;7-wsGz#UFiHy9Aq_mW|6=D|Ais(kHA=VKah$)T5^QgGOEa9!v zGsM}qw@a}{DK2^2Hi+21-ExONuBtbub6>l|uCNs>qLl5|>~0Pgm!^%{Cx;^{^0)GR zaJw%g4_;q^B~IBAKKEL&W$!}Bk&AlgJ}Ladh|S#|MR-q12Y-SnR+Mp1dIybRGF^VdeyYE z{VZKpms@Oesj>x~pyHlqaa3emX3*|N2levK&=&2_7bnEZYQBFk8I?i?D+USuS(RuV)yoj zx<^bLy|Prkhd>(70@22ny!EcPv&}Wxvn=A#xvChB3!~21C-t{d_Vzed8qYG-OqVPz z_#kZZt||K7sWV~ila>h}<7OkJZlY}HtpP&F!Q`^j>#`;9b@DKiE4)MV@aSOWNitm? zrvF5R08F)?`6lPL2MKfb&Rj^X-5)~!;!uf`FhPX=d``y4KBV*&=7$fL7~=#k2BZ+B zljnahiT%I#F)r|`ZWRaxdN}6~UGqJtXP<56L(4ht_j%#9{`PYH7`(S!{Y9X!J34tK zW_0}8E&*jsu2@kI6{NAK+dqT9wVS8v%F!tbcX!2M?Omle`m9x*MzQw1Mt}K}X^y!%w=<{( z-q>zO+srp7FCn*Yu$^=N@LDw=#NY&cNw0;s`krVv-x~wh|Y_;p9>p!I~+ zkew41C}3VCTXlG0qU~%szLY;dG7(x;em(p)i#qGs*wlx8yfd1*&%OPk9Ax$+2`uVi9R zKqk+2MbesI@p;2o9tobp#tqGCdIY5 zy1lg-Q@^hb37lTLA^6Y1cG69Ei-7x_#`>e0h1X2>6E8Q`k+S`AtjIEP3)FtsiPq7E zRD4*})9+%B<%4;!N!z^Wk1u;ymaJ;?HMe-O-oE+k_^I&`x$SbbSM(DL!RyAP+3qWU zM{xu9)b_mBwp-oiloGz&Z1 zB<1r%y!fseX>3{B3yIFR7d9Z%XQ|H7=j6-eilP_`E+ba-Z_v~jL@F)}v-)O(KF<}Z z;2Kdb)I^{!nASRUujfh^Ej@;}KxfrRoGdY%kCr!%mAGdawNKqy)8M7WJG&?^T)HPV zH5-bc)4gEt8VeIqjBkSByV9Hwto*!vDpL+s)ur~UF-i*MG{c5cU!_dHz?L^_ae8md zZ=}{m=|Sj73%7vs$6mB+^?bSM7vGChbj7){v)@qgP?hW*xyj*1OPrg~Nqfk2lx9mk zT&VFp$1fZQM8p+a|NS(m%MMOwMKQ(8=$IVCvs!U7C^a-C&Nfk3Wf!NxsG@!*+%E^& z0jJt~oQ_Z9b#j}vGPr4;E$*LO6xG&NM$WFLR?=*W@ciNB8;zF-clo_wvUPBY?YoV> z$er0k9J19nJJ_tNZdzuWb)zG)aCw&ft8@_dG2^w5W=bAC>m|QT*CwSyR>y(V0x^|x|YpmbLE4uFTS!YY?J^2~k znF^xH2>`is>o1Z|?q|S1uB}&HetcCh)S6|%eK7j1&)SH2JlgJt*?>GH=DHF9opAfL zXb#xgwqez7I{7=QU%U8*ozUkV;pwqFRs=xr*Umhis3 zEdifMo#`F2RgJHUemU(slzRDyeyUF%wLQgJ!fj8qvo38Z^KAQQq^^yDN9!Y%Wm?8F zBTXLfbBsw2l_K<~JA?=-jMg7%1CYkEafrwT^dZd$4w%O+dve2lVaw&+|J}Lw~Yx-O>p`83w zLt13dbwldoYw!wET2-0Zk=a$c1-YNjHy@h(Vh9y}G8boPrPW3C>sj{a19ZJD#3265 zsN)pYYtLPQ_Vtv=g+bdTXpR8om+9XMy<#1GE>psAlLm`5iN~iY>XbrsQOFOm3rH-DTg z4gLbP*ChQ!tFVujCS;IO;munXz^$G?Y_(`ABg*D6(V{S!vvf;m zy&j95&0;A)w}?q^5Bt7;cpJZ$CzbP@@g37K1k*gSf_B zR}W*YR{WG1g8N5Vt6xza89%UA*j={e=u5p|-VCfe4Jk_b(Rz&$D*4!~T#@g&T(-GW zVpVgUd4qsapS}1CU&aPy1}62>Prr7?us65xpY~1tpsky7(+-sHN=(X$)zR4Is(Y>! zVb(*5II-c#bZ9uXXJCBh8CzXs9PeVebMD==bePlWJcnDd@bU*nNDAwQXP7L~O0n&^ zkEoRGnS~V#j`nDajIjtAA`U8SxVq-%)>JdRgU@eGuhqw{{vrGi$AjmA35*qKsExn9 zf(CVtAB1&V=kLfS)t2?7#bAL_H(8EZCIoV|uqC;ITH4(56w z8o5hUTYBt}%Rk$A(rw#rC5qxK$)mklq&R&$t*a%&$u0d_ha`GbsIiVj6W2vxCsU6_ zWco9s6mJE;nvyc4Nkcn(8+~-VD?l9Nc#XlUW-Q#HOKN6-(KtAUjRs7lxudC}c zC70t}ZiTE2wb9;dx-yltCl=Z(Hbp^uPg&31wYj1i-!!S|ZVGfg=9<^^L1bRB&qgPs zkL9v~DMqo|*=th-+Q(h+ z7u8Em{)=DxT^+w1DSU_?=6usE4wchld#%nT`O1LoE9s?iNh=i*pL=Oe?!u>}ny)Dui}D#>eWZDQBPzI z7G_}lq+cIJg_}@o>lJ%V2sMPI>Ryzv&N$e{;@k9k=P=Jzl$Ra~CU(Ts$s95^!Qdj{AcBA@DH6Ekv?H!T z=Au@-BJbjf_PX@$$2@sxKS_scFn&Wv}qUxTKfUQswcc9pC`xj8`9b`dF{Y<3?}ULb3Bl2)pU^RbxsSrD2soebGeSw@mUU!m3tc ze%;!V-zT&-Ew5#Nd}oiU**D)UA>R40_|YAYXXbn%jIJj{CluXFMb25RJZ?4YNkRyZ z!~!ZEoK-!m_jKADp5T3`*~yYHIVg54?XVMT)6y?N^QfkYWAh6|9A6E+<5Fzh)`JU? z{oJ(}FZY3sylNEC3sTK6aRb~w=Y+^`;QPeSc-;V1bUqXuhP;IJNh@}UgTG49bBb5?&Z zZ;S%XN=MvN7tK8q1m1cFsd27t(FJQV!BHeE=qF|Y)A;*D7H`|QEqcGpbiFd^)X*{S zY2#_zn`)o+Hl^gkq-RT`KiLcYatZagbtTrm{^~f69R#DrT#7(9miA>H)@q(XhN!!v zDitzav@l@1JsVzW7fayGx{cFl_}1+XS5l3-3JROTw4fMjR$<%rte}m0z$(9VPTd(V zGv_6zUP?Yb8vYsXaX^pPTME?o4{}RYp7*=6NR{;(ULuo+k_cwo zqKmtJTUE98x*&f~5HCK5c782DG~-l0`#Yob+-7|uqAFt3C9i6Vn%H2=_vfqxPBj8| zNIWe|h7x`yuuOKTdiLuAW@-U3$`aYK6FMuyTK#a5l{ju7lrrEs1^G=)En-ss7&9wo zbQ3SP#a8ec)_$pV=8Ay!+wJdeC6O;{n|6EpT`P_=4`ZZTkTc{upMNmt^qHQKO>P;q z@T}^DP<2PWiA*K)e1`P|^v^>Ck^gy!aQ8C8nmS!D4q^z=ju=CBa99CR?f2+7ujV&ThF4tCuK7~2?e;Rd$M4PF-2t;NKZFMCYxfU{PA zzuud?jpI>!BNz1skV=jh8$1CMe@%$P-mEob;`M5I|yngNS$JyNU$dkGrFG@;e<%-xI2lCdy6l*`dXok z#w=3JTenh9j@jY!Ok;)g%%uFCUa4!-v24d>W~vYAG#D_SeN0aDVEpW{!V3_#nfEsaTJAr zoz=l>l`AJhjqOIMLaBapbyLg1#srj~l)vh?Bwv&rS9?`uH~mz;oTFadIwC8(K=?EG z!NUTP5*5r&juOL+XvuFzA@wv$(#m{grQJ9dHQ(#v9Ufac#0Qa9Gv&XOPi(=Z01<)JTx;)^bWm3eIsRDNEKFl((GNTb>p_c zZ_j^}4ws~{mnP;Qy6jky{xXe{=#Cc!uaso5;M&7zrVUN3Q|Of#Rp0v|jUI%d@QT`^ z2i01c?^|qEN~=OsB;{+K6mH)UH2>yi*YE`~XD73)dGX?rP!lGx!0bnGzHZ)__pQB2 ziPAFtY3jkaO~cHm{`#TJ$V!IQn2WuY=6Mlz&e%y~zj74RR|ZZqCd|Vr9uJ&S=Fvs3 zg^jISd?s;`iab$|Dr6cX?zNf~9bP#iig59^9TzAcn+bLEI-u_Ei`sbkrAhHut)pcJ3{BA4)+$~D>9}9WW4)cdV@k$V55Ky@lp7=&2A3H2$aL;<~ym#}q$NA98F52GnT(;b8|52;`{FA9#lTv}PQ zFLw*fxK;^5HS2y@lR70lH(@1}4n}$ynMt#nr8@uC%A|+-4M^*9>koY@vEsP(7Jfyw03>PT*onWB1#=sMg^i(V;!t#lX_5Sx+`@;n#%f zdhczg2)C1ykfKHBD9h?gj#_o|936-WZ-Jd@0-oV?)Ksospy{#{Zk3evo+W{a`Lxp1 zXoLn+sQ45k+q0whC=--7ZBtWF!r-An$)s+SnpIJ+t#;%mCcVM0D>2mLk51)C&Rr{P zZT0Mk2=TpL#VklNd6>l?xXw=r2*a8Zw?C|NIQjGcdV27E!r*8)+%YUq=c-t}>s6+( z`kw#p2~H>Kt%NhXLgh%x(p>PazQxH>wkXHNG;2KaIafzWcDx?4ud~<@(NosbZu+AN zZslnm{+ee=gCj-sC0lCMU#S@@&GtKw`zPYuNJ@LFq@F+i)>RiN-1du_qY>#C*QbJ- zG7^tE1cl~JF@uk|RU}P&x0aL#RVwe+_ps81wMO%STHnFwVw!zW_F0knWr=<4v(4eY z+3xR!{=Y6e3U>P{dCT`)3_QS9ic6oIt~i<@ptgWqX0MrDp+WU6v|4&Jlc5(H2`Lo@ zSE0JjBFWaru92yJZze=ImDZg0v#nTGG-1@tZMD;zRX6SC=XgpLpvKFjW0~IaAjO&j z!sDD!%dFI=-^PSFpM-U)x1-wj6uiL8yKZD^{+jF_Va}g*w&&A^F4e7%=;Y>(tWxhD zzN{bb6mVCg&Rzdzk8&aAeDm^`en%}_Evy#KQ(aZmTP`g+b#0An zotw$r?-4VW$v!)^%#M@{xOsJ#l^F{bQn@Bjd%yQ0eha?TDr?p2#XQ5pGG{Nb(3@|Y z-H)}j1mfF?_v$FzjwkFe4WJvmX%2M)Jn``1FZ`{Vbz}OWNU|=kiYB)n8yYZ;O<V zeMYiJbi3r(bN54_N3};W?l=XXrttZ{Bp7U2SElx9-5&i0XX@_79*(W6#~PRBk6A7` z+}d<+CT?{65XcT|O@%oS1@aedh8_B@MtsWuLm^$|;o5$o|D|_%73GhZls&V$S$B)? zPYcrH0X(->_vAR0+m(7(AHTDe;bD6IC#<`60<%{1fm6V{K4|);1!jKN7l$0`a*sEm zLVN0arMaHb>0p}t06q4~Kf_`9f1c}BR&m!|M)TBU89%xSpn61neriM%R>hE1MhZ0# z(hsKokgb42WJ~a6jyTmuPBpl-kixc)Me&0cx8$WvFz-O5=E|oDzP7X@R`eZd?9NfU zMH><;#@E9UKAH=v_I>DXN(~mrQS_Tps}mua;UnoW1m%Ns#8Z+4qJ}fvlfF>g$?!>ys*uyIk_#-1JAr?7mFTzk862sO zq^YKcw)fk%$Gz1&T~*8`p>^a!A%IPKj*3DbeE#@VaWM-~Dt=*Q>Q<-6OJZK2vbmyF zLPs&#Cg7}^>1y8iNjD12_q?46`qm=WceKo&VaYh8JJ|VU%+~fB-SgeV%|?7sBQ3+R z%%_YzYVk+HBnOFP;vZBQd6`+aH5sjEidCG>hG(t$+_t~Nj(nXMetr59Ng?-fM;l+> z-YK-fxHo8_%Up_OvF;X+)&H180P%Sze{eRdk`p}suC>)LB4o^FZVu0H$7UpJNfMjh zzHaBw`i))xCp|sq@XOQenAU+klGf$TZj+s%n)A<8BO~0;j*J^>S^6sL;xPwa^_TtZ zHQN~tMvA9t-)Zw!Dmv6`z3sw|BhPc+BB;%raadr3cAZ?TQLHzPZPKG}a&#@b)<5!2cB6HQI`l5Wt4SwG0<|9aGyi?dMww)rS)LjXT=|VOCgf_ z>+$yE-Yd?_{@!es~m{peLF65dP` zu{ac2x76buUpjhUu0!FckQHhPrFM2ik!Xg9&9YsNXOAVNm~nB41V@co;WnBWg(9L! zj#qvsI3T1qFX>2n#tkg_j3&1}@g*4(TC{hLc>O<~wHOW@M47XPEHv%UJ}Ww0#GSFd1z$yGpWdq#M+* zFVv2+bto(C`7`j`sWO{EE(yehl5nbshhDL|gl>b|KHQ7drtkUF*Mz)O{b>{H6s6A# z)jVW-x@)9wYio@#5-!kb7}N|*sI8adzcA16zf~Tiiyetdi&$}p+XDse*(c^out^g> zaGA9=X=Xai;ceLUz;}l~82s>%k_^Fy^+V#*31`AFlsqu{wKKAY87SwshHGs|eO~$k}VS!xvJznGmsp{!xPe{uqrp#qeCfpSUB$@22n%N~revJ%M-wH+iM#jA0t_zWa9rETm42t`y zl3t&ruX@A0_$qW7O1dqO5MuD_E`yxFQf-#RlIl2{8Q!d!34>zM96N#bu`XVW2+W2S zJl5qyXi?`+3oBajIa6IiF|+l|fy!gzLjnsoL(GZ0<-@YveNIE-x8w$x zdvB{zQC|k7B%F>VK^}k_FA9!Tu#oAvk-cT?Kfle}6jQ@%7t=drPDreKK6XW&v$r~_ zKI%s)2D5kkIqUQBbO9dW6w|W2-#5GvYDL9HyWHG<+-G+()s;}9J%i}4-$|M>W_YpT zN>Ill@5CpPB0`kMSF~|xXSrv;=3Fpp3R9>8mReTwoe(A6{!TfYQ3tWBtCJx4qnr0q z_?rtwZWN)Fc<&T~DmAp4Uz0FAQ-Kpc+=o9HC((zol?-c3q%e-Xn`n5T7oU8T9dUR* zZ+`v3->M}1abxT0Vu{$GYX_QBCw@aiml~?AOTbQDE8El3{-8q+69FIS$^L0*iPM#4s{_o zU}uo*k$1YX*zTXTWh527`juJSq!)Z0hzEC=dDsqsZc$q2C zps@|#%l>(wGu8Fv74$be5YvX`<*7q41g~WU^3r!tlGG}phJTGpva|Su5sBqPh|0<+HYTD8^|CNT>VlRwn`e|*k2BCTw7hfG+{K$y7N$~XC z@)hGl{ZGY(v*qQ>QGTiE`e)z8PwbjL)hp8T!OOi#)Nl_v-;gwCR}KXL-~}0^+_Bx6R=U87e9jzG2om(^FL|kPGVUVa!SwXFfkq}yY zrcvYGJ~S02kOvu?*m#0We)Mngju4_Yeq$3hQ>0#fr)T73B`pTYv#+(p=1a^9)RU|& zUY{bKl{VSE-qvgl&N$Rw!^nT2p3*EXE0&XDe7vbn=ki}2!9q*F^wBoYObt;nI$es6q@zW z#Eoo~)d-%#qiK}EW!UM)F{e~}HLA&T>6>FOVnJp$-!)WFI(Zz?pEBO{{!(~&)Us|Y znabD~TTg+95kJ8j)67Mu_t191A%{22SSteU=dV9&gfdLOxvNCZwYo@62_9YsXrN~& z=Jt=KrmEM{%zia*y4L1ClP@Xyq*d?74T&n?T13u%{-NEi{EPi+wg(ljQ{6|4ek-b1 z=Ui)s$8VoLuD0yEDBc`W;ay{}-#FcK;eQ+N<^OSkMvXBeIfu5IpheAeD2LWB>WtE00T8x~Vmisy zn-9di&gZl&8P6kdr~Cwd3gn3utipzlI^E!duTKowpNkw+v>Ue`>oU)gP^~E(|1paZ+%l=%Z)ck)FAQ?&z~M zvmM%98mq~~zshW%me1j^W3fnbuqwW!tok-Lb<2){QRn)H_z2a%4l~375t(F+k;pzQ z`wfO#!^bAWbScP7Zr~T(ap-`}U|6?BOLUXUu)JF4vC=z(Xy6qq=F3y#Reug9h=GY^-hgd)`Zh&7jvg%U}{p5m0) zp~VJeuST@1GloV{z!k9F`bX$IJKxlOe6>=6@nkP`#et|?uprCnCWM=w`1gbBMN52{ zMu8F)CJnsol<0CE{3kXZa=Z#0OwotJaa{$Lzf-N?%;`ohm(D&H#(%iBqPsYfOZA4< z$rc;B?fcdbIPzodFQ4ftx-k&UTpgL9ri${vKrCf((dqr>1`Rr#CMBx?L0*uja#_xth?+`U`iaVVhMfURTd&+oehP+AW(!)~$z!Mb^4PF>41 zPuhtM8%Zv1dpU}z*J^sxF{`Auin753Q`bLU!qR$U*1}F#@Tm)6R}DI8UAgt&L|y1y zapJo(c&WoI`rZ{AYPluqiFy5E?SKzC_ITH)CVfU1^~#uU#yJxY*wi4HDg4AW;JRFA zvpJsGAIWnPzsMYFKQrZ4?vGVnrI1Zpi7WD%;#I2hc(^%*+if|TmU?KJe>3HVNqRY_ zcfD-h+v&s@^Miyw2^Q~1`(^LwRl8&f^(aq|r93y4>fWp+XY~uQ$i##WwW=|xNA!sc zEUn2a^v|Amo?9<>rKHps@?{0SSqPOSvZqCJ&>vdb&C9>lccAukg{TCwYBVz6Mw1OB z)W;n+t;io~Uxw38r{+^*v;-%X-)JOc4^xG}5CN{Q*gEKhNSj^6c%km&MC-9p*avTd zd>hbO2_@)_Ua1meqPlYV)4L`?Vqc8ieoRU`yYkosSM8Ll{hCR$6K{Pr6M`4vJ+l~+ z$kg=#vt{f{mhQ!qwJYycWVlqzlZ1FFG{Pgp~^^a&>f@icU9faG#Iy=eRdYiR@Plm)DPwmh9#Tk zBHj82tvh022VeW)l{8CCA16c^4ij)qb57Nae!$LTce){{RTg&6)0#!8d_q=kIl?_2 z(clB`HVh?K#(l)Top1Q=@?90590&Ni%$fv`sJ9c<%a2Lf?ni?zEAzVbG1U}Nsy$0>V$Q#Mz=zZsjnvwMmGY&!D+%}j0%pQdxuF|E{*?9^EErv9+ zH}TmBG!^;x>QboONyc!Y2}jLw4`UsNZBK1qfZx4c8PMe?ny{+(xPst(5NX4pcnoFi zWF;mM@HV)1OLLw+SB)j}=+oMKX}Ht#OVB>lx2kj`VTs!D>HDwkDkKxjLsiON-X6Sd z7tUYa9&uLc1rc+?=S86sJ7ffNR`L-cA1^(FI+d9lA$+t22>OAiav^?MdM$JluGBG* z%padqycHb#_sUG9j4lIdb1@BJEn>=68B=<7wh^jJYcDM0I7lr^(5@JL({@L-cSrXg ztu3|wKqHwXzCC&N(NeRhG9j3k6{F3Az+o+F;9Cr^2}Lmr$C?k?aUN&|B((^5iw~el_f;jH zOrL$ThYZrN_B(BjB1jyc<4^EU9XXDlv}YR}6TMySE5l*-Zhqg)3N=V#eN#Q0@WeWl z&T4Fz_wktff||r|d&bDv0fsucu}hUpw$jZ?-s_T8u8gsqMd!IS;L?Z7x`_h{Bx!(DrBVsrfF+mEn+u>*zqi3d@nR&#tVTgN_ zmVcrE(a!L}?kfI`0HnlNP@XjQgH@+DKF4O9L(7#chw1F%k)qm$$5#7N2g9Fh*Trg{ z&F!bh7}Dnr&A69Mv63g85?Je{Oml438YTXzS=iNS)1q%*il(f&pY|q=CGTY=p)Gwf zI9A_4+cBSXKb(){F}?D#5>m5d*{0lcXC&oF3m_;An;_PFz*+h>;s?o}Cjlf;63U6t zHyA4f7tzWg_=_Kq|AN|G@Kgd$KwjGrMfLeopT^bAQGO|8JSVXN@H{!WZ$!@>aNRaN+b*FV%E2=l<36 zFK#UE!OE6Av{HIggzQZE3dfQXSPxSD&Gu!m9#3F(g=G^b=i{NZ_={8H*^-3OC;iX=v}$a7pbb(K&qo`+f=^D)sa*U8dB;2s1!@hfX?^c#rUlGAGRXES-HW2Voc zEh?Aq_w0*yafXYHnqr#ym6`Ms->TFKo|@bsqPdE4ibWy9L!kVw#@{V zif^syFOp4$%Gm&DtQj0NDrw%9Qw1td>=NLt;^r!hzK=NI=g3RD^1gcb=v8C5@x~?{ zT!wd^NWM=R!!pu))pzK-;pkUNoL?UFR%g`A-m&V?A)Z^i7rCpMBrJ{%)!OtMh%(2v z03MCXkv()ViRXJz5}{MtBPoq+mGRO=v5NecO;-^ma=n=9$#X$z;s$TS)|Ks{*~Ik7 z8v1jLQQ`LL$NOSCe>T(K7x7Vo$X>NwKMoI3kci&h*lpip^N&IPVD-D+?ZuvX+8gKL zZ!DIoS|*Z*4p@I!z4drQP-H>3eo22yP@b=&2`eR&oCcW?G#b)Eze|-*m~2h%F+ zZ5Kb!`+l9(2U_aB;Segn?p(b!=VzcJphb9{O2iZgO@bn^2KG07fgqUw_`S3Rx*c&Mvx zcCk%oj^Jwk-5xFSn_p@Oq+Mx{1E>SBRB0-+m| zXDZqi2Q!ni$20woCcm`^T#o2obQre}-V~oEY3z5nnXDZ#Jry(gQk9zCdPJB9+M~QM zSx2IBcH@*iET9v>9!#BAung#T@pL6te8;YZ8o96-t^J#UTknv!95&R!W(@H zS9ZGY_26xM`}h{(82bc`p~|$0MkWF`q_i|EWr$isS+7^y-J6kM98I}~JE(fgdZXj0 zjOtsAlkJl)LlHB13Sk<}7SYbkaaPJ9ez$XSGCS=-&FD`{+f@9voA~P&$~f8zoeOr7 z`TJcW##0r>mHKNlG*T6`mQqUX^b!t?fp>WKea+84h_w2+*tKN%^L1###)Q{wujLev zoR*?wH?Js>`2Bbmc-Xm6GRc-*jT@)5vOWsC1WA9#wr?^{4k3yW*eP`{C)jG8qti*4 zmcloIg$aGD4s__NeXEuzc{0Hy3LL%+zU6<9YMPL0uv`t|`Hc?}DDSl%surhfTer~O* znO2&9+(&i2clp3Md5)#QGU&E!{@`hryafyYI(esOcYtPEUeoo4pC0;Eufs^#=bTtR zar8sqv#YjsCm}XJpSZ8`jhgPStF-&|+?Z7!1#2#5T6^ZV|5=^XM2s7qHCUbHCf2s9 z{y7(^C$D(SVc@+rt-i#+Z%=}va66{4wQgOiG!L&6FgjlO^dY6_OH$vV({u|XG50iA z9H&KL9l~k-v|q@~cOt1Y3^Dpro9RtOV`hk6K-fuJV4cQAQV(N|FfzCIZA59v36;x% zHL{mu0m~uIOCCl(IYz3wBv&nG4#d&cl{qasZ{zhGl4rG5(bFM5geJ%QcR4(*N=GeM zg7&MlZiS7dX+I2(&DN)ewcxqSqWry?)<2^oZqPT9S!1(pXx1^SnHY_>>ihVKUo$+9 z2C?;wWYDfU0{lz%@J+n9ZYs3#zJnVZ`cp6&`fQ+^6l|+?c{P{d*6S`(!fj^TAK^r^ z@QEvh43Z#jn{lDzh>bsNeH?~pSGA+Ee&rubc8gcZLkf4MSlL9;nK^Wpjg7m{`S*8? z+YE}Gq(D;dKvOvV>u?SK_T=r)DJxfQk$Eu}^c~+*$g{k=_^ow|*J4eEQz{e?tbK)q zft(pcdiKxGu*YP2@N9yuuI<{ft&3Jfa$O8P~i)2~8MpLeFL>6-M} zZkzWDeizF;%0D9ye0=}r%_9)-Ma;YF?&~|i*Dyil1Sj%Hk`Gc9T()=6^S>hXQQ<#) zcqh={#jCp+aa^fiB{;h%IFz#HAU2M+nmbM}tNfh!P-JbU@{GC=B{anxR9)U*-QJ&v Pk$Xc3LBg_rfbqWowMV&q literal 0 HcmV?d00001 diff --git a/mods/xpanes/sounds/xpanes_steel_bar_door_open.ogg b/mods/xpanes/sounds/xpanes_steel_bar_door_open.ogg new file mode 100644 index 0000000000000000000000000000000000000000..d159be9b3bcb8629809acaab113c5b962938e781 GIT binary patch literal 21837 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 literal 0 HcmV?d00001 From ce1eaeebbeba1dda29caac225b9409648424c3ac Mon Sep 17 00:00:00 2001 From: SnicklePickles <56023363+SnicklePickles@users.noreply.github.com> Date: Tue, 1 Oct 2019 20:21:39 +1000 Subject: [PATCH 75/81] Grammar updates README.txt --- mods/beds/README.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/beds/README.txt b/mods/beds/README.txt index b4cf0c44..7b35e141 100644 --- a/mods/beds/README.txt +++ b/mods/beds/README.txt @@ -15,11 +15,11 @@ BlockMen (CC BY-SA 3.0) TumeniNodes (CC BY-SA 3.0) beds_bed_under.png -This mod adds a bed to Minetest which allows to skip the night. -To sleep, rightclick the bed. If playing in singleplayer mode the night gets skipped +This mod adds a bed to Minetest which allows players to skip the night. +To sleep, right click on the bed. If playing in singleplayer mode the night gets skipped immediately. If playing multiplayer you get shown how many other players are in bed too, if all players are sleeping the night gets skipped. The night skip can be forced if more -than 50% of the players are lying in bed and use this option. +than half of the players are lying in bed and use this option. Another feature is a controlled respawning. If you have slept in bed (not just lying in it) your respawn point is set to the beds location and you will respawn there after From 8c9821b227da5e71aa4e863c78cb413b8c2a00f4 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 3 Oct 2019 18:44:34 +0200 Subject: [PATCH 76/81] Update translation templates and German (#2512) --- mods/vessels/locale/template.txt | 4 ++-- mods/vessels/locale/vessels.de.tr | 4 ++-- mods/xpanes/locale/template.txt | 2 ++ mods/xpanes/locale/xpanes.de.tr | 2 ++ 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/mods/vessels/locale/template.txt b/mods/vessels/locale/template.txt index f79c13e1..f4aae91b 100644 --- a/mods/vessels/locale/template.txt +++ b/mods/vessels/locale/template.txt @@ -4,5 +4,5 @@ Empty Glass Bottle= Empty Drinking Glass= Empty Heavy Steel Bottle= Glass Fragments= -Empty Vessel Shelf= -Vessel Shelf (@1 items)= +Empty Vessels Shelf= +Vessels Shelf (@1 items)= diff --git a/mods/vessels/locale/vessels.de.tr b/mods/vessels/locale/vessels.de.tr index 14043fb0..66ca5ef1 100644 --- a/mods/vessels/locale/vessels.de.tr +++ b/mods/vessels/locale/vessels.de.tr @@ -4,5 +4,5 @@ Empty Glass Bottle=Leere Glasflasche Empty Drinking Glass=Leeres Trinkglas Empty Heavy Steel Bottle=Leere schwere Stahlflasche Glass Fragments=Glasfragmente -Empty Vessel Shelf=Leeres Gefäßregal -Vessel Shelf (@1 items)=Gefäßregal (@1 Gegenstände) +Empty Vessels Shelf=Leeres Gefäßregal +Vessels Shelf (@1 items)=Gefäßregal (@1 Gegenstände) diff --git a/mods/xpanes/locale/template.txt b/mods/xpanes/locale/template.txt index 365fd9c7..08dfbbae 100644 --- a/mods/xpanes/locale/template.txt +++ b/mods/xpanes/locale/template.txt @@ -2,3 +2,5 @@ Glass Pane= Obsidian Glass Pane= Steel Bars= +Steel Bar Door= +Steel Bar Trapdoor= diff --git a/mods/xpanes/locale/xpanes.de.tr b/mods/xpanes/locale/xpanes.de.tr index c9e14e0b..9852753f 100644 --- a/mods/xpanes/locale/xpanes.de.tr +++ b/mods/xpanes/locale/xpanes.de.tr @@ -2,3 +2,5 @@ Glass Pane=Glasscheibe Obsidian Glass Pane=Obsidianglasscheibe Steel Bars=Stahlgitter +Steel Bar Door=Stahlgittertür +Steel Bar Trapdoor=Stahlgitterfalltür From 1c413ede9af690874a0354585134cce2dc335daf Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Sat, 5 Oct 2019 17:55:42 +0200 Subject: [PATCH 77/81] Use background9 for backwards compatibility --- mods/default/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/default/init.lua b/mods/default/init.lua index 015d3dcf..a4873834 100644 --- a/mods/default/init.lua +++ b/mods/default/init.lua @@ -17,7 +17,7 @@ minetest.register_on_joinplayer(function(player) player:set_formspec_prepend([[ bgcolor[#080808BB;true] background[5,5;1,1;gui_formbg.png;true] - background[5,5;1,1;gui_formbg.png;true;10] + background9[5,5;1,1;gui_formbg.png;true;10] listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF] ]]) end) From f87c3d05aec580a1bf49ffd23bc793b66cb7ba6c Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sun, 6 Oct 2019 14:06:02 +0200 Subject: [PATCH 78/81] player_api: Set correct visual size for legacy player model --- mods/player_api/api.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/player_api/api.lua b/mods/player_api/api.lua index e309b08d..0afd6790 100644 --- a/mods/player_api/api.lua +++ b/mods/player_api/api.lua @@ -54,6 +54,7 @@ function player_api.set_model(player, model_name) player:set_properties({ textures = {"player.png", "player_back.png"}, visual = "upright_sprite", + visual_size = {x = 1, y = 2}, collisionbox = {-0.3, 0.0, -0.3, 0.3, 1.75, 0.3}, stepheight = 0.6, eye_height = 1.625, From 0f369b43fe2e26d0e59cea48d8b2366c366775fb Mon Sep 17 00:00:00 2001 From: DrHackberry Date: Thu, 10 Oct 2019 21:18:25 +0200 Subject: [PATCH 79/81] French translation (#2514) --- mods/beds/locale/beds.fr.tr | 8 + mods/binoculars/locale/binoculars.fr.tr | 3 + mods/boats/locale/boats.fr.tr | 4 + mods/bones/locale/bones.fr.tr | 8 + mods/bucket/locale/bucket.fr.tr | 5 + mods/butterflies/locale/butterflies.fr.tr | 4 + mods/carts/locale/carts.fr.tr | 6 + mods/creative/locale/creative.fr.tr | 10 + mods/default/locale/default.fr.tr | 211 ++++++++++++++++++ mods/doors/locale/doors.fr.tr | 18 ++ mods/dye/locale/dye.fr.tr | 16 ++ mods/farming/locale/farming.fr.tr | 25 +++ mods/fire/locale/fire.fr.tr | 3 + mods/fireflies/locale/fireflies.fr.tr | 5 + mods/flowers/locale/flowers.fr.tr | 12 + mods/game_commands/locale/game_commands.fr.tr | 4 + mods/map/locale/map.fr.tr | 3 + mods/screwdriver/locale/screwdriver.fr.tr | 3 + mods/sethome/locale/sethome.fr.tr | 8 + mods/sfinv/locale/sfinv.fr.tr | 2 + mods/stairs/locale/stairs.fr.tr | 145 ++++++++++++ mods/tnt/locale/tnt.fr.tr | 4 + mods/vessels/locale/vessels.fr.tr | 8 + mods/walls/locale/walls.fr.tr | 4 + mods/wool/locale/wool.fr.tr | 16 ++ mods/xpanes/locale/xpanes.fr.tr | 6 + 26 files changed, 541 insertions(+) create mode 100644 mods/beds/locale/beds.fr.tr create mode 100644 mods/binoculars/locale/binoculars.fr.tr create mode 100644 mods/boats/locale/boats.fr.tr create mode 100644 mods/bones/locale/bones.fr.tr create mode 100644 mods/bucket/locale/bucket.fr.tr create mode 100644 mods/butterflies/locale/butterflies.fr.tr create mode 100644 mods/carts/locale/carts.fr.tr create mode 100644 mods/creative/locale/creative.fr.tr create mode 100644 mods/default/locale/default.fr.tr create mode 100644 mods/doors/locale/doors.fr.tr create mode 100644 mods/dye/locale/dye.fr.tr create mode 100644 mods/farming/locale/farming.fr.tr create mode 100644 mods/fire/locale/fire.fr.tr create mode 100644 mods/fireflies/locale/fireflies.fr.tr create mode 100644 mods/flowers/locale/flowers.fr.tr create mode 100644 mods/game_commands/locale/game_commands.fr.tr create mode 100644 mods/map/locale/map.fr.tr create mode 100644 mods/screwdriver/locale/screwdriver.fr.tr create mode 100644 mods/sethome/locale/sethome.fr.tr create mode 100644 mods/sfinv/locale/sfinv.fr.tr create mode 100644 mods/stairs/locale/stairs.fr.tr create mode 100644 mods/tnt/locale/tnt.fr.tr create mode 100644 mods/vessels/locale/vessels.fr.tr create mode 100644 mods/walls/locale/walls.fr.tr create mode 100644 mods/wool/locale/wool.fr.tr create mode 100644 mods/xpanes/locale/xpanes.fr.tr diff --git a/mods/beds/locale/beds.fr.tr b/mods/beds/locale/beds.fr.tr new file mode 100644 index 00000000..bddf9b59 --- /dev/null +++ b/mods/beds/locale/beds.fr.tr @@ -0,0 +1,8 @@ +# textdomain: beds +Fancy Bed=Lit chic +Simple Bed=Lit simple +Leave Bed=Se lever du lit +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 +You can only sleep at night.=Vous ne pouvez dormir que la nuit. diff --git a/mods/binoculars/locale/binoculars.fr.tr b/mods/binoculars/locale/binoculars.fr.tr new file mode 100644 index 00000000..3f8b0bc8 --- /dev/null +++ b/mods/binoculars/locale/binoculars.fr.tr @@ -0,0 +1,3 @@ +# textdomain: binoculars +Binoculars=Jumelles +Use with 'Zoom' key=Utiliser avec le bouton « Zoom » diff --git a/mods/boats/locale/boats.fr.tr b/mods/boats/locale/boats.fr.tr new file mode 100644 index 00000000..f469a0b6 --- /dev/null +++ b/mods/boats/locale/boats.fr.tr @@ -0,0 +1,4 @@ +# textdomain: boats +Boat cruise mode on=Bateau mode rapide activé +Boat cruise mode off=Bateau mode rapide désactivé +Boat=Bateau diff --git a/mods/bones/locale/bones.fr.tr b/mods/bones/locale/bones.fr.tr new file mode 100644 index 00000000..cfe01ee1 --- /dev/null +++ b/mods/bones/locale/bones.fr.tr @@ -0,0 +1,8 @@ +# textdomain: bones +Bones=Os +@1's old bones=Vieux os de @1 +@1 died at @2.=@1 est mort à @2. +@1 died at @2, and dropped their inventory.=@1 est mort à @2 et a laissé tomber son inventaire. +@1 died at @2, and bones were placed.=@1 est mort à @2 et ses os ont été placés. +@1's fresh bones=Os frais de @1 +@1's bones=Os de @1 diff --git a/mods/bucket/locale/bucket.fr.tr b/mods/bucket/locale/bucket.fr.tr new file mode 100644 index 00000000..5065150d --- /dev/null +++ b/mods/bucket/locale/bucket.fr.tr @@ -0,0 +1,5 @@ +# textdomain: bucket +Empty Bucket=Seau vide +Water Bucket=Seau d'eau +River Water Bucket=Seau d'eau de rivière +Lava Bucket=Seau de lave diff --git a/mods/butterflies/locale/butterflies.fr.tr b/mods/butterflies/locale/butterflies.fr.tr new file mode 100644 index 00000000..8f5c094c --- /dev/null +++ b/mods/butterflies/locale/butterflies.fr.tr @@ -0,0 +1,4 @@ +# textdomain: butterflies +White Butterfly=Papillon blanc +Red Butterfly=Papillon rouge +Violet Butterfly=Papillon violet diff --git a/mods/carts/locale/carts.fr.tr b/mods/carts/locale/carts.fr.tr new file mode 100644 index 00000000..b092f14d --- /dev/null +++ b/mods/carts/locale/carts.fr.tr @@ -0,0 +1,6 @@ +# textdomain: carts +Cart=Chariot +(Sneak+Click to pick up)=(Se baisser + clic pour ramasser) +Rail=Rail +Powered Rail=Rail de traction +Brake Rail=Rail de freinage diff --git a/mods/creative/locale/creative.fr.tr b/mods/creative/locale/creative.fr.tr new file mode 100644 index 00000000..695c0a19 --- /dev/null +++ b/mods/creative/locale/creative.fr.tr @@ -0,0 +1,10 @@ +# textdomain: creative +Allow player to use creative inventory=Permettre aux joueurs d'utiliser l'inventaire du mode créatif +Search=Rechercher +Reset=Réinitialiser +Previous page=Page précédente +Next page=Page suivante +All=Tout +Nodes=Nœuds +Tools=Outils +Items=Article diff --git a/mods/default/locale/default.fr.tr b/mods/default/locale/default.fr.tr new file mode 100644 index 00000000..2214e371 --- /dev/null +++ b/mods/default/locale/default.fr.tr @@ -0,0 +1,211 @@ +# textdomain: default +Locked Chest=Coffre verrouillé +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 +Stick=Baton +Paper=Papier +"@1" by @2=« @1 » de @2 +Book=Livre +Book with Text=Livre avec du texte +Skeleton Key=Squelette +Key to @1's @2=Clé pour @2 de @1 +Coal Lump=Morceau de charbon +Iron Lump=Morceau de fer +Copper Lump=Morceau de cuivre +Tin Lump=Morceau d'étain +Mese Crystal=Cristal de Mese +Gold Lump=Morceau d'or +Diamond=Diamant +Clay Lump=Morceau d'argile +Steel Ingot=Lingot d'acier +Copper Ingot=Lingot de cuivre +Tin Ingot=Lingot d'étain +Bronze Ingot=Lingot de bronze +Gold Ingot=Lingot d'or +Mese Crystal Fragment=Fragment de cristal de Mese +Clay Brick=Brique d'argile +Obsidian Shard=Tesson d'obsidienne +Flint=Silex +Blueberries=Myrtille +Furnace is empty=Le four est vide +100% (output full)=100% (Sortie pleine) +@1%=@1% +Empty=Vide +Not cookable=Ne se cuit pas +Furnace active=Four actif +Furnace inactive=Four inactif +(Item: @1; Fuel: @2)=(Article: @1; Carburant: @2) +Furnace=Four +Stone=Pierre +Cobblestone=Pavé +Stone Brick=Brique de pierre +Stone Block=Bloc de pierre +Mossy Cobblestone=Pavé moussu +Desert Stone=Pierre du désert +Desert Cobblestone=Pavé de pierre du désert +Desert Stone Brick=Brique de pierre du désert +Desert Stone Block=Bloc de pierre du désert +Sandstone=Grès +Sandstone Brick=Brique de grès +Sandstone Block=Bloc de grès +Desert Sandstone=Grès du désert +Desert Sandstone Brick=Brique de grès du désert +Desert Sandstone Block=Bloc de grès du désert +Silver Sandstone=Grès argenté +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 +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 Dry Grass=Terre avec de l'herbe sèche +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 +Dry Dirt=Terre sèche +Dry Dirt with Dry Grass=Terre sèche avec de l'herbe sèche +Permafrost=Pergélisol +Permafrost with Stones=Pergélisol avec de la pierre +Permafrost with Moss=Pergélisol avec de la mousse +Sand=Sable +Desert Sand=Sable du désert +Silver Sand=Sable argenté +Gravel=Gravier +Clay=Argile +Snow=Neige +Snow Block=Bloc de neige +Ice=Glace +Cave Ice=Glace de grotte +Apple Tree=Pommier +Apple Wood Planks=Planche de pommier +Apple Tree Sapling=Pousse de pommier +Apple Tree Leaves=Feuilles de pommier +Apple=Pomme +Apple Marker=Marqueur de pomme +Jungle Tree=Arbre de la jungle +Jungle Wood Planks=Planche d'arbre de la jungle +Jungle Tree Leaves=Feuilles d'arbre de la jungle +Jungle Tree Sapling=Pousse d'arbre de la jungle +Emergent Jungle Tree Sapling=Pousse d'arbre de la jungle émergent +Pine Tree=Pin +Pine Wood Planks=Planche de pin +Pine Needles=Aiguilles de pin +Pine Tree Sapling=Pousse de pin +Acacia Tree=Acacia +Acacia Wood Planks=Planche d'acacia +Acacia Tree Leaves=Feuilles d'acacia +Acacia Tree Sapling=Pousse d'acacia +Aspen Tree=Tremble +Aspen Wood Planks=Planche de tremble +Aspen Tree Leaves=Feuilles de tremble +Aspen Tree Sapling=Pousse de tremble +Coal Ore=Minerai de charbon +Coal Block=Bloc de charbon +Iron Ore=Bloc de fer +Steel Block=Bloc d'acier +Copper Ore=Minerai de cuivre +Copper Block=Bloc de cuivre +Tin Ore=Minerai d'étain +Tin Block=Bloc d'étain +Bronze Block=Bloc de bronze +Mese Ore=Minerai de Mese +Mese Block=Bloc de Mese +Gold Ore=Minerai d'or +Gold Block=Bloc d'or +Diamond Ore=Minerai de diamant +Diamond Block=Bloc de diamant +Cactus=Cactus +Large Cactus Seedling=Grand plan de cactus +Papyrus=Papyrus +Dry Shrub=Arbuste sec +Jungle Grass=Herbe de la jungle +Grass=Herbe +Dry Grass=Herbe sèche +Fern=Fougère +Marram Grass=Ammophile +Bush Stem=Tige de buisson +Bush Leaves=Feuilles de buisson +Bush Sapling=Pousse de buisson +Blueberry Bush Leaves with Berries=Buisson de myrtille avec des myrtilles +Blueberry Bush Leaves=Feuilles de buisson à myrtilles +Blueberry Bush Sapling=Pousse de buisson à myrtilles +Acacia Bush Stem=Tige de buisson d'acacia +Acacia Bush Leaves=Feuilles de buisson d'acacia +Acacia Bush Sapling=Pousses de buisson d'acacia +Pine Bush Stem=Tige de buisson de pin +Pine Bush Needles=Aiguilles de buisson de pin +Pine Bush Sapling=Pousse de buisson de pin +Kelp=Varech +Green Coral=Corail vert +Pink Coral=Corail rose +Cyan Coral=Corail cyan +Brown Coral=Corail marron +Orange Coral=Corail orange +Coral Skeleton=Squelette de corail +Water Source=Source d'eau +Flowing Water=Ecoulement d'eau +River Water Source=Source d'eau de rivière +Flowing River Water=Ecoulement d'eau de rivière +Lava Source=Source de lave +Flowing Lava=Ecoulement de lave +Empty Bookshelf=Bibliothèque vide +Bookshelf (@1 written, @2 empty books)=Bibliothèque (@1 écrits, @2 livres vides) +Bookshelf=Bibliothèque +Text too long=Texte trop longue +Wooden Sign=Panneau en bois +Steel Sign=Panneau en acier +Wooden Ladder=Echelle en bois +Steel Ladder=Echelle 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 +Pine Wood Fence=Barrière de bois de pin +Aspen Wood Fence=Barrière de bois de tremble +Apple Wood Fence Rail=Clôture de bois de pommier +Acacia Wood Fence Rail=Clôture de bois d'acacia +Jungle Wood Fence Rail=Clôture de bois de la jungle +Pine Wood Fence Rail=Clôture de bois de pin +Aspen Wood Fence Rail=Clôture de bois de tremble +Glass=Verre +Obsidian Glass=Verre d'obsidienne +Brick Block=Bloc de brique +Mese Lamp=Lampe de Mese +Mese Post Light=Réverbère de Mese +Cloud=Nuage +Wooden Pickaxe=Pioche en bois +Stone Pickaxe=Pioche en pierre +Bronze Pickaxe=Pioche en bronze +Steel Pickaxe=Pioche en acier +Mese Pickaxe=Pioche de Mese +Diamond Pickaxe=Pioche en diamant +Wooden Shovel=Pelle en bois +Stone Shovel=Pelle en pierre +Bronze Shovel=Pelle en bronze +Steel Shovel=Pelle en acier +Mese Shovel=Pelle en Mese +Diamond Shovel=Pelle en diamant +Wooden Axe=Hache en bois +Stone Axe=Hache en pierre +Bronze Axe=Hache en bronze +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 +Key=Clé +Torch=Torche +@1 will intersect protection on growth.=@1 chevauchera la zone protégée avec la croissance. +Title:=Titre : +Contents:=Contenu : +Save=Sauvegarder +by @1=de @1 +Page @1 of @2=Page @1 sur @2 +"@1"=« @1 » diff --git a/mods/doors/locale/doors.fr.tr b/mods/doors/locale/doors.fr.tr new file mode 100644 index 00000000..930f75cc --- /dev/null +++ b/mods/doors/locale/doors.fr.tr @@ -0,0 +1,18 @@ +# textdomain: doors +Hidden Door Segment=Segment de porte cachée +Owned by @1=Possédée par @1 +You do not own this locked door.=Cette porte vérouillée ne vous appartient pas. +a locked door=une porte verouillée +Wooden Door=Porte en bois +Steel Door=Porte en acier +Glass Door=Porte en verre +Obsidian Glass Door=Porte en verre d'obsidienne +You do not own this trapdoor.=Vous ne possédez pas cette trappe. +a locked trapdoor=une trappe verouillée +Wooden Trapdoor=Trappe en bois +Steel Trapdoor=Trappe en acier +Apple Wood Fence Gate=Porte de clôture en bois de pommier +Acacia Wood Fence Gate=Porte de clôture en bois d'acacia +Jungle Wood Fence Gate=Porte de clôture en bois de la jungle +Pine Wood Fence Gate=Porte de clôture en bois de pin +Aspen Wood Fence Gate=Porte de clôture en bois de tremble diff --git a/mods/dye/locale/dye.fr.tr b/mods/dye/locale/dye.fr.tr new file mode 100644 index 00000000..390fa07c --- /dev/null +++ b/mods/dye/locale/dye.fr.tr @@ -0,0 +1,16 @@ +# textdomain: dye +White Dye=Colorant blanc +Grey Dye=Colorant gris +Dark Grey Dye=Colorant gris foncé +Black Dye=Colorant noir +Violet Dye=Colorant violet +Blue Dye=Colorant bleu +Cyan Dye=Colorant cyan +Dark Green Dye=Colorant vert foncé +Green Dye=Colorant vert +Yellow Dye=Colorant jaune +Brown Dye=Colorant marron +Orange Dye=Colorant orange +Red Dye=Colorant rouge +Magenta Dye=Colorant magenta +Pink Dye=Colorant rose diff --git a/mods/farming/locale/farming.fr.tr b/mods/farming/locale/farming.fr.tr new file mode 100644 index 00000000..cd059971 --- /dev/null +++ b/mods/farming/locale/farming.fr.tr @@ -0,0 +1,25 @@ +# textdomain: farming +Wooden Hoe=Houe en bois +Stone Hoe=Houe en pierre +Steel Hoe=Houe en acier +Bronze Hoe=Houe en bronze +Mese Hoe=Houe en Mese +Diamond Hoe=Houe en diamant +Wheat Seed=Grain de blé +Flour=Farine +Bread=Pain +Cotton Seed=Graine de coton +String=Ficelle +Soil=Sol +Wet Soil=Sol humide +Dry Soil=Sol sec +Wet Dry Soil=Sol sec et humide +Desert Sand Soil=Sol de sable du désert +Wet Desert Sand Soil=Sol de sable du désert humide +Straw=Paille +Straw Stair=Escalier de paille +Straw Slab=Dalle de paille +Inner Straw Stair=Escalier intérieur en paille +Outer Straw Stair=Escalier extérieur en paille +Wheat=Blé +Cotton=Coton diff --git a/mods/fire/locale/fire.fr.tr b/mods/fire/locale/fire.fr.tr new file mode 100644 index 00000000..268e823a --- /dev/null +++ b/mods/fire/locale/fire.fr.tr @@ -0,0 +1,3 @@ +# textdomain: fire +Permanent Flame=Flamme permanente +Flint and Steel=Briquet à silex en acier diff --git a/mods/fireflies/locale/fireflies.fr.tr b/mods/fireflies/locale/fireflies.fr.tr new file mode 100644 index 00000000..3deda664 --- /dev/null +++ b/mods/fireflies/locale/fireflies.fr.tr @@ -0,0 +1,5 @@ +# textdomain: fireflies +Firefly=Luciole +Hidden Firefly=Luciole cachée +Bug Net=Filet à papillon +Firefly in a Bottle=Luciole en bouteille diff --git a/mods/flowers/locale/flowers.fr.tr b/mods/flowers/locale/flowers.fr.tr new file mode 100644 index 00000000..41e0d008 --- /dev/null +++ b/mods/flowers/locale/flowers.fr.tr @@ -0,0 +1,12 @@ +# textdomain: flowers +Red Rose=Rose rouge +Orange Tulip=Tulipe orange +Yellow Dandelion=Pissenlit jaune +Green Chrysanthemum=Chrysanthème vert +Blue Geranium=Géranium bleu +Viola=Violette +White Dandelion=Pissenlit blanc +Black Tulip=Tulipe noire +Red Mushroom=Champignon rouge +Brown Mushroom=Champignon brun +Waterlily=Nénuphar diff --git a/mods/game_commands/locale/game_commands.fr.tr b/mods/game_commands/locale/game_commands.fr.tr new file mode 100644 index 00000000..0e295d68 --- /dev/null +++ b/mods/game_commands/locale/game_commands.fr.tr @@ -0,0 +1,4 @@ +# textdomain: game_commands +Kill yourself to respawn=Se suicider pour réapparaître +No static_spawnpoint defined=Pas de point d'apparition défini +You need to be online to be killed!=Vous devez être en ligne pour être tué ! diff --git a/mods/map/locale/map.fr.tr b/mods/map/locale/map.fr.tr new file mode 100644 index 00000000..29f8e208 --- /dev/null +++ b/mods/map/locale/map.fr.tr @@ -0,0 +1,3 @@ +# textdomain: map +Mapping Kit=Kit de carthographie +Use with 'Minimap' key=Utiliser avec le bouton « Minimap » diff --git a/mods/screwdriver/locale/screwdriver.fr.tr b/mods/screwdriver/locale/screwdriver.fr.tr new file mode 100644 index 00000000..fe34a9b6 --- /dev/null +++ b/mods/screwdriver/locale/screwdriver.fr.tr @@ -0,0 +1,3 @@ +# textdomain: screwdriver +Screwdriver=Tournevis +(left-click rotates face, right-click rotates axis)=(clic gauche pour changer de face, clic droit pour changer d'axe) diff --git a/mods/sethome/locale/sethome.fr.tr b/mods/sethome/locale/sethome.fr.tr new file mode 100644 index 00000000..852621d6 --- /dev/null +++ b/mods/sethome/locale/sethome.fr.tr @@ -0,0 +1,8 @@ +# textdomain: sethome +Can use /sethome and /home=Peut utiliser /sethome et /home +Teleport you to your home point=Vous téléporter à votre domicile +Teleported to home!=Téléporté à votre domicile ! +Set a home using /sethome=Définir un domicile en utilisant /sethome +Set your home point=Définir votre domicile +Home set!=Domicile défini ! +Player not found!=Joueur non trouvé ! diff --git a/mods/sfinv/locale/sfinv.fr.tr b/mods/sfinv/locale/sfinv.fr.tr new file mode 100644 index 00000000..6d597353 --- /dev/null +++ b/mods/sfinv/locale/sfinv.fr.tr @@ -0,0 +1,2 @@ +# textdomain:sfinv +Crafting=Artisanat diff --git a/mods/stairs/locale/stairs.fr.tr b/mods/stairs/locale/stairs.fr.tr new file mode 100644 index 00000000..2dd6594c --- /dev/null +++ b/mods/stairs/locale/stairs.fr.tr @@ -0,0 +1,145 @@ +# textdomain: stairs +Glass Stair=Escalier de verre +Glass Slab=Dalle de verre +Inner Glass Stair=Escalier intérieur de verre +Outer Glass Stair=Escalier extérieur de verre +Obsidian Glass Stair=Escalier de verre d'obsidienne +Obsidian Glass Slab=Dalle de verre d'obsidienne +Inner Obsidian Glass Stair=Escalier intérieur de verre d'obsidienne +Outer Obsidian Glass Stair=Escalier extérieur de verre d'obsidienne +Wooden Stair=Escalier en bois +Inner Wooden Stair=Escalier intérieur en bois +Outer Wooden Stair=Escalier extérieur en bois +Wooden Slab=Dalle de bois +Jungle Wood Stair=Escalier en bois de la jungle +Inner Jungle Wood Stair=Escalier intérieur en bois de la jungle +Outer Jungle Wood Stair=Escalier extérieur en bois de la jungle +Jungle Wood Slab=Dalle en bois de la jungle +Pine Wood Stair=Escalier en pin +Inner Pine Wood Stair=Escalier intérieur en pin +Outer Pine Wood Stair=Escalier extérieur en pin +Pine Wood Slab=Dalle en pin +Acacia Wood Stair=Escalier en acacia +Inner Acacia Wood Stair=Escalier intérieur en acacia +Outer Acacia Wood Stair=Escalier extérieur en acacia +Acacia Wood Slab=Dalle en acacia +Aspen Wood Stair=Escalier en tremble +Inner Aspen Wood Stair=Escalier intérieur en tremble +Outer Aspen Wood Stair=Escalier extérieur en tremble +Aspen Wood Slab=Dalle en tremble +Stone Stair=Escalier de pierre +Inner Stone Stair=Escalier intérieur de pierre +Outer Stone Stair=Escalier extérieur de pierre +Stone Slab=Dalle de pierre +Cobblestone Stair=Escalier en pavé +Inner Cobblestone Stair=Escalier intérieur en pavé +Outer Cobblestone Stair=Escalier extérieur en pavé +Cobblestone Slab=Dalle en pavé +Mossy Cobblestone Stair=Escalier en pavé moussu +Inner Mossy Cobblestone Stair=Escalier intérieur en pavé moussu +Outer Mossy Cobblestone Stair=Escalier extérieur en pavé moussu +Mossy Cobblestone Slab=Dalle en pavé moussu +Stone Brick Stair=Escalier en brique de pierre +Inner Stone Brick Stair=Escalier intérieur en brique de pierre +Outer Stone Brick Stair=Escalier extérieur en brique de pierre +Stone Brick Slab=Dalle en brique de pierre +Stone Block Stair=Escalier en bloc de pierre +Inner Stone Block Stair=Escalier intérieur en bloc de pierre +Outer Stone Block Stair=Escalier extérieur en bloc de pierre +Stone Block Slab=Dalle en bloc de pierre +Desert Stone Stair=Escalier en pierre du désert +Inner Desert Stone Stair=Escalier intérieur en pierre du désert +Outer Desert Stone Stair=Escalier extérieur en pierre du désert +Desert Stone Slab=Dalle en pierre du désert +Desert Cobblestone Stair=Escalier en pavé du désert +Inner Desert Cobblestone Stair=Escalier intérieur en pavé du désert +Outer Desert Cobblestone Stair=Escalier extérieur en pavé du désert +Desert Cobblestone Slab=Dalle en pavé du désert +Desert Stone Brick Stair=Escalier en brique de pierre du désert +Inner Desert Stone Brick Stair=Escalier intérieur en brique de pierre du désert +Outer Desert Stone Brick Stair=Escalier extérieur en brique de pierre du désert +Desert Stone Brick Slab=Dalle en brique de pierre du désert +Desert Stone Block Stair=Escalier en bloc de pierre du désert +Inner Desert Stone Block Stair=Escalier intérieur en bloc de pierre du désert +Outer Desert Stone Block Stair=Escalier extérieur en bloc de pierre du désert +Desert Stone Block Slab=Dalle en bloc de pierre du désert +Sandstone Stair=Escalier en grès +Inner Sandstone Stair=Escalier intérieur en grès +Outer Sandstone Stair=Escalier extérieur en grès +Sandstone Slab=Dalle en grès +Sandstone Brick Stair=Escalier en brique de grès +Inner Sandstone Brick Stair=Escalier intérieur en brique de grès +Outer Sandstone Brick Stair=Escalier extérieur en brique de grès +Sandstone Brick Slab=Dalle en brique de grès +Sandstone Block Stair=Escalier en bloc de grès +Inner Sandstone Block Stair=Escalier intérieur en bloc de grès +Outer Sandstone Block Stair=Escalier extérieur en bloc de grès +Sandstone Block Slab=Dalle en bloc de grès +Desert Sandstone Stair=Escalier en grès du désert +Inner Desert Sandstone Stair=Escalier intérieur en grès du désert +Outer Desert Sandstone Stair=Escalier extérieur en grès du désert +Desert Sandstone Slab=Dalle en grès du désert +Desert Sandstone Brick Stair=Escalier en brique de grès du désert +Inner Desert Sandstone Brick Stair=Escalier intérieur en brique de grès du désert +Outer Desert Sandstone Brick Stair=Escalier extérieur en brique de grès du désert +Desert Sandstone Brick Slab=Dalle en brique de grès du désert +Desert Sandstone Block Stair=Escalier en bloc de grès du désert +Inner Desert Sandstone Block Stair=Escalier intérieur en bloc de grès du désert +Outer Desert Sandstone Block Stair=Escalier extérieur en bloc de grès du désert +Desert Sandstone Block Slab=Dalle en bloc de grès du désert +Silver Sandstone Stair=Escalier en grès argenté +Inner Silver Sandstone Stair=Escalier intérieur en grès argenté +Outer Silver Sandstone Stair=Escalier extérieur en grès argenté +Silver Sandstone Slab=Dalle en grès argenté +Silver Sandstone Brick Stair=Escalier en brique de grès argenté +Inner Silver Sandstone Brick Stair=Escalier intérieur en brique de grès argenté +Outer Silver Sandstone Brick Stair=Escalier extérieur en brique de grès argenté +Silver Sandstone Brick Slab=Dalle en brique de grès argenté +Silver Sandstone Block Stair=Escalier en bloc de grès argenté +Inner Silver Sandstone Block Stair=Escalier intérieur en bloc de grès argenté +Outer Silver Sandstone Block Stair=Escalier extérieur en bloc de grès argenté +Silver Sandstone Block Slab=Dalle en bloc de grès argenté +Obsidian Stair=Escalier en obsidienne +Inner Obsidian Stair=Escalier intérieur en obsidienne +Outer Obsidian Stair=Escalier extérieur en obsidienne +Obsidian Slab=Dalle en obsidienne +Obsidian Brick Stair=Escalier en brique d'obsidienne +Inner Obsidian Brick Stair=Escalier intérieur en brique d'obsidienne +Outer Obsidian Brick Stair=Escalier extérieur en brique d'obsidienne +Obsidian Brick Slab=Dalle en brique d'obsidienne +Obsidian Block Stair=Escalier en bloc d'obsidienne +Inner Obsidian Block Stair=Escalier intérieur en bloc d'obsidienne +Outer Obsidian Block Stair=Escalier extérieur en bloc d'obsidienne +Obsidian Block Slab=Dalle en bloc d'obsidienne +Brick Stair=Escalier en brique +Inner Brick Stair=Escalier intérieur en brique +Outer Brick Stair=Escalier extérieur en brique +Brick Slab=Dalle en brique +Steel Block Stair=Escalier en acier +Inner Steel Block Stair=Escalier intérieur en acier +Outer Steel Block Stair=Escalier extérieur en acier +Steel Block Slab=Dalle en acier +Tin Block Stair=Escalier en bloc d'étain +Inner Tin Block Stair=Escalier intérieur en bloc d'étain +Outer Tin Block Stair=Escalier extérieur en bloc d'étain +Tin Block Slab=Dalle en bloc d'étain +Copper Block Stair=Escalier en bloc de cuivre +Inner Copper Block Stair=Escalier intérieur en bloc de cuivre +Outer Copper Block Stair=Escalier extérieur en bloc de cuivre +Copper Block Slab=Dalle en bloc de cuivre +Bronze Block Stair=Escalier en bronze +Inner Bronze Block Stair=Escalier intérieur en bronze +Outer Bronze Block Stair=Escalier extérieur en bronze +Bronze Block Slab=Dalle en bronze +Gold Block Stair=Escalier en bloc d'or +Inner Gold Block Stair=Escalier intérieur en bloc d'or +Outer Gold Block Stair=Escalier extérieur en bloc d'or +Gold Block Slab=Dalle en bloc d'or +Ice Stair=Escalier de glace +Inner Ice Stair=Escalier intérieur de glace +Outer Ice Stair=Escalier extérieur de glace +Ice Slab=Dalle de glace +Snow Block Stair=Escalier en bloc de neige +Inner Snow Block Stair=Escalier intérieur en bloc de neige +Outer Snow Block Stair=Escalier extérieur en bloc de neige +Snow Block Slab=Escalier en bloc de neige diff --git a/mods/tnt/locale/tnt.fr.tr b/mods/tnt/locale/tnt.fr.tr new file mode 100644 index 00000000..3fe48fb0 --- /dev/null +++ b/mods/tnt/locale/tnt.fr.tr @@ -0,0 +1,4 @@ +# textdomain: tnt +Gun Powder=Poudre à canon +TNT Stick=Bâton de TNT +TNT=TNT diff --git a/mods/vessels/locale/vessels.fr.tr b/mods/vessels/locale/vessels.fr.tr new file mode 100644 index 00000000..4e073dca --- /dev/null +++ b/mods/vessels/locale/vessels.fr.tr @@ -0,0 +1,8 @@ +# textdomain: vessels +Vessels Shelf=Etagère à récipient +Empty Glass Bottle=Bouteille de verre vide +Empty Drinking Glass=Verre vide +Empty Heavy Steel Bottle=Bouteille d'acier lourde vide +Glass Fragments=Fragments de verre +Empty Vessels Shelf=Etagère à récipient vide +Vessels Shelf (@1 items)=Etagère à récipient (@1 articles) diff --git a/mods/walls/locale/walls.fr.tr b/mods/walls/locale/walls.fr.tr new file mode 100644 index 00000000..8dcb6252 --- /dev/null +++ b/mods/walls/locale/walls.fr.tr @@ -0,0 +1,4 @@ +# textdomain: walls +Cobblestone Wall=Mur en pavé +Mossy Cobblestone Wall=Mur en pavé moussu +Desert Cobblestone Wall=Mur en pavé du désert diff --git a/mods/wool/locale/wool.fr.tr b/mods/wool/locale/wool.fr.tr new file mode 100644 index 00000000..48a60a7e --- /dev/null +++ b/mods/wool/locale/wool.fr.tr @@ -0,0 +1,16 @@ +# textdomain: wool +White Wool=Laine blanche +Grey Wool=Laine grise +Dark Grey Wool=Laine grise foncée +Black Wool=Laine noire +Violet Wool=Laine violette +Blue Wool=Laine bleue +Cyan Wool=Laine cyan +Dark Green Wool=Laine verte foncée +Green Wool=Laine verte +Yellow Wool=Laine jaune +Brown Wool=Laine marron +Orange Wool=Laine orange +Red Wool=Laine rouge +Magenta Wool=Laine magenta +Pink Wool=Laine rose diff --git a/mods/xpanes/locale/xpanes.fr.tr b/mods/xpanes/locale/xpanes.fr.tr new file mode 100644 index 00000000..c7517996 --- /dev/null +++ b/mods/xpanes/locale/xpanes.fr.tr @@ -0,0 +1,6 @@ +# textdomain: xpanes +Glass Pane=Panneau de verre +Obsidian Glass Pane=Panneau de verre d'obsidienne +Steel Bars=Barreaux d'acier +Steel Bar Door=Porte en barreaux d'acier +Steel Bar Trapdoor=Trappe en barreaux d'acier From a00ff24df967195bf0faf8fb5464c9894413ba51 Mon Sep 17 00:00:00 2001 From: JDiaz Date: Thu, 10 Oct 2019 21:19:20 +0200 Subject: [PATCH 80/81] Spanish Translation (#2505) --- mods/beds/locale/beds.es.tr | 8 + mods/binoculars/locale/binoculars.es.tr | 3 + mods/boats/locale/boats.es.tr | 4 + mods/bones/locale/bones.es.tr | 8 + mods/bucket/locale/bucket.es.tr | 5 + mods/butterflies/locale/butterflies.es.tr | 4 + mods/carts/locale/carts.es.tr | 6 + mods/creative/locale/creative.es.tr | 10 + mods/default/locale/default.es.tr | 211 ++++++++++++++++++ mods/doors/locale/doors.es.tr | 18 ++ mods/dye/locale/dye.es.tr | 16 ++ mods/farming/locale/farming.es.tr | 25 +++ mods/fire/locale/fire.es.tr | 3 + mods/fireflies/locale/fireflies.es.tr | 5 + mods/flowers/locale/flowers.es.tr | 12 + mods/game_commands/locale/game_commands.es.tr | 4 + mods/map/locale/map.es.tr | 3 + mods/screwdriver/locale/screwdriver.es.tr | 3 + mods/sethome/locale/sethome.es.tr | 8 + mods/sfinv/locale/sfinv.es.tr | 2 + mods/stairs/locale/stairs.es.tr | 145 ++++++++++++ mods/tnt/locale/tnt.es.tr | 4 + mods/vessels/locale/vessels.es.tr | 8 + mods/walls/locale/walls.es.tr | 4 + mods/wool/locale/wool.es.tr | 16 ++ mods/xpanes/locale/xpanes.es.tr | 6 + 26 files changed, 541 insertions(+) create mode 100644 mods/beds/locale/beds.es.tr create mode 100644 mods/binoculars/locale/binoculars.es.tr create mode 100644 mods/boats/locale/boats.es.tr create mode 100644 mods/bones/locale/bones.es.tr create mode 100644 mods/bucket/locale/bucket.es.tr create mode 100644 mods/butterflies/locale/butterflies.es.tr create mode 100644 mods/carts/locale/carts.es.tr create mode 100644 mods/creative/locale/creative.es.tr create mode 100644 mods/default/locale/default.es.tr create mode 100644 mods/doors/locale/doors.es.tr create mode 100644 mods/dye/locale/dye.es.tr create mode 100644 mods/farming/locale/farming.es.tr create mode 100644 mods/fire/locale/fire.es.tr create mode 100644 mods/fireflies/locale/fireflies.es.tr create mode 100644 mods/flowers/locale/flowers.es.tr create mode 100644 mods/game_commands/locale/game_commands.es.tr create mode 100644 mods/map/locale/map.es.tr create mode 100644 mods/screwdriver/locale/screwdriver.es.tr create mode 100644 mods/sethome/locale/sethome.es.tr create mode 100644 mods/sfinv/locale/sfinv.es.tr create mode 100644 mods/stairs/locale/stairs.es.tr create mode 100644 mods/tnt/locale/tnt.es.tr create mode 100644 mods/vessels/locale/vessels.es.tr create mode 100644 mods/walls/locale/walls.es.tr create mode 100644 mods/wool/locale/wool.es.tr create mode 100644 mods/xpanes/locale/xpanes.es.tr diff --git a/mods/beds/locale/beds.es.tr b/mods/beds/locale/beds.es.tr new file mode 100644 index 00000000..0543e7fc --- /dev/null +++ b/mods/beds/locale/beds.es.tr @@ -0,0 +1,8 @@ +# textdomain: beds +Fancy Bed=Cama de lujo +Simple Bed=Cama sencilla +Leave Bed=Abandonar cama +Good morning.=Buenos días. +@1 of @2 players are in bed=@1 de @2 jugadores están en cama +Force night skip=Forzar evitar noche +You can only sleep at night.=Sólo puedes dormir por la noche. diff --git a/mods/binoculars/locale/binoculars.es.tr b/mods/binoculars/locale/binoculars.es.tr new file mode 100644 index 00000000..7b7e77d7 --- /dev/null +++ b/mods/binoculars/locale/binoculars.es.tr @@ -0,0 +1,3 @@ +# textdomain: binoculars +Binoculars=Prismáticos +Use with 'Zoom' key=Usar con la tecla 'Zoom' diff --git a/mods/boats/locale/boats.es.tr b/mods/boats/locale/boats.es.tr new file mode 100644 index 00000000..b9adb72e --- /dev/null +++ b/mods/boats/locale/boats.es.tr @@ -0,0 +1,4 @@ +# textdomain: boats +Boat cruise mode on=Modo crucero en bote activado +Boat cruise mode off=Modo crucero en bote desactivado +Boat=Bote diff --git a/mods/bones/locale/bones.es.tr b/mods/bones/locale/bones.es.tr new file mode 100644 index 00000000..9c45513c --- /dev/null +++ b/mods/bones/locale/bones.es.tr @@ -0,0 +1,8 @@ +# textdomain: bones +Bones=Huesos +@1's old bones=Huesos antiguos de @1 +@1 died at @2.=@1 murió en @2. +@1 died at @2, and dropped their inventory.=@1 murió en @2, y su inventario se desprendió. +@1 died at @2, and bones were placed.=@1 murió en @2, y sus huesos fueron depositados. +@1's fresh bones=Huesos recientes de @1 +@1's bones=Huesos de @1 diff --git a/mods/bucket/locale/bucket.es.tr b/mods/bucket/locale/bucket.es.tr new file mode 100644 index 00000000..91a06233 --- /dev/null +++ b/mods/bucket/locale/bucket.es.tr @@ -0,0 +1,5 @@ +# textdomain: bucket +Empty Bucket=Cubo vacío +Water Bucket=Cubo con agua +River Water Bucket=Cubo con agua de río +Lava Bucket=Cubo con lava diff --git a/mods/butterflies/locale/butterflies.es.tr b/mods/butterflies/locale/butterflies.es.tr new file mode 100644 index 00000000..59a28eb9 --- /dev/null +++ b/mods/butterflies/locale/butterflies.es.tr @@ -0,0 +1,4 @@ +# textdomain: butterflies +White Butterfly=Mariposa blanca +Red Butterfly=Mariposa roja +Violet Butterfly=Mariposa violeta diff --git a/mods/carts/locale/carts.es.tr b/mods/carts/locale/carts.es.tr new file mode 100644 index 00000000..c0857a1b --- /dev/null +++ b/mods/carts/locale/carts.es.tr @@ -0,0 +1,6 @@ +# textdomain: carts +Cart=Vagoneta +(Sneak+Click to pick up)=(Agacharse+Clic para recoger) +Rail=Raíl +Powered Rail=Raíl energizado +Brake Rail=Raíl de frenado diff --git a/mods/creative/locale/creative.es.tr b/mods/creative/locale/creative.es.tr new file mode 100644 index 00000000..f4e39a70 --- /dev/null +++ b/mods/creative/locale/creative.es.tr @@ -0,0 +1,10 @@ +# textdomain: creative +Allow player to use creative inventory=Permitir al jugador usar el inventario creativo +Search=Buscar +Reset=Resetear +Previous page=Pág. siguiente +Next page=Pág. anterior +All=Todos +Nodes=Nodos +Tools=Herramientas +Items=Objetos diff --git a/mods/default/locale/default.es.tr b/mods/default/locale/default.es.tr new file mode 100644 index 00000000..e55c1332 --- /dev/null +++ b/mods/default/locale/default.es.tr @@ -0,0 +1,211 @@ +# 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 +Stick=Palo +Paper=Papel +"@1" by @2="@1" por @2 +Book=Libro +Book with Text=Libro escrito +Skeleton Key=Llave esqueleto +Key to @1's @2=Llave para @2 de @1 +Coal Lump=Fragmento de carbón +Iron Lump=Pepita de hierro +Copper Lump=Pepita de cobre +Tin Lump=Pepita de estaño +Mese Crystal=Cristal de mese +Gold Lump=Pepita de oro +Diamond=Diamante +Clay Lump=Fragmento de arcilla +Steel Ingot=Lingote de acero +Copper Ingot=Lingote de cobre +Tin Ingot=Lingote de estaño +Bronze Ingot=Lingote de bronce +Gold Ingot=Lingote de oro +Mese Crystal Fragment=Fragmento de cristal de mese +Clay Brick=Ladrillo de arcilla +Obsidian Shard=Esquirla de obsidiana +Flint=Pedernal +Blueberries=Arándanos +Furnace is empty=El horno está vacío +100% (output full)=100% (salida completa) +@1%=@1% +Empty=Vacío +Not cookable=No se puede cocinar +Furnace active=Horno activado +Furnace inactive=Horno desactivado +(Item: @1; Fuel: @2)=(Objeto: @1; Combustible: @2) +Furnace=Horno +Stone=Piedra +Cobblestone=Adoquín +Stone Brick=Ladrillo de piedra +Stone Block=Bloque de piedra +Mossy Cobblestone=Adoquín musgoso +Desert Stone=Piedra desértica +Desert Cobblestone=Adoquín desértico +Desert Stone Brick=Ladrillo de piedra desértica +Desert Stone Block=Bloque de piedra desértica +Sandstone=Piedra arenisca +Sandstone Brick=Ladrillo de arenisca +Sandstone Block=Bloque de arenisca +Desert Sandstone=Piedra arenisca desértica +Desert Sandstone Brick=Ladrillo de arenisca desértica +Desert Sandstone Block=Bloque de arenisca deśertica +Silver Sandstone=Piedra arenisca plateada +Silver Sandstone Brick=Ladrillo de arenisca plateada +Silver Sandstone Block=Bloque de arenisca plateada +Obsidian=Obsidiana +Obsidian Brick=Ladrillo de obsidiana +Obsidian Block=Bloque de obsidiana +Dirt=Tierra +Dirt with Grass=Tierra con pasto +Dirt with Grass and Footsteps=Tierra con pasto y pisadas +Dirt with Dry Grass=Tierra con pasto seco +Dirt with Snow=Tierra con nieve +Dirt with Rainforest Litter=Tierra con hojarasca de selva tropical +Dirt with Coniferous Litter=Tierra con hojarasca de coníferas +Dry Dirt=Tierra Seca +Dry Dirt with Dry Grass=Tierra seca con pasto seco +Permafrost=Permafrost +Permafrost with Stones=Permafrost pedregoso +Permafrost with Moss=Permafrost musgoso +Sand=Arena +Desert Sand=Arena desértica +Silver Sand=Arena plateada +Gravel=Gravilla +Clay=Arcilla +Snow=Nieve +Snow Block=Bloque de nieve +Ice=Hielo +Cave Ice=Hielo de cueva +Apple Tree=Madera de manzano +Apple Wood Planks=Tablas de manzano +Apple Tree Sapling=Retoño de manzano +Apple Tree Leaves=Hojas de manzano +Apple=Manzana +Apple Marker=Marcador de manzano +Jungle Tree=Madera de árbol tropical +Jungle Wood Planks=Tablas de madera tropical +Jungle Tree Leaves=Hojas de árbol tropical +Jungle Tree Sapling=Retoño de árbol tropical +Emergent Jungle Tree Sapling=Retoño de árbol tropical +Pine Tree=Madera de pino +Pine Wood Planks=Tablas de pino +Pine Needles=Agujas de pino +Pine Tree Sapling=Retoño de pino +Acacia Tree=Madera de acacia +Acacia Wood Planks=Tablas de acacia +Acacia Tree Leaves=Hojas de acacia +Acacia Tree Sapling=Retoño de acacia +Aspen Tree=Madera de álamo +Aspen Wood Planks=Tablas de álamo +Aspen Tree Leaves=Hojas de álamo +Aspen Tree Sapling=Retoño de álamo +Coal Ore=Mineral de carbón +Coal Block=Bloque de carbón +Iron Ore=Mineral de hierro +Steel Block=Bloque de acero +Copper Ore=Mineral de cobre +Copper Block=Bloque de cobre +Tin Ore=Mineral de estaño +Tin Block=Bloque de estaño +Bronze Block=Bloque de bronce +Mese Ore=Mineral de mese +Mese Block=Bloque de mese +Gold Ore=Mineral de oro +Gold Block=Bloque de oro +Diamond Ore=Mineral de diamante +Diamond Block=Bloque de diamante +Cactus=Cáctus +Large Cactus Seedling=Vástago grande de cactus +Papyrus=Papiro +Dry Shrub=Arbusto seco +Jungle Grass=Pasto de jungla +Grass=Pasto +Dry Grass=Pasto seco +Fern=Helecho +Marram Grass=Carrizo +Bush Stem=Tallo de arbusto +Bush Leaves=Hojas de arbusto +Bush Sapling=Retoño de arbusto +Blueberry Bush Leaves with Berries=Hojas de arbusto de arándano con bayas +Blueberry Bush Leaves=Hojas de arbusto de arándano +Blueberry Bush Sapling=Retoño de arbusto de arándano +Acacia Bush Stem=Tallo de arbusto de acacia +Acacia Bush Leaves=Hojas de arbusto de acacia +Acacia Bush Sapling=Retoño de arbusto de acacia +Pine Bush Stem=Tallo de arbusto de pino +Pine Bush Needles=Agujas de arbusto de pino +Pine Bush Sapling=Retoño de arbusto de pino +Kelp=Alga marina +Green Coral=Coral verde +Pink Coral=Coral rosa +Cyan Coral=Coral cián +Brown Coral=Coral café +Orange Coral=Coral naranja +Coral Skeleton=Esqueleto de coral +Water Source=Fuente de agua +Flowing Water=Fluído de agua +River Water Source=Fuente de agua de río +Flowing River Water=Fluído de agua de río +Lava Source=Fuente de lava +Flowing Lava=Fluído de lava +Empty Bookshelf=Librería vacía +Bookshelf (@1 written, @2 empty books)=Librería(@1 escritos, @2 libros en blanco) +Bookshelf=Librería +Text too long=Texto demasiado largo +Wooden Sign=Cartel de madera +Steel Sign=Cartel de acero +Wooden Ladder=Escalera de madera +Steel Ladder=Escalera de acero +Apple Wood Fence=Cerca de manzano +Acacia Wood Fence=Cerca de acacia +Jungle Wood Fence=Cerca de madera tropical +Pine Wood Fence=Cerca de pino +Aspen Wood Fence=Cerca de álamo +Apple Wood Fence Rail=Listones de manzano para cerca +Acacia Wood Fence Rail=Listones de acacia para cerca +Jungle Wood Fence Rail=Listones de madera tropical para cerca +Pine Wood Fence Rail=Listones de pino para cerca +Aspen Wood Fence Rail=Listones de álamo para cerca +Glass=Vidrio +Obsidian Glass=Vidrio de obsidiana +Brick Block=Bloque de ladrillo +Mese Lamp=Lámpara de mese +Mese Post Light=Poste de luz de mese +Cloud=Nube +Wooden Pickaxe=Pico de madera +Stone Pickaxe=Pico de piedra +Bronze Pickaxe=Pico de bronce +Steel Pickaxe=Pico de acero +Mese Pickaxe=Pico de mese +Diamond Pickaxe=Pico de diamante +Wooden Shovel=Pala de madera +Stone Shovel=Pala de piedra +Bronze Shovel=Pala de bronce +Steel Shovel=Pala de acero +Mese Shovel=Pala de mese +Diamond Shovel=Pala de diamante +Wooden Axe=Hacha de madera +Stone Axe=Hacha de piedra +Bronze Axe=Hacha de bronce +Steel Axe=Hacha de acero +Mese Axe=Hacha de mese +Diamond Axe=Hacha de diamante +Wooden Sword=Espada de madera +Stone Sword=Espada de piedra +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. +Title:=Título: +Contents:=Contenidos: +Save=Guardar +by @1=por @1 +Page @1 of @2=Página @1 de @2 +"@1"="@1" diff --git a/mods/doors/locale/doors.es.tr b/mods/doors/locale/doors.es.tr new file mode 100644 index 00000000..677f2dfd --- /dev/null +++ b/mods/doors/locale/doors.es.tr @@ -0,0 +1,18 @@ +# textdomain: doors +Hidden Door Segment=Segmento de puerta oculta +Owned by @1=Propiedad de @1 +You do not own this locked door.=Esta puerta cerrada no te pertenece. +a locked door=una puerta cerrada +Wooden Door=Puerta de madera +Steel Door=Puerta de acero +Glass Door=Puerta de vidrio +Obsidian Glass Door=Puerta de vidrio de obsidiana +You do not own this trapdoor.=Esta trampilla no te pertenece. +a locked trapdoor=una trampilla cerrada +Wooden Trapdoor=Trampilla de madera +Steel Trapdoor=Trampilla de acero +Apple Wood Fence Gate=Puerta de cerca de manzano +Acacia Wood Fence Gate=Puerta de cerca de acacia +Jungle Wood Fence Gate=Puerta de cerca de madera tropical +Pine Wood Fence Gate=Puerta de cerca de pino +Aspen Wood Fence Gate=Puerta de cerca de álamo diff --git a/mods/dye/locale/dye.es.tr b/mods/dye/locale/dye.es.tr new file mode 100644 index 00000000..bd04ef45 --- /dev/null +++ b/mods/dye/locale/dye.es.tr @@ -0,0 +1,16 @@ +# textdomain: dye +White Dye=Tinte blanco +Grey Dye=Tinte gris +Dark Grey Dye=Tinte gris oscuro +Black Dye=Tinte negro +Violet Dye=Tinte violeta +Blue Dye=Tinte azul +Cyan Dye=Tinte cián +Dark Green Dye=Tinte verde oscuro +Green Dye=Tinte verde +Yellow Dye=Tinte amarillo +Brown Dye=Tinte marrón +Orange Dye=Tinte naranja +Red Dye=Tinte rojo +Magenta Dye=Tinte magenta +Pink Dye=Tinte rosa diff --git a/mods/farming/locale/farming.es.tr b/mods/farming/locale/farming.es.tr new file mode 100644 index 00000000..f935a7b4 --- /dev/null +++ b/mods/farming/locale/farming.es.tr @@ -0,0 +1,25 @@ +# textdomain: farming +Wooden Hoe=Azada de madera +Stone Hoe=Azada de piedra +Steel Hoe=Azada de acero +Bronze Hoe=Azada de bronce +Mese Hoe=Azada de mese +Diamond Hoe=Azada de diamante +Wheat Seed=Semilla de trigo +Flour=Harina +Bread=Pan +Cotton Seed=Semilla de algodón +String=Hilo +Soil=Tierra de cultivo +Wet Soil=Tierra de cultivo humeda +Dry Soil=Tierra de cultivo seca +Wet Dry Soil=Tierra de cultivo seca-humeda +Desert Sand Soil=Tierra de cultivo de arena de desierto +Wet Desert Sand Soil=Tierra de cultivo de arena de desierto humeda +Straw=Paja +Straw Stair=Escalera de paja +Straw Slab=Losa de paja +Inner Straw Stair=Escalera de paja interior +Outer Straw Stair=Escalera de paja exterior +Wheat=Trigo +Cotton=Algodón diff --git a/mods/fire/locale/fire.es.tr b/mods/fire/locale/fire.es.tr new file mode 100644 index 00000000..8c1b6045 --- /dev/null +++ b/mods/fire/locale/fire.es.tr @@ -0,0 +1,3 @@ +# textdomain: fire +Permanent Flame=Llama permanente +Flint and Steel=Yesca y pedernal diff --git a/mods/fireflies/locale/fireflies.es.tr b/mods/fireflies/locale/fireflies.es.tr new file mode 100644 index 00000000..95d053e1 --- /dev/null +++ b/mods/fireflies/locale/fireflies.es.tr @@ -0,0 +1,5 @@ +# textdomain: fireflies +Firefly=Luciérnaga +Hidden Firefly=Luciérnaga oculta +Bug Net=Red de insectos +Firefly in a Bottle=Luciérnaga en botella diff --git a/mods/flowers/locale/flowers.es.tr b/mods/flowers/locale/flowers.es.tr new file mode 100644 index 00000000..e9c345d8 --- /dev/null +++ b/mods/flowers/locale/flowers.es.tr @@ -0,0 +1,12 @@ +# textdomain: flowers +Red Rose=Rosa roja +Orange Tulip=Tulipán naranja +Yellow Dandelion=Diente de León amarillo +Green Chrysanthemum=Crisantemo verde +Blue Geranium=Geranio azul +Viola=Violeta +White Dandelion=Diente de León blanco +Black Tulip=Tulipán negro +Red Mushroom=Champiñón rojo +Brown Mushroom=Champiñón café +Waterlily=Nenúfar diff --git a/mods/game_commands/locale/game_commands.es.tr b/mods/game_commands/locale/game_commands.es.tr new file mode 100644 index 00000000..702a2ef9 --- /dev/null +++ b/mods/game_commands/locale/game_commands.es.tr @@ -0,0 +1,4 @@ +# textdomain: game_commands +Kill yourself to respawn=Suicídate para reaparecer +No static_spawnpoint defined=No se ha definido un punto de aparición +You need to be online to be killed!=¡Necesitas estar en línea para que te maten! diff --git a/mods/map/locale/map.es.tr b/mods/map/locale/map.es.tr new file mode 100644 index 00000000..0faed529 --- /dev/null +++ b/mods/map/locale/map.es.tr @@ -0,0 +1,3 @@ +# textdomain: map +Mapping Kit=Kit de cartografía +Use with 'Minimap' key=Usar con la tecla 'Minimapa' diff --git a/mods/screwdriver/locale/screwdriver.es.tr b/mods/screwdriver/locale/screwdriver.es.tr new file mode 100644 index 00000000..868ffc34 --- /dev/null +++ b/mods/screwdriver/locale/screwdriver.es.tr @@ -0,0 +1,3 @@ +# textdomain: screwdriver +Screwdriver=Destornillador +(left-click rotates face, right-click rotates axis)=(clic-izquierdo gira la cara, clic-derecho rota el eje) diff --git a/mods/sethome/locale/sethome.es.tr b/mods/sethome/locale/sethome.es.tr new file mode 100644 index 00000000..7c04ee3c --- /dev/null +++ b/mods/sethome/locale/sethome.es.tr @@ -0,0 +1,8 @@ +# textdomain: sethome +Can use /sethome and /home=Puedes usar /sethome y /home +Teleport you to your home point=Teletranspórtate a tu hogar +Teleported to home!=¡Teletransportado a tu hogar! +Set a home using /sethome=Establece tu hogar usando /sethome +Set your home point=Establece el sitio de tu hogar +Home set!=¡Hogar establecido! +Player not found!=¡Jugador no encontrado! diff --git a/mods/sfinv/locale/sfinv.es.tr b/mods/sfinv/locale/sfinv.es.tr new file mode 100644 index 00000000..b941f4e6 --- /dev/null +++ b/mods/sfinv/locale/sfinv.es.tr @@ -0,0 +1,2 @@ +# textdomain:sfinv +Crafting=Creación diff --git a/mods/stairs/locale/stairs.es.tr b/mods/stairs/locale/stairs.es.tr new file mode 100644 index 00000000..374540c7 --- /dev/null +++ b/mods/stairs/locale/stairs.es.tr @@ -0,0 +1,145 @@ +# textdomain: stairs +Glass Stair=Escalera de vidrio +Glass Slab=Losa de vidrio +Inner Glass Stair=Escalera interior de vidrio +Outer Glass Stair=Escalera exterior de vidrio +Obsidian Glass Stair=Escalera de vidrio de obsidiana +Obsidian Glass Slab=Losa de vidrio de obsidiana +Inner Obsidian Glass Stair=Escalera interior de vidrio de obsidiana +Outer Obsidian Glass Stair=Escalera exterior de vidrio de obsidiana +Wooden Stair=Escalera de madera +Inner Wooden Stair=Escalera interior de madera +Outer Wooden Stair=Escalera exterior de madera +Wooden Slab=Losa de madera +Jungle Wood Stair=Escalera de madera tropical +Inner Jungle Wood Stair=Escalera interior de madera tropical +Outer Jungle Wood Stair=Escalera exterior de madera tropical +Jungle Wood Slab=Losa de madera tropical +Pine Wood Stair=Escalera de pino +Inner Pine Wood Stair=Escalera interior de pino +Outer Pine Wood Stair=Escalera exterior de pino +Pine Wood Slab=Losa de pino +Acacia Wood Stair=Escalera de acacia +Inner Acacia Wood Stair=Escalera interior de acacia +Outer Acacia Wood Stair=Escalera exterior de acacia +Acacia Wood Slab=Losa de acacia +Aspen Wood Stair=Escalera de álamo +Inner Aspen Wood Stair=Escalera interior de álamo +Outer Aspen Wood Stair=Escalera exterior de álamo +Aspen Wood Slab=Losa de álamo +Stone Stair=Escalera de piedra +Inner Stone Stair=Escalera interior de piedra +Outer Stone Stair=Escalera exterior de piedra +Stone Slab=Losa de piedra +Cobblestone Stair=Escalera de adoquines +Inner Cobblestone Stair=Escalera interior de adoquines +Outer Cobblestone Stair=Escalera exterior de adoquines +Cobblestone Slab=Losa de adoquines +Mossy Cobblestone Stair=Escalera de adoquines musgosos +Inner Mossy Cobblestone Stair=Escalera interior de adoquines musgosos +Outer Mossy Cobblestone Stair=Escalera exterior de adoquines musgosos +Mossy Cobblestone Slab=Losa de adoquines musgosos +Stone Brick Stair=Escalera de ladrillos de piedra +Inner Stone Brick Stair=Escalera interior de ladrillos de piedra +Outer Stone Brick Stair=Escalera exterior de ladrillos de piedra +Stone Brick Slab=Losa de ladrillos de piedra +Stone Block Stair=Escalera de bloques de piedra +Inner Stone Block Stair=Escalera interior de bloques de piedra +Outer Stone Block Stair=Escalera exterior de bloques de piedra +Stone Block Slab=Losa de bloques de piedra +Desert Stone Stair=Escalera de piedra desértica +Inner Desert Stone Stair=Escalera interior de piedra desértica +Outer Desert Stone Stair=Escalera exterior de piedra desértica +Desert Stone Slab=Losa de piedra desértica +Desert Cobblestone Stair=Escalera de adoquines desérticos +Inner Desert Cobblestone Stair=Escalera interior de adoquines desérticos +Outer Desert Cobblestone Stair=Escalera exterior de adoquines desérticos +Desert Cobblestone Slab=Losa de adoquines desérticos +Desert Stone Brick Stair=Escalera de ladrillos desérticos +Inner Desert Stone Brick Stair=Escalera interior de ladrillos desérticos +Outer Desert Stone Brick Stair=Escalera exterior de ladrillos desérticos +Desert Stone Brick Slab=Losa de ladrillos desérticos +Desert Stone Block Stair=Escalera de bloques de piedra desértica +Inner Desert Stone Block Stair=Escalera interior de bloques de piedra desértica +Outer Desert Stone Block Stair=Escalera exterior de bloques de piedra desértica +Desert Stone Block Slab=Losa de bloques de piedra desértica +Sandstone Stair=Escalera de arenisca +Inner Sandstone Stair=Escalera interior de arenisca +Outer Sandstone Stair=Escalera exterior de arenisca +Sandstone Slab=Losa de arenisca +Sandstone Brick Stair=Escalera de ladrillos de arenisca +Inner Sandstone Brick Stair=Escalera interior de ladrillos de arenisca +Outer Sandstone Brick Stair=Escalera exterior de ladrillos de arenisca +Sandstone Brick Slab=Losa de ladrillos de arenisca +Sandstone Block Stair=Escalera de bloques de arenisca +Inner Sandstone Block Stair=Escalera interior de bloques de arenisca +Outer Sandstone Block Stair=Escalera exterior de bloques de arenisca +Sandstone Block Slab=Losa de bloques de arenisca +Desert Sandstone Stair=Escalera de arenisca desértica +Inner Desert Sandstone Stair=Escalera interior de arenisca desértica +Outer Desert Sandstone Stair=Escalera exterior de arenisca desértica +Desert Sandstone Slab=Losa de arenisca desértica +Desert Sandstone Brick Stair=Escalera de ladrillos de arenisca desértica +Inner Desert Sandstone Brick Stair=Escalera interior de ladrillos de arenisca desértica +Outer Desert Sandstone Brick Stair=Escalera exterior de ladrillos de arenisca desértica +Desert Sandstone Brick Slab=Losa de ladrillos de arenisca desértica +Desert Sandstone Block Stair=Escalera de bloques de arenisca desértica +Inner Desert Sandstone Block Stair=Escalera interior de bloques de arenisca desértica +Outer Desert Sandstone Block Stair=Escalera exterior de bloques de arenisca desértica +Desert Sandstone Block Slab=Losa de bloques de arenisca desértica +Silver Sandstone Stair=Escalera de arenisca plateada +Inner Silver Sandstone Stair=Escalera interior de arenisca plateada +Outer Silver Sandstone Stair=Escalera exterior de arenisca plateada +Silver Sandstone Slab=Losa de arenisca plateada +Silver Sandstone Brick Stair=Escalera de ladrillos de arenisca plateada +Inner Silver Sandstone Brick Stair=Escalera interior de ladrillos de arenisca plateada +Outer Silver Sandstone Brick Stair=Escalera exterior de ladrillos de arenisca plateada +Silver Sandstone Brick Slab=Losa de ladrillos de arenisca plateada +Silver Sandstone Block Stair=Escalera de bloques de arenisca plateada +Inner Silver Sandstone Block Stair=Escalera interior de bloques de arenisca plateada +Outer Silver Sandstone Block Stair=Escalera exterior de bloques de arenisca plateada +Silver Sandstone Block Slab=Losa de bloques de arenisca plateada +Obsidian Stair=Escalera de obsidiana +Inner Obsidian Stair=Escalera interior de obsidiana +Outer Obsidian Stair=Escalera exterior de obsidiana +Obsidian Slab=Losa de obsidiana +Obsidian Brick Stair=Escalera de ladrillos de obsidiana +Inner Obsidian Brick Stair=Escalera interior de ladrillos de obsidiana +Outer Obsidian Brick Stair=Escalera exterior de ladrillos de obsidiana +Obsidian Brick Slab=Losa de ladrillos de obsidiana +Obsidian Block Stair=Escalera de bloques de obsidiana +Inner Obsidian Block Stair=Escalera interior de bloques de obsidiana +Outer Obsidian Block Stair=Escalera exterior de bloques de obsidiana +Obsidian Block Slab=Losa de bloques de obsidiana +Brick Stair=Escalera de ladrillos +Inner Brick Stair=Escalera interior de ladrillos +Outer Brick Stair=Escalera exterior de ladrillos +Brick Slab=Losa de ladrillos +Steel Block Stair=Escalera de acero +Inner Steel Block Stair=Escalera interior de acero +Outer Steel Block Stair=Escalera exterior de acero +Steel Block Slab=Losa de acero +Tin Block Stair=Escalera de estaño +Inner Tin Block Stair=Escalera interior de estaño +Outer Tin Block Stair=Escalera exterior de estaño +Tin Block Slab=Losa de estaño +Copper Block Stair=Escalera de cobre +Inner Copper Block Stair=Escalera interior de cobre +Outer Copper Block Stair=Escalera exterior de cobre +Copper Block Slab=Losa de cobre +Bronze Block Stair=Escalera de bronce +Inner Bronze Block Stair=Escalera interior de bronce +Outer Bronze Block Stair=Escalera exterior de bronce +Bronze Block Slab=Losa de bronce +Gold Block Stair=Escalera de oro +Inner Gold Block Stair=Escalera interior de oro +Outer Gold Block Stair=Escalera exterior de oro +Gold Block Slab=Losa de oro +Ice Stair=Escalera de hielo +Inner Ice Stair=Escalera interior de hielo +Outer Ice Stair=Escalera exterior de hielo +Ice Slab=Losa de hielo +Snow Block Stair=Escalera de nieve +Inner Snow Block Stair=Escalera interior de nieve +Outer Snow Block Stair=Escalera exterior de nieve +Snow Block Slab=Losa de nieve diff --git a/mods/tnt/locale/tnt.es.tr b/mods/tnt/locale/tnt.es.tr new file mode 100644 index 00000000..d9f3f205 --- /dev/null +++ b/mods/tnt/locale/tnt.es.tr @@ -0,0 +1,4 @@ +# textdomain: tnt +Gun Powder=Pólvora +TNT Stick=Cartucho de TNT +TNT=TNT diff --git a/mods/vessels/locale/vessels.es.tr b/mods/vessels/locale/vessels.es.tr new file mode 100644 index 00000000..859ea407 --- /dev/null +++ b/mods/vessels/locale/vessels.es.tr @@ -0,0 +1,8 @@ +# textdomain: vessels +Vessels Shelf=Estante de vasijas +Empty Glass Bottle=Botella de vidrio vacía +Empty Drinking Glass=Vaso para beber vacío +Empty Heavy Steel Bottle=Botella de acero vacía +Glass Fragments=Fragmentos de vidrio +Empty Vessels Shelf=Estante de vasijas vacío +Vessels Shelf (@1 items)=Estante de vasijas (@1 objetos) diff --git a/mods/walls/locale/walls.es.tr b/mods/walls/locale/walls.es.tr new file mode 100644 index 00000000..796710fe --- /dev/null +++ b/mods/walls/locale/walls.es.tr @@ -0,0 +1,4 @@ +# textdomain: walls +Cobblestone Wall=Pared de adoquines +Mossy Cobblestone Wall=Pared de adoquines musgosos +Desert Cobblestone Wall=Pared de adoquines desérticos diff --git a/mods/wool/locale/wool.es.tr b/mods/wool/locale/wool.es.tr new file mode 100644 index 00000000..ac155920 --- /dev/null +++ b/mods/wool/locale/wool.es.tr @@ -0,0 +1,16 @@ +# textdomain: wool +White Wool=Lana blanca +Grey Wool=Lana gris +Dark Grey Wool=Lana gris oscuro +Black Wool=Lana negra +Violet Wool=Lana violeta +Blue Wool=Lana azul +Cyan Wool=Lana cián +Dark Green Wool=Lana verde oscuro +Green Wool=Lana verde +Yellow Wool=Lana amarilla +Brown Wool=Lana marrón +Orange Wool=Lana naranja +Red Wool=Lana roja +Magenta Wool=Lana magenta +Pink Wool=Lana rosa diff --git a/mods/xpanes/locale/xpanes.es.tr b/mods/xpanes/locale/xpanes.es.tr new file mode 100644 index 00000000..9902be70 --- /dev/null +++ b/mods/xpanes/locale/xpanes.es.tr @@ -0,0 +1,6 @@ +# textdomain: xpanes +Glass Pane=Panel de vidrio +Obsidian Glass Pane=Panel de vidrio de obsidiana +Steel Bars=Barras de acero +Steel Bar Door=Puerta de barras de acero +Steel Bar Trapdoor=Trampilla de barras de acero From 93a49f082c0053ae484eeb55cad47677471e03e8 Mon Sep 17 00:00:00 2001 From: Hamlet <54187342+h4ml3t@users.noreply.github.com> Date: Sat, 12 Oct 2019 14:30:37 +0200 Subject: [PATCH 81/81] Italian translation (#2491) --- mods/beds/locale/beds.it.tr | 4 + mods/binoculars/locale/binoculars.it.tr | 3 + mods/boats/locale/boats.it.tr | 4 + mods/bones/locale/bones.it.tr | 8 + mods/bucket/locale/bucket.it.tr | 5 + mods/butterflies/locale/butterflies.it.tr | 4 + mods/carts/locale/carts.it.tr | 6 + mods/creative/locale/creative.it.tr | 10 + mods/default/locale/default.it.tr | 205 ++++++++++++++++++ mods/doors/locale/doors.it.tr | 19 ++ mods/dye/locale/dye.it.tr | 16 ++ mods/farming/locale/farming.it.tr | 25 +++ mods/fire/locale/fire.it.tr | 3 + mods/fireflies/locale/fireflies.it.tr | 5 + mods/flowers/locale/flowers.it.tr | 12 + mods/game_commands/locale/game_commands.it.tr | 4 + mods/map/locale/map.it.tr | 3 + mods/screwdriver/locale/screwdriver.it.tr | 3 + mods/sethome/locale/sethome.it.tr | 8 + mods/sfinv/locale/sfinv.it.tr | 2 + mods/stairs/locale/stairs.it.tr | 145 +++++++++++++ mods/tnt/locale/tnt.it.tr | 4 + mods/vessels/locale/vessels.it.tr | 8 + mods/walls/locale/walls.it.tr | 4 + mods/wool/locale/wool.it.tr | 16 ++ mods/xpanes/locale/xpanes.it.tr | 6 + 26 files changed, 532 insertions(+) create mode 100644 mods/beds/locale/beds.it.tr create mode 100644 mods/binoculars/locale/binoculars.it.tr create mode 100644 mods/boats/locale/boats.it.tr create mode 100644 mods/bones/locale/bones.it.tr create mode 100644 mods/bucket/locale/bucket.it.tr create mode 100644 mods/butterflies/locale/butterflies.it.tr create mode 100644 mods/carts/locale/carts.it.tr create mode 100644 mods/creative/locale/creative.it.tr create mode 100644 mods/default/locale/default.it.tr create mode 100644 mods/doors/locale/doors.it.tr create mode 100644 mods/dye/locale/dye.it.tr create mode 100644 mods/farming/locale/farming.it.tr create mode 100644 mods/fire/locale/fire.it.tr create mode 100644 mods/fireflies/locale/fireflies.it.tr create mode 100644 mods/flowers/locale/flowers.it.tr create mode 100644 mods/game_commands/locale/game_commands.it.tr create mode 100644 mods/map/locale/map.it.tr create mode 100644 mods/screwdriver/locale/screwdriver.it.tr create mode 100644 mods/sethome/locale/sethome.it.tr create mode 100644 mods/sfinv/locale/sfinv.it.tr create mode 100644 mods/stairs/locale/stairs.it.tr create mode 100644 mods/tnt/locale/tnt.it.tr create mode 100644 mods/vessels/locale/vessels.it.tr create mode 100644 mods/walls/locale/walls.it.tr create mode 100644 mods/wool/locale/wool.it.tr create mode 100644 mods/xpanes/locale/xpanes.it.tr diff --git a/mods/beds/locale/beds.it.tr b/mods/beds/locale/beds.it.tr new file mode 100644 index 00000000..3dbc70cc --- /dev/null +++ b/mods/beds/locale/beds.it.tr @@ -0,0 +1,4 @@ +# textdomain: beds +Fancy Bed=Letto decorato +Simple Bed=Letto semplice +Leave Bed=Alzati dal letto \ No newline at end of file diff --git a/mods/binoculars/locale/binoculars.it.tr b/mods/binoculars/locale/binoculars.it.tr new file mode 100644 index 00000000..f8e98d6e --- /dev/null +++ b/mods/binoculars/locale/binoculars.it.tr @@ -0,0 +1,3 @@ +# textdomain: binoculars +Binoculars=Binocolo +Use with 'Zoom' key=Usalo col tasto 'Ingrandimento' \ No newline at end of file diff --git a/mods/boats/locale/boats.it.tr b/mods/boats/locale/boats.it.tr new file mode 100644 index 00000000..5bd71255 --- /dev/null +++ b/mods/boats/locale/boats.it.tr @@ -0,0 +1,4 @@ +# textdomain: boats +Boat cruise mode on=Modalità movimento automatico barca attivata +Boat cruise mode off=Modalità movimento automatico barca disattivata +Boat=Barca \ No newline at end of file diff --git a/mods/bones/locale/bones.it.tr b/mods/bones/locale/bones.it.tr new file mode 100644 index 00000000..486b6d38 --- /dev/null +++ b/mods/bones/locale/bones.it.tr @@ -0,0 +1,8 @@ +# textdomain: bones +Bones=Ossa +@1's old bones=Ossa vecchie di @1 +@1 died at @2.=@1 è morto alla posizione @2. +@1 died at @2, and dropped their inventory.=@1 è morto alla posizione @2, e ha lasciato a terra il contenuto del suo inventario. +@1 died at @2, and bones were placed.=@1 è morto alla posizione @2, e vi sono state posizionate delle ossa. +@1's fresh bones=Ossa fresche di @1 +@1's bones=Ossa di @1 \ No newline at end of file diff --git a/mods/bucket/locale/bucket.it.tr b/mods/bucket/locale/bucket.it.tr new file mode 100644 index 00000000..a9a13358 --- /dev/null +++ b/mods/bucket/locale/bucket.it.tr @@ -0,0 +1,5 @@ +# textdomain: bucket +Empty Bucket=Secchio vuoto +Water Bucket=Secchio d'acqua +River Water Bucket=Secchio d'acqua di fiume +Lava Bucket=Secchio di lava \ No newline at end of file diff --git a/mods/butterflies/locale/butterflies.it.tr b/mods/butterflies/locale/butterflies.it.tr new file mode 100644 index 00000000..104ec880 --- /dev/null +++ b/mods/butterflies/locale/butterflies.it.tr @@ -0,0 +1,4 @@ +# textdomain: butterflies +White Butterfly=Farfalla bianca +Red Butterfly=Farfalla rossa +Violet Butterfly=Farfalla viola \ No newline at end of file diff --git a/mods/carts/locale/carts.it.tr b/mods/carts/locale/carts.it.tr new file mode 100644 index 00000000..546471c8 --- /dev/null +++ b/mods/carts/locale/carts.it.tr @@ -0,0 +1,6 @@ +# textdomain: carts +Cart=Vagone +(Sneak+Click to pick up)=(Strisciare+Click per raccoglierlo) +Rail=Binario +Powered Rail=Binario alimentato +Brake Rail=Binario freno \ No newline at end of file diff --git a/mods/creative/locale/creative.it.tr b/mods/creative/locale/creative.it.tr new file mode 100644 index 00000000..1c821892 --- /dev/null +++ b/mods/creative/locale/creative.it.tr @@ -0,0 +1,10 @@ +# textdomain: creative +Allow player to use creative inventory=Permette al giocatore di usare l'inventario creativo +Search=Cerca +Reset=Azzera +Previous page=Pagina precedente +Next page=Pagina successiva +All=Tutto +Nodes=Nodi +Tools=Strumenti +Items=Oggetti \ No newline at end of file diff --git a/mods/default/locale/default.it.tr b/mods/default/locale/default.it.tr new file mode 100644 index 00000000..ea3ee20e --- /dev/null +++ b/mods/default/locale/default.it.tr @@ -0,0 +1,205 @@ +# textdomain: default +Locked Chest=Baule chiuso a chiave +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 +Stick=Bastone +Paper=Carta +"@1" by @2="@1" di @2 +Book=Libro +Book with Text=Libro con testo +Skeleton Key=Chiave dello Scheletro +Key to @1's @2=Chiave per @2 di @1 +Coal Lump=Grumo di carbone +Iron Lump=Grumo di ferro +Copper Lump=Grumo di rame +Tin Lump=Grumo di stagno +Mese Crystal=Cristallo di mese +Gold Lump=Grumo d'oro +Diamond=Diamante +Clay Lump=Grumo d'argilla +Steel Ingot=Lingotto d'acciaio +Copper Ingot=Lingotto di rame +Tin Ingot=Lingotto di stagno +Bronze Ingot=Lingotto di bronzo +Gold Ingot=Lingotto d'oro +Mese Crystal Fragment=Frammento di cristallo di mese +Clay Brick=Mattone d'argilla +Obsidian Shard=Scheggia d'ossidiana +Flint=Selce +Blueberries=Mirtilli +Furnace is empty=La fornace è vuota +100% (output full)=100% (uscita piena) +@1%=@1% +Empty=Vuota +Not cookable=Non cucinabile +Furnace active=Fornace attiva +Furnace inactive=Fornace inattiva +(Item: @1; Fuel: @2)=(Oggetto: @1; Combustibile: @2) +Furnace=Fornace +Stone=Pietra +Cobblestone=Ciottoli +Stone Brick=Mattone di pietra +Stone Block=Blocco di pietra +Mossy Cobblestone=Ciottoli muschiosi +Desert Stone=Pietra del deserto +Desert Cobblestone=Ciottoli del deserto +Desert Stone Brick=Mattone di pietra del deserto +Desert Stone Block=Blocco di pietra del deserto +Sandstone=Arenaria +Sandstone Brick=Mattone d'arenaria +Sandstone Block=Blocco d'arenaria +Desert Sandstone=Arenaria del deserto +Desert Sandstone Brick=Mattone d'arenaria del deserto +Desert Sandstone Block=Blocco d'arenaria del deserto +Silver Sandstone=Arenaria argentata +Silver Sandstone Brick=Mattone d'arenaria argentata +Silver Sandstone Block=Blocco d'arenaria argentata +Obsidian=Ossidiana +Obsidian Brick=Mattone d'ossidiana +Obsidian Block=Blocco d'ossidiana +Dirt=Terra +Dirt with Grass=Terra con erba +Dirt with Grass and Footsteps=Terra con erba e impronte +Dirt with Dry Grass=Terra con erba secca +Dirt with Snow=Terra con neve +Dirt with Rainforest Litter=Terra con detriti della foresta pluviale +Dirt with Coniferous Litter=Terra con detriti di conifera +Dry Dirt=Terra asciutta +Dry Dirt with Dry Grass=Terra asciutta con erba secca +Permafrost=Permafrost +Permafrost with Stones=Permafrost con pietra +Permafrost with Moss=Permafrost con muschio +Sand=Sabbia +Desert Sand=Sabbia del deserto +Silver Sand=Sabbia argentata +Gravel=Ghiaia +Clay=Argilla +Snow=Neve +Snow Block=Blocco di neve +Ice=Ghiaccio +Cave Ice=Ghiaccio di caverna +Apple Tree=Melo +Apple Wood Planks=Assi di melo +Apple Tree Sapling=Alberello di melo +Apple Tree Leaves=Foglie di melo +Apple=Mela +Apple Marker=Marcatore mela +Jungle Tree=Albero della giungla +Jungle Wood Planks=Assi di legno della giungla +Jungle Tree Leaves=Foglie di albero della giungla +Jungle Tree Sapling=Alberello della giungla +Emergent Jungle Tree Sapling=Alberello della giungla emergente +Pine Tree=Pino +Pine Wood Planks=Assi di legno di pino +Pine Needles=Aghi di pino +Pine Tree Sapling=Alberello di pino +Acacia Tree=Acacia +Acacia Wood Planks=Assi di legno d'acacia +Acacia Tree Leaves=Foglie d'acacia +Acacia Tree Sapling=Alberello d'acacia +Aspen Tree=Pioppo +Aspen Wood Planks=Assi di legno di pioppo +Aspen Tree Leaves=Foglie di pioppo +Aspen Tree Sapling=Alberello di pioppo +Coal Ore=Minerale di carbone +Coal Block=Blocco di carbone +Iron Ore=Minerale di ferro +Steel Block=Blocco d'acciaio +Copper Ore=Minerale di rame +Copper Block=Blocco di rame +Tin Ore=Minerale di stagno +Tin Block=Blocco di stagno +Bronze Block=Blocco di bronzo +Mese Ore=Minerale di mese +Mese Block=Blocco di mese +Gold Ore=Minerale d'oro +Gold Block=Blocco d'oro +Diamond Ore=Minerale di diamante +Diamond Block=Blocco di diamante +Cactus=Cactus +Large Cactus Seedling=Piantina di cactus grande +Papyrus=Papiro +Dry Shrub=Arbusto secco +Jungle Grass=Erba della giungla +Grass=Erba +Dry Grass=Erba secca +Fern=Felce +Marram Grass=Ammofila arenaria +Bush Stem=Fusto di cespuglio +Bush Leaves=Foglie di cespuglio +Bush Sapling=Alberello di cespuglio +Blueberry Bush Leaves with Berries=Foglie di cespuglio di mirtilli con bacche +Blueberry Bush Leaves=Foglie di cespuglio di mirtilli +Blueberry Bush Sapling=Alberello di cespuglio di mirtilli +Acacia Bush Stem=Fusto di cespuglio d'acacia +Acacia Bush Leaves=Foglie di cespuglio d'acacia +Acacia Bush Sapling=Alberello di cespuglio d'acacia +Pine Bush Stem=Fusto di cespuglio di pino +Pine Bush Needles=Aghi di cespuglio di pino +Pine Bush Sapling=Alberello di cespuglio di pino +Kelp=Alga +Green Coral=Corallo verde +Pink Coral=Corallo rosa +Cyan Coral=Corallo ciano +Brown Coral=Corallo marrone +Orange Coral=Corallo arancione +Coral Skeleton=Scheletro di corallo +Water Source=Fonte d'acqua +Flowing Water=Acqua corrente +River Water Source=Fonte d'acqua di fiume +Flowing River Water=Acqua corrente di fiume +Lava Source=Fonte di lava +Flowing Lava=Lava corrente +Empty Bookshelf=Libreria vuota +Bookshelf (@1 written, @2 empty books)=Libreria (@1 scritti, @2 vuoti) +Bookshelf=Libreria +Text too long=Testo troppo lungo +Wooden Sign=Cartello di legno +Steel Sign=Cartello d'acciaio +Wooden Ladder=Scala a pioli di legno +Steel Ladder=Scala a pioli d'acciaio +Apple Wood Fence=Recinzione di legno di melo +Acacia Wood Fence=Recinzione di legno d'acacia +Jungle Wood Fence=Recinzione di legno della giungla +Pine Wood Fence=Recinzione di legno di pino +Aspen Wood Fence=Recinzione di legno di pioppo +Apple Wood Fence Rail=Ringhiera della recinzione di legno di melo +Acacia Wood Fence Rail=Ringhiera della recinzione di legno d'acacia +Jungle Wood Fence Rail=Ringhiera della recinzione di legno della giungla +Pine Wood Fence Rail=Ringhiera della recinzione di legno di pino +Aspen Wood Fence Rail=Ringhiera della recinzione di legno di pioppo +Glass=Vetro +Obsidian Glass=Vetro d'ossidiana +Brick Block=Blocco di mattone +Mese Lamp=Lampada di mese +Mese Post Light=Lampioncino di mese +Cloud=Nuvola +Wooden Pickaxe=Piccone di legno +Stone Pickaxe=Piccone di pietra +Bronze Pickaxe=Piccone di bronzo +Steel Pickaxe=Piccone d'acciaio +Mese Pickaxe=Piccone di mese +Diamond Pickaxe=Piccone di diamante +Wooden Shovel=Pala di legno +Stone Shovel=Pala di pietra +Bronze Shovel=Pala di bronzo +Steel Shovel=Pala d'acciaio +Mese Shovel=Pala di mese +Diamond Shovel=Pala di diamante +Wooden Axe=Ascia di legno +Stone Axe=Ascia di pietra +Bronze Axe=Ascia di bronzo +Steel Axe=Ascia d'acciaio +Mese Axe=Ascia di mese +Diamond Axe=Ascia di diamante +Wooden Sword=Spada di legno +Stone Sword=Spada di pietra +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/doors/locale/doors.it.tr b/mods/doors/locale/doors.it.tr new file mode 100644 index 00000000..4737ee21 --- /dev/null +++ b/mods/doors/locale/doors.it.tr @@ -0,0 +1,19 @@ +# textdomain: doors +Hidden Door Segment=Segmento di porta nascosto +Owned by @1=Di proprietà di @1 +You do not own this locked door.=Non sei il proprietario di questa porta chiusa a chiave. +a locked door=una porta chiusa a chiave +Wooden Door=Porta di legno +Steel Door=Porta d'acciacio +Glass Door=Porta di vetro +Obsidian Glass Door=Porta di vetro d'ossidiana +Owned by @1=Di proprietà di @1 +You do not own this trapdoor.=Non sei il proprietario di questa botola. +a locked trapdoor=una botola chiusa a chiave +Wooden Trapdoor=Botola di legno +Steel Trapdoor=Botola d'acciaio +Apple Wood Fence Gate=Cancello della recinzione di legno di melo +Acacia Wood Fence Gate=Cancello della recinzione di legno d'acacia +Jungle Wood Fence Gate=Cancello della recinzione di legno della giungla +Pine Wood Fence Gate=Cancello della recinzione di legno di pino +Aspen Wood Fence Gate=Cancello della recinzione di legno di pioppo \ No newline at end of file diff --git a/mods/dye/locale/dye.it.tr b/mods/dye/locale/dye.it.tr new file mode 100644 index 00000000..e15e2b55 --- /dev/null +++ b/mods/dye/locale/dye.it.tr @@ -0,0 +1,16 @@ +# textdomain: dye +White Dye=Tintura bianca +Grey Dye=Tintura grigia +Dark Grey Dye=Tintura grigia scura +Black Dye=Tintura nera +Violet Dye=Tintura viola +Blue Dye=Tintura blu +Cyan Dye=Tintura ciano +Dark Green Dye=Tintura verde scura +Green Dye=Tintura verde +Yellow Dye=Tintura gialla +Brown Dye=Tintura marrone +Orange Dye=Tintura arancione +Red Dye=Tintura rossa +Magenta Dye=Tintura magenta +Pink Dye=Tintura rosa \ No newline at end of file diff --git a/mods/farming/locale/farming.it.tr b/mods/farming/locale/farming.it.tr new file mode 100644 index 00000000..95c1478e --- /dev/null +++ b/mods/farming/locale/farming.it.tr @@ -0,0 +1,25 @@ +# textdomain: farming +Wooden Hoe=Zappa di legno +Stone Hoe=Zappa di pietra +Steel Hoe=Zappa d'acciaio +Bronze Hoe=Zappa di bronzo +Mese Hoe=Zappa di mese +Diamond Hoe=Zappa di diamante +Wheat Seed=Seme di grano +Flour=Farina +Bread=Pane +Cotton Seed=Seme di cotone +String=Filo +Soil=Terreno +Wet Soil=Terreno bagnato +Dry Soil=Terreno asciutto +Wet Dry Soil=Terreno asciutto bagnato +Desert Sand Soil=Terreno di sabbia del deserto +Wet Desert Sand Soil=Terreno bagnato di sabbia del deserto +Straw=Paglia +Straw Stair=Scala di paglia +Inner Straw Stair=Scala di paglia interna +Outer Straw Stair=Scala di paglia esterna +Straw Slab=Lastra di paglia +Wheat=Grano +Cotton=Cotone \ No newline at end of file diff --git a/mods/fire/locale/fire.it.tr b/mods/fire/locale/fire.it.tr new file mode 100644 index 00000000..03e8c874 --- /dev/null +++ b/mods/fire/locale/fire.it.tr @@ -0,0 +1,3 @@ +# textdomain: fire +Permanent Flame=Fiamma permanente +Flint and Steel=Acciarino \ No newline at end of file diff --git a/mods/fireflies/locale/fireflies.it.tr b/mods/fireflies/locale/fireflies.it.tr new file mode 100644 index 00000000..130b2481 --- /dev/null +++ b/mods/fireflies/locale/fireflies.it.tr @@ -0,0 +1,5 @@ +# textdomain: fireflies +Firefly=Lucciola +Hidden Firefly=Lucciola nascosta +Bug Net=Retino +Firefly in a Bottle=Lucciola imbottigliata \ No newline at end of file diff --git a/mods/flowers/locale/flowers.it.tr b/mods/flowers/locale/flowers.it.tr new file mode 100644 index 00000000..e273941f --- /dev/null +++ b/mods/flowers/locale/flowers.it.tr @@ -0,0 +1,12 @@ +# textdomain: flowers +Red Rose=Rosa rossa +Orange Tulip=Tulipano arancione +Yellow Dandelion=Dente di leone giallo +Green Chrysanthemum=Crisantemo verde +Blue Geranium=Geranio blu +Viola=Viola +White Dandelion=Dente di leone bianco +Black Tulip=Tulipano nero +Red Mushroom=Fungo rosso +Brown Mushroom=Fungo marrone +Waterlily=Ninfea \ No newline at end of file diff --git a/mods/game_commands/locale/game_commands.it.tr b/mods/game_commands/locale/game_commands.it.tr new file mode 100644 index 00000000..b2431faf --- /dev/null +++ b/mods/game_commands/locale/game_commands.it.tr @@ -0,0 +1,4 @@ +# textdomain: game_commands +Kill yourself to respawn=Ucciditi per ricomparire +No static_spawnpoint defined=Nessuno static_spawnpoint definito +You need to be online to be killed!=Devi essere in linea per essere ucciso! \ No newline at end of file diff --git a/mods/map/locale/map.it.tr b/mods/map/locale/map.it.tr new file mode 100644 index 00000000..237f4dfb --- /dev/null +++ b/mods/map/locale/map.it.tr @@ -0,0 +1,3 @@ +# textdomain: map +Mapping Kit=Kit di mappatura +Use with 'Minimap' key=Usalo col tasto 'Minimappa' \ No newline at end of file diff --git a/mods/screwdriver/locale/screwdriver.it.tr b/mods/screwdriver/locale/screwdriver.it.tr new file mode 100644 index 00000000..d9fc0a08 --- /dev/null +++ b/mods/screwdriver/locale/screwdriver.it.tr @@ -0,0 +1,3 @@ +# textdomain: screwdriver +Screwdriver=Cacciavite +(left-click rotates face, right-click rotates axis)=(click sinistro ruota la faccia, click destro ruota l'asse) \ No newline at end of file diff --git a/mods/sethome/locale/sethome.it.tr b/mods/sethome/locale/sethome.it.tr new file mode 100644 index 00000000..bbf86b8d --- /dev/null +++ b/mods/sethome/locale/sethome.it.tr @@ -0,0 +1,8 @@ +# textdomain: sethome +Can use /sethome and /home=Può usare /sethome e /home +Teleport you to your home point=Ti teletrasporta al tuo punto di domicilio +Teleported to home!=Teletrasportato a casa! +Set a home using /sethome=Imposta un domicilio usando /sethome +Set your home point=Imposta il tuo punto di domicilio +Home set!=Domicilio impostato! +Player not found!=Giocatore non trovato! \ No newline at end of file diff --git a/mods/sfinv/locale/sfinv.it.tr b/mods/sfinv/locale/sfinv.it.tr new file mode 100644 index 00000000..85761bcc --- /dev/null +++ b/mods/sfinv/locale/sfinv.it.tr @@ -0,0 +1,2 @@ +# textdomain:sfinv +Crafting=Assemblaggio \ No newline at end of file diff --git a/mods/stairs/locale/stairs.it.tr b/mods/stairs/locale/stairs.it.tr new file mode 100644 index 00000000..16dfed6e --- /dev/null +++ b/mods/stairs/locale/stairs.it.tr @@ -0,0 +1,145 @@ +# textdomain: stairs +Glass Stair=Scala di vetro +Glass Slab=Lastra di vetro +Inner Glass Stair=Scala di vetro interna +Outer Glass Stair=Scala di vetro esterna +Obsidian Glass Stair=Scala di vetro d'ossidiana +Obsidian Glass Slab=Lastra di vetro d'ossidiana +Inner Obsidian Glass Stair=Scala di vetro d'ossidiana interna +Outer Obsidian Glass Stair=Scala di vetro d'ossidiana esterna +Wooden Stair=Scala di legno +Inner Wooden Stair=Scala di legno interna +Outer Wooden Stair=Scala di legno esterna +Wooden Slab=Lastra di legno +Jungle Wood Stair=Scala di legno della giungla +Inner Jungle Wood Stair=Scala di legno della giungla interna +Outer Jungle Wood Stair=Scala di legno della giungla esterna +Jungle Wood Slab=Lastra di legno della giungla +Pine Wood Stair=Scala di legno di pino +Inner Pine Wood Stair=Scala di legno di pino interna +Outer Pine Wood Stair=Scala di legno di pino esterna +Pine Wood Slab=Lastra di legno di pino +Acacia Wood Stair=Scala di legno d'acacia +Inner Acacia Wood Stair=Scala di legno d'acacia interna +Outer Acacia Wood Stair=Scala di legno d'acacia esterna +Acacia Wood Slab=Lastra di legno d'acacia +Aspen Wood Stair=Scala di legno di pioppo +Inner Aspen Wood Stair=Scala di legno di pioppo interna +Outer Aspen Wood Stair=Scala di legno di pioppo esterna +Aspen Wood Slab=Lastra di legno di pioppo +Stone Stair=Scala di pietra +Inner Stone Stair=Scala di pietra interna +Outer Stone Stair=Scala di pietra esterna +Stone Slab=Lastra di pietra +Cobblestone Stair=Scala di ciottoli +Inner Cobblestone Stair=Scala di ciottoli interna +Outer Cobblestone Stair=Scala di ciottoli esterna +Cobblestone Slab=Lastra di ciottoli +Mossy Cobblestone Stair=Scala di ciottoli muschiosi +Inner Mossy Cobblestone Stair=Scala di ciottoli muschiosi interna +Outer Mossy Cobblestone Stair=Scala di ciottoli muschiosi esterna +Mossy Cobblestone Slab=Lastra di ciottoli muschiosi +Stone Brick Stair=Scala di mattone di pietra +Inner Stone Brick Stair=Scala di mattone di pietra interna +Outer Stone Brick Stair=Scala di mattone di pietra esterna +Stone Brick Slab=Lastra di mattone di pietra +Stone Block Stair=Scala di blocco di pietra +Inner Stone Block Stair=Scala di blocco di pietra interna +Outer Stone Block Stair=Scala di blocco di pietra esterna +Stone Block Slab=Lastra di blocco di pietra +Desert Stone Stair=Scala di pietra del deserto +Inner Desert Stone Stair=Scala di pietra del deserto interna +Outer Desert Stone Stair=Scala di pietra del deserto esterna +Desert Stone Slab=Lastra di pietra del deserto +Desert Cobblestone Stair=Scala di ciottoli del deserto +Inner Desert Cobblestone Stair=Scala di ciottoli del deserto interna +Outer Desert Cobblestone Stair=Scala di ciottoli del deserto esterna +Desert Cobblestone Slab=Lastra di ciottoli del deserto +Desert Stone Brick Stair=Scala di mattone di pietra del deserto +Inner Desert Stone Brick Stair=Scala di mattone di pietra del deserto interna +Outer Desert Stone Brick Stair=Scala di mattone di pietra del deserto esterna +Desert Stone Brick Slab=Lastra di mattone di pietra del deserto +Desert Stone Block Stair=Scala di blocco di pietra del deserto +Inner Desert Stone Block Stair=Scala di blocco di pietra del deserto interna +Outer Desert Stone Block Stair=Scala di blocco di pietra del deserto esterna +Desert Stone Block Slab=Lastra di blocco di pietra del deserto +Sandstone Stair=Scala d'arenaria +Inner Sandstone Stair=Scala d'arenaria interna +Outer Sandstone Stair=Scala d'arenaria esterna +Sandstone Slab=Lastra d'arenaria +Sandstone Brick Stair=Scala di mattone d'arenaria +Inner Sandstone Brick Stair=Scala di mattone d'arenaria interna +Outer Sandstone Brick Stair=Scala di mattone d'arenaria esterna +Sandstone Brick Slab=Lastra di mattone d'arenaria +Sandstone Block Stair=Scala di blocco d'arenaria +Inner Sandstone Block Stair=Scala di blocco d'arenaria interna +Outer Sandstone Block Stair=Scala di blocco d'arenaria esterna +Sandstone Block Slab=Lastra di blocco d'arenaria +Desert Sandstone Stair=Scala d'arenaria del deserto +Inner Desert Sandstone Stair=Scala d'arenaria del deserto interna +Outer Desert Sandstone Stair=Scala d'arenaria del deserto esterna +Desert Sandstone Slab=Lastra d'arenaria del deserto +Desert Sandstone Brick Stair=Scala di mattone d'arenaria del deserto +Inner Desert Sandstone Brick Stair=Scala di mattone d'arenaria del deserto interna +Outer Desert Sandstone Brick Stair=Scala di mattone d'arenaria del deserto esterna +Desert Sandstone Brick Slab=Lastra di mattone d'arenaria del deserto +Desert Sandstone Block Stair=Scala di blocco d'arenaria del deserto +Inner Desert Sandstone Block Stair=Scala di blocco d'arenaria del deserto interna +Outer Desert Sandstone Block Stair=Scala di blocco d'arenaria del deserto esterna +Desert Sandstone Block Slab=Lastra di blocco d'arenaria del deserto +Silver Sandstone Stair=Scala d'arenaria argentata +Inner Silver Sandstone Stair=Scala d'arenaria argentata interna +Outer Silver Sandstone Stair=Scala d'arenaria argentata esterna +Silver Sandstone Slab=Lastra d'arenaria argentata +Silver Sandstone Brick Stair=Scala di mattone d'arenaria argentata +Inner Silver Sandstone Brick Stair=Scala di mattone d'arenaria argentata interna +Outer Silver Sandstone Brick Stair=Scala di mattone d'arenaria argentata esterna +Silver Sandstone Brick Slab=Lastra di mattone d'arenaria argentata +Silver Sandstone Block Stair=Scala di blocco d'arenaria argentata +Inner Silver Sandstone Block Stair=Scala di blocco d'arenaria argentata interna +Outer Silver Sandstone Block Stair=Scala di blocco d'arenaria argentata esterna +Silver Sandstone Block Slab=Lastra di blocco d'arenaria argentata +Obsidian Stair=Scala d'ossidiana +Inner Obsidian Stair=Scala d'ossidiana interna +Outer Obsidian Stair=Scala d'ossidiana esterna +Obsidian Slab=Lastra d'ossidiana +Obsidian Brick Stair=Scala di mattone d'ossidiana +Inner Obsidian Brick Stair=Scala di mattone d'ossidiana interna +Outer Obsidian Brick Stair=Scala di mattone d'ossidiana esterna +Obsidian Brick Slab=Lastra di mattone d'ossidiana +Obsidian Block Stair=Scala di blocco d'ossidiana +Inner Obsidian Block Stair=Scala di blocco d'ossidiana interna +Outer Obsidian Block Stair=Scala di blocco d'ossidiana esterna +Obsidian Block Slab=Lastra di blocco d'ossidiana +Brick Stair=Scala di mattone +Inner Brick Stair=Scala di mattone interna +Outer Brick Stair=Scala di mattone esterna +Brick Slab=Lastra di mattone +Steel Block Stair=Scala di blocco d'acciaio +Inner Steel Block Stair=Scala di blocco d'acciaio interna +Outer Steel Block Stair=Scala di blocco d'acciaio esterna +Steel Block Slab=Lastra di blocco d'acciaio +Tin Block Stair=Scala di blocco di stagno +Inner Tin Block Stair=Scala di blocco di stagno interna +Outer Tin Block Stair=Scala di blocco di stagno esterna +Tin Block Slab=Lastra di blocco di stagno +Copper Block Stair=Scala di blocco di rame +Inner Copper Block Stair=Scala di blocco di rame interna +Outer Copper Block Stair=Scala di blocco di rame esterna +Copper Block Slab=Lastra di blocco di rame +Bronze Block Stair=Scala di blocco di bronzo +Inner Bronze Block Stair=Scala di blocco di bronzo interna +Outer Bronze Block Stair=Scala di blocco di bronzo esterna +Bronze Block Slab=Lastra di blocco di bronzo +Gold Block Stair=Scala di blocco d'oro +Inner Gold Block Stair=Scala di blocco d'oro interna +Outer Gold Block Stair=Scala di blocco d'oro esterna +Gold Block Slab=Lastra di blocco d'oro +Ice Stair=Scala di ghiaccio +Inner Ice Stair=Scala di ghiaccio interna +Outer Ice Stair=Scala di ghiaccio esterna +Ice Slab=Lastra di ghiaccio +Snow Block Stair=Scala di blocco di neve +Inner Snow Block Stair=Scala di blocco di neve interna +Outer Snow Block Stair=Scala di blocco di neve esterna +Snow Block Slab=Lastra di blocco di neve diff --git a/mods/tnt/locale/tnt.it.tr b/mods/tnt/locale/tnt.it.tr new file mode 100644 index 00000000..bc4ef140 --- /dev/null +++ b/mods/tnt/locale/tnt.it.tr @@ -0,0 +1,4 @@ +# textdomain: tnt +Gun Powder=Polvere da sparo +TNT Stick=Candelotto di TNT +TNT=TNT \ No newline at end of file diff --git a/mods/vessels/locale/vessels.it.tr b/mods/vessels/locale/vessels.it.tr new file mode 100644 index 00000000..09a66675 --- /dev/null +++ b/mods/vessels/locale/vessels.it.tr @@ -0,0 +1,8 @@ +# textdomain: vessels +Vessels Shelf=Scaffale per contenitori +Empty Glass Bottle=Bottiglia di vetro vuota +Empty Drinking Glass=Bicchiere di vetro vuoto +Empty Heavy Steel Bottle=Bottigia di metallo pesante vuota +Glass Fragments=Frammenti di vetro +Empty Vessels Shelf=Scaffale per contenitori vuoto +Vessels Shelf (@1 items)=Scaffale per contenitori (@1 oggetti) diff --git a/mods/walls/locale/walls.it.tr b/mods/walls/locale/walls.it.tr new file mode 100644 index 00000000..1ca3f888 --- /dev/null +++ b/mods/walls/locale/walls.it.tr @@ -0,0 +1,4 @@ +# textdomain: walls +Cobblestone Wall=Muro di ciottoli +Mossy Cobblestone Wall=Muro di ciottoli muschiosi +Desert Cobblestone Wall=Muro di ciottoli del deserto \ No newline at end of file diff --git a/mods/wool/locale/wool.it.tr b/mods/wool/locale/wool.it.tr new file mode 100644 index 00000000..628faf7b --- /dev/null +++ b/mods/wool/locale/wool.it.tr @@ -0,0 +1,16 @@ +# textdomain: wool +White Wool=Lana bianca +Grey Wool=Lana grigia +Dark Grey Wool=Lana grigia scura +Black Wool=Lana nera +Violet Wool=Lana viola +Blue Wool=Lana blu +Cyan Wool=Lana ciano +Dark Green Wool=Lana verde scura +Green Wool=Lana verde +Yellow Wool=Lana gialla +Brown Wool=Lana marrone +Orange Wool=Lana arancione +Red Wool=Lana rossa +Magenta Wool=Lana magenta +Pink Wool=Lana rosa \ No newline at end of file diff --git a/mods/xpanes/locale/xpanes.it.tr b/mods/xpanes/locale/xpanes.it.tr new file mode 100644 index 00000000..7b739680 --- /dev/null +++ b/mods/xpanes/locale/xpanes.it.tr @@ -0,0 +1,6 @@ +# textdomain: xpanes +Glass Pane=Pannello di vetro +Obsidian Glass Pane=Pannello di vetro d'ossidiana +Steel Bars=Sbarre d'acciaio +Steel Bar Door=Porta con sbarre d'acciaio +Steel Bar Trapdoor=Botola con sbarre d'acciaio \ No newline at end of file