From 25fa21ddbdc70a85ce5434f20d2b2d300179502a Mon Sep 17 00:00:00 2001 From: bakawun Date: Mon, 27 Nov 2023 10:47:55 +0100 Subject: [PATCH 001/375] Set all mob spawn chance weights according to mc now that weights are actually taken into account --- mods/ENTITIES/mobs_mc/axolotl.lua | 2 +- mods/ENTITIES/mobs_mc/bat.lua | 2 +- mods/ENTITIES/mobs_mc/blaze.lua | 2 +- mods/ENTITIES/mobs_mc/chicken.lua | 2 +- mods/ENTITIES/mobs_mc/cod.lua | 2 +- mods/ENTITIES/mobs_mc/cow+mooshroom.lua | 4 ++-- mods/ENTITIES/mobs_mc/creeper.lua | 2 +- mods/ENTITIES/mobs_mc/dolphin.lua | 2 +- mods/ENTITIES/mobs_mc/enderman.lua | 8 ++++---- mods/ENTITIES/mobs_mc/ghast.lua | 2 +- mods/ENTITIES/mobs_mc/glow_squid.lua | 2 +- mods/ENTITIES/mobs_mc/hoglin+zoglin.lua | 2 +- mods/ENTITIES/mobs_mc/horse.lua | 4 ++-- mods/ENTITIES/mobs_mc/llama.lua | 2 +- mods/ENTITIES/mobs_mc/ocelot.lua | 2 +- mods/ENTITIES/mobs_mc/parrot.lua | 2 +- mods/ENTITIES/mobs_mc/pig.lua | 2 +- mods/ENTITIES/mobs_mc/piglin.lua | 8 ++++---- mods/ENTITIES/mobs_mc/polar_bear.lua | 2 +- mods/ENTITIES/mobs_mc/rabbit.lua | 2 +- mods/ENTITIES/mobs_mc/salmon.lua | 2 +- mods/ENTITIES/mobs_mc/sheep.lua | 2 +- mods/ENTITIES/mobs_mc/skeleton+stray.lua | 6 +++--- mods/ENTITIES/mobs_mc/skeleton_wither.lua | 2 +- mods/ENTITIES/mobs_mc/slime+magma_cube.lua | 18 +++++++++--------- mods/ENTITIES/mobs_mc/spider.lua | 2 +- mods/ENTITIES/mobs_mc/squid.lua | 2 +- mods/ENTITIES/mobs_mc/strider.lua | 4 ++-- mods/ENTITIES/mobs_mc/tropical_fish.lua | 2 +- mods/ENTITIES/mobs_mc/villager.lua | 2 +- mods/ENTITIES/mobs_mc/villager_zombie.lua | 2 +- mods/ENTITIES/mobs_mc/wolf.lua | 2 +- mods/ENTITIES/mobs_mc/zombie.lua | 8 ++++---- 33 files changed, 55 insertions(+), 55 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/axolotl.lua b/mods/ENTITIES/mobs_mc/axolotl.lua index 563db8bf7..f3f423c01 100644 --- a/mods/ENTITIES/mobs_mc/axolotl.lua +++ b/mods/ENTITIES/mobs_mc/axolotl.lua @@ -171,7 +171,7 @@ mcl_mobs:spawn_specific( 0, minetest.LIGHT_MAX+1, 30, -4000, +100, 3, water-16, water+1) diff --git a/mods/ENTITIES/mobs_mc/bat.lua b/mods/ENTITIES/mobs_mc/bat.lua index b8b650877..cc36e3836 100644 --- a/mods/ENTITIES/mobs_mc/bat.lua +++ b/mods/ENTITIES/mobs_mc/bat.lua @@ -150,7 +150,7 @@ mcl_mobs:spawn_specific( 0, maxlight, 20, -5000, +100, 2, mcl_vars.mg_overworld_min, mobs_mc.water_level-1) diff --git a/mods/ENTITIES/mobs_mc/blaze.lua b/mods/ENTITIES/mobs_mc/blaze.lua index 98cf4728a..bbc47df94 100644 --- a/mods/ENTITIES/mobs_mc/blaze.lua +++ b/mods/ENTITIES/mobs_mc/blaze.lua @@ -151,7 +151,7 @@ mcl_mobs:spawn_specific( 0, minetest.LIGHT_MAX+1, 30, -5000, +1000, 3, mcl_vars.mg_nether_min, mcl_vars.mg_nether_max) diff --git a/mods/ENTITIES/mobs_mc/chicken.lua b/mods/ENTITIES/mobs_mc/chicken.lua index 5702db4c7..1adf47569 100644 --- a/mods/ENTITIES/mobs_mc/chicken.lua +++ b/mods/ENTITIES/mobs_mc/chicken.lua @@ -157,7 +157,7 @@ mcl_mobs:spawn_specific( }, 9, minetest.LIGHT_MAX+1, -30, 17000, +30, 100, 3, mobs_mc.water_level, mcl_vars.mg_overworld_max) diff --git a/mods/ENTITIES/mobs_mc/cod.lua b/mods/ENTITIES/mobs_mc/cod.lua index 656b2c14c..4f41f763d 100644 --- a/mods/ENTITIES/mobs_mc/cod.lua +++ b/mods/ENTITIES/mobs_mc/cod.lua @@ -266,7 +266,7 @@ mcl_mobs:spawn_specific( 0, minetest.LIGHT_MAX+1, 30, -4000, +750, 3, water-16, water+1) diff --git a/mods/ENTITIES/mobs_mc/cow+mooshroom.lua b/mods/ENTITIES/mobs_mc/cow+mooshroom.lua index 86b94eea3..4ee21b2ea 100644 --- a/mods/ENTITIES/mobs_mc/cow+mooshroom.lua +++ b/mods/ENTITIES/mobs_mc/cow+mooshroom.lua @@ -207,7 +207,7 @@ mcl_mobs:spawn_specific( 9, minetest.LIGHT_MAX+1, 30, -17000, +80, 10, mobs_mc.water_level, mcl_vars.mg_overworld_max) @@ -225,7 +225,7 @@ mcl_mobs:spawn_specific( 9, minetest.LIGHT_MAX+1, 30, -17000, +80, 5, mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_max) diff --git a/mods/ENTITIES/mobs_mc/creeper.lua b/mods/ENTITIES/mobs_mc/creeper.lua index a36550a93..0b3d41c28 100644 --- a/mods/ENTITIES/mobs_mc/creeper.lua +++ b/mods/ENTITIES/mobs_mc/creeper.lua @@ -407,7 +407,7 @@ mcl_mobs:spawn_specific( 0, 7, 20, -16500, +1000, 2, mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_max) diff --git a/mods/ENTITIES/mobs_mc/dolphin.lua b/mods/ENTITIES/mobs_mc/dolphin.lua index 153734c39..5469feb23 100644 --- a/mods/ENTITIES/mobs_mc/dolphin.lua +++ b/mods/ENTITIES/mobs_mc/dolphin.lua @@ -244,7 +244,7 @@ mcl_mobs:spawn_specific( 0, minetest.LIGHT_MAX+1, 30, -4000, +70, 3, water-16, water+1) diff --git a/mods/ENTITIES/mobs_mc/enderman.lua b/mods/ENTITIES/mobs_mc/enderman.lua index a57160e4d..d3ce1e5cc 100644 --- a/mods/ENTITIES/mobs_mc/enderman.lua +++ b/mods/ENTITIES/mobs_mc/enderman.lua @@ -668,7 +668,7 @@ mcl_mobs:spawn_specific( 0, minetest.LIGHT_MAX+1, 30, -3000, +100, 12, mcl_vars.mg_end_min, mcl_vars.mg_end_max) @@ -816,7 +816,7 @@ mcl_mobs:spawn_specific( 0, 7, 30, -19000, +100, 2, mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_max) @@ -833,7 +833,7 @@ mcl_mobs:spawn_specific( 0, 11, 30, -27500, +100, 4, mcl_vars.mg_nether_min, mcl_vars.mg_nether_max) @@ -849,7 +849,7 @@ mcl_mobs:spawn_specific( 0, 11, 30, -5000, +100, 4, mcl_vars.mg_nether_min, mcl_vars.mg_nether_max) diff --git a/mods/ENTITIES/mobs_mc/ghast.lua b/mods/ENTITIES/mobs_mc/ghast.lua index 1a3d34e1b..08d09ed07 100644 --- a/mods/ENTITIES/mobs_mc/ghast.lua +++ b/mods/ENTITIES/mobs_mc/ghast.lua @@ -97,7 +97,7 @@ mcl_mobs:spawn_specific( 0, 7, 30, -72000, +400, 2, mcl_vars.mg_nether_min, mcl_vars.mg_nether_max) diff --git a/mods/ENTITIES/mobs_mc/glow_squid.lua b/mods/ENTITIES/mobs_mc/glow_squid.lua index 2d3f19270..679bb4cfe 100644 --- a/mods/ENTITIES/mobs_mc/glow_squid.lua +++ b/mods/ENTITIES/mobs_mc/glow_squid.lua @@ -237,7 +237,7 @@ mcl_mobs:spawn_specific( 0, minetest.LIGHT_MAX + 1, 30, - 10000, + 100, 3, water - 16, water) diff --git a/mods/ENTITIES/mobs_mc/hoglin+zoglin.lua b/mods/ENTITIES/mobs_mc/hoglin+zoglin.lua index 8f8590933..056cc0eb0 100644 --- a/mods/ENTITIES/mobs_mc/hoglin+zoglin.lua +++ b/mods/ENTITIES/mobs_mc/hoglin+zoglin.lua @@ -129,7 +129,7 @@ mcl_mobs:spawn_specific( 0, minetest.LIGHT_MAX+1, 30, -6000, +200, 3, mcl_vars.mg_nether_min, mcl_vars.mg_nether_max) diff --git a/mods/ENTITIES/mobs_mc/horse.lua b/mods/ENTITIES/mobs_mc/horse.lua index 07aa58572..08281b8cd 100644 --- a/mods/ENTITIES/mobs_mc/horse.lua +++ b/mods/ENTITIES/mobs_mc/horse.lua @@ -612,7 +612,7 @@ mcl_mobs:spawn_specific( 0, minetest.LIGHT_MAX+1, 30, -15000, +40, 4, mobs_mc.water_level+3, mcl_vars.mg_overworld_max) @@ -635,7 +635,7 @@ mcl_mobs:spawn_specific( 9, minetest.LIGHT_MAX+1, 30, -15000, +10, 4, mobs_mc.water_level+3, mcl_vars.mg_overworld_max) diff --git a/mods/ENTITIES/mobs_mc/llama.lua b/mods/ENTITIES/mobs_mc/llama.lua index 578e7c88a..78d190121 100644 --- a/mods/ENTITIES/mobs_mc/llama.lua +++ b/mods/ENTITIES/mobs_mc/llama.lua @@ -291,7 +291,7 @@ mcl_mobs:spawn_specific( 0, minetest.LIGHT_MAX+1, 30, -15000, +50, 5, mobs_mc.water_level+15, mcl_vars.mg_overworld_max) diff --git a/mods/ENTITIES/mobs_mc/ocelot.lua b/mods/ENTITIES/mobs_mc/ocelot.lua index 7aadda492..8f79a589d 100644 --- a/mods/ENTITIES/mobs_mc/ocelot.lua +++ b/mods/ENTITIES/mobs_mc/ocelot.lua @@ -186,7 +186,7 @@ mcl_mobs:spawn_specific( 0, minetest.LIGHT_MAX+1, 30, -15000, +300, 5, mobs_mc.water_level+15, mcl_vars.mg_overworld_max) diff --git a/mods/ENTITIES/mobs_mc/parrot.lua b/mods/ENTITIES/mobs_mc/parrot.lua index 7d4c50f1c..834ad22ae 100644 --- a/mods/ENTITIES/mobs_mc/parrot.lua +++ b/mods/ENTITIES/mobs_mc/parrot.lua @@ -235,7 +235,7 @@ mcl_mobs:spawn_specific( 0, minetest.LIGHT_MAX+1, 7, -30000, +400, 1, mobs_mc.water_level+7, mcl_vars.mg_overworld_max) diff --git a/mods/ENTITIES/mobs_mc/pig.lua b/mods/ENTITIES/mobs_mc/pig.lua index 7b1f4e879..304c4c800 100644 --- a/mods/ENTITIES/mobs_mc/pig.lua +++ b/mods/ENTITIES/mobs_mc/pig.lua @@ -258,7 +258,7 @@ mcl_mobs:spawn_specific( 9, minetest.LIGHT_MAX+1, 30, -15000, +100, 8, mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_max) diff --git a/mods/ENTITIES/mobs_mc/piglin.lua b/mods/ENTITIES/mobs_mc/piglin.lua index 27f5a72f4..0e0ffecf7 100644 --- a/mods/ENTITIES/mobs_mc/piglin.lua +++ b/mods/ENTITIES/mobs_mc/piglin.lua @@ -397,7 +397,7 @@ mcl_mobs:spawn_specific( 0, minetest.LIGHT_MAX+1, 30, -6000, +150, 3, mcl_vars.mg_lava_nether_max, mcl_vars.mg_nether_max) @@ -413,7 +413,7 @@ mcl_mobs:spawn_specific( 0, minetest.LIGHT_MAX+1, 30, -6000, +150, 3, mcl_vars.mg_lava_nether_max, mcl_vars.mg_nether_max) @@ -429,7 +429,7 @@ mcl_mobs:spawn_specific( 0, minetest.LIGHT_MAX+1, 30, - 6000, + 1000, 3, mcl_vars.mg_nether_min, mcl_vars.mg_nether_max) @@ -446,7 +446,7 @@ mcl_mobs:spawn_specific( 0, minetest.LIGHT_MAX+1, 30, - 100000, + 50, 4, mcl_vars.mg_nether_min, mcl_vars.mg_nether_max) diff --git a/mods/ENTITIES/mobs_mc/polar_bear.lua b/mods/ENTITIES/mobs_mc/polar_bear.lua index 18d6f3a13..aa690bc20 100644 --- a/mods/ENTITIES/mobs_mc/polar_bear.lua +++ b/mods/ENTITIES/mobs_mc/polar_bear.lua @@ -86,7 +86,7 @@ mcl_mobs:spawn_specific( 0, minetest.LIGHT_MAX+1, 30, -7000, +50, 3, mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_max) diff --git a/mods/ENTITIES/mobs_mc/rabbit.lua b/mods/ENTITIES/mobs_mc/rabbit.lua index 38fae935f..c519e5e7f 100644 --- a/mods/ENTITIES/mobs_mc/rabbit.lua +++ b/mods/ENTITIES/mobs_mc/rabbit.lua @@ -148,7 +148,7 @@ mcl_mobs:spawn_specific( 9, minetest.LIGHT_MAX+1, 30, -15000, +40, 8, mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_max) diff --git a/mods/ENTITIES/mobs_mc/salmon.lua b/mods/ENTITIES/mobs_mc/salmon.lua index f8e0c4e02..80adbd2c1 100644 --- a/mods/ENTITIES/mobs_mc/salmon.lua +++ b/mods/ENTITIES/mobs_mc/salmon.lua @@ -220,7 +220,7 @@ mcl_mobs:spawn_specific( 0, minetest.LIGHT_MAX+1, 30, -4000, +260, 3, water-16, water+1) diff --git a/mods/ENTITIES/mobs_mc/sheep.lua b/mods/ENTITIES/mobs_mc/sheep.lua index 4a5e924d8..56476d027 100644 --- a/mods/ENTITIES/mobs_mc/sheep.lua +++ b/mods/ENTITIES/mobs_mc/sheep.lua @@ -379,7 +379,7 @@ mcl_mobs:spawn_specific( 9, minetest.LIGHT_MAX+1, 30, -15000, +120, 3, mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_max) diff --git a/mods/ENTITIES/mobs_mc/skeleton+stray.lua b/mods/ENTITIES/mobs_mc/skeleton+stray.lua index 215047fdd..2ce2fba5b 100644 --- a/mods/ENTITIES/mobs_mc/skeleton+stray.lua +++ b/mods/ENTITIES/mobs_mc/skeleton+stray.lua @@ -299,7 +299,7 @@ mcl_mobs:spawn_specific( 0, 7, 20, -17000, +800, 2, mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_max) @@ -316,7 +316,7 @@ mcl_mobs:spawn_specific( 0, minetest.LIGHT_MAX+1, 30, -10000, +800, 3, mcl_vars.mg_nether_min, mcl_vars.mg_nether_max) @@ -336,7 +336,7 @@ mcl_mobs:spawn_specific( 0, 7, 20, -19000, +1200, 2, mobs_mc.water_level, mcl_vars.mg_overworld_max) diff --git a/mods/ENTITIES/mobs_mc/skeleton_wither.lua b/mods/ENTITIES/mobs_mc/skeleton_wither.lua index 865fa13f0..cd2b44abb 100644 --- a/mods/ENTITIES/mobs_mc/skeleton_wither.lua +++ b/mods/ENTITIES/mobs_mc/skeleton_wither.lua @@ -116,7 +116,7 @@ mcl_mobs:spawn_specific( 0, 7, 30, -5000, +500, 5, mcl_vars.mg_nether_min, mcl_vars.mg_nether_max) diff --git a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua index 321a9c1ce..f84e04ed9 100644 --- a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua +++ b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua @@ -321,7 +321,7 @@ cave_biomes, 0, minetest.LIGHT_MAX+1, 30, -12000, +1000, 4, cave_min, cave_max, @@ -335,7 +335,7 @@ swampy_biomes, 0, swamp_light_max, 30, -12000, +1000, 4, swamp_min, swamp_max) @@ -348,7 +348,7 @@ cave_biomes, 0, minetest.LIGHT_MAX+1, 30, -8500, +1000, 4, cave_min, cave_max, @@ -362,7 +362,7 @@ swampy_biomes, 0, swamp_light_max, 30, -8500, +1000, 4, swamp_min, swamp_max) @@ -375,7 +375,7 @@ cave_biomes, 0, minetest.LIGHT_MAX+1, 30, -10000, +1000, 4, cave_min, cave_max, @@ -389,7 +389,7 @@ swampy_biomes, 0, swamp_light_max, 30, -10000, +1000, 4, swamp_min, swamp_max) @@ -512,7 +512,7 @@ magma_cube_biomes, 0, minetest.LIGHT_MAX+1, 30, -15000, +100, 4, nether_min, nether_max) @@ -525,7 +525,7 @@ magma_cube_biomes, 0, minetest.LIGHT_MAX+1, 30, -15500, +100, 4, nether_min, nether_max) @@ -538,7 +538,7 @@ magma_cube_biomes, 0, minetest.LIGHT_MAX+1, 30, -16000, +100, 4, nether_min, nether_max) diff --git a/mods/ENTITIES/mobs_mc/spider.lua b/mods/ENTITIES/mobs_mc/spider.lua index 38138a71c..16f802c09 100644 --- a/mods/ENTITIES/mobs_mc/spider.lua +++ b/mods/ENTITIES/mobs_mc/spider.lua @@ -287,7 +287,7 @@ mcl_mobs:spawn_specific( 0, 7, 30, -17000, +1000, 2, mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_max) diff --git a/mods/ENTITIES/mobs_mc/squid.lua b/mods/ENTITIES/mobs_mc/squid.lua index a692fd8d4..0cd0c6c5a 100644 --- a/mods/ENTITIES/mobs_mc/squid.lua +++ b/mods/ENTITIES/mobs_mc/squid.lua @@ -211,7 +211,7 @@ mcl_mobs:spawn_specific( 0, minetest.LIGHT_MAX+1, 30, -5500, +80, 3, water-16, water+1) diff --git a/mods/ENTITIES/mobs_mc/strider.lua b/mods/ENTITIES/mobs_mc/strider.lua index 142025e06..18ce7ea4a 100644 --- a/mods/ENTITIES/mobs_mc/strider.lua +++ b/mods/ENTITIES/mobs_mc/strider.lua @@ -225,7 +225,7 @@ mcl_mobs:spawn_setup({ }, min_height = mcl_vars.mg_nether_min, max_height = mcl_vars.mg_nether_max, - chance = 2000, + chance = 200, }) mcl_mobs:spawn_setup({ @@ -241,7 +241,7 @@ mcl_mobs:spawn_setup({ }, min_height = mcl_vars.mg_nether_min, max_height = mcl_vars.mg_nether_max, - chance = 100, + chance = 20, }) -- spawn eggs diff --git a/mods/ENTITIES/mobs_mc/tropical_fish.lua b/mods/ENTITIES/mobs_mc/tropical_fish.lua index 79b32bb8b..f5de8ecdd 100644 --- a/mods/ENTITIES/mobs_mc/tropical_fish.lua +++ b/mods/ENTITIES/mobs_mc/tropical_fish.lua @@ -183,7 +183,7 @@ mcl_mobs:spawn_specific( 0, minetest.LIGHT_MAX+1, 30, -4000, +750, 3, water-16, water+1) diff --git a/mods/ENTITIES/mobs_mc/villager.lua b/mods/ENTITIES/mobs_mc/villager.lua index cb421b78b..6df9b8d53 100644 --- a/mods/ENTITIES/mobs_mc/villager.lua +++ b/mods/ENTITIES/mobs_mc/villager.lua @@ -2335,7 +2335,7 @@ mcl_mobs:spawn_specific( 0, minetest.LIGHT_MAX+1, 30, -20, +2, 4, mobs_mc.water_level+1, mcl_vars.mg_overworld_max) diff --git a/mods/ENTITIES/mobs_mc/villager_zombie.lua b/mods/ENTITIES/mobs_mc/villager_zombie.lua index 5af1fc879..ada456aff 100644 --- a/mods/ENTITIES/mobs_mc/villager_zombie.lua +++ b/mods/ENTITIES/mobs_mc/villager_zombie.lua @@ -225,7 +225,7 @@ mcl_mobs:spawn_specific( 0, 7, 30, -4090, +50, 4, mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_max) diff --git a/mods/ENTITIES/mobs_mc/wolf.lua b/mods/ENTITIES/mobs_mc/wolf.lua index c52b5b1a3..e2cb206b1 100644 --- a/mods/ENTITIES/mobs_mc/wolf.lua +++ b/mods/ENTITIES/mobs_mc/wolf.lua @@ -224,7 +224,7 @@ mcl_mobs:spawn_specific( 0, minetest.LIGHT_MAX+1, 30, -9000, +80, 7, mobs_mc.water_level+3, mcl_vars.mg_overworld_max) diff --git a/mods/ENTITIES/mobs_mc/zombie.lua b/mods/ENTITIES/mobs_mc/zombie.lua index 6a4f5d48a..cf2001f9b 100644 --- a/mods/ENTITIES/mobs_mc/zombie.lua +++ b/mods/ENTITIES/mobs_mc/zombie.lua @@ -243,7 +243,7 @@ mcl_mobs:spawn_specific( 0, 7, 30, -6000, +1000, 4, mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_max) @@ -332,7 +332,7 @@ mcl_mobs:spawn_specific( 0, 7, 30, -60000, +50, 4, mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_max) @@ -348,7 +348,7 @@ mcl_mobs:spawn_specific( 0, 7, 30, -6500, +2400, 4, mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_max) @@ -362,7 +362,7 @@ mcl_mobs:spawn_specific( 0, 7, 30, -65000, +120, 4, mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_max) From 43e7a952acedf3c8c793f200b66ceefe3044a7c8 Mon Sep 17 00:00:00 2001 From: chmodsayshello Date: Thu, 30 Nov 2023 22:29:56 +0100 Subject: [PATCH 002/375] use math.ceil to get amount of needed players --- mods/ITEMS/mcl_beds/functions.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index 6c59fff04..394c748e7 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -385,7 +385,7 @@ function mcl_beds.on_rightclick(pos, player, is_top) mcl_title.set(player, "actionbar", {text=message, color="white", stay=60}) else -- someone just successfully entered a bed local connected_players = minetest.get_connected_players() - local sleep_hud_message = S("@1/@2 players currently in bed.", player_in_bed, players_in_bed_setting() * #connected_players / 100) + local sleep_hud_message = S("@1/@2 players currently in bed.", player_in_bed, math.ceil(players_in_bed_setting() * #connected_players / 100)) for _, player in pairs(connected_players) do if not mcl_beds.player[player:get_player_name()] then -- only send message to players not sleeping. if mcl_title.params_get(player) then mcl_title.clear(player) end -- clear, old message is still being displayed From 2ba73f832c7d21451be760f40fc4b25060d42a03 Mon Sep 17 00:00:00 2001 From: bakawun Date: Mon, 4 Dec 2023 20:17:39 +0100 Subject: [PATCH 003/375] horse: drops: remove 2nd saddle, add armor --- mods/ENTITIES/mobs_mc/horse.lua | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/horse.lua b/mods/ENTITIES/mobs_mc/horse.lua index 07aa58572..5bf241758 100644 --- a/mods/ENTITIES/mobs_mc/horse.lua +++ b/mods/ENTITIES/mobs_mc/horse.lua @@ -44,18 +44,6 @@ local function get_drops(self) max = 2, looting = "common", }) - if self._saddle then - table.insert(self.drops,{name = "mcl_mobitems:saddle", - chance = 1, - min = 1, - max = 1,}) - end - if self._chest then - table.insert(self.drops,{name = "mcl_chests:chest", - chance = 1, - min = 1, - max = 1,}) - end end -- Helper functions to determine equipment rules @@ -245,10 +233,18 @@ local horse = { on_die = function(self, pos) - -- drop saddle when horse is killed while riding + -- drop saddle when horse is killed if self._saddle then minetest.add_item(pos, "mcl_mobitems:saddle") end + -- drop chest when mule/donkey is killed + if self._chest then + minetest.add_item(pos, "mcl_chests:chest") + end + -- drop armor when horse is killed + if self._wearing_armor then + minetest.add_item(pos, self._horse_armor) + end -- also detach from horse properly if self.driver then mcl_mobs.detach(self.driver, {x = 1, y = 0, z = 1}) @@ -401,6 +397,7 @@ local horse = { -- Put on armor and take armor from player's inventory local armor = minetest.get_item_group(iname, "horse_armor") self._horse_armor = iname + self._wearing_armor = true local w = clicker:get_wielded_item() if not minetest.is_creative_enabled(clicker:get_player_name()) then w:take_item() From 027e0e8337ed2b6de1b313116f44ea9c4f405068 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Mu=C3=B1oz?= Date: Tue, 5 Dec 2023 00:05:39 +0000 Subject: [PATCH 004/375] Fix a typo in the spanish translation (#4039) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-on: https://git.minetest.land/MineClone2/MineClone2/pulls/4039 Reviewed-by: the-real-herowl Co-authored-by: José Muñoz Co-committed-by: José Muñoz --- mods/ITEMS/mcl_bows/locale/mcl_bows.es.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_bows/locale/mcl_bows.es.tr b/mods/ITEMS/mcl_bows/locale/mcl_bows.es.tr index 4ed4d8640..0375eb320 100644 --- a/mods/ITEMS/mcl_bows/locale/mcl_bows.es.tr +++ b/mods/ITEMS/mcl_bows/locale/mcl_bows.es.tr @@ -11,7 +11,7 @@ To use the bow, you first need to have at least one arrow anywhere in your inven Bow=Arco Ammunition=Munición Damage from bow: 1-10=Daño con arco: 1-10 -Damage from dispenser: 3=Daño por dispendsador: 3 +Damage from dispenser: 3=Daño por dispensador: 3 Launches arrows=Lanza flechas Crossbow=Ballesta Crossbows are ranged weapons to shoot arrows at your foes.=Las ballestas son armas a distancia para disparar flechas a tus enemigos. From e29654a0f697e1333f57612aa72d318699d1877e Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Mon, 27 Nov 2023 03:37:28 +0100 Subject: [PATCH 005/375] Revert healing interval default to the lower value --- mods/PLAYER/mcl_hunger/init.lua | 2 +- settingtypes.txt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/PLAYER/mcl_hunger/init.lua b/mods/PLAYER/mcl_hunger/init.lua index cc3965f57..a039169e3 100644 --- a/mods/PLAYER/mcl_hunger/init.lua +++ b/mods/PLAYER/mcl_hunger/init.lua @@ -146,7 +146,7 @@ minetest.register_globalstep(function(dtime) local food_level = mcl_hunger.get_hunger(player) local food_saturation_level = mcl_hunger.get_saturation(player) local player_health = player:get_hp() - local max_tick_timer = tonumber(minetest.settings:get("mcl_health_regen_delay")) or 4 + local max_tick_timer = tonumber(minetest.settings:get("mcl_health_regen_delay")) or 0.5 if food_tick_timer > max_tick_timer then food_tick_timer = 0 diff --git a/settingtypes.txt b/settingtypes.txt index a78b33e3b..f5743bc1d 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -99,8 +99,8 @@ mcl_creative_dig_speed (Creative mode dig speed) float 0.2 mcl_enable_hunger (Hunger mechanic) bool true # Health regeneration delay when hunger bar is full -# Default:4 -mcl_health_regen_delay (Health regen delay) float 4 0 +# Default: 0.5 s +mcl_health_regen_delay (Health regen delay) float 0.5 0 [Mobs] # If enabled, mobs will spawn naturally. This does not affect From 24ffd64cadb9dbce40fdabb9fc8a9b2ac9351200 Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Tue, 28 Nov 2023 03:34:26 +0100 Subject: [PATCH 006/375] Knockback fixes --- mods/ENTITIES/mcl_mobs/combat.lua | 4 ++-- mods/HUD/mcl_death_messages/init.lua | 1 - mods/ITEMS/mcl_enchanting/enchantments.lua | 8 +++++++- mods/PLAYER/mcl_criticals/init.lua | 3 +-- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/combat.lua b/mods/ENTITIES/mcl_mobs/combat.lua index 6952f6581..ad7e202c6 100644 --- a/mods/ENTITIES/mcl_mobs/combat.lua +++ b/mods/ENTITIES/mcl_mobs/combat.lua @@ -719,12 +719,12 @@ function mob_class:on_punch(hitter, tflp, tool_capabilities, dir) end if hitter and is_player then local wielditem = hitter:get_wielded_item() + kb = kb + 9 * mcl_enchanting.get_enchantment(wielditem, "knockback") + -- add player velocity to mob knockback local hv = hitter:get_velocity() local dir_dot = (hv.x * dir.x) + (hv.z * dir.z) local player_mag = math.sqrt((hv.x * hv.x) + (hv.z * hv.z)) local mob_mag = math.sqrt((v.x * v.x) + (v.z * v.z)) - kb = kb + 9 * mcl_enchanting.get_enchantment(wielditem, "knockback") - -- add player velocity to mob knockback if dir_dot > 0 and mob_mag <= player_mag * 0.625 then kb = kb + ((math.abs(hv.x) + math.abs(hv.z)) * r) end diff --git a/mods/HUD/mcl_death_messages/init.lua b/mods/HUD/mcl_death_messages/init.lua index 6c2040545..82749ca94 100644 --- a/mods/HUD/mcl_death_messages/init.lua +++ b/mods/HUD/mcl_death_messages/init.lua @@ -156,7 +156,6 @@ mcl_death_messages = { plain = "@1 died a sweet death", assist = "@1 was poked to death by a sweet berry bush whilst trying to escape @2", }, - -- Missing snowballs: The Minecraft wiki mentions them but the MC source code does not. }, } diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index f137b4230..7e06ae43b 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -278,7 +278,13 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool end if hitter and hitter:is_player() then local wielditem = hitter:get_wielded_item() - knockback = knockback + 3 * mcl_enchanting.get_enchantment(wielditem, "knockback") + knockback = knockback + 5 * mcl_enchanting.get_enchantment(wielditem, "knockback") + -- add player velocity to knockback + local hv = hitter:get_velocity() + local dir_dot = (hv.x * dir.x) + (hv.z * dir.z) + if dir_dot > 0 then + knockback = knockback + dir_dot * 2 + end elseif luaentity and luaentity._knockback then knockback = knockback + luaentity._knockback end diff --git a/mods/PLAYER/mcl_criticals/init.lua b/mods/PLAYER/mcl_criticals/init.lua index 27d09abb2..3e292d165 100644 --- a/mods/PLAYER/mcl_criticals/init.lua +++ b/mods/PLAYER/mcl_criticals/init.lua @@ -23,8 +23,7 @@ mcl_damage.register_modifier(function(obj, damage, reason) texture = "mcl_particles_crit.png^[colorize:#bc7a57:127", }) minetest.sound_play("mcl_criticals_hit", {object = obj}) - -- the minecraft wiki is actually wrong about a crit dealing 150% damage, see minecraft source code - return damage + math.random(0, math.floor(damage * 1.5 + 2)) + return damage * math.random(1.5, 2.5) end end end, -100) From cca664552483df860c0495f426b87d9e2b4287d2 Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Tue, 28 Nov 2023 04:28:05 +0100 Subject: [PATCH 007/375] Added player damage invulnerability --- mods/PLAYER/mcl_playerplus/init.lua | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 99da0a01a..61ca0e103 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -721,6 +721,20 @@ mcl_damage.register_modifier(function(obj, damage, reason) end end, -200) +-- damage invulnerability +mcl_damage.register_modifier(function(obj, damage, reason) + local invul = obj:get_meta():get_int("mcl_damage:invulnerable") + if invul > 0 then + return 0 + else + obj:get_meta():set_int("mcl_damage:invulnerable", 1) + minetest.after(0.5, function() + obj:get_meta():set_int("mcl_damage:invulnerable", 0) + end) + return damage + end +end, -1000) + minetest.register_on_respawnplayer(function(player) local pos = player:get_pos() minetest.add_particlespawner({ From 46d9c6600047bf39cb9bd597d328791c877d60cc Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Tue, 28 Nov 2023 04:35:19 +0100 Subject: [PATCH 008/375] Fixed mobs executing custom on_punch with punch fail --- mods/ENTITIES/mcl_mobs/combat.lua | 44 +++++++++++++++---------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/combat.lua b/mods/ENTITIES/mcl_mobs/combat.lua index ad7e202c6..6b660c787 100644 --- a/mods/ENTITIES/mcl_mobs/combat.lua +++ b/mods/ENTITIES/mcl_mobs/combat.lua @@ -516,6 +516,28 @@ end -- deal damage and effects when mob punched function mob_class:on_punch(hitter, tflp, tool_capabilities, dir) + local is_player = hitter:is_player() + local mob_pos = self.object:get_pos() + local player_pos = hitter:get_pos() + + if is_player then + -- is mob out of reach? + if vector.distance(mob_pos, player_pos) > 3 then + return + end + -- is mob protected? + if self.protected and minetest.is_protected(mob_pos, hitter:get_player_name()) then + return + end + end + + local time_now = minetest.get_us_time() + local time_diff = time_now - self.invul_timestamp + + -- check for invulnerability time in microseconds (0.5 second) + if time_diff <= 500000 and time_diff >= 0 then + return + end -- custom punch function if self.do_punch then @@ -534,29 +556,7 @@ function mob_class:on_punch(hitter, tflp, tool_capabilities, dir) local time_now = minetest.get_us_time() - local is_player = hitter:is_player() - if is_player then - local time_diff = time_now - self.invul_timestamp - - -- check for invulnerability time in microseconds (0.5 second) - if time_diff <= 500000 and time_diff >= 0 then - return - end - - local mob_pos = self.object:get_pos() - local player_pos = hitter:get_pos() - - -- is mob out of reach? - if vector.distance(mob_pos, player_pos) > 3 then - return - end - - -- is mob protected? - if self.protected and minetest.is_protected(mob_pos, hitter:get_player_name()) then - return - end - if minetest.is_creative_enabled(hitter:get_player_name()) then self.health = 0 end From 1857341b59ab9ed7d2b084c2162b45431c32d291 Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Tue, 28 Nov 2023 04:35:42 +0100 Subject: [PATCH 009/375] Fixed player knockback from arrows --- mods/ITEMS/mcl_enchanting/enchantments.lua | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index 7e06ae43b..c6436339c 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -286,7 +286,13 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool knockback = knockback + dir_dot * 2 end elseif luaentity and luaentity._knockback then - knockback = knockback + luaentity._knockback + local kb = knockback + luaentity._knockback / 4 + local punch_dir = dir + punch_dir.y = 0 + punch_dir = vector.normalize(punch_dir) * kb + punch_dir.y = 4 + player:add_velocity(punch_dir) + knockback = 0 end return knockback end From 589de76613c3966b82f3992d5289cb29c1b82bdf Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Tue, 5 Dec 2023 01:57:40 +0100 Subject: [PATCH 010/375] Fixed a code branch never being run --- mods/PLAYER/mcl_hunger/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/PLAYER/mcl_hunger/init.lua b/mods/PLAYER/mcl_hunger/init.lua index a039169e3..ff625a5f7 100644 --- a/mods/PLAYER/mcl_hunger/init.lua +++ b/mods/PLAYER/mcl_hunger/init.lua @@ -148,7 +148,7 @@ minetest.register_globalstep(function(dtime) local player_health = player:get_hp() local max_tick_timer = tonumber(minetest.settings:get("mcl_health_regen_delay")) or 0.5 - if food_tick_timer > max_tick_timer then + if food_tick_timer > 4 then food_tick_timer = 0 -- let hunger work always From 0673fcc25bc9907bc7d3909b17ebf82951f8da32 Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Tue, 5 Dec 2023 01:08:50 +0000 Subject: [PATCH 011/375] Respawn dead players when they login so they don't get stuck without the death formspec (#4041) Hopefully will prevent the dead player not respawning when logging in bug from happening Reviewed-on: https://git.minetest.land/MineClone2/MineClone2/pulls/4041 Reviewed-by: the-real-herowl Co-authored-by: Eliy21 Co-committed-by: Eliy21 --- mods/PLAYER/mcl_playerplus/init.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 99da0a01a..0ad34cae8 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -657,6 +657,7 @@ end) -- set to blank on join (for 3rd party mods) minetest.register_on_joinplayer(function(player) local name = player:get_player_name() + local hp = player:get_hp() mcl_playerplus_internal[name] = { lastPos = nil, @@ -671,6 +672,10 @@ minetest.register_on_joinplayer(function(player) player:set_bone_position("Arm_Right_Pitch_Control", vector.new(-3, 5.785, 0)) player:set_bone_position("Arm_Left_Pitch_Control", vector.new(3, 5.785, 0)) player:set_bone_position("Body_Control", vector.new(0, 6.75, 0)) + -- Respawn dead players on joining + if hp <= 0 then + player:respawn() + end end) -- clear when player leaves From f39fe17895b3807ec59e7b6fc7d8097546754eb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20M?= Date: Mon, 4 Dec 2023 22:51:50 -0600 Subject: [PATCH 012/375] Update mesecons_lightsone spanish translation Fixed a syntaxis error at line 3 and added the missing translation for line 4 --- .../mesecons_lightstone/locale/mesecons_lightstone.es.tr | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.es.tr b/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.es.tr index 713f0be5e..f2a47d3ac 100644 --- a/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.es.tr +++ b/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.es.tr @@ -1,3 +1,4 @@ # textdomain: mesecons_lightstone Redstone Lamp=Lámpara de redstone -Redstone lamps are simple redstone components which glow brightly (light level @1) when they receive redstone power.=Las lámparas Redstone son componentes simples de redstone que brillan intensamente (nivel de luz @ 1) cuando reciben energía de redstone. +Redstone lamps are simple redstone components which glow brightly (light level @1) when they receive redstone power.=Las lámparas de redstone son componentes simples de redstone que brillan intensamente (nivel de luz @1) cuando reciben energía de redstone. +Glows when powered by redstone power=Brilla cuando recibe energía de redstone From 86dad4693ee040b53a81daa8811b48f1ebfdd036 Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Tue, 5 Dec 2023 08:21:37 +0000 Subject: [PATCH 013/375] Add warning log if players with 0 hp joined (#4051) Reviewed-on: https://git.minetest.land/MineClone2/MineClone2/pulls/4051 Reviewed-by: the-real-herowl Co-authored-by: Eliy21 Co-committed-by: Eliy21 --- mods/PLAYER/mcl_playerplus/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 0ad34cae8..92e22b0e6 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -675,6 +675,7 @@ minetest.register_on_joinplayer(function(player) -- Respawn dead players on joining if hp <= 0 then player:respawn() + minetest.log("warning", name .. " joined the game with 0 hp and has been forced to respawn") end end) From 4127d120d25a7fa18dfd1d49feaf0ef2110489d6 Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Tue, 5 Dec 2023 12:49:49 +0000 Subject: [PATCH 014/375] Add server privs restriction to mcl_villages build tool (#4043) Fixes #4022 ### Testing -Make a new world, check host server and go into creative mode -Since you're the server you have the server privs so get the mcl_villages build tool item in creative inventory and use it to see if it works -Have someone join your server and give them the same item to use and see if they are restricted from using it Reviewed-on: https://git.minetest.land/MineClone2/MineClone2/pulls/4043 Reviewed-by: chmodsayshello Co-authored-by: Eliy21 Co-committed-by: Eliy21 --- mods/MAPGEN/mcl_villages/init.lua | 4 ++++ mods/MAPGEN/mcl_villages/locale/mcl_villages.de.tr | 4 ++++ mods/MAPGEN/mcl_villages/locale/mcl_villages.fr.tr | 3 ++- mods/MAPGEN/mcl_villages/locale/mcl_villages.ja.tr | 3 ++- mods/MAPGEN/mcl_villages/locale/mcl_villages.ru.tr | 3 ++- mods/MAPGEN/mcl_villages/locale/template.txt | 3 ++- 6 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 mods/MAPGEN/mcl_villages/locale/mcl_villages.de.tr diff --git a/mods/MAPGEN/mcl_villages/init.lua b/mods/MAPGEN/mcl_villages/init.lua index 0cb0712b5..6662f6bd1 100644 --- a/mods/MAPGEN/mcl_villages/init.lua +++ b/mods/MAPGEN/mcl_villages/init.lua @@ -128,6 +128,10 @@ if minetest.is_creative_enabled("") then -- build ssettlement on_place = function(itemstack, placer, pointed_thing) if not pointed_thing.under then return end + if not minetest.check_player_privs(placer, "server") then + minetest.chat_send_player(placer:get_player_name(), S("Placement denied. You need the “server” privilege to place villages.")) + return + end local minp = vector.subtract( pointed_thing.under, half_map_chunk_size) local maxp = vector.add( pointed_thing.under, half_map_chunk_size) build_a_settlement(minp, maxp, math.random(0,32767)) diff --git a/mods/MAPGEN/mcl_villages/locale/mcl_villages.de.tr b/mods/MAPGEN/mcl_villages/locale/mcl_villages.de.tr new file mode 100644 index 000000000..6a8f1f681 --- /dev/null +++ b/mods/MAPGEN/mcl_villages/locale/mcl_villages.de.tr @@ -0,0 +1,4 @@ +# textdomain: mcl_villages +Chiseled Stone Village Bricks=Dorfziegel aus gemeißeltem Stein +mcl_villages build tool=mcl_villages Konstruktionswerkzeug +Placement denied. You need the “server” privilege to place villages.=Platzierung verweigert. Sie benötigen das "server" Privileg, um Dörfer zu platzieren. \ No newline at end of file diff --git a/mods/MAPGEN/mcl_villages/locale/mcl_villages.fr.tr b/mods/MAPGEN/mcl_villages/locale/mcl_villages.fr.tr index b648cd36c..af1d0ab49 100644 --- a/mods/MAPGEN/mcl_villages/locale/mcl_villages.fr.tr +++ b/mods/MAPGEN/mcl_villages/locale/mcl_villages.fr.tr @@ -1,3 +1,4 @@ # textdomain: mcl_villages Chiseled Stone Village Bricks=Pierre sculptée du village -mcl_villages build tool=outil de construction de mcl_villages \ No newline at end of file +mcl_villages build tool=outil de construction de mcl_villages +Placement denied. You need the “server” privilege to place villages.=Placement refusé. Vous devez disposer du privilège "server" pour placer des villages. \ No newline at end of file diff --git a/mods/MAPGEN/mcl_villages/locale/mcl_villages.ja.tr b/mods/MAPGEN/mcl_villages/locale/mcl_villages.ja.tr index 4d0e4794f..6a63a577d 100644 --- a/mods/MAPGEN/mcl_villages/locale/mcl_villages.ja.tr +++ b/mods/MAPGEN/mcl_villages/locale/mcl_villages.ja.tr @@ -1,3 +1,4 @@ # textdomain: mcl_villages Chiseled Stone Village Bricks=模様入り石村レンガ -mcl_villages build tool=mcl_villages 構築ツール \ No newline at end of file +mcl_villages build tool=mcl_villages 構築ツール +Placement denied. You need the “server” privilege to place villages.=配置が拒否されました。村の配置には「server」権限が必要です。 \ No newline at end of file diff --git a/mods/MAPGEN/mcl_villages/locale/mcl_villages.ru.tr b/mods/MAPGEN/mcl_villages/locale/mcl_villages.ru.tr index 525e5811b..021bd78f1 100644 --- a/mods/MAPGEN/mcl_villages/locale/mcl_villages.ru.tr +++ b/mods/MAPGEN/mcl_villages/locale/mcl_villages.ru.tr @@ -1,3 +1,4 @@ # textdomain: mcl_villages Chiseled Stone Village Bricks=Резные деревенские каменные кирпичи -mcl_villages build tool=Инструмент постройки деревни \ No newline at end of file +mcl_villages build tool=Инструмент постройки деревни +Placement denied. You need the “server” privilege to place villages.=Размещение запрещено. Для размещения деревень необходима привилегия "server". \ No newline at end of file diff --git a/mods/MAPGEN/mcl_villages/locale/template.txt b/mods/MAPGEN/mcl_villages/locale/template.txt index 464daea9b..c410f4837 100644 --- a/mods/MAPGEN/mcl_villages/locale/template.txt +++ b/mods/MAPGEN/mcl_villages/locale/template.txt @@ -1,3 +1,4 @@ # textdomain: mcl_villages Chiseled Stone Village Bricks= -mcl_villages build tool= \ No newline at end of file +mcl_villages build tool= +Placement denied. You need the “server” privilege to place villages.= \ No newline at end of file From bb1e572287204092d31514dfa0952de0b8051b7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20M?= Date: Tue, 5 Dec 2023 18:39:29 -0600 Subject: [PATCH 015/375] Update mcl_compass.es.tr and fix syntax errors --- .../mcl_compass/locale/mcl_compass.es.tr | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/mods/ITEMS/mcl_compass/locale/mcl_compass.es.tr b/mods/ITEMS/mcl_compass/locale/mcl_compass.es.tr index 77b36cad9..ca6eb8dcd 100644 --- a/mods/ITEMS/mcl_compass/locale/mcl_compass.es.tr +++ b/mods/ITEMS/mcl_compass/locale/mcl_compass.es.tr @@ -1,9 +1,14 @@ # textdomain: mcl_compass Compass=Brújula -Points to the world origin= -Compasses are tools which point to the world origin (X@=0, Z@=0) or the spawn point in the Overworld.=Las brújulas son herramientas que apuntan al origen del mundo (X @ = 0, Z @ = 0) o al punto de generación en el mundo. -A Compass always points to the world spawn point when the player is in the overworld. In other dimensions, it spins randomly.= -Lodestone Compass= -Points to a lodestone= -Lodestone compasses resemble regular compasses, but they point to a specific lodestone.= -A Lodestone compass can be made from an ordinary compass by using it on a lodestone. After becoming a lodestone compass, it always points to its linked lodestone, provided that they are in the same dimension. If not in the same dimension, the lodestone compass spins randomly, similarly to a regular compass when outside the overworld. A lodestone compass can be relinked with another lodestone.= +Points to the world origin=Apunta hacia el punto de generación del mundo +Compasses are tools which point to the world origin (X@=0, Z@=0) or the spawn point in the Overworld.=Las brújulas son herramientas que apuntan al origen del mundo (X@=0, Z@=0) o al punto de generación en la superficie. +A Compass always points to the world spawn point when the player is in the overworld. In other dimensions, it spins randomly.=Una brújula siempre apunta al punto de generación del mundo cuando el jugador está en la superficie. En otras dimensiones, gira aleatoriamente. +Lodestone Compass=Brújula magnetizada +Points to a lodestone=Apunta hacia una magnetita +Lodestone compasses resemble regular compasses, but they point to a specific lodestone.=Las brújulas magnetizadas se parecen a las brújulas normales, pero apuntan a una magnetita específica. +A Lodestone compass can be made from an ordinary compass by using it on a lodestone. After becoming a lodestone compass, it always points to its linked lodestone, provided that they are in the same dimension. If not in the same dimension, the lodestone compass spins randomly, similarly to a regular compass when outside the overworld. A lodestone compass can be relinked with another lodestone.=Una brújula magnetizada puede fabricarse a partir de una brújula normal, siempre que estén en la misma dimensión. Si no están en la misma dimensión, la brújula magnetizada girará aleatoriamente, de forma similar a una brújula normal cuando está fuera de la superficie. Una brújula magnetizada puede volver a enlazarse con otra magnetita. +Lodestone=Magnetita +Recovery Compass=Brújula de recuperación +Points to your last death location=Apunta hacia la ubicación de tu última muerte +Recovery Compasses are compasses that point to your last death location=Las brújulas de recuperación son brújulas que apuntan hacia la ubicación de tu última muerte +Recovery Compasses always point to the location of your last death, in case you haven't died yet, it will just randomly spin around=Las brújulas de recuperación siempre apuntan hacia la ubicación de tu última muerte, en caso de que aún no hayas muerto, simplemente girará aleatoriamente From 47f920c9dfa4c2172e953578e64c8cdf3a8334e3 Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Tue, 5 Dec 2023 03:05:20 +0100 Subject: [PATCH 016/375] Updated release credits and set version for 0.85 --- CREDITS.md | 28 +++++++++++++++++++++++++--- game.conf | 2 +- mods/HUD/mcl_credits/people.lua | 29 ++++++++++++++++++++++++++--- 3 files changed, 52 insertions(+), 7 deletions(-) diff --git a/CREDITS.md b/CREDITS.md index 39eed70e1..3a651cc58 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -8,30 +8,32 @@ ## Maintainers * AncientMariner -* Nicu +* Herowl ## Previous Maintainers * Fleckenstein * cora +* Nicu ## Developers * AFCMS * epCode * chmodsayshello -* PrairieWind * MrRar * FossFanatic * SmokeyDope +* Faerraven / Michieal +* Codiac ## Past Developers * jordan4ibanez * iliekprogrammar * kabou * kay27 -* Faerraven / Michieal * MysticTempest * NO11 * SumianVoice +* PrairieWind ## Contributors * RandomLegoBrick @@ -112,6 +114,19 @@ * Niterux * appgurueu * seventeenthShulker +* DinoNuggies4665 +* basxto +* Morik666 +* Eliy21 +* mdk +* pepebotella +* Alessandra Lozoya +* VanicGame +* ThePython10110 +* Araca +* Montandalar +* mim +* Dark ## Music * Jordach for the jukebox music compilation from Big Freaking Dig @@ -155,6 +170,7 @@ * cora * Faerraven / Michieal * PrairieWind +* ChrisPHP ## 3D Models * 22i @@ -162,6 +178,7 @@ * epCode * Faerraven / Michieal * SumianVoice +* thunder1035 ## Textures * XSSheep @@ -181,6 +198,8 @@ * Aeonix_Aeon * Wbjitscool * SmokeyDope +* thunder1035 +* Herowl ## Translations * Wuzzy @@ -200,6 +219,9 @@ * Temak * megustanlosfrijoles * kbundg +* Isaac Dennis +* ADLON +* Sab Pyrope ## Funders * 40W diff --git a/game.conf b/game.conf index 3ad5a33a5..07f30eef5 100644 --- a/game.conf +++ b/game.conf @@ -1,4 +1,4 @@ title = MineClone 2 description = A survival sandbox game. Survive, gather, hunt, build, explore, and do much more. disallowed_mapgens = v6 -version=0.85.0-SNAPSHOT \ No newline at end of file +version=0.85.0 diff --git a/mods/HUD/mcl_credits/people.lua b/mods/HUD/mcl_credits/people.lua index 7421350d0..d9e08ca37 100644 --- a/mods/HUD/mcl_credits/people.lua +++ b/mods/HUD/mcl_credits/people.lua @@ -10,30 +10,32 @@ return { }}, {S("Maintainers"), 0xFF51D5, { "AncientMariner", - "Nicu", + "Herowl", }}, {S("Previous Maintainers"), 0xFFFFFF, { "Fleckenstein", "cora", + "Nicu", }}, {S("Developers"), 0xF84355, { "AFCMS", "epCode", "chmodsayshello", - "PrairieWind", "MrRar", "FossFanatic ", "SmokeyDope", + "Faerraven / Michieal", + "Codiac", }}, {S("Past Developers"), 0xF84355, { "jordan4ibanez", "iliekprogrammar", "kabou", "kay27", - "Faerraven / Michieal", "MysticTempest", "NO11", "SumianVoice", + "PrairieWind", }}, {S("Contributors"), 0x52FF00, { "RandomLegoBrick", @@ -114,6 +116,19 @@ return { "Niterux", "appgurueu", "seventeenthShulker", + "DinoNuggies4665", + "basxto", + "Morik666", + "Eliy21", + "mdk", + "pepebotella", + "Alessandra Lozoya", + "VanicGame", + "ThePython10110", + "Araca", + "Montandalar", + "mim", + "Dark", }}, {S("Music"), 0xA60014, { "Jordach for the jukebox music compilation from Big Freaking Dig", @@ -157,6 +172,7 @@ return { "cora", "Faerraven / Michieal", "PrairieWind", + "ChrisPHP", }}, {S("3D Models"), 0x0019FF, { "22i", @@ -164,6 +180,7 @@ return { "epCode", "Faerraven / Michieal", "SumianVoice", + "thunder1035", }}, {S("Textures"), 0xFF9705, { "XSSheep", @@ -180,8 +197,11 @@ return { "Faerraven / Michieal", "Nicu", "Exhale", + "Aeonix_Aeon", "Wbjitscool", "SmokeyDope", + "thunder1035", + "Herowl", }}, {S("Translations"), 0x00FF60, { "Wuzzy", @@ -201,6 +221,9 @@ return { "Temak", "megustanlosfrijoles", "kbundg", + "Isaac Dennis", + "ADLON", + "Sab Pyrope", }}, {S("Funders"), 0xF7FF00, { "40W", From 333db53e7b2dc30188d4668d3332e9f3d2196198 Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Tue, 5 Dec 2023 03:18:43 +0100 Subject: [PATCH 017/375] Add release notes for 0.85 --- .../0_85-the_fire_and_stone_release.md | 102 ++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 releasenotes/0_85-the_fire_and_stone_release.md diff --git a/releasenotes/0_85-the_fire_and_stone_release.md b/releasenotes/0_85-the_fire_and_stone_release.md new file mode 100644 index 000000000..856bc7853 --- /dev/null +++ b/releasenotes/0_85-the_fire_and_stone_release.md @@ -0,0 +1,102 @@ +## 0.85 – The Fire and Stone release + +### Contributors +#### New maintainer +* Herowl + +#### New contributors +* Codiac +* DinoNuggies4665 +* basxto +* Morik666 +* Eliy21 +* mdk +* pepebotella +* Alessandra Lozoya +* VanicGame +* ThePython10110 +* Araca +* Montandalar +* mim +* Dark +* ChrisPHP +* thunder1035 +* Isaac Dennis +* ADLON +* Sab Pyrope + +### Mobs improvements +Creeper received some adjustments, should be smarter, but easier to avoid if you're quick. Axolotl on the other hand won't eat your sheep anymore. + +Wither received a massive rework by Herowl, complete with custom attacks. Make sure to check him out, especially if you're up for a challenge. + +Iron Golem received some AI changes by our new contributor, Codiac, which should prevent him getting lost so much. + +Another rework done by Codiac was a change of how mob spawning takes light level into account. It should now be easier to prevent hostile spawns by lighting areas up, among other things. + +### Stonecutter functionality +Stonecutter finally received its functionality! Thanks to the work done by ChrisPHP, Herowl and AFCMS you can now cut every kind of stone into slabs, stairs, and decorated variants with unprecedented ease. + +### Campfire update +Another node that received a large update is the campfire, as well as the soul version. Thanks to the great work of PrairieWind, DinoNuggies4665, thunder1035, Wbjitscool, & AncientMariner, you can now cook items on them, and see it being done! + +### Combat rebalancing +Combat should feel better than ever before with changes by Eliy21 and Herowl! Knockback is stronger and more visible, every hit causes a short window of damage resistance, critical hits are more stable, hunger-based health regeneration works slightly differently... check it out! + +### Armor trims +You can now decorate your armor with colorful gems and metals on the smithing table thanks to the work of chmodsayshello. + +### Path undoing +Welcome our very own feature, path undoing! Brought to you by SmokeyDope and Herowl, you can now convert paths back to dirt by shift+right-clicking them with a shovel. + +### Formspec refactoring +Various GUI formspecs were updated in a massive rework by AFCMS to the newer version, as well as given new features. This includes survival and creative inventories (survival inventory got API allowing adding multiple tabs), as well as nodes like chests, furnaces, dispensers and hoppers. + +### Hopper reimplementation +Speaking of hoppers, our new contributor, Morik666, did an amazing job implementing a new API for hoppers, allowing to add various ways for other nodes to interact with the hoppers, including the nodes added by mods. + +### Pistons fixes +Pistons now work better thanks to seventeenthShulker, who fixed many bugs related to them. Sadly, even with these changes and the aforementioned hopper changes, not all mechanisms work as they should due to engine limitations that we are yet to make workarounds for. + +### Translations updated +* Brazilian Portuguese by Isaac Dennis +* Russian by ADLON & Sab Pyrope +* French by 3raven +* Spanish by megustanlosfrijoles + +### Other changes +* Texture names moving away from "`default_`" prefix – Liquid textures – by FossFanatic +* Cherry wood items fixes – by PrairieWind, 3raven, & MrRar +* Bamboo placing bug fixed – by seventeenthShulker +* Multishot enchantment fixed – by seventeenthShulker +* Missing textures added – by Wbjitscool +* Typo fixes – by pepebotella, Nicu, basxto, & mdk +* Villager trades update – by Alessandra Lozoya & Codiac +* Internal refactoring – by MrRar +* Banners' colors and texture adjustements – by VanicGame +* Copper crafting recipes fixes – by basxto & ThePython10110 +* Enchanting fixes – by Codiac & Araca +* Mob floating improvements – by Codiac +* Ruined portal spawn fix – by SmokeyDope +* Barrels sound fix – by SmokeyDope +* New settings added – by Eliy21 +* Trapdoors climbing update – by Dehydrate6684 +* Blast resistance fixes – by seventeenthShulker +* Documentation fixes – by Montandalar, mim, & the developer team +* Player eye height raising – by Dark +* Craft guide searching fix – by Araca +* Boat passenger fixes – by Eliy21 +* Duplication bug fixed – by Herowl +* Nodes now drop properly when tool breaks while digging – by Herowl +* Sleeping HUD – by chmodsayshello +* Pumpkin group – by rudzik8 +* Fixed /clear being unclear and dangerous – by Herowl +* Fixed players sometimes being stuck dead even on relog – by Eliy21 + +### Crashes fixed +* Unknown nodes and callbacks related crash – by MrRar +* Campfire and bamboo related crash – by Michieal +* Unknown nodes related crash – by pepebotella +* Minetest vector code related crash – by AncientMariner +* Waterlogged roots and kelp related crash – by Michieal + From 9a7e39654c67ff424861af535dc51c6a5464a5a8 Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Tue, 5 Dec 2023 03:40:37 +0100 Subject: [PATCH 018/375] Minor credits update --- CREDITS.md | 1 - releasenotes/0_85-the_fire_and_stone_release.md | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CREDITS.md b/CREDITS.md index 3a651cc58..959cc36d7 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -119,7 +119,6 @@ * Morik666 * Eliy21 * mdk -* pepebotella * Alessandra Lozoya * VanicGame * ThePython10110 diff --git a/releasenotes/0_85-the_fire_and_stone_release.md b/releasenotes/0_85-the_fire_and_stone_release.md index 856bc7853..bd0fa4291 100644 --- a/releasenotes/0_85-the_fire_and_stone_release.md +++ b/releasenotes/0_85-the_fire_and_stone_release.md @@ -93,6 +93,9 @@ Pistons now work better thanks to seventeenthShulker, who fixed many bugs relate * Fixed /clear being unclear and dangerous – by Herowl * Fixed players sometimes being stuck dead even on relog – by Eliy21 +### Special thanks +* For extensive testing – to Michieal + ### Crashes fixed * Unknown nodes and callbacks related crash – by MrRar * Campfire and bamboo related crash – by Michieal From ca71e949a894c3f4e07d0d042dde5a6397513674 Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Fri, 8 Dec 2023 23:20:52 +0100 Subject: [PATCH 019/375] Credits update --- CREDITS.md | 1 + mods/HUD/mcl_credits/people.lua | 2 +- releasenotes/0_85-the_fire_and_stone_release.md | 3 +++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CREDITS.md b/CREDITS.md index 959cc36d7..27f52d249 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -126,6 +126,7 @@ * Montandalar * mim * Dark +* Bakawun ## Music * Jordach for the jukebox music compilation from Big Freaking Dig diff --git a/mods/HUD/mcl_credits/people.lua b/mods/HUD/mcl_credits/people.lua index d9e08ca37..448f99bda 100644 --- a/mods/HUD/mcl_credits/people.lua +++ b/mods/HUD/mcl_credits/people.lua @@ -121,7 +121,6 @@ return { "Morik666", "Eliy21", "mdk", - "pepebotella", "Alessandra Lozoya", "VanicGame", "ThePython10110", @@ -129,6 +128,7 @@ return { "Montandalar", "mim", "Dark", + "Bakawun", }}, {S("Music"), 0xA60014, { "Jordach for the jukebox music compilation from Big Freaking Dig", diff --git a/releasenotes/0_85-the_fire_and_stone_release.md b/releasenotes/0_85-the_fire_and_stone_release.md index bd0fa4291..3e45fee4e 100644 --- a/releasenotes/0_85-the_fire_and_stone_release.md +++ b/releasenotes/0_85-the_fire_and_stone_release.md @@ -24,6 +24,7 @@ * Isaac Dennis * ADLON * Sab Pyrope +* Bakawun ### Mobs improvements Creeper received some adjustments, should be smarter, but easier to avoid if you're quick. Axolotl on the other hand won't eat your sheep anymore. @@ -92,6 +93,8 @@ Pistons now work better thanks to seventeenthShulker, who fixed many bugs relate * Pumpkin group – by rudzik8 * Fixed /clear being unclear and dangerous – by Herowl * Fixed players sometimes being stuck dead even on relog – by Eliy21 +* Restricted access to the village builder tool to server privs - by Eliy21 +* Fixed horse equipment drops - by Bakawun ### Special thanks * For extensive testing – to Michieal From 3caa99a409714d0994c03abdb97fa73c822ec884 Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Sat, 9 Dec 2023 00:03:41 +0100 Subject: [PATCH 020/375] Post-release set version 0.86.0-SNAPSHOT --- game.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game.conf b/game.conf index 07f30eef5..2a48bbf15 100644 --- a/game.conf +++ b/game.conf @@ -1,4 +1,4 @@ title = MineClone 2 description = A survival sandbox game. Survive, gather, hunt, build, explore, and do much more. disallowed_mapgens = v6 -version=0.85.0 +version=0.86.0-SNAPSHOT From 02e7ff41d5d9720da223c32113c5acadf6bb1c55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20M?= Date: Sat, 9 Dec 2023 23:42:32 -0600 Subject: [PATCH 021/375] Update mcl_fire.es.tr and fix syntax errors --- mods/ITEMS/mcl_fire/locale/mcl_fire.es.tr | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/mods/ITEMS/mcl_fire/locale/mcl_fire.es.tr b/mods/ITEMS/mcl_fire/locale/mcl_fire.es.tr index 6f36b293c..dfef491ab 100644 --- a/mods/ITEMS/mcl_fire/locale/mcl_fire.es.tr +++ b/mods/ITEMS/mcl_fire/locale/mcl_fire.es.tr @@ -1,17 +1,19 @@ # textdomain: mcl_fire Fire Charge=Carga de fuego -Fire charges are primarily projectiles which can be launched from dispensers, they will fly in a straight line and burst into a fire on impact. Alternatively, they can be used to ignite fires directly.=Las cargas de fuego son principalmente proyectiles que se pueden lanzar desde dispensadores, volarán en línea recta y estallarán en un incendio al impactar. Alternativamente, se pueden usar para encender incendios directamente. -Put the fire charge into a dispenser and supply it with redstone power to launch it. To ignite a fire directly, simply place the fire charge on the ground, which uses it up.=Ponga la carga de fuego en un dispensador y suminístrele poder de redstone para lanzarlo. Para encender un fuego directamente, simplemente coloque la carga de fuego en el suelo, que la usa. +Fire charges are primarily projectiles which can be launched from dispensers, they will fly in a straight line and burst into a fire on impact. Alternatively, they can be used to ignite fires directly.=Las cargas de fuego son principalmente proyectiles que se pueden lanzar desde dispensadores, volarán en línea recta y estallarán en un incendio al impactar. Alternativamente, se pueden usar para encender fuegos directamente. +Put the fire charge into a dispenser and supply it with redstone power to launch it. To ignite a fire directly, simply place the fire charge on the ground, which uses it up.=Ponga la carga de fuego en un dispensador y suminístrele poder de redstone para lanzarla. Para encender un fuego directamente, simplemente coloque la carga de fuego en el suelo, que la usa. Flint and Steel=Mechero -Flint and steel is a tool to start fires and ignite blocks.=El mechero es una herramienta para iniciar incendios y encender bloques. -Rightclick the surface of a block to attempt to light a fire in front of it or ignite the block. A few blocks have an unique reaction when ignited.=Haga clic derecho en la superficie de un bloque para intentar encender un fuego frente a él o encender el bloque. Unos pocos bloques tienen una reacción única cuando se encienden. -Fire is a damaging and destructive but short-lived kind of block. It will destroy and spread towards near flammable blocks, but fire will disappear when there is nothing to burn left. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.=El fuego es un tipo de bloque dañino y destructivo pero de corta duración. Destruirá y se extenderá hacia bloques casi inflamables, pero el fuego desaparecerá cuando no quede nada para quemar. Se extinguirá por el agua y la lluvia cercanas. El fuego puede destruirse de manera segura golpeándolo, pero es doloroso si te paras directamente en él. Si se inicia un fuego por encima de la base o un bloque de magma, se convertirá inmediatamente en un fuego eterno. -Fire is a damaging but non-destructive short-lived kind of block. It will disappear when there is no flammable block around. Fire does not destroy blocks, at least not in this world. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.=El fuego es un tipo de bloque dañino pero no destructivo de corta duración. Desaparecerá cuando no haya un bloque inflamable alrededor. El fuego no destruye bloques, al menos no en este mundo. Se extinguirá por el agua y la lluvia cercanas. El fuego puede destruirse de manera segura golpeándolo, pero es doloroso si te paras directamente en él. Si se inicia un fuego por encima de la base o un bloque de magma, se convertirá inmediatamente en un fuego eterno. +Flint and steel is a tool to start fires and ignite blocks.=El mechero es una herramienta para iniciar fuegos y encender bloques. +Rightclick the surface of a block to attempt to light a fire in front of it or ignite the block. A few blocks have an unique reaction when ignited.=Haga clic derecho en la superficie de un bloque para intentar encender un fuego frente a él o encender el bloque. Algunos bloques tienen una reacción única cuando se encienden. +Fire is a damaging and destructive but short-lived kind of block. It will destroy and spread towards near flammable blocks, but fire will disappear when there is nothing to burn left. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.=El fuego es un tipo de bloque dañino y destructivo pero de corta duración. Destruirá y se extenderá hacia bloques inflamables cercanos, pero el fuego desaparecerá cuando no quede nada para quemar. Se extinguirá por agua cercana o lluvia. El fuego puede destruirse de manera segura golpeándolo, pero es doloroso si te paras directamente en él. Si se inicia un fuego por encima de un bloque de netherrack o magma, se convertirá inmediatamente en un fuego eterno. +Fire is a damaging but non-destructive short-lived kind of block. It will disappear when there is no flammable block around. Fire does not destroy blocks, at least not in this world. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.=El fuego es un tipo de bloque dañino pero no destructivo de corta duración. Desaparecerá cuando no haya un bloque inflamable alrededor. El fuego no destruye bloques, al menos no en este mundo. Se extinguirá por el agua y la lluvia cercanas. El fuego puede destruirse de manera segura golpeándolo, pero es doloroso si te paras directamente en él. Si se inicia un fuego por encima de un bloque de netherrack o magma, se convertirá inmediatamente en un fuego eterno. Eternal fire is a damaging block that might create more fire. It will create fire around it when flammable blocks are nearby. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.=El fuego eterno es un bloque dañino que podría crear más fuego. Creará fuego alrededor cuando haya bloques inflamables cerca. El fuego eterno se puede extinguir con golpes y bloques de agua cercanos. Aparte del fuego (normal), el fuego eterno no se extingue por sí solo y también continúa ardiendo bajo la lluvia. Golpear el fuego eterno es seguro, pero duele si te paras dentro. Eternal fire is a damaging block. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.=El fuego eterno es un bloque dañino. El fuego eterno se puede extinguir con golpes y bloques de agua cercanos. Aparte del fuego (normal), el fuego eterno no se extingue por sí solo y también continúa ardiendo bajo la lluvia. Golpear el fuego eterno es seguro, pero duele si te paras dentro. @1 has been cooked crisp.=@1 se ha cocinado crujientemente. @1 felt the burn.=@1 sintió la quemadura. @1 died in the flames.=@1 murió en las llamas. -@1 died in a fire.=@ 1 murió en un incendio. +@1 died in a fire.=@1 murió en un incendio. Fire=Fuego Eternal Fire=Fuego eterno +Dispenser projectile=Dispensador de proyectiles +Starts fires and ignites blocks=Provoca incendios y pone bloques en llamas From 1d2a7b35d89dc0c1a5b9f3111dccf7c9b06e55f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20M?= Date: Sun, 10 Dec 2023 00:07:17 -0600 Subject: [PATCH 022/375] Update mcl_honey.es.tr --- mods/ITEMS/mcl_honey/locale/mcl_honey.es.tr | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_honey/locale/mcl_honey.es.tr b/mods/ITEMS/mcl_honey/locale/mcl_honey.es.tr index 90382020a..fedf4ecc5 100644 --- a/mods/ITEMS/mcl_honey/locale/mcl_honey.es.tr +++ b/mods/ITEMS/mcl_honey/locale/mcl_honey.es.tr @@ -1,5 +1,6 @@ -Honeycomb=Bloque de panal -Used to craft beehives and protect copper blocks from further oxidation.=Se utiliza para fabricar apiarios de avejas y para proteger bloques de cobre +# textdomain: mcl_honey +Honeycomb=Panal +Used to craft beehives and protect copper blocks from further oxidation.=Se utiliza para fabricar apiarios de avejas y para proteger bloques de cobrede mayor oxidación. Use on copper blocks to prevent further oxidation.=Usa sobre bloques de cobre para evitar mayor oxidación. Honeycomb Block=Bloque de panal Honeycomb Block. Used as a decoration.=Bloque de panal. Se utiliza como decoración como decoración From 8dcb62aa56077408e5f9c2f7b6ac28106d74fe04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20M?= Date: Sun, 10 Dec 2023 00:11:07 -0600 Subject: [PATCH 023/375] Fix a typo in mcl_honey.es.tr --- mods/ITEMS/mcl_honey/locale/mcl_honey.es.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_honey/locale/mcl_honey.es.tr b/mods/ITEMS/mcl_honey/locale/mcl_honey.es.tr index fedf4ecc5..bf87bf342 100644 --- a/mods/ITEMS/mcl_honey/locale/mcl_honey.es.tr +++ b/mods/ITEMS/mcl_honey/locale/mcl_honey.es.tr @@ -1,6 +1,6 @@ # textdomain: mcl_honey Honeycomb=Panal -Used to craft beehives and protect copper blocks from further oxidation.=Se utiliza para fabricar apiarios de avejas y para proteger bloques de cobrede mayor oxidación. +Used to craft beehives and protect copper blocks from further oxidation.=Se utiliza para fabricar apiarios de abejas y para proteger bloques de cobrede mayor oxidación. Use on copper blocks to prevent further oxidation.=Usa sobre bloques de cobre para evitar mayor oxidación. Honeycomb Block=Bloque de panal Honeycomb Block. Used as a decoration.=Bloque de panal. Se utiliza como decoración como decoración From 1ac65305d6c33f82a32da81a89d807691114a74e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20M?= Date: Sun, 10 Dec 2023 00:13:40 -0600 Subject: [PATCH 024/375] Fix a typo in mcl_honey.es.tr --- mods/ITEMS/mcl_honey/locale/mcl_honey.es.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_honey/locale/mcl_honey.es.tr b/mods/ITEMS/mcl_honey/locale/mcl_honey.es.tr index bf87bf342..f22ae7702 100644 --- a/mods/ITEMS/mcl_honey/locale/mcl_honey.es.tr +++ b/mods/ITEMS/mcl_honey/locale/mcl_honey.es.tr @@ -1,6 +1,6 @@ # textdomain: mcl_honey Honeycomb=Panal -Used to craft beehives and protect copper blocks from further oxidation.=Se utiliza para fabricar apiarios de abejas y para proteger bloques de cobrede mayor oxidación. +Used to craft beehives and protect copper blocks from further oxidation.=Se utiliza para fabricar apiarios de abejas y para proteger bloques de cobre de mayor oxidación. Use on copper blocks to prevent further oxidation.=Usa sobre bloques de cobre para evitar mayor oxidación. Honeycomb Block=Bloque de panal Honeycomb Block. Used as a decoration.=Bloque de panal. Se utiliza como decoración como decoración From 19fd075a2f6e4a59e12671b6af8d2aa126a85505 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20M?= Date: Sun, 10 Dec 2023 01:16:43 -0600 Subject: [PATCH 025/375] Add the textdomain line in mcl_beehives.dk.tr This will remove the warning that is shown when running Wuzzy's Minetest_Translation_tools and will contribute to the issue 3540 --- mods/ITEMS/mcl_beehives/locale/mcl_beehives.dk.tr | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_beehives/locale/mcl_beehives.dk.tr b/mods/ITEMS/mcl_beehives/locale/mcl_beehives.dk.tr index 61510cbc1..a0596338a 100644 --- a/mods/ITEMS/mcl_beehives/locale/mcl_beehives.dk.tr +++ b/mods/ITEMS/mcl_beehives/locale/mcl_beehives.dk.tr @@ -1,4 +1,5 @@ +# textdomain: mcl_beehives Beehive=Bistade Artificial bee nest.=Kunstigt bibo. Bee Nest=Bibo -A naturally generating block that houses bees and a tasty treat...if you can get it.=En naturligt genereret blok som indeholde bier og velsmagende godter... hvis du kan få fat i dem. \ No newline at end of file +A naturally generating block that houses bees and a tasty treat...if you can get it.=En naturligt genereret blok som indeholde bier og velsmagende godter... hvis du kan få fat i dem. From a60540c17e079008fe675e5e2c5802be89592386 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20M?= Date: Sun, 10 Dec 2023 01:47:35 -0600 Subject: [PATCH 026/375] Remove a non empty translation in template file --- mods/ITEMS/mcl_armor/locale/template.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_armor/locale/template.txt b/mods/ITEMS/mcl_armor/locale/template.txt index 64318f41b..29d98f6b9 100644 --- a/mods/ITEMS/mcl_armor/locale/template.txt +++ b/mods/ITEMS/mcl_armor/locale/template.txt @@ -31,7 +31,7 @@ Elytra= Increases underwater mining speed.= Blast Protection= Reduces explosion damage and knockback.= -Curse of Binding=Malédiction du lien éternel +Curse of Binding= Item cannot be removed from armor slots except due to death, breaking or in Creative Mode.= Feather Falling= Reduces fall damage.= @@ -48,4 +48,4 @@ Reflects some of the damage taken when hit, at the cost of reducing durability w Aqua Affinity= #Translations for armor trims -Smithing Template '@1'= \ No newline at end of file +Smithing Template '@1'= From 6dce3b4bc477a1deecac8af043426ad131ec97ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20M?= Date: Sun, 10 Dec 2023 01:56:19 -0600 Subject: [PATCH 027/375] Remove whitespace-only translation in template file --- mods/PLAYER/mcl_skins/locale/template.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/PLAYER/mcl_skins/locale/template.txt b/mods/PLAYER/mcl_skins/locale/template.txt index c39d4066d..12ba740d5 100644 --- a/mods/PLAYER/mcl_skins/locale/template.txt +++ b/mods/PLAYER/mcl_skins/locale/template.txt @@ -10,5 +10,5 @@ Bottoms= Tops= Hairs= Headwears= -Open skin configuration screen.= -Select= \ No newline at end of file +Open skin configuration screen.= +Select= From cf70de0ecc944f4ca797a3d1091e2b5ed04aa366 Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Sun, 10 Dec 2023 16:10:33 +0000 Subject: [PATCH 028/375] Add an on_attack callback for mobs (#4064) Added an on_attack callback that allows to execute additional custom logic after each attack. Reviewed-on: https://git.minetest.land/MineClone2/MineClone2/pulls/4064 Co-authored-by: the-real-herowl Co-committed-by: the-real-herowl --- mods/ENTITIES/mcl_mobs/combat.lua | 4 ++++ mods/ENTITIES/mcl_mobs/init.lua | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_mobs/combat.lua b/mods/ENTITIES/mcl_mobs/combat.lua index 6b660c787..bb16eb71e 100644 --- a/mods/ENTITIES/mcl_mobs/combat.lua +++ b/mods/ENTITIES/mcl_mobs/combat.lua @@ -1252,5 +1252,9 @@ function mob_class:do_states_attack (dtime) self.attack_state(self, dtime) else + if self.on_attack then + self.on_attack(self, dtime) + end + end end diff --git a/mods/ENTITIES/mcl_mobs/init.lua b/mods/ENTITIES/mcl_mobs/init.lua index 630548f12..b0fc73d6e 100644 --- a/mods/ENTITIES/mcl_mobs/init.lua +++ b/mods/ENTITIES/mcl_mobs/init.lua @@ -314,7 +314,8 @@ function mcl_mobs.register_mob(name, def) return self:mob_activate(staticdata, def, dtime) end, - attack_state = def.attack_state, + attack_state = def.attack_state, -- custom attack state + on_attack = def.on_attack, -- called after attack, useful with otherwise predefined attack states (not custom) harmed_by_heal = def.harmed_by_heal, is_boss = def.is_boss, dealt_effect = def.dealt_effect, From 8b00fff4cb7866ec9c780b670a9a88201bd70ffe Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Mon, 11 Dec 2023 00:37:18 +0100 Subject: [PATCH 029/375] Remove dangling else --- mods/ENTITIES/mcl_mobs/combat.lua | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/combat.lua b/mods/ENTITIES/mcl_mobs/combat.lua index bb16eb71e..4396f3265 100644 --- a/mods/ENTITIES/mcl_mobs/combat.lua +++ b/mods/ENTITIES/mcl_mobs/combat.lua @@ -1250,11 +1250,10 @@ function mob_class:do_states_attack (dtime) elseif self.attack_type == "custom" and self.attack_state then self.attack_state(self, dtime) - else + end if self.on_attack then self.on_attack(self, dtime) end - end end From 5f3c901f11dfc5d7d34d3268cadd0722e075ed4b Mon Sep 17 00:00:00 2001 From: Bakawun Date: Thu, 16 Nov 2023 06:44:11 +0000 Subject: [PATCH 030/375] Ghast: align attributes with mc Ghast should spawn much more rarely than they currently do I set the value to 1/4th of the original value before 72000 was set as an attempt to lower spawn rates, it actually increased them. Align View distance, sound distance and shot interval with mc wiki. https://minecraft.fandom.com/wiki/Ghast Align fireball velocity with mc issue tracker https://bugs.mojang.com/browse/MC-238286 --- mods/ENTITIES/mobs_mc/ghast.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/ghast.lua b/mods/ENTITIES/mobs_mc/ghast.lua index 1a3d34e1b..9a396fb2b 100644 --- a/mods/ENTITIES/mobs_mc/ghast.lua +++ b/mods/ENTITIES/mobs_mc/ghast.lua @@ -33,7 +33,7 @@ mcl_mobs.register_mob("mobs_mc:ghast", { death = "mobs_mc_zombie_death", attack = "mobs_fireball", random = "mobs_eerie", - distance = 16, + distance = 80, -- TODO: damage -- TODO: better death }, @@ -50,10 +50,10 @@ mcl_mobs.register_mob("mobs_mc:ghast", { run_start = 0, run_end = 40, }, fall_damage = 0, - view_range = 100, + view_range = 64, attack_type = "dogshoot", arrow = "mobs_mc:fireball", - shoot_interval = 3.5, + shoot_interval = 3, shoot_offset = -5, dogshoot_switch = 1, dogshoot_count_max =1, @@ -107,7 +107,7 @@ mcl_mobs.register_arrow("mobs_mc:fireball", { visual = "sprite", visual_size = {x = 1, y = 1}, textures = {"mcl_fire_fire_charge.png"}, - velocity = 15, + velocity = 5, collisionbox = {-.5, -.5, -.5, .5, .5, .5}, _is_fireball = true, From 351e31a8893937946f7f4b756b20e1d69b9b6a43 Mon Sep 17 00:00:00 2001 From: Zasco Date: Tue, 12 Dec 2023 23:16:51 +0000 Subject: [PATCH 031/375] Move deepslate ore registration within generation check --- mods/MAPGEN/mcl_mapgen_core/ores.lua | 42 ++++++++++++++-------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/mods/MAPGEN/mcl_mapgen_core/ores.lua b/mods/MAPGEN/mcl_mapgen_core/ores.lua index 403c0333d..3eeaefef8 100644 --- a/mods/MAPGEN/mcl_mapgen_core/ores.lua +++ b/mods/MAPGEN/mcl_mapgen_core/ores.lua @@ -128,27 +128,6 @@ minetest.register_ore({ }) -minetest.register_ore({ - ore_type = "blob", - ore = "mcl_deepslate:deepslate", - wherein = { "mcl_core:stone" }, - clust_scarcity = 200, - clust_num_ores = 100, - clust_size = 10, - y_min = deepslate_min, - y_max = deepslate_max, - noise_params = { - offset = 0, - scale = 1, - spread = { x = 250, y = 250, z = 250 }, - seed = 12345, - octaves = 3, - persist = 0.6, - lacunarity = 2, - flags = "defaults", - } -}) - minetest.register_ore({ ore_type = "blob", ore = "mcl_deepslate:tuff", @@ -173,6 +152,27 @@ minetest.register_ore({ -- DEEPSLATE if minetest.settings:get_bool("mcl_generate_deepslate", true) then + minetest.register_ore({ + ore_type = "blob", + ore = "mcl_deepslate:deepslate", + wherein = { "mcl_core:stone" }, + clust_scarcity = 200, + clust_num_ores = 100, + clust_size = 10, + y_min = deepslate_min, + y_max = deepslate_max, + noise_params = { + offset = 0, + scale = 1, + spread = { x = 250, y = 250, z = 250 }, + seed = 12345, + octaves = 3, + persist = 0.6, + lacunarity = 2, + flags = "defaults", + } + }) + minetest.register_ore({ ore_type = "scatter", ore = "mcl_deepslate:infested_deepslate", From e6ddc03d3c87bd99571d1494b90f301b7ee7d51c Mon Sep 17 00:00:00 2001 From: Bakawun Date: Tue, 7 Nov 2023 17:18:21 +0000 Subject: [PATCH 032/375] Shulker: lower shoot interval to 1 second In this video we can see the shulkers are shooting at a rate of once per second. https://youtube.com/shorts/8tUFaSZ4b7I?si=sszp4cnyXR4dXg9B The wiki confirms this but mentions a range of 1 to 5.5 seconds. I think this range is caused by the shulker closing and stopping shots for a few seconds but no longer than the max interval of 5.5 https://minecraft.fandom.com/wiki/Shulker#:~:text=The%20shulker%20continues%20firing%20every,unaffected%20by%20Levitation%20when%20hit --- mods/ENTITIES/mobs_mc/shulker.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mobs_mc/shulker.lua b/mods/ENTITIES/mobs_mc/shulker.lua index ecf60debd..62be949f3 100644 --- a/mods/ENTITIES/mobs_mc/shulker.lua +++ b/mods/ENTITIES/mobs_mc/shulker.lua @@ -35,7 +35,7 @@ mcl_mobs.register_mob("mobs_mc:shulker", { type = "monster", spawn_class = "hostile", attack_type = "shoot", - shoot_interval = 0.5, + shoot_interval = 1.0, arrow = "mobs_mc:shulkerbullet", shoot_offset = 0.5, passive = false, From 8d34ff2a9a222338624c3f61f563786e9ee000d3 Mon Sep 17 00:00:00 2001 From: Bakawun Date: Mon, 13 Nov 2023 15:13:52 +0000 Subject: [PATCH 033/375] Shulker: Make shulker peek periodically Adjust walk and animation settings so the shulker peeks out randomly. --- mods/ENTITIES/mobs_mc/shulker.lua | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/shulker.lua b/mods/ENTITIES/mobs_mc/shulker.lua index 62be949f3..b468be175 100644 --- a/mods/ENTITIES/mobs_mc/shulker.lua +++ b/mods/ENTITIES/mobs_mc/shulker.lua @@ -51,7 +51,7 @@ mcl_mobs.register_mob("mobs_mc:shulker", { -- TODO: sounds -- TODO: Make shulker dye-able visual_size = {x=3, y=3}, - walk_chance = 0, + walk_chance = 10, knock_back = false, jump = false, can_despawn = false, @@ -65,15 +65,17 @@ mcl_mobs.register_mob("mobs_mc:shulker", { looting_factor = 0.0625}, }, animation = { - stand_speed = 25, walk_speed = 0, run_speed = 50, punch_speed = 25, + stand_speed = 25, walk_speed = 25, run_speed = 50, punch_speed = 25, speed_normal = 25, speed_run = 50, stand_start = 0, stand_end = 25, - walk_start = 25, walk_end = 45, - run_start = 45, run_end = 85, + walk_start = 65, walk_end = 65, + run_start = 65, run_end = 85, punch_start = 80, punch_end = 100, }, view_range = 16, fear_height = 0, + walk_velocity = 0, + run_velocity = 0, noyaw = true, do_custom = function(self,dtime) local pos = self.object:get_pos() @@ -81,10 +83,6 @@ mcl_mobs.register_mob("mobs_mc:shulker", { self.object:set_yaw(0) mcl_mobs:yaw(self, 0, 0, dtime) end - if self.state == "walk" or self.state == "stand" then - self.state = "stand" - self:set_animation("stand") - end if self.state == "attack" then self:set_animation("punch") end From 26cfdf0b7cb2d1915bb11406883fabbf0c405951 Mon Sep 17 00:00:00 2001 From: Bakawun Date: Tue, 14 Nov 2023 10:52:09 +0000 Subject: [PATCH 034/375] Shulker: randomize shoot interval Randomize shoot interval to between 1 and 5.5 seconds and set default shoot interval to 5.5 --- mods/ENTITIES/mobs_mc/shulker.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mods/ENTITIES/mobs_mc/shulker.lua b/mods/ENTITIES/mobs_mc/shulker.lua index b468be175..f1c723d01 100644 --- a/mods/ENTITIES/mobs_mc/shulker.lua +++ b/mods/ENTITIES/mobs_mc/shulker.lua @@ -35,7 +35,7 @@ mcl_mobs.register_mob("mobs_mc:shulker", { type = "monster", spawn_class = "hostile", attack_type = "shoot", - shoot_interval = 1.0, + shoot_interval = 5.5, arrow = "mobs_mc:shulkerbullet", shoot_offset = 0.5, passive = false, @@ -79,6 +79,7 @@ mcl_mobs.register_mob("mobs_mc:shulker", { noyaw = true, do_custom = function(self,dtime) local pos = self.object:get_pos() + self.shoot_interval = math.random(1, 5.5) if math.floor(self.object:get_yaw()) ~=0 then self.object:set_yaw(0) mcl_mobs:yaw(self, 0, 0, dtime) From b02a3deec7b59b3f27581669820121a612b31ccf Mon Sep 17 00:00:00 2001 From: Bakawun Date: Tue, 14 Nov 2023 13:57:56 +0000 Subject: [PATCH 035/375] Shulker; fix attack open animation, improve peek --- mods/ENTITIES/mobs_mc/shulker.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/shulker.lua b/mods/ENTITIES/mobs_mc/shulker.lua index f1c723d01..d1137cfe3 100644 --- a/mods/ENTITIES/mobs_mc/shulker.lua +++ b/mods/ENTITIES/mobs_mc/shulker.lua @@ -68,8 +68,10 @@ mcl_mobs.register_mob("mobs_mc:shulker", { stand_speed = 25, walk_speed = 25, run_speed = 50, punch_speed = 25, speed_normal = 25, speed_run = 50, stand_start = 0, stand_end = 25, - walk_start = 65, walk_end = 65, + walk_start = 45, walk_end = 65, + walk_loop = false, run_start = 65, run_end = 85, + run_loop punch_start = 80, punch_end = 100, }, view_range = 16, @@ -85,7 +87,7 @@ mcl_mobs.register_mob("mobs_mc:shulker", { mcl_mobs:yaw(self, 0, 0, dtime) end if self.state == "attack" then - self:set_animation("punch") + self:set_animation("run") end self.path.way = false self.look_at_players = false From b4511fb8c70d4f8542c0bdc37b663abf383bee33 Mon Sep 17 00:00:00 2001 From: Bakawun Date: Tue, 14 Nov 2023 14:47:24 +0000 Subject: [PATCH 036/375] Shulker, add missing false statement --- mods/ENTITIES/mobs_mc/shulker.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mobs_mc/shulker.lua b/mods/ENTITIES/mobs_mc/shulker.lua index d1137cfe3..2b29fdcd6 100644 --- a/mods/ENTITIES/mobs_mc/shulker.lua +++ b/mods/ENTITIES/mobs_mc/shulker.lua @@ -71,7 +71,7 @@ mcl_mobs.register_mob("mobs_mc:shulker", { walk_start = 45, walk_end = 65, walk_loop = false, run_start = 65, run_end = 85, - run_loop + run_loop = false, punch_start = 80, punch_end = 100, }, view_range = 16, From f5079f15680583a824bca0d4a069af5321780343 Mon Sep 17 00:00:00 2001 From: cora Date: Wed, 15 Nov 2023 18:59:46 +0100 Subject: [PATCH 037/375] Add an option for mob arrows to be "homing" --- mods/ENTITIES/mcl_mobs/combat.lua | 3 +++ mods/ENTITIES/mcl_mobs/init.lua | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/mods/ENTITIES/mcl_mobs/combat.lua b/mods/ENTITIES/mcl_mobs/combat.lua index 4396f3265..c7f8d3e84 100644 --- a/mods/ENTITIES/mcl_mobs/combat.lua +++ b/mods/ENTITIES/mcl_mobs/combat.lua @@ -1231,6 +1231,9 @@ function mob_class:do_states_attack (dtime) -- important for mcl_shields ent._shooter = self.object ent._saved_shooter_pos = self.object:get_pos() + if ent.homing then + ent._target = self.attack + end end local amount = (vec.x * vec.x + vec.y * vec.y + vec.z * vec.z) ^ 0.5 diff --git a/mods/ENTITIES/mcl_mobs/init.lua b/mods/ENTITIES/mcl_mobs/init.lua index b0fc73d6e..69bd7ebf4 100644 --- a/mods/ENTITIES/mcl_mobs/init.lua +++ b/mods/ENTITIES/mcl_mobs/init.lua @@ -350,6 +350,7 @@ function mcl_mobs.register_arrow(name, def) hit_node = def.hit_node, hit_mob = def.hit_mob, hit_object = def.hit_object, + homing = def.homing, drop = def.drop or false, -- drops arrow as registered item when true collisionbox = {0, 0, 0, 0, 0, 0}, -- remove box around arrows timer = 0, @@ -422,6 +423,17 @@ function mcl_mobs.register_arrow(name, def) end end + if self.homing and self._target then + local p = self._target:get_pos() + if p then + if minetest.line_of_sight(self.object:get_pos(), p) then + self.object:set_velocity(vector.direction(self.object:get_pos(), p) * self.velocity) + end + else + self.target = nil + end + end + if self.hit_player or self.hit_mob or self.hit_object then for _,player in pairs(minetest.get_objects_inside_radius(pos, 1.5)) do From 58bb26a7eff8d3055af6e5fbc735dbc610c82f8b Mon Sep 17 00:00:00 2001 From: cora Date: Wed, 15 Nov 2023 19:00:01 +0100 Subject: [PATCH 038/375] Make shulker bullets homing --- mods/ENTITIES/mobs_mc/shulker.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mobs_mc/shulker.lua b/mods/ENTITIES/mobs_mc/shulker.lua index 2b29fdcd6..95ca7df1a 100644 --- a/mods/ENTITIES/mobs_mc/shulker.lua +++ b/mods/ENTITIES/mobs_mc/shulker.lua @@ -158,7 +158,7 @@ mcl_mobs.register_arrow("mobs_mc:shulkerbullet", { visual_size = {x = 0.25, y = 0.25}, textures = {"mobs_mc_shulkerbullet.png"}, velocity = 6, - + homing = true, hit_player = function(self, player) player:punch(self.object, 1.0, { full_punch_interval = 1.0, From 55fe71d73b4d29b2c3dd5808b47212e3d090178e Mon Sep 17 00:00:00 2001 From: cora Date: Thu, 26 Oct 2023 21:32:50 +0200 Subject: [PATCH 039/375] Add a get_arrow_hit_func function to mcl_mobs reason for this is that player:punch used by most mobs ignores armor worn by player --- mods/ENTITIES/mcl_mobs/init.lua | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/mods/ENTITIES/mcl_mobs/init.lua b/mods/ENTITIES/mcl_mobs/init.lua index 69bd7ebf4..cd79fed6f 100644 --- a/mods/ENTITIES/mcl_mobs/init.lua +++ b/mods/ENTITIES/mcl_mobs/init.lua @@ -334,6 +334,13 @@ function mcl_mobs.register_mob(name, def) end -- END mcl_mobs.register_mob function +function mcl_mobs.get_arrow_damage_func(damage, typ) + local typ = mcl_damage.types[typ] and typ or "arrow" + return function(projectile, object) + return mcl_util.deal_damage(object, damage, {type = typ}) + end +end + -- register arrow for shoot attack function mcl_mobs.register_arrow(name, def) From cf51c60527acdf9a9583f4cd48698fe700326369 Mon Sep 17 00:00:00 2001 From: cora Date: Thu, 26 Oct 2023 21:35:13 +0200 Subject: [PATCH 040/375] Fix shulker bullets ignoring armor --- mods/ENTITIES/mobs_mc/shulker.lua | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/shulker.lua b/mods/ENTITIES/mobs_mc/shulker.lua index 95ca7df1a..bbc7eb0dc 100644 --- a/mods/ENTITIES/mobs_mc/shulker.lua +++ b/mods/ENTITIES/mobs_mc/shulker.lua @@ -159,25 +159,10 @@ mcl_mobs.register_arrow("mobs_mc:shulkerbullet", { textures = {"mobs_mc_shulkerbullet.png"}, velocity = 6, homing = true, - hit_player = function(self, player) - player:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups = {fleshy = 4}, - }, nil) - end, - - hit_mob = function(self, mob) - mob:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups = {fleshy = 4}, - }, nil) - end, - - hit_node = function(self, pos, node) - end + hit_player = mcl_mobs.get_arrow_damage_func(4), + hit_mob = mcl_mobs.get_arrow_damage_func(4), }) - mcl_mobs.register_egg("mobs_mc:shulker", S("Shulker"), "#946694", "#4d3852", 0) mcl_mobs:non_spawn_specific("mobs_mc:shulker","overworld",0,minetest.LIGHT_MAX+1) --[[ From 789c9a9a6d2cc73274584ff60d1610d41c18deb2 Mon Sep 17 00:00:00 2001 From: bakawun Date: Thu, 16 Nov 2023 11:21:25 +0100 Subject: [PATCH 041/375] Shulker: make bullet speed match mc speed is 5 according to https://www.gmbinder.com/share/-MelLRYIg8yCfuAqQ82g#:~:text=After%20doing%20some%20experimentation%20I,~5%20blocks%2Fsecond). --- mods/ENTITIES/mobs_mc/shulker.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mobs_mc/shulker.lua b/mods/ENTITIES/mobs_mc/shulker.lua index bbc7eb0dc..ed0732001 100644 --- a/mods/ENTITIES/mobs_mc/shulker.lua +++ b/mods/ENTITIES/mobs_mc/shulker.lua @@ -157,7 +157,7 @@ mcl_mobs.register_arrow("mobs_mc:shulkerbullet", { visual = "sprite", visual_size = {x = 0.25, y = 0.25}, textures = {"mobs_mc_shulkerbullet.png"}, - velocity = 6, + velocity = 5, homing = true, hit_player = mcl_mobs.get_arrow_damage_func(4), hit_mob = mcl_mobs.get_arrow_damage_func(4), From 686646b86d1d37826957e7b6a2e8849b391f91df Mon Sep 17 00:00:00 2001 From: bakawun Date: Thu, 16 Nov 2023 18:27:54 +0100 Subject: [PATCH 042/375] Shulker: align armor value with mc and set it to 0 when opened --- mods/ENTITIES/mobs_mc/shulker.lua | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/shulker.lua b/mods/ENTITIES/mobs_mc/shulker.lua index ed0732001..1b25dd53b 100644 --- a/mods/ENTITIES/mobs_mc/shulker.lua +++ b/mods/ENTITIES/mobs_mc/shulker.lua @@ -43,7 +43,7 @@ mcl_mobs.register_mob("mobs_mc:shulker", { hp_max = 30, xp_min = 5, xp_max = 5, - armor = 150, + armor = 20, collisionbox = {-0.5, -0.01, -0.5, 0.5, 0.99, 0.5}, visual = "mesh", mesh = "mobs_mc_shulker.b3d", @@ -77,7 +77,7 @@ mcl_mobs.register_mob("mobs_mc:shulker", { view_range = 16, fear_height = 0, walk_velocity = 0, - run_velocity = 0, + run_velocity = 0, noyaw = true, do_custom = function(self,dtime) local pos = self.object:get_pos() @@ -88,6 +88,11 @@ mcl_mobs.register_mob("mobs_mc:shulker", { end if self.state == "attack" then self:set_animation("run") + self:armor = 0 + if self.state == "stand" then + self.armor = 20 + if self.state == "walk" or self.state == "run" then + self.armor = 0 end self.path.way = false self.look_at_players = false From 69903aa4eccb1700fc9881e15680b115b3a2b607 Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Sat, 25 Nov 2023 02:55:06 +0100 Subject: [PATCH 043/375] Fixed crashes --- mods/ENTITIES/mobs_mc/shulker.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/shulker.lua b/mods/ENTITIES/mobs_mc/shulker.lua index 1b25dd53b..136652548 100644 --- a/mods/ENTITIES/mobs_mc/shulker.lua +++ b/mods/ENTITIES/mobs_mc/shulker.lua @@ -88,10 +88,10 @@ mcl_mobs.register_mob("mobs_mc:shulker", { end if self.state == "attack" then self:set_animation("run") - self:armor = 0 - if self.state == "stand" then + self.armor = 0 + elseif self.state == "stand" then self.armor = 20 - if self.state == "walk" or self.state == "run" then + elseif self.state == "walk" or self.state == "run" then self.armor = 0 end self.path.way = false From bc101314df221c61334fe2990d78c1a8c83018c5 Mon Sep 17 00:00:00 2001 From: bakawun Date: Mon, 11 Dec 2023 09:36:03 +0100 Subject: [PATCH 044/375] mobs:shulker:use on_attack to set shoot interval to between 1 and 6 seconds --- mods/ENTITIES/mobs_mc/shulker.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/shulker.lua b/mods/ENTITIES/mobs_mc/shulker.lua index 136652548..78959b717 100644 --- a/mods/ENTITIES/mobs_mc/shulker.lua +++ b/mods/ENTITIES/mobs_mc/shulker.lua @@ -35,7 +35,7 @@ mcl_mobs.register_mob("mobs_mc:shulker", { type = "monster", spawn_class = "hostile", attack_type = "shoot", - shoot_interval = 5.5, + shoot_interval = 6, arrow = "mobs_mc:shulkerbullet", shoot_offset = 0.5, passive = false, @@ -81,7 +81,6 @@ mcl_mobs.register_mob("mobs_mc:shulker", { noyaw = true, do_custom = function(self,dtime) local pos = self.object:get_pos() - self.shoot_interval = math.random(1, 5.5) if math.floor(self.object:get_yaw()) ~=0 then self.object:set_yaw(0) mcl_mobs:yaw(self, 0, 0, dtime) @@ -155,6 +154,9 @@ mcl_mobs.register_mob("mobs_mc:shulker", { end end end, + on_attack = function(self, dtime) + self.shoot_interval = math.random(1, 6) + end, }) -- bullet arrow (weapon) From 07eb70e9be2201da20424265a543ddbf0826cfe3 Mon Sep 17 00:00:00 2001 From: Wbjitscool Date: Wed, 13 Dec 2023 02:39:25 +0000 Subject: [PATCH 045/375] Update mods/ITEMS/mcl_stonecutter/init.lua --- mods/ITEMS/mcl_stonecutter/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_stonecutter/init.lua b/mods/ITEMS/mcl_stonecutter/init.lua index 5edf424da..9284d2a9c 100644 --- a/mods/ITEMS/mcl_stonecutter/init.lua +++ b/mods/ITEMS/mcl_stonecutter/init.lua @@ -392,7 +392,7 @@ minetest.register_node("mcl_stonecutter:stonecutter", { type = "vertical_frames", aspect_w = 16, aspect_h = 16, - length = 1 + length = 0.15 } } }, From ed205190e439c573a291d2f7acc9973d6ff0e84a Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Wed, 13 Dec 2023 04:10:01 +0100 Subject: [PATCH 046/375] Nerfed slime and magma cube attack range --- mods/ENTITIES/mobs_mc/slime+magma_cube.lua | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua index 321a9c1ce..61e653781 100644 --- a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua +++ b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua @@ -197,7 +197,7 @@ local slime_big = { distance = 16, }, damage = 4, - reach = 3, + reach = 2.5, armor = 100, drops = {}, -- TODO: Fix animations @@ -238,7 +238,7 @@ slime_small.xp_max = 2 slime_small.collisionbox = {-0.51, -0.01, -0.51, 0.51, 1.00, 0.51} slime_small.visual_size = {x=6.25, y=6.25} slime_small.damage = 3 -slime_small.reach = 2.75 +slime_small.reach = 2.25 slime_small.walk_velocity = 1.8 slime_small.run_velocity = 1.8 slime_small.jump_height = 4.3 @@ -254,8 +254,8 @@ slime_tiny.xp_min = 1 slime_tiny.xp_max = 1 slime_tiny.collisionbox = {-0.2505, -0.01, -0.2505, 0.2505, 0.50, 0.2505} slime_tiny.visual_size = {x=3.125, y=3.125} -slime_tiny.damage = 0 -slime_tiny.reach = 2.5 +slime_tiny.damage = 1 +slime_tiny.reach = 2 slime_tiny.drops = { -- slimeball {name = "mcl_mobitems:slimeball", @@ -418,7 +418,7 @@ local magma_cube_big = { walk_velocity = 2.5, run_velocity = 2.5, damage = 6, - reach = 3, + reach = 2.35, armor = 53, drops = { {name = "mcl_mobitems:magma_cream", @@ -466,7 +466,7 @@ magma_cube_small.xp_max = 2 magma_cube_small.collisionbox = {-0.51, -0.01, -0.51, 0.51, 1.00, 0.51} magma_cube_small.visual_size = {x=6.25, y=6.25} magma_cube_small.damage = 3 -magma_cube_small.reach = 2.75 +magma_cube_small.reach = 2.1 magma_cube_small.walk_velocity = .8 magma_cube_small.run_velocity = 2.0 magma_cube_small.jump_height = 6 @@ -491,7 +491,7 @@ magma_cube_tiny.walk_velocity = 1.02 magma_cube_tiny.run_velocity = 1.02 magma_cube_tiny.jump_height = 4 magma_cube_tiny.damage = 3 -magma_cube_tiny.reach = 2.5 +magma_cube_tiny.reach = 2 magma_cube_tiny.armor = 50 magma_cube_tiny.drops = {} magma_cube_tiny.spawn_small_alternative = nil From a2c8d13f04391136b94c17abded46332065f96f0 Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Wed, 13 Dec 2023 04:51:56 +0100 Subject: [PATCH 047/375] Nerfed vexes and evokers --- mods/ENTITIES/mobs_mc/vex.lua | 6 +++++- mods/ENTITIES/mobs_mc/villager_evoker.lua | 7 ++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/vex.lua b/mods/ENTITIES/mobs_mc/vex.lua index fbb33804d..cedbc59ad 100644 --- a/mods/ENTITIES/mobs_mc/vex.lua +++ b/mods/ENTITIES/mobs_mc/vex.lua @@ -37,6 +37,7 @@ mcl_mobs.register_mob("mobs_mc:vex", { walk_velocity = 3.2, run_velocity = 5.9, attack_type = "dogfight", + attack_frequency = 2, sounds = { -- TODO: random death = "mobs_mc_vex_death", @@ -63,10 +64,13 @@ mcl_mobs.register_mob("mobs_mc:vex", { self.object:set_properties({textures=self.base_texture}) end else + if self.base_texture[2] == "mobs_mc_vex_charging.png" then + self.base_texture[2] = "mobs_mc_vex.png" + end if self.base_texture[1] ~= "default_tool_steelsword.png" then self.base_texture[1] = "default_tool_steelsword.png" - self.object:set_properties({textures=self.base_texture}) end + self.object:set_properties({textures=self.base_texture}) end -- Take constant damage if the vex' life clock ran out diff --git a/mods/ENTITIES/mobs_mc/villager_evoker.lua b/mods/ENTITIES/mobs_mc/villager_evoker.lua index a34f0ffe9..9d465c25d 100644 --- a/mods/ENTITIES/mobs_mc/villager_evoker.lua +++ b/mods/ENTITIES/mobs_mc/villager_evoker.lua @@ -42,6 +42,7 @@ mcl_mobs.register_mob("mobs_mc:evoker", { run_velocity = 1.4, group_attack = true, attack_type = "dogfight", + attack_frequency = 15, -- Summon vexes custom_attack = function(self, to_attack) if not spawned_vexes[self] then spawned_vexes[self] = {} end @@ -64,7 +65,6 @@ mcl_mobs.register_mob("mobs_mc:evoker", { table.insert(spawned_vexes[self],ent) end end, - shoot_interval = 15, passive = false, drops = { {name = "mcl_core:emerald", @@ -86,6 +86,11 @@ mcl_mobs.register_mob("mobs_mc:evoker", { }, view_range = 16, fear_height = 4, + + on_spawn = function(self) + self.timer = 15 + return true + end, }) -- spawn eggs From ebd733be829ca7b3b447158c018d30cad12c6735 Mon Sep 17 00:00:00 2001 From: Wbjitscool Date: Wed, 13 Dec 2023 05:22:41 +0000 Subject: [PATCH 048/375] update's the campfire's fire burning animation to make it look better (#4077) improve the look of the campfire's flame/burning animation Reviewed-on: https://git.minetest.land/MineClone2/MineClone2/pulls/4077 Reviewed-by: the-real-herowl Co-authored-by: Wbjitscool Co-committed-by: Wbjitscool --- mods/ITEMS/mcl_campfires/api.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_campfires/api.lua b/mods/ITEMS/mcl_campfires/api.lua index cd23a964b..4c1ddc758 100644 --- a/mods/ITEMS/mcl_campfires/api.lua +++ b/mods/ITEMS/mcl_campfires/api.lua @@ -282,7 +282,7 @@ function mcl_campfires.register_campfire(name, def) type="vertical_frames", aspect_w=32, aspect_h=16, - length=2.0 + length=0.8 }} }, overlay_tiles = { From a8806fe04e580eabbdbe583fb27c786c07cf028e Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Wed, 13 Dec 2023 17:34:42 +0000 Subject: [PATCH 049/375] Add player invulnerability & fix not continuously damaging players when holding the attack key Player invulnerability is the same as Minecraft's Damage Immunity https://minecraft.wiki/w/Damage#Immunity The old code for some reason only allows a few damage by holding and does not continuously damage other players after a few hits --- mods/PLAYER/mcl_playerplus/init.lua | 42 ++++++++++++++++++++--------- 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 6cfb15bad..ed72a43b4 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -663,6 +663,8 @@ minetest.register_on_joinplayer(function(player) lastPos = nil, swimDistance = 0, jump_cooldown = -1, -- Cooldown timer for jumping, we need this to prevent the jump exhaustion to increase rapidly + last_damage = 0, + invul_timestamp = 0, } mcl_playerplus.elytra[player] = {active = false, rocketing = 0, speed = 0} @@ -727,19 +729,35 @@ mcl_damage.register_modifier(function(obj, damage, reason) end end, -200) --- damage invulnerability -mcl_damage.register_modifier(function(obj, damage, reason) - local invul = obj:get_meta():get_int("mcl_damage:invulnerable") - if invul > 0 then - return 0 - else - obj:get_meta():set_int("mcl_damage:invulnerable", 1) - minetest.after(0.5, function() - obj:get_meta():set_int("mcl_damage:invulnerable", 0) - end) - return damage +minetest.register_on_punchplayer(function(player, hitter, time_from_last_punch, tool_capabilities, dir, damage) + -- damage invulnerability + if hitter then + local name = player:get_player_name() + local time_now = minetest.get_us_time() + local invul_timestamp = mcl_playerplus_internal[name].invul_timestamp + local time_diff = time_now - invul_timestamp + -- check for invulnerability time in microseconds (0.5 second) + if time_diff <= 500000 and time_diff >= 0 then + damage = damage - mcl_playerplus_internal[name].last_damage + if damage < 0 then + damage = 0 + end + return damage + else + mcl_playerplus_internal[name].last_damage = damage + mcl_playerplus_internal[name].invul_timestamp = time_now + end end -end, -1000) + -- attack reach limit + if hitter and hitter:is_player() then + local player_pos = player:get_pos() + local hitter_pos = hitter:get_pos() + if vector.distance(player_pos, hitter_pos) > 3 then + damage = 0 + return damage + end + end +end) minetest.register_on_respawnplayer(function(player) local pos = player:get_pos() From a8c2d4534a6b52c5cbee876c1d02d6d8c164814c Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Wed, 13 Dec 2023 17:42:42 +0000 Subject: [PATCH 050/375] Nerf long pvp enchanted knockbacks especially when running --- mods/ITEMS/mcl_enchanting/enchantments.lua | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index c6436339c..6070efda9 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -278,12 +278,15 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool end if hitter and hitter:is_player() then local wielditem = hitter:get_wielded_item() - knockback = knockback + 5 * mcl_enchanting.get_enchantment(wielditem, "knockback") + knockback = knockback + 6 * mcl_enchanting.get_enchantment(wielditem, "knockback") -- add player velocity to knockback + local v = player:get_velocity() local hv = hitter:get_velocity() local dir_dot = (hv.x * dir.x) + (hv.z * dir.z) - if dir_dot > 0 then - knockback = knockback + dir_dot * 2 + local hitter_mag = math.sqrt((hv.x * hv.x) + (hv.z * hv.z)) + local player_mag = math.sqrt((v.x * v.x) + (v.z * v.z)) + if dir_dot > 0 and player_mag <= hitter_mag * 0.625 then + knockback = knockback + hitter_mag * 0.0625 end elseif luaentity and luaentity._knockback then local kb = knockback + luaentity._knockback / 4 From 96aaf89036b3994787f75642ca49c3f6a85b4b6d Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Wed, 13 Dec 2023 18:49:08 +0000 Subject: [PATCH 051/375] Readjust pvp enchant knockback to make the running knockback difference more pronounced --- mods/ITEMS/mcl_enchanting/enchantments.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index 6070efda9..44db05fe3 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -278,7 +278,7 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool end if hitter and hitter:is_player() then local wielditem = hitter:get_wielded_item() - knockback = knockback + 6 * mcl_enchanting.get_enchantment(wielditem, "knockback") + knockback = knockback + 5 * mcl_enchanting.get_enchantment(wielditem, "knockback") -- add player velocity to knockback local v = player:get_velocity() local hv = hitter:get_velocity() @@ -286,7 +286,7 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool local hitter_mag = math.sqrt((hv.x * hv.x) + (hv.z * hv.z)) local player_mag = math.sqrt((v.x * v.x) + (v.z * v.z)) if dir_dot > 0 and player_mag <= hitter_mag * 0.625 then - knockback = knockback + hitter_mag * 0.0625 + knockback = knockback + hitter_mag * 0.375 end elseif luaentity and luaentity._knockback then local kb = knockback + luaentity._knockback / 4 From b0e33793ec5b1e7a48cfc6713d6f10235f1e24d6 Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Wed, 13 Dec 2023 20:04:15 +0000 Subject: [PATCH 052/375] Fix a potential bug that could bypass attack reach limit when a stronger attack breaches the invul --- mods/PLAYER/mcl_playerplus/init.lua | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index ed72a43b4..83ea1a1aa 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -730,6 +730,15 @@ mcl_damage.register_modifier(function(obj, damage, reason) end, -200) minetest.register_on_punchplayer(function(player, hitter, time_from_last_punch, tool_capabilities, dir, damage) + -- attack reach limit + if hitter and hitter:is_player() then + local player_pos = player:get_pos() + local hitter_pos = hitter:get_pos() + if vector.distance(player_pos, hitter_pos) > 3 then + damage = 0 + return damage + end + end -- damage invulnerability if hitter then local name = player:get_player_name() @@ -748,15 +757,6 @@ minetest.register_on_punchplayer(function(player, hitter, time_from_last_punch, mcl_playerplus_internal[name].invul_timestamp = time_now end end - -- attack reach limit - if hitter and hitter:is_player() then - local player_pos = player:get_pos() - local hitter_pos = hitter:get_pos() - if vector.distance(player_pos, hitter_pos) > 3 then - damage = 0 - return damage - end - end end) minetest.register_on_respawnplayer(function(player) From 2b71462c1e3e983bb4f1a27c2a0afd2a4994ea7e Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Wed, 13 Dec 2023 20:36:54 +0000 Subject: [PATCH 053/375] Prevent knockback if player is beyond attack reach limit --- mods/ITEMS/mcl_enchanting/enchantments.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index 44db05fe3..23145c176 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -276,7 +276,7 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool if hitter then luaentity = hitter:get_luaentity() end - if hitter and hitter:is_player() then + if hitter and hitter:is_player() and distance <= 3 then local wielditem = hitter:get_wielded_item() knockback = knockback + 5 * mcl_enchanting.get_enchantment(wielditem, "knockback") -- add player velocity to knockback @@ -288,6 +288,8 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool if dir_dot > 0 and player_mag <= hitter_mag * 0.625 then knockback = knockback + hitter_mag * 0.375 end + elseif hitter and hitter:is_player() and distance > 3 then + knockback = 0 elseif luaentity and luaentity._knockback then local kb = knockback + luaentity._knockback / 4 local punch_dir = dir From 85b1f5247a691f56201a452db31e0705d6d84e4a Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Thu, 14 Dec 2023 07:46:16 +0000 Subject: [PATCH 054/375] Add vertical lift & minimum pvp knockback --- mods/ITEMS/mcl_enchanting/enchantments.lua | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index 23145c176..741621f22 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -279,8 +279,20 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool if hitter and hitter:is_player() and distance <= 3 then local wielditem = hitter:get_wielded_item() knockback = knockback + 5 * mcl_enchanting.get_enchantment(wielditem, "knockback") - -- add player velocity to knockback + -- add vertical lift to knockback local v = player:get_velocity() + if v and v.y <= 0.1 and v.y >= -0.1 and dir.y <= 0.44 then + player:add_velocity({ + x = 0, + y = 4.5, + z = 0 + }) + -- add minimum knockback + if knockback <= 1.5 then + knockback = knockback + 6 + end + end + -- add player velocity to knockback local hv = hitter:get_velocity() local dir_dot = (hv.x * dir.x) + (hv.z * dir.z) local hitter_mag = math.sqrt((hv.x * hv.x) + (hv.z * hv.z)) From b2507c36407237f225d4bab47db34ab04da01c0c Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Thu, 14 Dec 2023 08:12:13 +0000 Subject: [PATCH 055/375] Make fire aspect enchant respect attack reach limit --- mods/ITEMS/mcl_enchanting/enchantments.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index 741621f22..399081d00 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -133,7 +133,11 @@ minetest.register_on_punchplayer(function(player, hitter, time_from_last_punch, if wielditem then local fire_aspect_level = mcl_enchanting.get_enchantment(wielditem, "fire_aspect") if fire_aspect_level > 0 then - mcl_burning.set_on_fire(player, fire_aspect_level * 4) + local player_pos = player:get_pos() + local hitter_pos = hitter:get_pos() + if vector.distance(hitter_pos, player_pos) <= 3 then + mcl_burning.set_on_fire(player, fire_aspect_level * 4) + end end end end From ed507d8509caae7dcda9f01bde756ba3c9e10cb6 Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Thu, 14 Dec 2023 08:15:55 +0000 Subject: [PATCH 056/375] Remove unnecessary space in the attack reach limit on mobs code --- mods/ENTITIES/mcl_mobs/combat.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_mobs/combat.lua b/mods/ENTITIES/mcl_mobs/combat.lua index 4396f3265..5135aff7b 100644 --- a/mods/ENTITIES/mcl_mobs/combat.lua +++ b/mods/ENTITIES/mcl_mobs/combat.lua @@ -522,7 +522,7 @@ function mob_class:on_punch(hitter, tflp, tool_capabilities, dir) if is_player then -- is mob out of reach? - if vector.distance(mob_pos, player_pos) > 3 then + if vector.distance(mob_pos, player_pos) > 3 then return end -- is mob protected? From 49af5d2013b1330649394d3f302b648df5d05073 Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Thu, 14 Dec 2023 08:51:34 +0000 Subject: [PATCH 057/375] Rebalance minimum pvp knockback to account for added knockbacks when moving --- mods/ITEMS/mcl_enchanting/enchantments.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index 399081d00..34d4c1930 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -293,7 +293,7 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool }) -- add minimum knockback if knockback <= 1.5 then - knockback = knockback + 6 + knockback = knockback + 4.5 end end -- add player velocity to knockback From bf9e487fa9fab03579bafc2b60442773d946f3e3 Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Thu, 14 Dec 2023 09:27:28 +0000 Subject: [PATCH 058/375] Adjust minimum pvp knockback to be closer to MC --- mods/ITEMS/mcl_enchanting/enchantments.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index 34d4c1930..12172ea3e 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -293,7 +293,7 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool }) -- add minimum knockback if knockback <= 1.5 then - knockback = knockback + 4.5 + knockback = knockback + 4.875 end end -- add player velocity to knockback From 6b439fd1dedba5ff4c62e880846dd407dcf1bf47 Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Thu, 14 Dec 2023 11:57:55 +0000 Subject: [PATCH 059/375] Add maximum pvp knockback limit & approximate enchant knockback distance to be similar to MC --- mods/ITEMS/mcl_enchanting/enchantments.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index 12172ea3e..a9fd40714 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -282,7 +282,7 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool end if hitter and hitter:is_player() and distance <= 3 then local wielditem = hitter:get_wielded_item() - knockback = knockback + 5 * mcl_enchanting.get_enchantment(wielditem, "knockback") + knockback = knockback + 3 * mcl_enchanting.get_enchantment(wielditem, "knockback") -- add vertical lift to knockback local v = player:get_velocity() if v and v.y <= 0.1 and v.y >= -0.1 and dir.y <= 0.44 then @@ -304,6 +304,10 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool if dir_dot > 0 and player_mag <= hitter_mag * 0.625 then knockback = knockback + hitter_mag * 0.375 end + -- add maximum knockback limit + if knockback > 12.875 then + knockback = 12.875 + end elseif hitter and hitter:is_player() and distance > 3 then knockback = 0 elseif luaentity and luaentity._knockback then From cee5bbc206e507eca4cf36fab0240eb000fc469d Mon Sep 17 00:00:00 2001 From: bakawun Date: Thu, 14 Dec 2023 16:50:23 +0100 Subject: [PATCH 060/375] mobs:fix typo in homing function --- mods/ENTITIES/mcl_mobs/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_mobs/init.lua b/mods/ENTITIES/mcl_mobs/init.lua index cd79fed6f..f4322bd31 100644 --- a/mods/ENTITIES/mcl_mobs/init.lua +++ b/mods/ENTITIES/mcl_mobs/init.lua @@ -437,7 +437,7 @@ function mcl_mobs.register_arrow(name, def) self.object:set_velocity(vector.direction(self.object:get_pos(), p) * self.velocity) end else - self.target = nil + self._target = nil end end From ae169b2814e1746ef81f5f6bb0d1abbd6b6598ed Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Fri, 15 Dec 2023 03:09:48 +0000 Subject: [PATCH 061/375] Add fix to crash when moving bought villager trade item to empty sell slot bug by JoseDouglas26 (#4079) Add fix to #4062 by JoseDouglas26 https://git.minetest.land/MineClone2/MineClone2/issues/4062#issuecomment-74045 Reviewed-on: https://git.minetest.land/MineClone2/MineClone2/pulls/4079 Reviewed-by: the-real-herowl Co-authored-by: Eliy21 Co-committed-by: Eliy21 --- mods/ENTITIES/mobs_mc/villager.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ENTITIES/mobs_mc/villager.lua b/mods/ENTITIES/mobs_mc/villager.lua index cb421b78b..9f1daf53d 100644 --- a/mods/ENTITIES/mobs_mc/villager.lua +++ b/mods/ENTITIES/mobs_mc/villager.lua @@ -1941,6 +1941,7 @@ local trade_inventory = { if not wanted2:is_empty() then inv:remove_item("input", inv:get_stack("wanted", 2)) end + local name = player:get_player_name() local trader = player_trading_with[name] minetest.sound_play("mobs_mc_villager_accept", {to_player = player:get_player_name(),object=trader.object}, true) end From 60367cdbe043e5afeb1ee092e2a55bec1d497272 Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Fri, 15 Dec 2023 15:42:49 +0000 Subject: [PATCH 062/375] Revert unreliable bugfix There are times when the continuous damage when punching players does not happen so will not fix at the moment as using other weapons does still work. --- mods/PLAYER/mcl_playerplus/init.lua | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 83ea1a1aa..99230bf9a 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -664,7 +664,6 @@ minetest.register_on_joinplayer(function(player) swimDistance = 0, jump_cooldown = -1, -- Cooldown timer for jumping, we need this to prevent the jump exhaustion to increase rapidly last_damage = 0, - invul_timestamp = 0, } mcl_playerplus.elytra[player] = {active = false, rocketing = 0, speed = 0} @@ -742,11 +741,9 @@ minetest.register_on_punchplayer(function(player, hitter, time_from_last_punch, -- damage invulnerability if hitter then local name = player:get_player_name() - local time_now = minetest.get_us_time() - local invul_timestamp = mcl_playerplus_internal[name].invul_timestamp - local time_diff = time_now - invul_timestamp - -- check for invulnerability time in microseconds (0.5 second) - if time_diff <= 500000 and time_diff >= 0 then + -- check for invulnerability time for 0.5 second + local invul = player:get_meta():get_int("mcl_damage:invulnerable") + if invul > 0 then damage = damage - mcl_playerplus_internal[name].last_damage if damage < 0 then damage = 0 @@ -754,7 +751,10 @@ minetest.register_on_punchplayer(function(player, hitter, time_from_last_punch, return damage else mcl_playerplus_internal[name].last_damage = damage - mcl_playerplus_internal[name].invul_timestamp = time_now + player:get_meta():set_int("mcl_damage:invulnerable", 1) + minetest.after(0.5, function() + player:get_meta():set_int("mcl_damage:invulnerable", 0) + end) end end end) From ca556c052ff46d3c4856c26ba57fcbf90bd1adff Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Fri, 15 Dec 2023 15:52:26 +0000 Subject: [PATCH 063/375] Prevent pvp knockbacks when invulnerable --- mods/ITEMS/mcl_enchanting/enchantments.lua | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index a9fd40714..5f3971f60 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -285,7 +285,8 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool knockback = knockback + 3 * mcl_enchanting.get_enchantment(wielditem, "knockback") -- add vertical lift to knockback local v = player:get_velocity() - if v and v.y <= 0.1 and v.y >= -0.1 and dir.y <= 0.44 then + local invul = player:get_meta():get_int("mcl_damage:invulnerable") + if v and v.y <= 0.1 and v.y >= -0.1 and dir.y <= 0.44 and invul == 0 then player:add_velocity({ x = 0, y = 4.5, @@ -308,6 +309,10 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool if knockback > 12.875 then knockback = 12.875 end + -- remove knockback if invulnerable + if invul > 0 then + knockback = 0 + end elseif hitter and hitter:is_player() and distance > 3 then knockback = 0 elseif luaentity and luaentity._knockback then From 8e2c5249f54d677a14eae674d8fd7682b1973ac6 Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Fri, 15 Dec 2023 15:59:08 +0000 Subject: [PATCH 064/375] Fix comment on player invul code --- mods/PLAYER/mcl_playerplus/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 99230bf9a..27eec4845 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -741,7 +741,7 @@ minetest.register_on_punchplayer(function(player, hitter, time_from_last_punch, -- damage invulnerability if hitter then local name = player:get_player_name() - -- check for invulnerability time for 0.5 second + -- check for invulnerability time (0.5 second) local invul = player:get_meta():get_int("mcl_damage:invulnerable") if invul > 0 then damage = damage - mcl_playerplus_internal[name].last_damage From d7b10d18d8872ff21fb4a5f1505afa799c6d5d83 Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Fri, 15 Dec 2023 16:27:09 +0000 Subject: [PATCH 065/375] Fix not being able to give minimum knockback to players when both near and lower than them --- mods/ITEMS/mcl_enchanting/enchantments.lua | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index 5f3971f60..b157f3211 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -286,12 +286,14 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool -- add vertical lift to knockback local v = player:get_velocity() local invul = player:get_meta():get_int("mcl_damage:invulnerable") - if v and v.y <= 0.1 and v.y >= -0.1 and dir.y <= 0.44 and invul == 0 then - player:add_velocity({ - x = 0, - y = 4.5, - z = 0 - }) + if v and v.y <= 0.1 and v.y >= -0.1 and invul == 0 then + if dir.y <= 0.44 then + player:add_velocity({ + x = 0, + y = 4.5, + z = 0 + }) + end -- add minimum knockback if knockback <= 1.5 then knockback = knockback + 4.875 From cd83305f07572d68b2ea6ea8b5fc25356e59d499 Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Fri, 15 Dec 2023 18:17:15 +0000 Subject: [PATCH 066/375] Make the vertical lift on pvp knockback similar to MC --- mods/ITEMS/mcl_enchanting/enchantments.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index b157f3211..b4092fe93 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -288,11 +288,11 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool local invul = player:get_meta():get_int("mcl_damage:invulnerable") if v and v.y <= 0.1 and v.y >= -0.1 and invul == 0 then if dir.y <= 0.44 then - player:add_velocity({ - x = 0, - y = 4.5, - z = 0 - }) + if mcl_enchanting.get_enchantment(wielditem, "knockback") == 0 then + player:add_velocity({x = 0, y = 6.4, z = 0}) + else + player:add_velocity({x = 0, y = 7, z = 0}) + end end -- add minimum knockback if knockback <= 1.5 then From c9692c622481c45eac3213caeea8aa73ccf7cbd3 Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Fri, 15 Dec 2023 19:49:04 +0000 Subject: [PATCH 067/375] Fix player invulnerability not getting disabled permanently bug --- mods/PLAYER/mcl_playerplus/init.lua | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 27eec4845..9b819142e 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -664,6 +664,7 @@ minetest.register_on_joinplayer(function(player) swimDistance = 0, jump_cooldown = -1, -- Cooldown timer for jumping, we need this to prevent the jump exhaustion to increase rapidly last_damage = 0, + invul_timestamp = 0, } mcl_playerplus.elytra[player] = {active = false, rocketing = 0, speed = 0} @@ -741,9 +742,15 @@ minetest.register_on_punchplayer(function(player, hitter, time_from_last_punch, -- damage invulnerability if hitter then local name = player:get_player_name() - -- check for invulnerability time (0.5 second) - local invul = player:get_meta():get_int("mcl_damage:invulnerable") - if invul > 0 then + local time_now = minetest.get_us_time() + local invul_timestamp = mcl_playerplus_internal[name].invul_timestamp + local time_diff = time_now - invul_timestamp + -- check for invulnerability time in microseconds (0.5 second) + if time_diff <= 500000 and time_diff >= 0 then + player:get_meta():set_int("mcl_damage:invulnerable", 1) + minetest.after(0.5, function() + player:get_meta():set_int("mcl_damage:invulnerable", 0) + end) damage = damage - mcl_playerplus_internal[name].last_damage if damage < 0 then damage = 0 @@ -751,10 +758,11 @@ minetest.register_on_punchplayer(function(player, hitter, time_from_last_punch, return damage else mcl_playerplus_internal[name].last_damage = damage - player:get_meta():set_int("mcl_damage:invulnerable", 1) - minetest.after(0.5, function() + mcl_playerplus_internal[name].invul_timestamp = time_now + local invul = player:get_meta():get_int("mcl_damage:invulnerable") + if invul > 0 then player:get_meta():set_int("mcl_damage:invulnerable", 0) - end) + end end end end) From 9b9747b3d8e82f6df14b58350890a42963e84909 Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Fri, 15 Dec 2023 21:02:07 +0000 Subject: [PATCH 068/375] Prevent excessive vertical knockbacks if hit by a player from below --- mods/ITEMS/mcl_enchanting/enchantments.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index b4092fe93..4160da19f 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -286,7 +286,7 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool -- add vertical lift to knockback local v = player:get_velocity() local invul = player:get_meta():get_int("mcl_damage:invulnerable") - if v and v.y <= 0.1 and v.y >= -0.1 and invul == 0 then + if v and v.y <= 0.01 and v.y >= -0.01 and invul == 0 then if dir.y <= 0.44 then if mcl_enchanting.get_enchantment(wielditem, "knockback") == 0 then player:add_velocity({x = 0, y = 6.4, z = 0}) @@ -311,6 +311,9 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool if knockback > 12.875 then knockback = 12.875 end + if knockback > 6.4375 and dir.y >= 0.3 then + knockback = 6.4375 + end -- remove knockback if invulnerable if invul > 0 then knockback = 0 From f799596db9d33f5aba90d7819120834efeeb9815 Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Fri, 15 Dec 2023 22:56:02 +0000 Subject: [PATCH 069/375] Make vertical pvp knockbacks respect attack reach limit & complete excess vertical kb prevention --- mods/ITEMS/mcl_enchanting/enchantments.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index 4160da19f..f792014d7 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -287,7 +287,7 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool local v = player:get_velocity() local invul = player:get_meta():get_int("mcl_damage:invulnerable") if v and v.y <= 0.01 and v.y >= -0.01 and invul == 0 then - if dir.y <= 0.44 then + if dir.y <= 0.44 and distance <= 3 then if mcl_enchanting.get_enchantment(wielditem, "knockback") == 0 then player:add_velocity({x = 0, y = 6.4, z = 0}) else @@ -313,6 +313,8 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool end if knockback > 6.4375 and dir.y >= 0.3 then knockback = 6.4375 + elseif knockback <= 6.4375 and dir.y >= 0.3 then + knockback = 1 end -- remove knockback if invulnerable if invul > 0 then From 33e8337bbb57919f6419a0187ffd19a5cab05b15 Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Sat, 16 Dec 2023 07:58:26 +0000 Subject: [PATCH 070/375] Finish remaining excessive vertical pvp knockback prevention adjustments when hit from below --- mods/ITEMS/mcl_enchanting/enchantments.lua | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index f792014d7..3c03cc846 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -286,13 +286,16 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool -- add vertical lift to knockback local v = player:get_velocity() local invul = player:get_meta():get_int("mcl_damage:invulnerable") + local enchant = mcl_enchanting.get_enchantment(wielditem, "knockback") if v and v.y <= 0.01 and v.y >= -0.01 and invul == 0 then - if dir.y <= 0.44 and distance <= 3 then - if mcl_enchanting.get_enchantment(wielditem, "knockback") == 0 then + if dir.y <= 0.3 then + if enchant == 0 then player:add_velocity({x = 0, y = 6.4, z = 0}) else player:add_velocity({x = 0, y = 7, z = 0}) end + elseif dir.y <= 0.44 and dir.y > 0.3 and enchant > 0 then + knockback = knockback + 3 end -- add minimum knockback if knockback <= 1.5 then @@ -311,10 +314,8 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool if knockback > 12.875 then knockback = 12.875 end - if knockback > 6.4375 and dir.y >= 0.3 then - knockback = 6.4375 - elseif knockback <= 6.4375 and dir.y >= 0.3 then - knockback = 1 + if knockback > 6.275 and dir.y >= 0.3 and v.y == 0 and enchant == 0 then + knockback = 6.275 end -- remove knockback if invulnerable if invul > 0 then From cfab59d68a2bfafb814b980d947b3b1b5e1848c6 Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Sat, 16 Dec 2023 09:20:29 +0000 Subject: [PATCH 071/375] Rebalanced moving pvp knockbacks --- mods/ITEMS/mcl_enchanting/enchantments.lua | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index 3c03cc846..fdcb66388 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -282,7 +282,7 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool end if hitter and hitter:is_player() and distance <= 3 then local wielditem = hitter:get_wielded_item() - knockback = knockback + 3 * mcl_enchanting.get_enchantment(wielditem, "knockback") + knockback = knockback + 3.22 * mcl_enchanting.get_enchantment(wielditem, "knockback") -- add vertical lift to knockback local v = player:get_velocity() local invul = player:get_meta():get_int("mcl_damage:invulnerable") @@ -308,12 +308,9 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool local hitter_mag = math.sqrt((hv.x * hv.x) + (hv.z * hv.z)) local player_mag = math.sqrt((v.x * v.x) + (v.z * v.z)) if dir_dot > 0 and player_mag <= hitter_mag * 0.625 then - knockback = knockback + hitter_mag * 0.375 - end - -- add maximum knockback limit - if knockback > 12.875 then - knockback = 12.875 + knockback = knockback + hitter_mag * 0.6875 end + -- add vertical knockback limit on angled hit if knockback > 6.275 and dir.y >= 0.3 and v.y == 0 and enchant == 0 then knockback = 6.275 end From 8fbd72c1422061a0b99bf3916e3af7f0bca449bc Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Sat, 16 Dec 2023 09:46:18 +0000 Subject: [PATCH 072/375] Optimize code by calling get_enchantment function only once --- mods/ITEMS/mcl_enchanting/enchantments.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index fdcb66388..6194945a7 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -282,11 +282,12 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool end if hitter and hitter:is_player() and distance <= 3 then local wielditem = hitter:get_wielded_item() - knockback = knockback + 3.22 * mcl_enchanting.get_enchantment(wielditem, "knockback") + --knockback = knockback + 3 * mcl_enchanting.get_enchantment(wielditem, "knockback") + local enchant = mcl_enchanting.get_enchantment(wielditem, "knockback") + knockback = knockback + 3.22 * enchant -- add vertical lift to knockback local v = player:get_velocity() local invul = player:get_meta():get_int("mcl_damage:invulnerable") - local enchant = mcl_enchanting.get_enchantment(wielditem, "knockback") if v and v.y <= 0.01 and v.y >= -0.01 and invul == 0 then if dir.y <= 0.3 then if enchant == 0 then From 32e91b45ae5d6f84844b0db927dfe650da274af1 Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Sat, 16 Dec 2023 11:48:16 +0000 Subject: [PATCH 073/375] Add vertical pvp knockbacks from downward hits & reduce pvp kb on half block angled upward hits --- mods/ITEMS/mcl_enchanting/enchantments.lua | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index 6194945a7..836a13a65 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -290,10 +290,16 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool local invul = player:get_meta():get_int("mcl_damage:invulnerable") if v and v.y <= 0.01 and v.y >= -0.01 and invul == 0 then if dir.y <= 0.3 then + local regular_v = 6.4 + local enchant_v = 7 + if dir.y <= 0.27 then + regular_v = regular_v * math.abs(dir.y - 1) + enchant_v = enchant_v * math.abs(dir.y - 1) + end if enchant == 0 then - player:add_velocity({x = 0, y = 6.4, z = 0}) + player:add_velocity({x = 0, y = regular_v, z = 0}) else - player:add_velocity({x = 0, y = 7, z = 0}) + player:add_velocity({x = 0, y = enchant_v, z = 0}) end elseif dir.y <= 0.44 and dir.y > 0.3 and enchant > 0 then knockback = knockback + 3 From e8ee9c44635657862dcf54e59f829ddec1a0ed09 Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Sat, 16 Dec 2023 12:58:58 +0000 Subject: [PATCH 074/375] Remove obsolete work-around code --- mods/ITEMS/mcl_enchanting/enchantments.lua | 26 +++++++--------------- 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index 836a13a65..28cb1083c 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -289,20 +289,14 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool local v = player:get_velocity() local invul = player:get_meta():get_int("mcl_damage:invulnerable") if v and v.y <= 0.01 and v.y >= -0.01 and invul == 0 then - if dir.y <= 0.3 then - local regular_v = 6.4 - local enchant_v = 7 - if dir.y <= 0.27 then - regular_v = regular_v * math.abs(dir.y - 1) - enchant_v = enchant_v * math.abs(dir.y - 1) - end - if enchant == 0 then - player:add_velocity({x = 0, y = regular_v, z = 0}) - else - player:add_velocity({x = 0, y = enchant_v, z = 0}) - end - elseif dir.y <= 0.44 and dir.y > 0.3 and enchant > 0 then - knockback = knockback + 3 + local regular_v = 6.4 + local enchant_v = 7 + regular_v = regular_v * math.abs(dir.y - 1) + enchant_v = enchant_v * math.abs(dir.y - 1) + if enchant == 0 then + player:add_velocity({x = 0, y = regular_v, z = 0}) + else + player:add_velocity({x = 0, y = enchant_v, z = 0}) end -- add minimum knockback if knockback <= 1.5 then @@ -317,10 +311,6 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool if dir_dot > 0 and player_mag <= hitter_mag * 0.625 then knockback = knockback + hitter_mag * 0.6875 end - -- add vertical knockback limit on angled hit - if knockback > 6.275 and dir.y >= 0.3 and v.y == 0 and enchant == 0 then - knockback = 6.275 - end -- remove knockback if invulnerable if invul > 0 then knockback = 0 From 0a8874ecad38bf8e9738a2cba67a2f83d0e782cf Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Sun, 17 Dec 2023 16:39:04 +0000 Subject: [PATCH 075/375] Make vertical pvp knockbacks less floaty --- mods/ITEMS/mcl_enchanting/enchantments.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index 28cb1083c..1d065db3b 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -291,13 +291,19 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool if v and v.y <= 0.01 and v.y >= -0.01 and invul == 0 then local regular_v = 6.4 local enchant_v = 7 + local added_v = 0 regular_v = regular_v * math.abs(dir.y - 1) enchant_v = enchant_v * math.abs(dir.y - 1) if enchant == 0 then player:add_velocity({x = 0, y = regular_v, z = 0}) + added_v = regular_v else player:add_velocity({x = 0, y = enchant_v, z = 0}) + added_v = enchant_v end + minetest.after(0.25, function() + player:add_velocity({x = 0, y = -added_v * 0.375 , z = 0}) + end) -- add minimum knockback if knockback <= 1.5 then knockback = knockback + 4.875 From 8612350fa786053d42eb51260f72b4cc4059835a Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Sun, 17 Dec 2023 17:48:39 +0000 Subject: [PATCH 076/375] Make vertical pvp knockback floatiness reduction include moving hits --- mods/ITEMS/mcl_enchanting/enchantments.lua | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index 1d065db3b..05a1e7531 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -287,11 +287,11 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool knockback = knockback + 3.22 * enchant -- add vertical lift to knockback local v = player:get_velocity() + local added_v = 0 local invul = player:get_meta():get_int("mcl_damage:invulnerable") if v and v.y <= 0.01 and v.y >= -0.01 and invul == 0 then local regular_v = 6.4 local enchant_v = 7 - local added_v = 0 regular_v = regular_v * math.abs(dir.y - 1) enchant_v = enchant_v * math.abs(dir.y - 1) if enchant == 0 then @@ -301,9 +301,6 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool player:add_velocity({x = 0, y = enchant_v, z = 0}) added_v = enchant_v end - minetest.after(0.25, function() - player:add_velocity({x = 0, y = -added_v * 0.375 , z = 0}) - end) -- add minimum knockback if knockback <= 1.5 then knockback = knockback + 4.875 @@ -317,6 +314,10 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool if dir_dot > 0 and player_mag <= hitter_mag * 0.625 then knockback = knockback + hitter_mag * 0.6875 end + -- reduce floatiness + minetest.after(0.25, function() + player:add_velocity({x = 0, y = (v.y + added_v) * -0.375 , z = 0}) + end) -- remove knockback if invulnerable if invul > 0 then knockback = 0 From 6d7ae8ba2df7e4d2639f0e22cef3fb69e3423468 Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Sun, 17 Dec 2023 19:59:18 +0000 Subject: [PATCH 077/375] Add minimum unenchanted knockback to bow --- mods/ITEMS/mcl_bows/bow.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mods/ITEMS/mcl_bows/bow.lua b/mods/ITEMS/mcl_bows/bow.lua index 174208c3c..188035b99 100644 --- a/mods/ITEMS/mcl_bows/bow.lua +++ b/mods/ITEMS/mcl_bows/bow.lua @@ -49,6 +49,8 @@ function mcl_bows.shoot_arrow(arrow_item, pos, dir, yaw, shooter, power, damage, end if enchantments.punch then knockback = enchantments.punch * 21 + else + knockback = 4.875 end if enchantments.flame then mcl_burning.set_on_fire(obj, math.huge) From c39e55e2d4e4ce878cc04947aecdcf7590fe7f0e Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Sun, 17 Dec 2023 20:01:35 +0000 Subject: [PATCH 078/375] Add minimum knockback to crossbow --- mods/ITEMS/mcl_bows/crossbow.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_bows/crossbow.lua b/mods/ITEMS/mcl_bows/crossbow.lua index df7b5f560..fcc60c460 100644 --- a/mods/ITEMS/mcl_bows/crossbow.lua +++ b/mods/ITEMS/mcl_bows/crossbow.lua @@ -48,7 +48,7 @@ function mcl_bows_s.shoot_arrow_crossbow(arrow_item, pos, dir, yaw, shooter, pow if damage == nil then damage = 3 end - local knockback + local knockback = 4.875 if crossbow_stack then local enchantments = mcl_enchanting.get_enchantments(crossbow_stack) if enchantments.piercing then From 200f7451ebfaff94653bca4f9d89495f4e04c6a7 Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Sun, 17 Dec 2023 21:15:55 +0000 Subject: [PATCH 079/375] Remove unnecessary invul code & add damage animation code --- mods/PLAYER/mcl_playerplus/init.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 9b819142e..e3d323854 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -759,10 +759,10 @@ minetest.register_on_punchplayer(function(player, hitter, time_from_last_punch, else mcl_playerplus_internal[name].last_damage = damage mcl_playerplus_internal[name].invul_timestamp = time_now - local invul = player:get_meta():get_int("mcl_damage:invulnerable") - if invul > 0 then - player:get_meta():set_int("mcl_damage:invulnerable", 0) - end + player:get_meta():set_int("mcl_damage:damage_animation", 1) + minetest.after(0.5, function() + player:get_meta():set_int("mcl_damage:damage_animation", 0) + end) end end end) From 12109e7f44c49f5f4c8815717377a2a5410f12fc Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Sun, 17 Dec 2023 21:18:57 +0000 Subject: [PATCH 080/375] Add player damage animation --- mods/PLAYER/mcl_player/init.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mods/PLAYER/mcl_player/init.lua b/mods/PLAYER/mcl_player/init.lua index 288b697e1..8ebcedccf 100644 --- a/mods/PLAYER/mcl_player/init.lua +++ b/mods/PLAYER/mcl_player/init.lua @@ -228,6 +228,8 @@ minetest.register_globalstep(function(dtime) -- Apply animations based on what the player is doing if player:get_hp() == 0 then player_set_animation(player, "die") + elseif player:get_meta():get_int("mcl_damage:damage_animation") > 0 then + player_set_animation(player, "walk", animation_speed_mod) elseif mcl_playerplus.elytra[player] and mcl_playerplus.elytra[player].active then player_set_animation(player, "stand") elseif walking and velocity.x > 0.35 From 07147e9d5be3b237c351d349d2e42e580dcbe4b8 Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Mon, 18 Dec 2023 02:56:43 +0100 Subject: [PATCH 081/375] Make slime+magmacube collision boxes rotate properly --- mods/ENTITIES/mobs_mc/slime+magma_cube.lua | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua index 61e653781..242e2153d 100644 --- a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua +++ b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua @@ -183,7 +183,7 @@ local slime_big = { hp_max = 16, xp_min = 4, xp_max = 4, - collisionbox = {-1.02, -0.01, -1.02, 1.02, 2.03, 1.02}, + collisionbox = {-1.02, -0.01, -1.02, 1.02, 2.03, 1.02, rotate = true}, visual_size = {x=12.5, y=12.5}, textures = {{"mobs_mc_slime.png", "mobs_mc_slime.png"}}, visual = "mesh", @@ -235,7 +235,7 @@ slime_small.hp_min = 4 slime_small.hp_max = 4 slime_small.xp_min = 2 slime_small.xp_max = 2 -slime_small.collisionbox = {-0.51, -0.01, -0.51, 0.51, 1.00, 0.51} +slime_small.collisionbox = {-0.51, -0.01, -0.51, 0.51, 1.00, 0.51, rotate = true} slime_small.visual_size = {x=6.25, y=6.25} slime_small.damage = 3 slime_small.reach = 2.25 @@ -252,7 +252,7 @@ slime_tiny.hp_min = 1 slime_tiny.hp_max = 1 slime_tiny.xp_min = 1 slime_tiny.xp_max = 1 -slime_tiny.collisionbox = {-0.2505, -0.01, -0.2505, 0.2505, 0.50, 0.2505} +slime_tiny.collisionbox = {-0.2505, -0.01, -0.2505, 0.2505, 0.50, 0.2505, rotate = true} slime_tiny.visual_size = {x=3.125, y=3.125} slime_tiny.damage = 1 slime_tiny.reach = 2 @@ -403,7 +403,7 @@ local magma_cube_big = { hp_max = 16, xp_min = 4, xp_max = 4, - collisionbox = {-1.02, -0.01, -1.02, 1.02, 2.03, 1.02}, + collisionbox = {-1.02, -0.01, -1.02, 1.02, 2.03, 1.02, rotate = true}, visual_size = {x=12.5, y=12.5}, textures = {{ "mobs_mc_magmacube.png", "mobs_mc_magmacube.png" }}, visual = "mesh", @@ -463,7 +463,7 @@ magma_cube_small.hp_min = 4 magma_cube_small.hp_max = 4 magma_cube_small.xp_min = 2 magma_cube_small.xp_max = 2 -magma_cube_small.collisionbox = {-0.51, -0.01, -0.51, 0.51, 1.00, 0.51} +magma_cube_small.collisionbox = {-0.51, -0.01, -0.51, 0.51, 1.00, 0.51, rotate = true} magma_cube_small.visual_size = {x=6.25, y=6.25} magma_cube_small.damage = 3 magma_cube_small.reach = 2.1 @@ -485,7 +485,7 @@ magma_cube_tiny.hp_min = 1 magma_cube_tiny.hp_max = 1 magma_cube_tiny.xp_min = 1 magma_cube_tiny.xp_max = 1 -magma_cube_tiny.collisionbox = {-0.2505, -0.01, -0.2505, 0.2505, 0.50, 0.2505} +magma_cube_tiny.collisionbox = {-0.2505, -0.01, -0.2505, 0.2505, 0.50, 0.2505, rotate = true} magma_cube_tiny.visual_size = {x=3.125, y=3.125} magma_cube_tiny.walk_velocity = 1.02 magma_cube_tiny.run_velocity = 1.02 From 692b1012124747d7dd0ee98f2a0eb7d1077ba45f Mon Sep 17 00:00:00 2001 From: bakawun Date: Mon, 18 Dec 2023 09:51:45 +0100 Subject: [PATCH 082/375] mobs:hoglin: add missing sounds these were made by epCode and lincenced under LGPL-3.0. downloaded from https://git.minetest.land/epCode/extra_mobs/commit/49a838e73374467d7d3163863a1f58e8b4c36830 --- .../mobs_mc/sounds/extra_mobs_hoglin.1.ogg | Bin 0 -> 6514 bytes .../mobs_mc/sounds/extra_mobs_hoglin.2.ogg | Bin 0 -> 10262 bytes .../mobs_mc/sounds/extra_mobs_hoglin_hurt.ogg | Bin 0 -> 5751 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100755 mods/ENTITIES/mobs_mc/sounds/extra_mobs_hoglin.1.ogg create mode 100755 mods/ENTITIES/mobs_mc/sounds/extra_mobs_hoglin.2.ogg create mode 100755 mods/ENTITIES/mobs_mc/sounds/extra_mobs_hoglin_hurt.ogg diff --git a/mods/ENTITIES/mobs_mc/sounds/extra_mobs_hoglin.1.ogg b/mods/ENTITIES/mobs_mc/sounds/extra_mobs_hoglin.1.ogg new file mode 100755 index 0000000000000000000000000000000000000000..06bdc4b248f23aa576569030446b3e56a2cb6196 GIT binary patch literal 6514 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 literal 0 HcmV?d00001 From e202f208691bb484cdc57ce224ae6d9a9942f22d Mon Sep 17 00:00:00 2001 From: bakawun Date: Mon, 18 Dec 2023 09:58:32 +0100 Subject: [PATCH 083/375] mobs:hoglin: use sound .1 for random and reuse hurt sound for death --- mods/ENTITIES/mobs_mc/hoglin+zoglin.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mods/ENTITIES/mobs_mc/hoglin+zoglin.lua b/mods/ENTITIES/mobs_mc/hoglin+zoglin.lua index 8f8590933..cc7b99d54 100644 --- a/mods/ENTITIES/mobs_mc/hoglin+zoglin.lua +++ b/mods/ENTITIES/mobs_mc/hoglin+zoglin.lua @@ -31,8 +31,9 @@ local hoglin = { } }, visual_size = {x=3, y=3}, sounds = { - random = "extra_mobs_hoglin", + random = "extra_mobs_hoglin.1", damage = "extra_mobs_hoglin_hurt", + death = "extra_mobs_hoglin_hurt", distance = 16, }, jump = true, From f5ba0b79811d55bf53af011cfad2339aba05f97e Mon Sep 17 00:00:00 2001 From: bakawun Date: Mon, 18 Dec 2023 10:31:08 +0100 Subject: [PATCH 084/375] mobs:zoglin: use hoglin sound .2 --- mods/ENTITIES/mobs_mc/hoglin+zoglin.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mods/ENTITIES/mobs_mc/hoglin+zoglin.lua b/mods/ENTITIES/mobs_mc/hoglin+zoglin.lua index cc7b99d54..f170b5e80 100644 --- a/mods/ENTITIES/mobs_mc/hoglin+zoglin.lua +++ b/mods/ENTITIES/mobs_mc/hoglin+zoglin.lua @@ -93,6 +93,12 @@ local zoglin = table.copy(hoglin) zoglin.description = S("Zoglin") zoglin.fire_resistant = 1 zoglin.textures = {"extra_mobs_zoglin.png"} +sounds = { + random = "extra_mobs_hoglin.2", + damage = "extra_mobs_hoglin_hurt", + death = "extra_mobs_hoglin_hurt", + distance = 16, + }, zoglin.do_custom = function() return end From 7f823f0155ecbb4e4c63ef40224ec757355f264a Mon Sep 17 00:00:00 2001 From: bakawun Date: Mon, 18 Dec 2023 10:38:23 +0100 Subject: [PATCH 085/375] mobs:hoglin:add licence information --- mods/ENTITIES/mobs_mc/LICENSE-media.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mods/ENTITIES/mobs_mc/LICENSE-media.md b/mods/ENTITIES/mobs_mc/LICENSE-media.md index c937097c9..278148b85 100644 --- a/mods/ENTITIES/mobs_mc/LICENSE-media.md +++ b/mods/ENTITIES/mobs_mc/LICENSE-media.md @@ -305,6 +305,9 @@ Origin of those models: * `mobs_mc_rabbit_random.*.ogg` (CC0) * Changes were made. * Source: +* [epCode] + * `extra_mobs_hoglin*.ogg` (LGPL 3.0) + * Source: Note: Many of these sounds have been more or less modified to fit the game. From ee51a500b2da77b3ea1f5622a957daf287fba827 Mon Sep 17 00:00:00 2001 From: bakawun Date: Mon, 18 Dec 2023 10:57:39 +0100 Subject: [PATCH 086/375] mobs:piglin: use (alt) zombified piglin sounds --- mods/ENTITIES/mobs_mc/piglin.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/piglin.lua b/mods/ENTITIES/mobs_mc/piglin.lua index 27f5a72f4..ac1d8b845 100644 --- a/mods/ENTITIES/mobs_mc/piglin.lua +++ b/mods/ENTITIES/mobs_mc/piglin.lua @@ -61,8 +61,10 @@ local piglin = { } }, visual_size = {x=1, y=1}, sounds = { - random = "extra_mobs_piglin", - damage = "extra_mobs_piglin_hurt", + random = "mobs_mc_zombiepig_random", + war_cry = "mobs_mc_zombiepig_war_cry", death = "mobs_mc_zombiepig_death", + damage = "mobs_mc_zombiepig_hurt.2", + death = "mobs_mc_zombiepig_death.2" distance = 16, }, jump = true, From cc470b9d887327c49f3a3953fcc33b3be262b19b Mon Sep 17 00:00:00 2001 From: bakawun Date: Mon, 18 Dec 2023 11:08:01 +0100 Subject: [PATCH 087/375] mobs:hoglin: fix conversion of tabs to spaces --- mods/ENTITIES/mobs_mc/hoglin+zoglin.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/hoglin+zoglin.lua b/mods/ENTITIES/mobs_mc/hoglin+zoglin.lua index f170b5e80..d0518cad9 100644 --- a/mods/ENTITIES/mobs_mc/hoglin+zoglin.lua +++ b/mods/ENTITIES/mobs_mc/hoglin+zoglin.lua @@ -94,10 +94,10 @@ zoglin.description = S("Zoglin") zoglin.fire_resistant = 1 zoglin.textures = {"extra_mobs_zoglin.png"} sounds = { - random = "extra_mobs_hoglin.2", - damage = "extra_mobs_hoglin_hurt", - death = "extra_mobs_hoglin_hurt", - distance = 16, + random = "extra_mobs_hoglin.2", + damage = "extra_mobs_hoglin_hurt", + death = "extra_mobs_hoglin_hurt", + distance = 16, }, zoglin.do_custom = function() return From 14cec16c63445e8f021645b761c3ad3fd5972644 Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Mon, 18 Dec 2023 21:31:38 +0000 Subject: [PATCH 088/375] Increase enchanted bow knockback --- mods/ITEMS/mcl_bows/bow.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_bows/bow.lua b/mods/ITEMS/mcl_bows/bow.lua index 188035b99..e4e34610d 100644 --- a/mods/ITEMS/mcl_bows/bow.lua +++ b/mods/ITEMS/mcl_bows/bow.lua @@ -48,7 +48,7 @@ function mcl_bows.shoot_arrow(arrow_item, pos, dir, yaw, shooter, power, damage, damage = damage + (enchantments.power + 1) / 4 end if enchantments.punch then - knockback = enchantments.punch * 21 + knockback = enchantments.punch * 24 else knockback = 4.875 end From fe90424ee4797e54238d1ba1cf913a4389fc6b59 Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Mon, 18 Dec 2023 21:42:26 +0000 Subject: [PATCH 089/375] Add pvp knockback reduction when moving towards player while attacking --- mods/ITEMS/mcl_enchanting/enchantments.lua | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index 05a1e7531..db2aa9da6 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -316,8 +316,14 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool end -- reduce floatiness minetest.after(0.25, function() - player:add_velocity({x = 0, y = (v.y + added_v) * -0.375 , z = 0}) + player:add_velocity({x = 0, y = (v.y + added_v) * -0.375, z = 0}) end) + -- reduce knockback when moving towards hitter while attacking + local self_dir_dot = (v.x * dir.x) + (v.z * dir.z) + local control = player:get_player_control() + if self_dir_dot < -4.3 and control.up and control.LMB then + knockback = knockback * 0.6 + end -- remove knockback if invulnerable if invul > 0 then knockback = 0 From 44c656502f4858a5e779e590307a01e3444543fb Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Mon, 18 Dec 2023 22:04:12 +0000 Subject: [PATCH 090/375] Add a prevention in case players get stuck with the damage animation --- mods/PLAYER/mcl_player/init.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mods/PLAYER/mcl_player/init.lua b/mods/PLAYER/mcl_player/init.lua index 8ebcedccf..9681fa86f 100644 --- a/mods/PLAYER/mcl_player/init.lua +++ b/mods/PLAYER/mcl_player/init.lua @@ -230,6 +230,9 @@ minetest.register_globalstep(function(dtime) player_set_animation(player, "die") elseif player:get_meta():get_int("mcl_damage:damage_animation") > 0 then player_set_animation(player, "walk", animation_speed_mod) + minetest.after(0.5, function() + player:get_meta():set_int("mcl_damage:damage_animation", 0) + end) elseif mcl_playerplus.elytra[player] and mcl_playerplus.elytra[player].active then player_set_animation(player, "stand") elseif walking and velocity.x > 0.35 From 11c5d36c558817df61542151076a21e0e0d130c4 Mon Sep 17 00:00:00 2001 From: Michieal Date: Sat, 2 Dec 2023 07:00:25 -0500 Subject: [PATCH 091/375] Initial Commit. --- mods/PLAYER/mcl_fovapi/api.md | 9 +++++ mods/PLAYER/mcl_fovapi/init.lua | 60 +++++++++++++++++++++++++++++++++ mods/PLAYER/mcl_fovapi/mod.conf | 4 +++ 3 files changed, 73 insertions(+) create mode 100644 mods/PLAYER/mcl_fovapi/api.md create mode 100644 mods/PLAYER/mcl_fovapi/init.lua create mode 100644 mods/PLAYER/mcl_fovapi/mod.conf diff --git a/mods/PLAYER/mcl_fovapi/api.md b/mods/PLAYER/mcl_fovapi/api.md new file mode 100644 index 000000000..39d6ee86d --- /dev/null +++ b/mods/PLAYER/mcl_fovapi/api.md @@ -0,0 +1,9 @@ + + + +mcl_fovapi = {} +mcl_fovapi.default_fov = {} +mcl_fovapi.registered_modifiers = {} +mcl_fovapi.applied_modifiers = {} +function mcl_fovapi.register_modifier(name, fov_factor, time, exclusive, on_start, on_end) +function mcl_fovapi.apply_modifier(player, modifier_name) diff --git a/mods/PLAYER/mcl_fovapi/init.lua b/mods/PLAYER/mcl_fovapi/init.lua new file mode 100644 index 000000000..17c0a9262 --- /dev/null +++ b/mods/PLAYER/mcl_fovapi/init.lua @@ -0,0 +1,60 @@ +--- +--- Copyright 2023, Michieal. +--- License: GPL3. (Default Mineclone2 License) +--- Created by michieal. +--- DateTime: 12/2/23 5:47 AM +--- + +mcl_fovapi = {} + +-- Handles default fov for players +mcl_fovapi.default_fov = {} +mcl_fovapi.registered_modifiers = {} +mcl_fovapi.applied_modifiers = {} + +-- set to blank on join (for 3rd party mods) +minetest.register_on_joinplayer(function(player) + local name = player:get_player_name() + -- Assign default FOV + mcl_fovapi.default_fov[name] = player:get_fov() +end) + +-- clear when player leaves +minetest.register_on_leaveplayer(function(player) + local name = player:get_player_name() + -- Remove default FOV + mcl_fovapi.default_fov[name] = nil +end) + +function mcl_fovapi.register_modifier(name, fov_factor, time, exclusive, on_start, on_end) + local def = { + modifer_name = name, + fov = fov_factor, + time = time, + exclusive = exclusive, + on_start = on_start, + on_end = on_end, + } + + mcl_fovapi.registered_modifiers[name] = def + +end + +function mcl_fovapi.apply_modifier(player, modifier_name) + + if modifier_name == nil then return end + if mcl_fovapi.registered_modifiers[modifier_name] == nil then return end + + local modifier = mcl_fovapi.registered_modifiers[modifier_name] + if modifier.on_start ~= nil then + modifier.on_start(player) + end + + mcl_fovapi.applied_modifiers[player][modifier_name] = true -- set the applied to be true. + + -- do modiifier apply code. + + + +end + diff --git a/mods/PLAYER/mcl_fovapi/mod.conf b/mods/PLAYER/mcl_fovapi/mod.conf new file mode 100644 index 000000000..b78c78596 --- /dev/null +++ b/mods/PLAYER/mcl_fovapi/mod.conf @@ -0,0 +1,4 @@ +name = mcl_fovapi +author = Michieal +description = An API for handling FOV changes. +depends = mcl_player \ No newline at end of file From fc80d4fb9f836cd1bee05720e4d0cdc9775c3d97 Mon Sep 17 00:00:00 2001 From: Michieal Date: Sun, 3 Dec 2023 06:47:28 -0500 Subject: [PATCH 092/375] Initial API state. --- mods/PLAYER/mcl_fovapi/api.md | 14 +++- mods/PLAYER/mcl_fovapi/init.lua | 135 +++++++++++++++++++++++++++++--- 2 files changed, 139 insertions(+), 10 deletions(-) diff --git a/mods/PLAYER/mcl_fovapi/api.md b/mods/PLAYER/mcl_fovapi/api.md index 39d6ee86d..05b8be29b 100644 --- a/mods/PLAYER/mcl_fovapi/api.md +++ b/mods/PLAYER/mcl_fovapi/api.md @@ -1,9 +1,21 @@ +registered_modifiers has defs of modifiers +applied_modifiers is indexed by player name mcl_fovapi = {} + mcl_fovapi.default_fov = {} + mcl_fovapi.registered_modifiers = {} + mcl_fovapi.applied_modifiers = {} -function mcl_fovapi.register_modifier(name, fov_factor, time, exclusive, on_start, on_end) + +function mcl_fovapi.register_modifier(name, fov_factor, time, is_multiplier, exclusive, on_start, on_end) + function mcl_fovapi.apply_modifier(player, modifier_name) + +function mcl_fovapi.remove_modifier(player, modifier_name) + +function mcl_fovapi.remove_all_modifiers(player, time) + diff --git a/mods/PLAYER/mcl_fovapi/init.lua b/mods/PLAYER/mcl_fovapi/init.lua index 17c0a9262..649f582ab 100644 --- a/mods/PLAYER/mcl_fovapi/init.lua +++ b/mods/PLAYER/mcl_fovapi/init.lua @@ -5,18 +5,26 @@ --- DateTime: 12/2/23 5:47 AM --- +-- Locals (and cached) +local DEBUG = false -- debug constant for troubleshooting. +local pairs = pairs + +-- Globals mcl_fovapi = {} --- Handles default fov for players -mcl_fovapi.default_fov = {} +mcl_fovapi.default_fov = {} -- Handles default fov for players mcl_fovapi.registered_modifiers = {} mcl_fovapi.applied_modifiers = {} --- set to blank on join (for 3rd party mods) minetest.register_on_joinplayer(function(player) local name = player:get_player_name() -- Assign default FOV mcl_fovapi.default_fov[name] = player:get_fov() + + if DEBUG then + minetest.log("FOV::Player: " .. name .. "\nFOV: " .. player:get_fov()) + end + end) -- clear when player leaves @@ -26,24 +34,41 @@ minetest.register_on_leaveplayer(function(player) mcl_fovapi.default_fov[name] = nil end) -function mcl_fovapi.register_modifier(name, fov_factor, time, exclusive, on_start, on_end) +function mcl_fovapi.register_modifier(name, fov_factor, time, is_multiplier, exclusive, on_start, on_end) + if is_multiplier ~= true and is_multiplier ~= false then + is_multiplier = false + end + if exclusive ~= true and exclusive ~= false then + exclusive = false + end local def = { modifer_name = name, fov = fov_factor, time = time, + is_multiplier = is_multiplier, exclusive = exclusive, on_start = on_start, on_end = on_end, } + if DEBUG then + minetest.log("FOV::Modifier Definition Registered:\n" .. dump(def)) + end + mcl_fovapi.registered_modifiers[name] = def end function mcl_fovapi.apply_modifier(player, modifier_name) - - if modifier_name == nil then return end - if mcl_fovapi.registered_modifiers[modifier_name] == nil then return end + if player == nil then + return + end + if modifier_name == nil then + return + end + if mcl_fovapi.registered_modifiers[modifier_name] == nil then + return + end local modifier = mcl_fovapi.registered_modifiers[modifier_name] if modifier.on_start ~= nil then @@ -51,10 +76,102 @@ function mcl_fovapi.apply_modifier(player, modifier_name) end mcl_fovapi.applied_modifiers[player][modifier_name] = true -- set the applied to be true. + if DEBUG then + minetest.log("FOV::Player Applied Modifiers :" .. dump(mcl_fovapi.applied_modifiers[player])) + end + local pname = player:get_player_name() - -- do modiifier apply code. - + if DEBUG then + minetest.log("FOV::Modifier applied to player:" .. pname .. " modifier: " .. modifier_name) + end + -- modifier apply code. + if modifier.exclusive == true then + -- if exclusive, reset the player's fov, and apply the new fov. + if modifier.is_multiplier then + player:set_fov(0, false, 0) + end + player:set_fov(modifier.fov_factor, modifier.is_multiplier, modifier.time) + else + -- not exclusive? let's apply it in the mix. + -- assume is_multiplier is true. + player:set_fov(modifier.fov_factor, true, modifier.time) + end end +function mcl_fovapi.remove_modifier(player, modifier_name) + if player == nil then + return + end + + if DEBUG then + local name = player:get_player_name() + minetest.log("FOV::Player: " .. name .. " modifier: " .. modifier_name .. "removed.") + end + + mcl_fovapi.applied_modifiers[player][modifier_name] = nil + + -- check for other fov modifiers, and set them up, or reset to default. + + local applied = {} + for k, _ in pairs(mcl_fovapi.applied_modifiers[player]) do + applied[k] = mcl_fovapi.registered_modifiers[k] + end + + if #applied == 0 then + return + end + local exc = false + for k in applied do + if applied[k].exclusive == true then + exc = applied[k] + break + end + end + + -- handle exclusives. + if exc ~= false then + player:set_fov(exc.fov_factor, exc.is_multiplier, 0) -- we want this to be immediate. + else + -- handle normal fov modifiers. + player:set_fov(0, false, 0) -- we want this to be immediate. + for x in applied do + player:set_fov(x.fov_factor, true, 0) + end + end + + if mcl_fovapi.registered_modifiers[modifier_name].on_end ~= nil then + mcl_fovapi.registered_modifiers[modifier_name].on_end(player) + end +end + +function mcl_fovapi.remove_all_modifiers(player) + if player == nil then + return + end + + if DEBUG then + local name = player:get_player_name() + minetest.log("FOV::Player: " .. name .. " modifiers have been reset.") + end + + for x in mcl_fovapi.applied_modifiers[player] do + x = nil + end + + player:set_fov(0, false, 0) + +end + +--[[ +Notes: +set_fov(fov, is_multiplier, transition_time): Sets player's FOV + + fov: FOV value. + is_multiplier: Set to true if the FOV value is a multiplier. Defaults to false. + transition_time: If defined, enables smooth FOV transition. Interpreted as the time (in seconds) to reach target FOV. + If set to 0, FOV change is instantaneous. Defaults to 0. + Set fov to 0 to clear FOV override. + +--]] From bf41e116a1dbfd71be37a8e5f8aedc6686214884 Mon Sep 17 00:00:00 2001 From: Michieal Date: Sun, 3 Dec 2023 08:10:41 -0500 Subject: [PATCH 093/375] Fleshed out the API Documentation. Modified missing pieces of code. --- mods/PLAYER/mcl_fovapi/api.md | 78 ++++++++++++++++++++++++++++----- mods/PLAYER/mcl_fovapi/init.lua | 9 ++-- 2 files changed, 73 insertions(+), 14 deletions(-) diff --git a/mods/PLAYER/mcl_fovapi/api.md b/mods/PLAYER/mcl_fovapi/api.md index 05b8be29b..43a54de53 100644 --- a/mods/PLAYER/mcl_fovapi/api.md +++ b/mods/PLAYER/mcl_fovapi/api.md @@ -1,21 +1,79 @@ +### FOV API -registered_modifiers has defs of modifiers + + * [FOV API](#fov-api) + * [Description](#description) + * [Troubleshooting](#troubleshooting) + * [Modifier Definition](#modifier-definition-) + * [Global MCL_FOVAPI Tables](#global-mclfovapi-tables) + * [Namespaces](#namespaces) + * [Functions](#functions) + -applied_modifiers is indexed by player name +#### Description +This API defines and applies different Field Of View effects to players via MODIFIERS. -mcl_fovapi = {} +#### Troubleshooting +In the `init.lua` file for this module, there is a `DEBUG` variable at the top that will turn on logging. +Use it to see what is going on. -mcl_fovapi.default_fov = {} +#### Modifier Definition +```lua +def = { + modifer_name = name, + fov_factor = fov_factor, + time = time, + is_multiplier = is_multiplier, + exclusive = exclusive, + on_start = on_start, + on_end = on_end, +} +``` +* Modifier Name: The name of the Modifier, used to identify the specific modifier. Case sensitive. +* FOV Factor: A float value defining the FOV to apply. Can be an absolute or percentage, depending on Exclusive and + Is_Multiplier. +* Time: A float value defining the number of seconds to take when applying the FOV Factor. + Used to smoothly move between FOVs. Use 0 for an immediate FOV Shift. (Transition time.) +* Is Multiplier: A bool value used to specify if the FOV Factor is an absolute FOV value or if it should be a percentage + of the current FOV. Defaults to `true` if not defined. +* Exclusive: A bool value used to specify whether the modifier will override all other FOV modifiers. An example of this + is how the spy glass sets the FOV to be a specific value regardless of any other FOV effects applied. Defaults to + `false` if not defined. +* On Start: the `on_start` is a callback function `on_start(player)` that is called if defined. The parameter `player` + is a ref to the player that had the modifier applied. Called from `mcl_fovapi.apply_modifier` immediately after + the FOV Modifier has been applied. +* On End: the `on_end` is a callback function `on_end(player)` that is called if defined. The parameter `player` + is a ref to the player that had the modifier applied. Called from `mcl_fovapi.remove_modifier` immediately after + the FOV Modifier has been removed. -mcl_fovapi.registered_modifiers = {} +Note: passing incorrect values in the definition will have unintended consequences. -mcl_fovapi.applied_modifiers = {} +#### Global MCL_FOVAPI Tables +There are three tables that are accessible via the API. They are `registered_modifiers` and `applied_modifiers`. -function mcl_fovapi.register_modifier(name, fov_factor, time, is_multiplier, exclusive, on_start, on_end) +`mcl_fovapi.registered_modifiers` has the definitions of all the registered FOV Modifiers. Indexed by Modifier Name. +And, `mcl_fovapi.applied_modifiers` is indexed by the Player Name. It contains the names of all the modifiers applied to the +player. The `mcl_fovapi.default_fov` table is indexed by the Player Name, and contains the Default FOVs of the player from the +settings. (Expressed as a value usable in `player:set_fov`.) -function mcl_fovapi.apply_modifier(player, modifier_name) +#### Namespaces +`mcl_fovapi` is the default API Namespace. -function mcl_fovapi.remove_modifier(player, modifier_name) +#### Functions +`mcl_fovapi.register_modifier(name, fov_factor, time, is_multiplier, exclusive, on_start, on_end)` -function mcl_fovapi.remove_all_modifiers(player, time) +Used to register a new FOV Modifier for use. Must be called before applying said modifier to a player. +See Modifier Definition for what the parameters are. +`mcl_fovapi.apply_modifier(player, modifier_name)` + +Used to apply a registered FOV modifier to a player. Takes a reference to the player and the modifier's name (string). + +`mcl_fovapi.remove_modifier(player, modifier_name)` + +Used to remove a specific FOV modifier from a Player. Takes a reference to the player and the modifier's name (string). +Removed immediately. + +`mcl_fovapi.remove_all_modifiers(player)` + +Used to remove all FOV modifiers from a Player. Takes a reference to the Player. FOV change is instantaneous. diff --git a/mods/PLAYER/mcl_fovapi/init.lua b/mods/PLAYER/mcl_fovapi/init.lua index 649f582ab..ace5ca96f 100644 --- a/mods/PLAYER/mcl_fovapi/init.lua +++ b/mods/PLAYER/mcl_fovapi/init.lua @@ -27,23 +27,24 @@ minetest.register_on_joinplayer(function(player) end) --- clear when player leaves minetest.register_on_leaveplayer(function(player) local name = player:get_player_name() - -- Remove default FOV + + -- handle clean up mcl_fovapi.default_fov[name] = nil + mcl_fovapi.applied_modifiers[name] = nil end) function mcl_fovapi.register_modifier(name, fov_factor, time, is_multiplier, exclusive, on_start, on_end) if is_multiplier ~= true and is_multiplier ~= false then - is_multiplier = false + is_multiplier = true end if exclusive ~= true and exclusive ~= false then exclusive = false end local def = { modifer_name = name, - fov = fov_factor, + fov_factor = fov_factor, time = time, is_multiplier = is_multiplier, exclusive = exclusive, From 6cfb55e853c31bf30136c313c447ed063f88ade2 Mon Sep 17 00:00:00 2001 From: Michieal Date: Sun, 3 Dec 2023 08:24:21 -0500 Subject: [PATCH 094/375] Added reset for player respawning to remove FOV modifiers. Fixed missing on_end call in remove_all_modifiers. Added mcl_fovapi to Bows, Sprint, and Spyglass. --- mods/ITEMS/mcl_bows/mod.conf | 2 +- mods/ITEMS/mcl_spyglass/mod.conf | 2 +- mods/PLAYER/mcl_fovapi/init.lua | 7 +++++++ mods/PLAYER/mcl_sprint/mod.conf | 5 +++-- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_bows/mod.conf b/mods/ITEMS/mcl_bows/mod.conf index 7b174826a..0fdd666a3 100644 --- a/mods/ITEMS/mcl_bows/mod.conf +++ b/mods/ITEMS/mcl_bows/mod.conf @@ -1,6 +1,6 @@ name = mcl_bows author = Arcelmi description = This mod adds bows and arrows for MineClone 2. -depends = controls, mcl_particles, mcl_enchanting, mcl_init, mcl_util, mcl_shields +depends = controls, mcl_particles, mcl_enchanting, mcl_init, mcl_util, mcl_shields, mcl_fovapi optional_depends = awards, mcl_achievements, mcl_core, mcl_mobitems, playerphysics, doc, doc_identifier, mesecons_button diff --git a/mods/ITEMS/mcl_spyglass/mod.conf b/mods/ITEMS/mcl_spyglass/mod.conf index c13b281e1..6a78e86a5 100644 --- a/mods/ITEMS/mcl_spyglass/mod.conf +++ b/mods/ITEMS/mcl_spyglass/mod.conf @@ -1,4 +1,4 @@ name = mcl_spyglass author = NO11 description = This mod adds a spyglass, which is an item that can be used for zooming in on specific locations. -depends = mcl_core, controls +depends = mcl_core, controls, mcl_fovapi diff --git a/mods/PLAYER/mcl_fovapi/init.lua b/mods/PLAYER/mcl_fovapi/init.lua index ace5ca96f..153cd47a9 100644 --- a/mods/PLAYER/mcl_fovapi/init.lua +++ b/mods/PLAYER/mcl_fovapi/init.lua @@ -60,6 +60,10 @@ function mcl_fovapi.register_modifier(name, fov_factor, time, is_multiplier, exc end +minetest.register_on_respawnplayer(function(player) + mcl_fovapi.remove_all_modifiers(player:get_player_name()) +end) + function mcl_fovapi.apply_modifier(player, modifier_name) if player == nil then return @@ -162,6 +166,9 @@ function mcl_fovapi.remove_all_modifiers(player) end player:set_fov(0, false, 0) + if mcl_fovapi.registered_modifiers[modifier_name].on_end ~= nil then + mcl_fovapi.registered_modifiers[modifier_name].on_end(player) + end end diff --git a/mods/PLAYER/mcl_sprint/mod.conf b/mods/PLAYER/mcl_sprint/mod.conf index 0d20f80a3..9b9a7366b 100644 --- a/mods/PLAYER/mcl_sprint/mod.conf +++ b/mods/PLAYER/mcl_sprint/mod.conf @@ -1,4 +1,5 @@ name = mcl_sprint author = GunshipPenguin -description = Allows the player to sprint by pressing the “Use” key (default: E). -depends = mcl_playerinfo, playerphysics, mcl_hunger +description = Allows the player to sprint by pressing the “AUX” key (default: E). +depends = mcl_playerinfo, playerphysics, mcl_hunger, mcl_fovapi +optional = mcl_bows \ No newline at end of file From 0a17bbe731766c38fca8e42253862556d61c1d28 Mon Sep 17 00:00:00 2001 From: Michieal Date: Sun, 3 Dec 2023 08:29:53 -0500 Subject: [PATCH 095/375] Added reset for player respawning to remove FOV modifiers. Fixed missing on_end call in remove_all_modifiers. Added mcl_fovapi to Bows, Sprint, and Spyglass. Set up the Spyglass to use the new FOV API. --- mods/ITEMS/mcl_spyglass/init.lua | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_spyglass/init.lua b/mods/ITEMS/mcl_spyglass/init.lua index fa1a82339..ab557ebbf 100644 --- a/mods/ITEMS/mcl_spyglass/init.lua +++ b/mods/ITEMS/mcl_spyglass/init.lua @@ -17,6 +17,8 @@ minetest.register_craft({ } }) +mcl_fovapi.register_modifier("spyglass", 8, 0.1,false, true, nil, nil) + local spyglass_scope = {} local function add_scope(player) @@ -37,7 +39,8 @@ local function remove_scope(player) player:hud_remove(spyglass_scope[player]) spyglass_scope[player] = nil player:hud_set_flags({wielditem = true}) - player:set_fov(86.1) + mcl_fovapi.remove_modifier(player, "spyglass") -- use the api to remove the FOV effect. + -- old code: player:set_fov(86.1) end end @@ -55,7 +58,8 @@ controls.register_on_hold(function(player, key, time) if key ~= "RMB" then return end local wielditem = player:get_wielded_item() if wielditem:get_name() == "mcl_spyglass:spyglass" then - player:set_fov(8, false, 0.1) + mcl_fovapi.apply_modifier(player, "spyglass") -- apply the FOV effect. + -- old code: player:set_fov(8, false, 0.1) if spyglass_scope[player] == nil then add_scope(player) end From 36f661743e18a8f3c0c1ed540d22e6e9244b27f9 Mon Sep 17 00:00:00 2001 From: Michieal Date: Sun, 3 Dec 2023 08:57:13 -0500 Subject: [PATCH 096/375] Set up the Bows to use the new FOV API. Bows now zoom in and clear out the zoom. --- mods/ITEMS/mcl_bows/bow.lua | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mods/ITEMS/mcl_bows/bow.lua b/mods/ITEMS/mcl_bows/bow.lua index 174208c3c..cfbdfb421 100644 --- a/mods/ITEMS/mcl_bows/bow.lua +++ b/mods/ITEMS/mcl_bows/bow.lua @@ -33,6 +33,9 @@ local bow_load = {} -- Another player table, this one stores the wield index of the bow being charged local bow_index = {} +-- define FOV modifier(s) +mcl_fovapi.register_modifier("bowcomplete", 0.8, 1, true, false, nil, nil) + function mcl_bows.shoot_arrow(arrow_item, pos, dir, yaw, shooter, power, damage, is_critical, bow_stack, collectable) local obj = minetest.add_entity({x=pos.x,y=pos.y,z=pos.z}, arrow_item.."_entity") if power == nil then @@ -183,6 +186,9 @@ end -- Resets the bow charging state and player speed. To be used when the player is no longer charging the bow local function reset_bow_state(player, also_reset_bows) + -- clear the FOV change from the player. + mcl_fovapi.remove_modifier(player, "bowcomplete") -- for the complete zoom in FOV Modifier. + bow_load[player:get_player_name()] = nil bow_index[player:get_player_name()] = nil if minetest.get_modpath("playerphysics") then @@ -314,6 +320,9 @@ controls.register_on_hold(function(player, key, time) end bow_load[name] = minetest.get_us_time() bow_index[name] = player:get_wield_index() + + -- begin Bow Zoom. + mcl_fovapi.apply_modifier(player, "bowcomplete") else if player:get_wield_index() == bow_index[name] then if type(bow_load[name]) == "number" then From 4f3f59f4bce65b7c42a51891dce27a84be1e3fcf Mon Sep 17 00:00:00 2001 From: Michieal Date: Sun, 3 Dec 2023 09:03:01 -0500 Subject: [PATCH 097/375] Put in checks to prevent repeatedly applying the same FOV modifier. Added short circuit to remove_modifier if the modifier is not currently applied. --- mods/PLAYER/mcl_fovapi/init.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mods/PLAYER/mcl_fovapi/init.lua b/mods/PLAYER/mcl_fovapi/init.lua index 153cd47a9..b64a78d78 100644 --- a/mods/PLAYER/mcl_fovapi/init.lua +++ b/mods/PLAYER/mcl_fovapi/init.lua @@ -74,6 +74,9 @@ function mcl_fovapi.apply_modifier(player, modifier_name) if mcl_fovapi.registered_modifiers[modifier_name] == nil then return end + if mcl_fovapi.applied_modifiers[player][modifier_name] and mcl_fovapi.applied_modifiers[player][modifier_name] == true then + return + end local modifier = mcl_fovapi.registered_modifiers[modifier_name] if modifier.on_start ~= nil then @@ -110,6 +113,8 @@ function mcl_fovapi.remove_modifier(player, modifier_name) return end + if mcl_fovapi.applied_modifiers[player][modifier_name] == nil then return end + if DEBUG then local name = player:get_player_name() minetest.log("FOV::Player: " .. name .. " modifier: " .. modifier_name .. "removed.") From 2f8389d3f52c18304976987d018bf5d5304d5de9 Mon Sep 17 00:00:00 2001 From: Michieal Date: Fri, 8 Dec 2023 20:38:07 -0500 Subject: [PATCH 098/375] Put in check to prevent Trying to Reference a Nil error in Apply_Modifier. --- mods/PLAYER/mcl_fovapi/init.lua | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/mods/PLAYER/mcl_fovapi/init.lua b/mods/PLAYER/mcl_fovapi/init.lua index b64a78d78..de3dfa01a 100644 --- a/mods/PLAYER/mcl_fovapi/init.lua +++ b/mods/PLAYER/mcl_fovapi/init.lua @@ -74,8 +74,10 @@ function mcl_fovapi.apply_modifier(player, modifier_name) if mcl_fovapi.registered_modifiers[modifier_name] == nil then return end - if mcl_fovapi.applied_modifiers[player][modifier_name] and mcl_fovapi.applied_modifiers[player][modifier_name] == true then - return + if mcl_fovapi.applied_modifiers ~= nil and mcl_fovapi.applied_modifiers[player] ~= nil and mcl_fovapi.applied_modifiers[player][modifier_name] ~= nil then + if mcl_fovapi.applied_modifiers[player][modifier_name] and mcl_fovapi.applied_modifiers[player][modifier_name] == true then + return + end end local modifier = mcl_fovapi.registered_modifiers[modifier_name] @@ -113,7 +115,9 @@ function mcl_fovapi.remove_modifier(player, modifier_name) return end - if mcl_fovapi.applied_modifiers[player][modifier_name] == nil then return end + if mcl_fovapi.applied_modifiers[player][modifier_name] == nil then + return + end if DEBUG then local name = player:get_player_name() From 580a1caa387b1e20cc9937f993fd67a2fcbdae62 Mon Sep 17 00:00:00 2001 From: Michieal Date: Fri, 8 Dec 2023 21:00:11 -0500 Subject: [PATCH 099/375] Reworked some of the Apply_Modifier code to help prevent errors. --- mods/PLAYER/mcl_fovapi/init.lua | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mods/PLAYER/mcl_fovapi/init.lua b/mods/PLAYER/mcl_fovapi/init.lua index de3dfa01a..debe1142e 100644 --- a/mods/PLAYER/mcl_fovapi/init.lua +++ b/mods/PLAYER/mcl_fovapi/init.lua @@ -74,18 +74,23 @@ function mcl_fovapi.apply_modifier(player, modifier_name) if mcl_fovapi.registered_modifiers[modifier_name] == nil then return end - if mcl_fovapi.applied_modifiers ~= nil and mcl_fovapi.applied_modifiers[player] ~= nil and mcl_fovapi.applied_modifiers[player][modifier_name] ~= nil then + if mcl_fovapi.applied_modifiers and mcl_fovapi.applied_modifiers[player] and mcl_fovapi.applied_modifiers[player][modifier_name] then if mcl_fovapi.applied_modifiers[player][modifier_name] and mcl_fovapi.applied_modifiers[player][modifier_name] == true then return end end + if mcl_fovapi.applied_modifiers[player] == nil then + mcl_fovapi.applied_modifiers[player] = {} + end + local modifier = mcl_fovapi.registered_modifiers[modifier_name] if modifier.on_start ~= nil then modifier.on_start(player) end mcl_fovapi.applied_modifiers[player][modifier_name] = true -- set the applied to be true. + if DEBUG then minetest.log("FOV::Player Applied Modifiers :" .. dump(mcl_fovapi.applied_modifiers[player])) end From a650f8b3681a83dd37f4076f6f023dccc17917a3 Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Sat, 9 Dec 2023 23:22:36 +0100 Subject: [PATCH 100/375] Made fovapi registration more robust --- mods/PLAYER/mcl_fovapi/init.lua | 51 ++++++++++++++++++++++----------- 1 file changed, 34 insertions(+), 17 deletions(-) diff --git a/mods/PLAYER/mcl_fovapi/init.lua b/mods/PLAYER/mcl_fovapi/init.lua index debe1142e..4eac2b03d 100644 --- a/mods/PLAYER/mcl_fovapi/init.lua +++ b/mods/PLAYER/mcl_fovapi/init.lua @@ -35,28 +35,42 @@ minetest.register_on_leaveplayer(function(player) mcl_fovapi.applied_modifiers[name] = nil end) -function mcl_fovapi.register_modifier(name, fov_factor, time, is_multiplier, exclusive, on_start, on_end) - if is_multiplier ~= true and is_multiplier ~= false then - is_multiplier = true +function mcl_fovapi.register_modifier(def) + if type(def.name) ~= "string" then + error("Modifier name must be a string") end - if exclusive ~= true and exclusive ~= false then - exclusive = false + if type(def.fov_factor) ~= "number" then + error("FOV factor must be a number") end - local def = { - modifer_name = name, - fov_factor = fov_factor, - time = time, - is_multiplier = is_multiplier, - exclusive = exclusive, - on_start = on_start, - on_end = on_end, - } + if type(def.time) ~= "number" then + error("Transition time must be a number") + end + + if def.on_start ~= nil and type(def.on_start) ~= "function" then + error("Callback on_start must be a function") + end + if def.on_end ~= nil and type(def.on_end) ~= "function" then + error("Callback on_end must be a function") + end + + local mdef = {} + + mdef.fov_factor = def.fov_factor + mdef.time = def.time + + if def.is_multiplier == false then mdef.is_multiplier = false + else mdef.is_multiplier = true end + if def.exclusive == true then mdef.exclusive = true + else mdef.exclusive = false end + + mdef.on_start = def.on_start + mdef.on_end = def.on_end if DEBUG then minetest.log("FOV::Modifier Definition Registered:\n" .. dump(def)) end - mcl_fovapi.registered_modifiers[name] = def + mcl_fovapi.registered_modifiers[def.name] = mdef end @@ -130,6 +144,7 @@ function mcl_fovapi.remove_modifier(player, modifier_name) end mcl_fovapi.applied_modifiers[player][modifier_name] = nil + local modifier = mcl_fovapi.registered_modifiers[modifier_name] -- check for other fov modifiers, and set them up, or reset to default. @@ -139,6 +154,7 @@ function mcl_fovapi.remove_modifier(player, modifier_name) end if #applied == 0 then + player:set_fov(0, false, modifier.time) return end local exc = false @@ -154,10 +170,11 @@ function mcl_fovapi.remove_modifier(player, modifier_name) player:set_fov(exc.fov_factor, exc.is_multiplier, 0) -- we want this to be immediate. else -- handle normal fov modifiers. - player:set_fov(0, false, 0) -- we want this to be immediate. + local fov_factor = 1 for x in applied do - player:set_fov(x.fov_factor, true, 0) + fov_factor = fov_factor * x.fov_factor end + player:set_fov(fov_factor, true, modifier.time) end if mcl_fovapi.registered_modifiers[modifier_name].on_end ~= nil then From 3a007e3bb1c1b4d1663a21c8784221beaa7af8e1 Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Sun, 10 Dec 2023 00:14:16 +0100 Subject: [PATCH 101/375] Re-registered FOV mods using new API version --- mods/ITEMS/mcl_bows/bow.lua | 7 ++++++- mods/ITEMS/mcl_spyglass/init.lua | 8 +++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_bows/bow.lua b/mods/ITEMS/mcl_bows/bow.lua index cfbdfb421..aee5545ab 100644 --- a/mods/ITEMS/mcl_bows/bow.lua +++ b/mods/ITEMS/mcl_bows/bow.lua @@ -34,7 +34,12 @@ local bow_load = {} local bow_index = {} -- define FOV modifier(s) -mcl_fovapi.register_modifier("bowcomplete", 0.8, 1, true, false, nil, nil) +mcl_fovapi.register_modifier({ + name = "bowcomplete", + fov_factor = 0.8, + time = 1, + is_multiplier = true, +}) function mcl_bows.shoot_arrow(arrow_item, pos, dir, yaw, shooter, power, damage, is_critical, bow_stack, collectable) local obj = minetest.add_entity({x=pos.x,y=pos.y,z=pos.z}, arrow_item.."_entity") diff --git a/mods/ITEMS/mcl_spyglass/init.lua b/mods/ITEMS/mcl_spyglass/init.lua index ab557ebbf..a4ea144e1 100644 --- a/mods/ITEMS/mcl_spyglass/init.lua +++ b/mods/ITEMS/mcl_spyglass/init.lua @@ -17,7 +17,13 @@ minetest.register_craft({ } }) -mcl_fovapi.register_modifier("spyglass", 8, 0.1,false, true, nil, nil) +mcl_fovapi.register_modifier({ + name = "spyglass", + fov_factor = 8, + time = 0.1, + is_multiplier = false, + exclusive = true, +}) local spyglass_scope = {} From 7f5ce4e033924f2cf4085c2674ad17595b287356 Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Sun, 10 Dec 2023 00:15:09 +0100 Subject: [PATCH 102/375] Fixed modifier application and removal --- mods/PLAYER/mcl_fovapi/init.lua | 38 +++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/mods/PLAYER/mcl_fovapi/init.lua b/mods/PLAYER/mcl_fovapi/init.lua index 4eac2b03d..61fc244b7 100644 --- a/mods/PLAYER/mcl_fovapi/init.lua +++ b/mods/PLAYER/mcl_fovapi/init.lua @@ -123,8 +123,21 @@ function mcl_fovapi.apply_modifier(player, modifier_name) player:set_fov(modifier.fov_factor, modifier.is_multiplier, modifier.time) else -- not exclusive? let's apply it in the mix. - -- assume is_multiplier is true. - player:set_fov(modifier.fov_factor, true, modifier.time) + local fov_factor, is_mult = player:get_fov() + if fov_factor == 0 then + fov_factor = 1 + is_mult = true + end + if modifier.is_multiplier or is_mult then + fov_factor = fov_factor * modifier.fov_factor + else + fov_factor = (fov_factor + modifier.fov_factor) / 2 + end + if modifier.is_multiplier and is_mult then + player:set_fov(fov_factor, true, modifier.time) + else + player:set_fov(fov_factor, false, modififer.time) + end end end @@ -153,12 +166,13 @@ function mcl_fovapi.remove_modifier(player, modifier_name) applied[k] = mcl_fovapi.registered_modifiers[k] end - if #applied == 0 then + local elem = next + if elem(applied) == nil then player:set_fov(0, false, modifier.time) return end local exc = false - for k in applied do + for k, _ in pairs(applied) do if applied[k].exclusive == true then exc = applied[k] break @@ -171,10 +185,20 @@ function mcl_fovapi.remove_modifier(player, modifier_name) else -- handle normal fov modifiers. local fov_factor = 1 - for x in applied do - fov_factor = fov_factor * x.fov_factor + local non_multiplier_added = false + for _, x in pairs(applied) do + if not x.is_multiplier then + if non_multiplier_added then + fov_factor = (fov_factor + x.fov_factor) / 2 + else + non_multiplier_added = true + fov_factor = fov_factor * x.fov_factor + end + else + fov_factor = fov_factor * x.fov_factor + end end - player:set_fov(fov_factor, true, modifier.time) + player:set_fov(fov_factor, not non_multiplier_added, modifier.time) end if mcl_fovapi.registered_modifiers[modifier_name].on_end ~= nil then From 42ec62562daee88d685cd5c6e06b6860c2a1a5dc Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Sun, 10 Dec 2023 00:15:33 +0100 Subject: [PATCH 103/375] Moved sprinting into the new FOV api --- mods/PLAYER/mcl_player/init.lua | 2 +- mods/PLAYER/mcl_sprint/init.lua | 42 ++++++++++----------------------- 2 files changed, 14 insertions(+), 30 deletions(-) diff --git a/mods/PLAYER/mcl_player/init.lua b/mods/PLAYER/mcl_player/init.lua index 288b697e1..f3cc782d5 100644 --- a/mods/PLAYER/mcl_player/init.lua +++ b/mods/PLAYER/mcl_player/init.lua @@ -177,7 +177,7 @@ minetest.register_on_joinplayer(function(player) player_textures[name] = { "character.png", "blank.png", "blank.png" } --player:set_local_animation({x=0, y=79}, {x=168, y=187}, {x=189, y=198}, {x=200, y=219}, 30) - player:set_fov(86.1) -- see >>> +-- player:set_fov(86.1) -- see >>> end) minetest.register_on_leaveplayer(function(player) diff --git a/mods/PLAYER/mcl_sprint/init.lua b/mods/PLAYER/mcl_sprint/init.lua index 7449ad18c..3d9ef984c 100644 --- a/mods/PLAYER/mcl_sprint/init.lua +++ b/mods/PLAYER/mcl_sprint/init.lua @@ -64,40 +64,24 @@ local function cancelClientSprinting(name) players[name].clientSprint = false end +mcl_fovapi.register_modifier({ + name = "sprint", + fov_factor = 1.1, + time = 0.15, + is_multiplier = true, +}) + local function setSprinting(playerName, sprinting) --Sets the state of a player (0=stopped/moving, 1=sprinting) if not sprinting and not mcl_sprint.is_sprinting(playerName) then return end local player = minetest.get_player_by_name(playerName) - local controls = player:get_player_control() if players[playerName] then players[playerName].sprinting = sprinting - local fov_old = players[playerName].fov - local fov_new = fov_old - local fade_time = .15 - if sprinting == true - or controls.RMB - and string.find(player:get_wielded_item():get_name(), "mcl_bows:bow") - and player:get_wielded_item():get_name() ~= "mcl_bows:bow" then - if sprinting == true then - fov_new = math.min(players[playerName].fov + 0.05, 1.2) - else - fov_new = .7 - players[playerName].fade_time = .3 - end - if sprinting == true then - playerphysics.add_physics_factor(player, "speed", "mcl_sprint:sprint", mcl_sprint.SPEED) - end - elseif sprinting == false - and player:get_wielded_item():get_name() ~= "mcl_bows:bow_0" - and player:get_wielded_item():get_name() ~= "mcl_bows:bow_1" - and player:get_wielded_item():get_name() ~= "mcl_bows:bow_2" then - fov_new = math.max(players[playerName].fov - 0.05, 1.0) - if sprinting == false then - playerphysics.remove_physics_factor(player, "speed", "mcl_sprint:sprint") - end - end - if fov_new ~= fov_old then - players[playerName].fov = fov_new - player:set_fov(fov_new, true, fade_time) + if sprinting then + playerphysics.add_physics_factor(player, "speed", "mcl_sprint:sprint", mcl_sprint.SPEED) + mcl_fovapi.apply_modifier(player, "sprint") + else + playerphysics.remove_physics_factor(player, "speed", "mcl_sprint:sprint") + mcl_fovapi.remove_modifier(player, "sprint") end return true end From 5bf6608483d97994f387f8893de9caf2de24188b Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Sun, 10 Dec 2023 00:20:43 +0100 Subject: [PATCH 104/375] Made bow unfocus faster --- mods/ITEMS/mcl_bows/bow.lua | 1 + mods/PLAYER/mcl_fovapi/init.lua | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_bows/bow.lua b/mods/ITEMS/mcl_bows/bow.lua index aee5545ab..6ae64a14e 100644 --- a/mods/ITEMS/mcl_bows/bow.lua +++ b/mods/ITEMS/mcl_bows/bow.lua @@ -38,6 +38,7 @@ mcl_fovapi.register_modifier({ name = "bowcomplete", fov_factor = 0.8, time = 1, + reset_time = 0.3, is_multiplier = true, }) diff --git a/mods/PLAYER/mcl_fovapi/init.lua b/mods/PLAYER/mcl_fovapi/init.lua index 61fc244b7..84817e382 100644 --- a/mods/PLAYER/mcl_fovapi/init.lua +++ b/mods/PLAYER/mcl_fovapi/init.lua @@ -45,6 +45,9 @@ function mcl_fovapi.register_modifier(def) if type(def.time) ~= "number" then error("Transition time must be a number") end + if def.reset_time ~= nil and type(def.reset_time) ~= "number" then + error("Reset time, if provided, must be a number") + end if def.on_start ~= nil and type(def.on_start) ~= "function" then error("Callback on_start must be a function") @@ -57,6 +60,7 @@ function mcl_fovapi.register_modifier(def) mdef.fov_factor = def.fov_factor mdef.time = def.time + mdef.reset_time = def.reset_time or def.time if def.is_multiplier == false then mdef.is_multiplier = false else mdef.is_multiplier = true end @@ -168,7 +172,7 @@ function mcl_fovapi.remove_modifier(player, modifier_name) local elem = next if elem(applied) == nil then - player:set_fov(0, false, modifier.time) + player:set_fov(0, false, modifier.reset_time) return end local exc = false @@ -198,7 +202,7 @@ function mcl_fovapi.remove_modifier(player, modifier_name) fov_factor = fov_factor * x.fov_factor end end - player:set_fov(fov_factor, not non_multiplier_added, modifier.time) + player:set_fov(fov_factor, not non_multiplier_added, modifier.reset_time) end if mcl_fovapi.registered_modifiers[modifier_name].on_end ~= nil then From 08241f6ea3cf866068456ba7941669fa59d241ba Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Sun, 10 Dec 2023 00:26:21 +0100 Subject: [PATCH 105/375] Updated the api.md file --- mods/PLAYER/mcl_fovapi/api.md | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/mods/PLAYER/mcl_fovapi/api.md b/mods/PLAYER/mcl_fovapi/api.md index 43a54de53..5d49bc349 100644 --- a/mods/PLAYER/mcl_fovapi/api.md +++ b/mods/PLAYER/mcl_fovapi/api.md @@ -1,13 +1,13 @@ ### FOV API - * [FOV API](#fov-api) - * [Description](#description) - * [Troubleshooting](#troubleshooting) - * [Modifier Definition](#modifier-definition-) - * [Global MCL_FOVAPI Tables](#global-mclfovapi-tables) - * [Namespaces](#namespaces) - * [Functions](#functions) +* [FOV API](#fov-api) + * [Description](#description) + * [Troubleshooting](#troubleshooting) + * [Modifier Definition](#modifier-definition-) + * [Global MCL_FOVAPI Tables](#global-mclfovapi-tables) + * [Namespaces](#namespaces) + * [Functions](#functions) #### Description @@ -20,20 +20,24 @@ Use it to see what is going on. #### Modifier Definition ```lua def = { - modifer_name = name, + name = name, fov_factor = fov_factor, time = time, + reset_time = reset_time, is_multiplier = is_multiplier, exclusive = exclusive, on_start = on_start, on_end = on_end, } ``` -* Modifier Name: The name of the Modifier, used to identify the specific modifier. Case sensitive. +* Name: The name of the Modifier, used to identify the specific modifier. Case sensitive. * FOV Factor: A float value defining the FOV to apply. Can be an absolute or percentage, depending on Exclusive and Is_Multiplier. * Time: A float value defining the number of seconds to take when applying the FOV Factor. Used to smoothly move between FOVs. Use 0 for an immediate FOV Shift. (Transition time.) +* Reset Time: A float value defining the number of seconds to take when removing the FOV Factor. + Used to smoothly move between FOVs. Use 0 for an immediate FOV Shift. (Reset transition time.) + *If not provided, defaults to **Time*** * Is Multiplier: A bool value used to specify if the FOV Factor is an absolute FOV value or if it should be a percentage of the current FOV. Defaults to `true` if not defined. * Exclusive: A bool value used to specify whether the modifier will override all other FOV modifiers. An example of this @@ -60,7 +64,7 @@ settings. (Expressed as a value usable in `player:set_fov`.) `mcl_fovapi` is the default API Namespace. #### Functions -`mcl_fovapi.register_modifier(name, fov_factor, time, is_multiplier, exclusive, on_start, on_end)` +`mcl_fovapi.register_modifier(def)` Used to register a new FOV Modifier for use. Must be called before applying said modifier to a player. See Modifier Definition for what the parameters are. From f9b192e68f90a9b44f1b1b075a06906bdaca6cf3 Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Sun, 10 Dec 2023 00:30:04 +0100 Subject: [PATCH 106/375] Updated credits --- mods/PLAYER/mcl_fovapi/mod.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/PLAYER/mcl_fovapi/mod.conf b/mods/PLAYER/mcl_fovapi/mod.conf index b78c78596..86f174c41 100644 --- a/mods/PLAYER/mcl_fovapi/mod.conf +++ b/mods/PLAYER/mcl_fovapi/mod.conf @@ -1,4 +1,4 @@ name = mcl_fovapi -author = Michieal +author = Michieal, Herowl description = An API for handling FOV changes. -depends = mcl_player \ No newline at end of file +depends = mcl_player From 040ce8288ee0ad22fbb7bedcac44acea581f239f Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Sun, 10 Dec 2023 00:34:31 +0100 Subject: [PATCH 107/375] Script and documentation cleanup --- mods/PLAYER/mcl_fovapi/api.md | 5 ++--- mods/PLAYER/mcl_fovapi/init.lua | 6 ------ 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/mods/PLAYER/mcl_fovapi/api.md b/mods/PLAYER/mcl_fovapi/api.md index 5d49bc349..d4a9cb1fb 100644 --- a/mods/PLAYER/mcl_fovapi/api.md +++ b/mods/PLAYER/mcl_fovapi/api.md @@ -37,7 +37,7 @@ def = { Used to smoothly move between FOVs. Use 0 for an immediate FOV Shift. (Transition time.) * Reset Time: A float value defining the number of seconds to take when removing the FOV Factor. Used to smoothly move between FOVs. Use 0 for an immediate FOV Shift. (Reset transition time.) - *If not provided, defaults to **Time*** + Defaults to `time` if not defined. * Is Multiplier: A bool value used to specify if the FOV Factor is an absolute FOV value or if it should be a percentage of the current FOV. Defaults to `true` if not defined. * Exclusive: A bool value used to specify whether the modifier will override all other FOV modifiers. An example of this @@ -57,8 +57,7 @@ There are three tables that are accessible via the API. They are `registered_mod `mcl_fovapi.registered_modifiers` has the definitions of all the registered FOV Modifiers. Indexed by Modifier Name. And, `mcl_fovapi.applied_modifiers` is indexed by the Player Name. It contains the names of all the modifiers applied to the -player. The `mcl_fovapi.default_fov` table is indexed by the Player Name, and contains the Default FOVs of the player from the -settings. (Expressed as a value usable in `player:set_fov`.) +player. #### Namespaces `mcl_fovapi` is the default API Namespace. diff --git a/mods/PLAYER/mcl_fovapi/init.lua b/mods/PLAYER/mcl_fovapi/init.lua index 84817e382..19fa393c0 100644 --- a/mods/PLAYER/mcl_fovapi/init.lua +++ b/mods/PLAYER/mcl_fovapi/init.lua @@ -12,15 +12,10 @@ local pairs = pairs -- Globals mcl_fovapi = {} -mcl_fovapi.default_fov = {} -- Handles default fov for players mcl_fovapi.registered_modifiers = {} mcl_fovapi.applied_modifiers = {} minetest.register_on_joinplayer(function(player) - local name = player:get_player_name() - -- Assign default FOV - mcl_fovapi.default_fov[name] = player:get_fov() - if DEBUG then minetest.log("FOV::Player: " .. name .. "\nFOV: " .. player:get_fov()) end @@ -31,7 +26,6 @@ minetest.register_on_leaveplayer(function(player) local name = player:get_player_name() -- handle clean up - mcl_fovapi.default_fov[name] = nil mcl_fovapi.applied_modifiers[name] = nil end) From 98b6ead591ce8945e957b6d74a72adfff14ac0d7 Mon Sep 17 00:00:00 2001 From: Michieal Date: Mon, 11 Dec 2023 03:46:38 +0000 Subject: [PATCH 108/375] Fixed a couple of errors Removed a debug statement that was broken. Changed `modififer` to `modifier` in a code block. --- mods/PLAYER/mcl_fovapi/init.lua | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/mods/PLAYER/mcl_fovapi/init.lua b/mods/PLAYER/mcl_fovapi/init.lua index 19fa393c0..70eb5b81e 100644 --- a/mods/PLAYER/mcl_fovapi/init.lua +++ b/mods/PLAYER/mcl_fovapi/init.lua @@ -15,13 +15,6 @@ mcl_fovapi = {} mcl_fovapi.registered_modifiers = {} mcl_fovapi.applied_modifiers = {} -minetest.register_on_joinplayer(function(player) - if DEBUG then - minetest.log("FOV::Player: " .. name .. "\nFOV: " .. player:get_fov()) - end - -end) - minetest.register_on_leaveplayer(function(player) local name = player:get_player_name() @@ -134,7 +127,7 @@ function mcl_fovapi.apply_modifier(player, modifier_name) if modifier.is_multiplier and is_mult then player:set_fov(fov_factor, true, modifier.time) else - player:set_fov(fov_factor, false, modififer.time) + player:set_fov(fov_factor, false, modifier.time) end end From 5afd0aa255c43d471a803863ee1bb16cdb08e354 Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Tue, 12 Dec 2023 01:45:07 +0100 Subject: [PATCH 109/375] Fixed the exclusive modifiers not being exclusive --- mods/PLAYER/mcl_fovapi/init.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mods/PLAYER/mcl_fovapi/init.lua b/mods/PLAYER/mcl_fovapi/init.lua index 70eb5b81e..c3d2dff4c 100644 --- a/mods/PLAYER/mcl_fovapi/init.lua +++ b/mods/PLAYER/mcl_fovapi/init.lua @@ -89,6 +89,10 @@ function mcl_fovapi.apply_modifier(player, modifier_name) mcl_fovapi.applied_modifiers[player] = {} end + for k, _ in pairs(mcl_fovapi.applied_modifiers[player]) do + if mcl_fovapi.registered_modifiers[k].exclusive == true then return end + end + local modifier = mcl_fovapi.registered_modifiers[modifier_name] if modifier.on_start ~= nil then modifier.on_start(player) From e312955a14df85dc090e33701fc936bef937c67b Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Wed, 13 Dec 2023 00:08:35 +0100 Subject: [PATCH 110/375] Made spyglass reset instant --- mods/ITEMS/mcl_spyglass/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ITEMS/mcl_spyglass/init.lua b/mods/ITEMS/mcl_spyglass/init.lua index a4ea144e1..56b71b961 100644 --- a/mods/ITEMS/mcl_spyglass/init.lua +++ b/mods/ITEMS/mcl_spyglass/init.lua @@ -21,6 +21,7 @@ mcl_fovapi.register_modifier({ name = "spyglass", fov_factor = 8, time = 0.1, + reset_time = 0, is_multiplier = false, exclusive = true, }) From 8a5058e0327c0096368f122daf64b4724a9b67e2 Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Wed, 13 Dec 2023 00:29:22 +0100 Subject: [PATCH 111/375] Unified and refactored FOV API code --- mods/PLAYER/mcl_fovapi/init.lua | 71 ++++++++++++++++----------------- 1 file changed, 34 insertions(+), 37 deletions(-) diff --git a/mods/PLAYER/mcl_fovapi/init.lua b/mods/PLAYER/mcl_fovapi/init.lua index c3d2dff4c..92815d833 100644 --- a/mods/PLAYER/mcl_fovapi/init.lua +++ b/mods/PLAYER/mcl_fovapi/init.lua @@ -15,11 +15,17 @@ mcl_fovapi = {} mcl_fovapi.registered_modifiers = {} mcl_fovapi.applied_modifiers = {} +minetest.register_on_joinplayer(function(player) + local player_name = player:get_player_name() + + -- initialization + mcl_fovapi.applied_modifiers[player_name] = {} +end) minetest.register_on_leaveplayer(function(player) - local name = player:get_player_name() + local player_name = player:get_player_name() -- handle clean up - mcl_fovapi.applied_modifiers[name] = nil + mcl_fovapi.applied_modifiers[player_name] = nil end) function mcl_fovapi.register_modifier(def) @@ -66,47 +72,38 @@ function mcl_fovapi.register_modifier(def) end minetest.register_on_respawnplayer(function(player) - mcl_fovapi.remove_all_modifiers(player:get_player_name()) + mcl_fovapi.remove_all_modifiers(player) end) function mcl_fovapi.apply_modifier(player, modifier_name) - if player == nil then - return - end - if modifier_name == nil then + if not player or not modifier_name then return end if mcl_fovapi.registered_modifiers[modifier_name] == nil then return end - if mcl_fovapi.applied_modifiers and mcl_fovapi.applied_modifiers[player] and mcl_fovapi.applied_modifiers[player][modifier_name] then - if mcl_fovapi.applied_modifiers[player][modifier_name] and mcl_fovapi.applied_modifiers[player][modifier_name] == true then - return - end + local player_name = player:get_player_name() + if mcl_fovapi.applied_modifiers and mcl_fovapi.applied_modifiers[player_name] and mcl_fovapi.applied_modifiers[player_name][modifier_name] then + return end - if mcl_fovapi.applied_modifiers[player] == nil then - mcl_fovapi.applied_modifiers[player] = {} - end - - for k, _ in pairs(mcl_fovapi.applied_modifiers[player]) do + for k, _ in pairs(mcl_fovapi.applied_modifiers[player_name]) do if mcl_fovapi.registered_modifiers[k].exclusive == true then return end end local modifier = mcl_fovapi.registered_modifiers[modifier_name] - if modifier.on_start ~= nil then + if modifier.on_start then modifier.on_start(player) end - mcl_fovapi.applied_modifiers[player][modifier_name] = true -- set the applied to be true. + mcl_fovapi.applied_modifiers[player_name][modifier_name] = true -- set the applied to be true. if DEBUG then - minetest.log("FOV::Player Applied Modifiers :" .. dump(mcl_fovapi.applied_modifiers[player])) + minetest.log("FOV::Player Applied Modifiers :" .. dump(mcl_fovapi.applied_modifiers[player_name])) end - local pname = player:get_player_name() if DEBUG then - minetest.log("FOV::Modifier applied to player:" .. pname .. " modifier: " .. modifier_name) + minetest.log("FOV::Modifier applied to player:" .. player_name .. " modifier: " .. modifier_name) end -- modifier apply code. @@ -138,26 +135,27 @@ function mcl_fovapi.apply_modifier(player, modifier_name) end function mcl_fovapi.remove_modifier(player, modifier_name) - if player == nil then + if not player or not modifier_name then return end - if mcl_fovapi.applied_modifiers[player][modifier_name] == nil then - return + local player_name = player:get_player_name() + if not mcl_fovapi.applied_modifiers[player_name] + or not mcl_fovapi.applied_modifiers[player_name][modifier_name] then + return end if DEBUG then - local name = player:get_player_name() - minetest.log("FOV::Player: " .. name .. " modifier: " .. modifier_name .. "removed.") + minetest.log("FOV::Player: " .. player_name .. " modifier: " .. modifier_name .. "removed.") end - mcl_fovapi.applied_modifiers[player][modifier_name] = nil + mcl_fovapi.applied_modifiers[player_name][modifier_name] = nil local modifier = mcl_fovapi.registered_modifiers[modifier_name] -- check for other fov modifiers, and set them up, or reset to default. local applied = {} - for k, _ in pairs(mcl_fovapi.applied_modifiers[player]) do + for k, _ in pairs(mcl_fovapi.applied_modifiers[player_name]) do applied[k] = mcl_fovapi.registered_modifiers[k] end @@ -196,30 +194,29 @@ function mcl_fovapi.remove_modifier(player, modifier_name) player:set_fov(fov_factor, not non_multiplier_added, modifier.reset_time) end - if mcl_fovapi.registered_modifiers[modifier_name].on_end ~= nil then + if mcl_fovapi.registered_modifiers[modifier_name].on_end then mcl_fovapi.registered_modifiers[modifier_name].on_end(player) end end function mcl_fovapi.remove_all_modifiers(player) - if player == nil then + if not player then return end + local player_name = player:get_player_name() if DEBUG then - local name = player:get_player_name() - minetest.log("FOV::Player: " .. name .. " modifiers have been reset.") + minetest.log("FOV::Player: " .. player_name .. " modifiers have been reset.") end - for x in mcl_fovapi.applied_modifiers[player] do + for name, x in pairs(mcl_fovapi.applied_modifiers[player_name]) do x = nil + if mcl_fovapi.registered_modifiers[name].on_end then + mcl_fovapi.registered_modifiers[name].on_end(player) + end end player:set_fov(0, false, 0) - if mcl_fovapi.registered_modifiers[modifier_name].on_end ~= nil then - mcl_fovapi.registered_modifiers[modifier_name].on_end(player) - end - end --[[ From d7ed37ef25e14b0451a627809e34599dd96dc436 Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Tue, 19 Dec 2023 15:31:29 +0000 Subject: [PATCH 112/375] Remove redundant knockback limiter --- mods/ITEMS/mcl_enchanting/enchantments.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index db2aa9da6..c26df61d9 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -311,7 +311,7 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool local dir_dot = (hv.x * dir.x) + (hv.z * dir.z) local hitter_mag = math.sqrt((hv.x * hv.x) + (hv.z * hv.z)) local player_mag = math.sqrt((v.x * v.x) + (v.z * v.z)) - if dir_dot > 0 and player_mag <= hitter_mag * 0.625 then + if dir_dot > 0 then knockback = knockback + hitter_mag * 0.6875 end -- reduce floatiness From ff882707def990b5e30eede831a7f4aa43626a1d Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Tue, 19 Dec 2023 16:15:41 +0000 Subject: [PATCH 113/375] Rework moving majority of the added velocity knockbacks into sprinting --- mods/ITEMS/mcl_enchanting/enchantments.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index c26df61d9..7744f2c7e 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -307,12 +307,15 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool end end -- add player velocity to knockback + local h_name = hitter:get_player_name() local hv = hitter:get_velocity() local dir_dot = (hv.x * dir.x) + (hv.z * dir.z) local hitter_mag = math.sqrt((hv.x * hv.x) + (hv.z * hv.z)) local player_mag = math.sqrt((v.x * v.x) + (v.z * v.z)) - if dir_dot > 0 then + if dir_dot > 0 and mcl_sprint.is_sprinting(h_name) then knockback = knockback + hitter_mag * 0.6875 + elseif dir_dot > 0 then + knockback = knockback + hitter_mag * 0.34375 end -- reduce floatiness minetest.after(0.25, function() From 76bff2b540b55b644aa2f07b79ad5db17c1c5dca Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Tue, 19 Dec 2023 16:49:48 +0000 Subject: [PATCH 114/375] Add minimum pvp knockbacks to other meele weapons --- mods/ITEMS/mcl_enchanting/enchantments.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index 7744f2c7e..60e8a6c99 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -304,6 +304,8 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool -- add minimum knockback if knockback <= 1.5 then knockback = knockback + 4.875 + elseif knockback <= 6.19 then + knockback = knockback + 0.609375 end end -- add player velocity to knockback From e19de859903e3b75a4378d560162f52b53619c71 Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Tue, 19 Dec 2023 17:19:09 +0000 Subject: [PATCH 115/375] Adjust the difference between sprinting & walking knockbacks for a more seemless transition --- mods/ITEMS/mcl_enchanting/enchantments.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index 60e8a6c99..29fdab6f6 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -317,7 +317,7 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool if dir_dot > 0 and mcl_sprint.is_sprinting(h_name) then knockback = knockback + hitter_mag * 0.6875 elseif dir_dot > 0 then - knockback = knockback + hitter_mag * 0.34375 + knockback = knockback + hitter_mag * 0.515625 end -- reduce floatiness minetest.after(0.25, function() From 96fa6c251ef59acaed76b6e65e4a7af795cb62b6 Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Wed, 20 Dec 2023 15:50:37 +0000 Subject: [PATCH 116/375] Counteract self forward velocity when hit by players in pvp --- mods/ITEMS/mcl_enchanting/enchantments.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index 29fdab6f6..bd9b4047d 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -308,6 +308,11 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool knockback = knockback + 0.609375 end end + -- counteract forward velocity when hit + local self_dir_dot = (v.x * dir.x) + (v.z * dir.z) + if self_dir_dot < 0 then + player:add_velocity({x = v.x * -1, y = 0, z = v.z * -1}) + end -- add player velocity to knockback local h_name = hitter:get_player_name() local hv = hitter:get_velocity() From 4cfd4ef6ce890c0435fd2056d92c0d896f058380 Mon Sep 17 00:00:00 2001 From: cora Date: Sun, 10 Dec 2023 22:47:28 +0100 Subject: [PATCH 117/375] Fix wrong argument when piston dig calls on_dignode callbacks --- mods/ITEMS/REDSTONE/mesecons_mvps/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_mvps/init.lua b/mods/ITEMS/REDSTONE/mesecons_mvps/init.lua index 88ca9d30e..9fd381b76 100644 --- a/mods/ITEMS/REDSTONE/mesecons_mvps/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_mvps/init.lua @@ -284,7 +284,7 @@ function mesecon.mvps_push_or_pull(pos, stackdir, movedir, maximum, player_name, local counted_drops = {} minetest.remove_node(n.pos) for _, callback in pairs(minetest.registered_on_dignodes) do - callback(n.pos, n) + callback(n.pos, n.node) end for _, item in ipairs(drops) do if type(item) ~= "string" then From d5eda7352c6d2e602ccc698fb10c92e9a78c06db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20M?= Date: Wed, 20 Dec 2023 18:29:13 -0600 Subject: [PATCH 118/375] Remove whitespace-only translation in mcl_blast_furnace template file --- mods/ITEMS/mcl_blast_furnace/locale/template.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_blast_furnace/locale/template.txt b/mods/ITEMS/mcl_blast_furnace/locale/template.txt index 46841046d..7b2b35c21 100644 --- a/mods/ITEMS/mcl_blast_furnace/locale/template.txt +++ b/mods/ITEMS/mcl_blast_furnace/locale/template.txt @@ -6,6 +6,6 @@ Use the recipe book to see what ores you can smelt, what you can use as fuel and Use the blast furnace to open the furnace menu.= Place a furnace fuel in the lower slot and the source material in the upper slot.= The blast furnace will slowly use its fuel to smelt the item.= -The result will be placed into the output slot at the right side.= +The result will be placed into the output slot at the right side.= Blast Furnaces smelt several items, mainly ores and armor, using a furnace fuel, but twice as fast as a normal furnace.= Active Blast Furnace= From 5e28ff2d06f0cbd268351566eceade4b482da0bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20M?= Date: Wed, 20 Dec 2023 18:34:16 -0600 Subject: [PATCH 119/375] Delete non-empty translation in mcl_enchanting template file --- mods/ITEMS/mcl_enchanting/locale/template.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_enchanting/locale/template.txt b/mods/ITEMS/mcl_enchanting/locale/template.txt index 59876dcf3..2a0890d91 100644 --- a/mods/ITEMS/mcl_enchanting/locale/template.txt +++ b/mods/ITEMS/mcl_enchanting/locale/template.txt @@ -130,7 +130,7 @@ Aqua Affinity= Increases underwater mining speed.= Blast Protection= Reduces explosion damage and knockback.= -Curse of Binding=Malédiction du lien éternel +Curse of Binding= Item cannot be removed from armor slots except due to death, breaking or in Creative Mode.= Feather Falling= Reduces fall damage.= From 1f52b7051a858286a4a1a064835a8bea47fe3989 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20M?= Date: Wed, 20 Dec 2023 18:58:15 -0600 Subject: [PATCH 120/375] Add missing placeholder(s) in translation: '@1' --- mods/HUD/awards/locale/awards.de.tr | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/HUD/awards/locale/awards.de.tr b/mods/HUD/awards/locale/awards.de.tr index 190a76071..1decf81ec 100644 --- a/mods/HUD/awards/locale/awards.de.tr +++ b/mods/HUD/awards/locale/awards.de.tr @@ -1,7 +1,7 @@ # textdomain:awards @1: @2=@1: @2 @1 (got)=@1 (erhalten) -@1’s awards:=Auszeichnungen von @: +@1’s awards:=Auszeichnungen von @1: (Secret Advancement)=(Geheime Auszeichnung) Achievement gotten!=Auszeichnung erhalten! Achievement gotten:=Auszeichnung erhalten: @@ -61,4 +61,4 @@ Achievement “@1” does not exist.=Auszeichnung »@1« existiert nicht. Write something in chat.=Schreiben Sie etwas in den Chat. Write @1 chat messages.=Schreiben Sie @1 Chatnachrichten. @1/@2 chat messages=@1/@2 Chatnachrichten -Awards are disabled, enable them first by using /awards enable!=Ihre Auszeichnungen sind aktuell deaktiviert, bitte aktivieren Sie diese zuerst indem Sie /awards enable ausführen bevor Sie diesen Befehl erneut verwenden! \ No newline at end of file +Awards are disabled, enable them first by using /awards enable!=Ihre Auszeichnungen sind aktuell deaktiviert, bitte aktivieren Sie diese zuerst indem Sie /awards enable ausführen bevor Sie diesen Befehl erneut verwenden! From dc4c559ad930136e82dd09212f9467b3815e8723 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20M?= Date: Wed, 20 Dec 2023 19:04:46 -0600 Subject: [PATCH 121/375] Escape equals sign in translation --- mods/ITEMS/mcl_potions/locale/mcl_potions.fr.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_potions/locale/mcl_potions.fr.tr b/mods/ITEMS/mcl_potions/locale/mcl_potions.fr.tr index 1547a36c0..775815885 100644 --- a/mods/ITEMS/mcl_potions/locale/mcl_potions.fr.tr +++ b/mods/ITEMS/mcl_potions/locale/mcl_potions.fr.tr @@ -1,7 +1,7 @@ # textdomain: mcl_potions []= [] -Add a status effect to yourself. Arguments: : name of status effect, e.g. poison. : duration in seconds. : effect strength multiplier (1 @= 100%)=Ajoutez-vous un effet de statut. Arguments: : nom de l'effet de statut, par ex. poison. : durée en secondes. : multiplicateur de force d'effet (1 @ = 100%) +Add a status effect to yourself. Arguments: : name of status effect, e.g. poison. : duration in seconds. : effect strength multiplier (1 @= 100%)=Ajoutez-vous un effet de statut. Arguments: : nom de l'effet de statut, par ex. poison. : durée en secondes. : multiplicateur de force d'effet (1 @= 100%) Missing effect parameter!=Paramètre d'effet manquant! Missing or invalid duration parameter!=Paramètre durée manquant ou invalide! From 325c6ab4cadfa27ae3271e9e12a7560afc4a4bc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20M?= Date: Wed, 20 Dec 2023 19:13:30 -0600 Subject: [PATCH 122/375] Escape equals signs in translation file mcl_deepslate.pt_BR.tr --- mods/ITEMS/mcl_deepslate/locale/mcl_deepslate.pt_BR.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_deepslate/locale/mcl_deepslate.pt_BR.tr b/mods/ITEMS/mcl_deepslate/locale/mcl_deepslate.pt_BR.tr index 4f7c6ad24..e86bb42e9 100644 --- a/mods/ITEMS/mcl_deepslate/locale/mcl_deepslate.pt_BR.tr +++ b/mods/ITEMS/mcl_deepslate/locale/mcl_deepslate.pt_BR.tr @@ -50,4 +50,4 @@ Polished Deepslate Stairs=Escadas de Ardósia Polida Polished Deepslate Wall=Muro de Ardósia Polida Polished Deepslate=Ardósia Polida Tuff=Tufo -Tuff is an ornamental rock formed from volcanic ash, occurring in underground blobs below Y=16.=Tufo é uma rocha ornamental formada a partir de cinzas vulcânicas, ocorrendo em bolhas no subsolo abaixo de Y=16. +Tuff is an ornamental rock formed from volcanic ash, occurring in underground blobs below Y@=16.=Tufo é uma rocha ornamental formada a partir de cinzas vulcânicas, ocorrendo em bolhas no subsolo abaixo de Y@=16. From 0f82c623d57d31c358fb6a89e3bffd3d31998eb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20M?= Date: Wed, 20 Dec 2023 23:15:12 -0600 Subject: [PATCH 123/375] Add missing placeholder(s) in mcl_farming.fr.tr translation: '@1' --- mods/ITEMS/mcl_farming/locale/mcl_farming.fr.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_farming/locale/mcl_farming.fr.tr b/mods/ITEMS/mcl_farming/locale/mcl_farming.fr.tr index 5b14b109b..2b4bedcff 100644 --- a/mods/ITEMS/mcl_farming/locale/mcl_farming.fr.tr +++ b/mods/ITEMS/mcl_farming/locale/mcl_farming.fr.tr @@ -101,5 +101,5 @@ Turns block into farmland=Transforme un bloc en terres agricoles Surface for crops=Surface pour les cultures Can become wet=Peut devenir humide Uses: @1=Utilisations : @1 -Sweet Berry Bush (Stage @1)=Buisson de baies sucrées (étape 1) +Sweet Berry Bush (Stage @1)=Buisson de baies sucrées (étape @1) Sweet Berry=Baie sucrée From 0d1a6d91e9b4f2c6572a87655c912c26588fba6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20M?= Date: Wed, 20 Dec 2023 23:24:03 -0600 Subject: [PATCH 124/375] Remove an unescaped equals sign in mcl_info.fr.tr translation --- mods/HUD/mcl_info/locale/mcl_info.fr.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/HUD/mcl_info/locale/mcl_info.fr.tr b/mods/HUD/mcl_info/locale/mcl_info.fr.tr index 96fb2622e..19ff9553d 100644 --- a/mods/HUD/mcl_info/locale/mcl_info.fr.tr +++ b/mods/HUD/mcl_info/locale/mcl_info.fr.tr @@ -1,4 +1,4 @@ # textdomain: mcl_info -Set debug bit mask: 0 @= disable, 1 @= biome name, 2 @= coordinates, 3 @= all=Régler le masque de bits pour débuguer : 0 @= pour désactiver, 1 @= nom du biome, 2 @= coordonnées, 3 @= tout= +Set debug bit mask: 0 @= disable, 1 @= biome name, 2 @= coordinates, 3 @= all=Régler le masque de bits pour débuguer : 0 @= pour désactiver, 1 @= nom du biome, 2 @= coordonnées, 3 @= tout Error! Possible values are integer numbers from @1 to @2=Erreur ! Les valeurs possibles sont des nombres entiers de @1 à @2 Debug bit mask set to @1=Masque de bits de débuguage réglé à @1 From c9d221976b897d43c21771beb6c5efd5b211b6b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20M?= Date: Wed, 20 Dec 2023 23:40:33 -0600 Subject: [PATCH 125/375] Escape equals signs in translation file mcl_doc_basics.it.tr --- mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.it.tr | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.it.tr b/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.it.tr index 694735cac..afe82fd27 100644 --- a/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.it.tr +++ b/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.it.tr @@ -25,7 +25,7 @@ Minetest is a free software game engine for games based on voxel gameplay, inspi The player is thrown into a huge world made out of cubes or blocks. These cubes usually make the landscape they blocks can be removed and placed almost entirely freely. Using the collected items, new tools and other items can be crafted. Games in Minetest (also called “subgames”) can, however, be much more complex than this.=L'utente è gettat* in un enorme mondo fatto di cubi o blocchi. Questi cubi normalmente compongono il panorama e possono essere tolti o messi quasi completamente liberamente. Usando gli oggetti raccolti, si possono assemblare nuovi strumenti e altri oggetti. I giochi in Minetest (chiamati anche "subgame") possono, comunque, essere molto più complessi. A core feature of Minetest is the built-in modding capability. Mods modify existing gameplay. They can be as simple as adding a few decorational blocks or be very complex by e.g. introducing completely new gameplay concepts, generating a completely different kind of world, and many other things.=Una caratteristica centrale di Minetest è la capacità integrata di usare moduli. I moduli modificano l'esperienza di gioco esistente. Possono essere tanto semplici da aggiungere qualche blocco decorativo o essere molto complessi, per esempio introducendo concetti di gioco totalmente nuovi, generare un tipo di mondo completamente diverso, e molte altre cose. Minetest can be played alone or online together with multiple players. Online play will work out of the box with any mods, with no need for additional software as they are entirely provided by the server.=Minetest può essere giocato localmente o in rete assieme a più utenti. Il gioco in rete funzionerà immediatamente senza nessun modulo, senza bisogno di programmi aggiuntivi perché interamente forniti dal server. -Minetest is usually bundled with a simple default game, named “Minetest Game” (shown in images 1 and 2). You probably already have it. Other games for Minetest can be downloaded from the official Minetest forums .=Minetest generalmente include un gioco predefinito semplice, chiamato "Minetest Game" (mostrato nelle immagini 1 e 2). Probabilmente lo avete già. Altri giochi per Minetest possono essere scaricati dai forum ufficiali di Minetest . +Minetest is usually bundled with a simple default game, named “Minetest Game” (shown in images 1 and 2). You probably already have it. Other games for Minetest can be downloaded from the official Minetest forums .=Minetest generalmente include un gioco predefinito semplice, chiamato "Minetest Game" (mostrato nelle immagini 1 e 2). Probabilmente lo avete già. Altri giochi per Minetest possono essere scaricati dai forum ufficiali di Minetest . Sneaking=Strisciare Sneaking makes you walk slower and prevents you from falling off the edge of a block.=Strisciare vi fa camminare più lentamente e vi impedisce di cadere dal bordo di un blocco. To sneak, hold down the sneak key (default: [Shift]). When you release it, you stop sneaking. Careful: When you release the sneak key at a ledge, you might fall!=Per strisciare, tenete premuto il tasto per strisciare (predefinito [Maiusc]). Quando lo rilasciate, smettete di strisciare. Fate attenzione: quando rilasciate il tasto per strisciare vicino a un orlo, potreste cadere! @@ -396,7 +396,7 @@ Note that “transparency” here only means that the block is able to carry bri Coordinates=Coordinate The Minetest world is a large cube. And because of this, a position in the world can be easily expressed with Cartesian coordinates. That is, for each position in the world, there are 3 values X, Y and Z.=Il mondo di Minetest è un grande cubo. E per questo, una posizione nel mondo può essere facilmente espressa tramite coordinate Cartesiane. Cioè, per ogni posizione nel mondo, esistono tre valori: X, Y e Z. Like this: (5, 45, -12)=Come questi: (5, 45, -12) -This refers to the position where X=5, Y=45 and Z=-12. The 3 letters are called “axes”: Y is for the height. X and Z are for the horizontal position.=Ciò si riferisce alla posizione dove X=5 (si legga “X vale 5”, NdT), Y=45 e Z=-12. Le tre lettere sono chiamate “assi”: Y si riferisce all'altezza. X e Z si riferiscono alla posizione orizzontale. +This refers to the position where X@=5, Y@=45 and Z@=-12. The 3 letters are called “axes”: Y is for the height. X and Z are for the horizontal position.=Ciò si riferisce alla posizione dove X@=5 (si legga “X vale 5”, NdT), Y@=45 e Z@=-12. Le tre lettere sono chiamate “assi”: Y si riferisce all'altezza. X e Z si riferiscono alla posizione orizzontale. The values for X, Y and Z work like this:=I valori di X, Y e Z funzionano così: • If you go up, Y increases=• Se salite, Y aumenta • If you go down, Y decreases=• Se scendete, Y diminuisce From 9d62c4ca5e68922108052bf1080f657f1763fb8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20M?= Date: Wed, 20 Dec 2023 23:46:30 -0600 Subject: [PATCH 126/375] Fix missing placeholder(s) in mesecons_commandblock.es.tr translation: '@1' '@2' --- .../mesecons_commandblock/locale/mesecons_commandblock.es.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.es.tr b/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.es.tr index 938c710b9..2933f4fc4 100644 --- a/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.es.tr +++ b/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.es.tr @@ -1,7 +1,7 @@ # textdomain: mesecons_commandblock Error: The command “@1” does not exist; your command block has not been changed. Use the “help” chat command for a list of available commands.=Error: el comando "@1" no existe; su bloque de comando no ha sido cambiado. Utilice el comando de chat "help" para obtener una lista de los comandos disponibles. Error: The command “@1” does not exist; your command block has not been changed. Use the “help” chat command for a list of available commands. Hint: Try to remove the leading slash.=Error: el comando "@1" no existe; su bloque de comando no ha sido cambiado. Utilice el comando de chat "help" para obtener una lista de los comandos disponibles. Sugerencia: intente eliminar la barra diagonal inicial. -Error: You have insufficient privileges to use the command “@1” (missing privilege: @2)! The command block has not been changed.=Error: ¡No tiene suficientes privilegios para usar el comando “@ 1” (faltan privilegios: @ 2)! El bloque de comando no ha sido cambiado. +Error: You have insufficient privileges to use the command “@1” (missing privilege: @2)! The command block has not been changed.=Error: ¡No tiene suficientes privilegios para usar el comando “@1” (faltan privilegios: @2)! El bloque de comando no ha sido cambiado. Error: No commander! Block must be replaced.=Error: ¡Sin dueño! El bloque debe ser reemplazado. Commander: @1=Dueño: @1 Submit=Aceptar From 74ab3ffeee77922d530991df32bc0f872fd7dcf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20M?= Date: Wed, 20 Dec 2023 23:55:39 -0600 Subject: [PATCH 127/375] Add missing placeholder(s) in doc_items.pt.tr translation: '@1' --- mods/HELP/doc/doc_items/locale/doc_items.pt.tr | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/HELP/doc/doc_items/locale/doc_items.pt.tr b/mods/HELP/doc/doc_items/locale/doc_items.pt.tr index 648e14569..abcf11547 100644 --- a/mods/HELP/doc/doc_items/locale/doc_items.pt.tr +++ b/mods/HELP/doc/doc_items/locale/doc_items.pt.tr @@ -53,8 +53,8 @@ Range: 4=Range: 4 Rating @1=Classificação @1 # @1 is minimal rating, @2 is maximum rating Rating @1-@2=Classificação @1-@2 -The fall damage on this block is increased by @1%.=O dano por queda nesse bloco é aumentado em @ 1%. -The fall damage on this block is reduced by @1%.=O dano por queda nesse bloco é reduzido em @ 1%. +The fall damage on this block is increased by @1%.=O dano por queda nesse bloco é aumentado em @1%. +The fall damage on this block is reduced by @1%.=O dano por queda nesse bloco é reduzido em @1%. This block allows light to propagate with a small loss of brightness, and sunlight can even go through losslessly.=Esse bloco permite que a luz se propague com uma pequena perda de brilho, e a luz solar pode até passar sem perdas. This block allows light to propagate with a small loss of brightness.=Esse bloco permite que a luz se propague com uma pequena perda de brilho. This block allows sunlight to propagate without loss in brightness.=Esse bloco permite que a luz solar se propague sem perda de brilho. @@ -78,7 +78,7 @@ This block connects to this block: @1.=Esse bloco se conecta a esse bloco: @1. This block decreases your breath and causes a drowning damage of @1 hit point every 2 seconds.=Esse bloco diminui a sua respiração e causa um dano por afogamento de @1 ponto de vida a cada 2 segundos. This block decreases your breath and causes a drowning damage of @1 hit points every 2 seconds.=Esse bloco diminui a sua respiração e causa um dano por afogamento de @1 pontos de vida a cada 2 segundos. This block is a light source with a light level of @1.=Esse bloco é uma fonte de luz com um nível de luz de @1. -This block glows faintly with a light level of @1.=Esse bloco tem um brilho fraco com um nível de luz de @ 1. +This block glows faintly with a light level of @1.=Esse bloco tem um brilho fraco com um nível de luz de @1. This block is a building block for creating various buildings.=Esse bloco é um bloco de construção para criar vários edifícios. This block is a liquid with these properties:=Esse bloco é um líquido com as seguintes propriedades: This block is affected by gravity and can fall.=Esse bloco é afetado pela gravidade e pode cair. @@ -123,7 +123,7 @@ any level=qualquer nível level 0=nível 0 level 0-@1=nivel 0-@1 unknown=desconhecido -Unknown item (@1)=Item desconhecido +Unknown item (@1)=Item desconhecido (@1) • @1: @2= • @1: @2 HP= • @1: @2, @3= From ec8f3f5530ebe2b3db593841f9c07939f46173fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20M?= Date: Thu, 21 Dec 2023 00:18:40 -0600 Subject: [PATCH 128/375] Start the beggining of the mcl_tt spanish translation --- mods/HELP/mcl_tt/locale/mcl_tt.es.tr | 48 ++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 mods/HELP/mcl_tt/locale/mcl_tt.es.tr diff --git a/mods/HELP/mcl_tt/locale/mcl_tt.es.tr b/mods/HELP/mcl_tt/locale/mcl_tt.es.tr new file mode 100644 index 000000000..b26e9140e --- /dev/null +++ b/mods/HELP/mcl_tt/locale/mcl_tt.es.tr @@ -0,0 +1,48 @@ +# textdomain: mcl_tt +Head armor= +Torso armor= +Legs armor= +Feet armor= +Armor points: @1=Puntos de armadura: @1 +Armor durability: @1=Durabilidad de armadura: @1 +Protection: @1%=Protección: @1% +Hunger points: +@1=Puntos de hambre: +@1 +Saturation points: +@1=Puntos de saturación: +@1 +Deals damage when falling= +Grows on grass blocks or dirt= +Grows on grass blocks, podzol, dirt or coarse dirt= +Flammable= +Zombie view range: -50%= +Skeleton view range: -50%= +Creeper view range: -50%= +Damage: @1=Daño: @1 +Damage (@1): @2= +Healing: @1= +Healing (@1): @2= +Full punch interval: @1s= +Contact damage: @1 per second= +Contact healing: @1 per second= +Drowning damage: @1= +Bouncy (@1%)= +Luminance: @1= +Slippery= +Climbable= +Climbable (only downwards)= +No jumping= +No swimming upwards= +No rising= +Fall damage: @1%= +Fall damage: +@1%= +No fall damage= +Mining speed: @1= +Very fast=Muy rápido +Extremely fast=Extremadamente rápido +Fast=Rápido +Slow=Lento +Very slow=Muy lento +Painfully slow= +Mining durability: @1= +Block breaking strength: @1= +@1 uses=@1 usos +Unlimited uses=Usos ilimitados +Durability: @1=Durabilidad: @1 From 10dcdb7d6b546171d5e4eb62881aed9b1d5ffd2c Mon Sep 17 00:00:00 2001 From: Eliy21 Date: Thu, 21 Dec 2023 15:52:26 +0000 Subject: [PATCH 129/375] Remove unnecessary player vector magnitude calculation --- mods/ITEMS/mcl_enchanting/enchantments.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index bd9b4047d..591dfb679 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -318,7 +318,6 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool local hv = hitter:get_velocity() local dir_dot = (hv.x * dir.x) + (hv.z * dir.z) local hitter_mag = math.sqrt((hv.x * hv.x) + (hv.z * hv.z)) - local player_mag = math.sqrt((v.x * v.x) + (v.z * v.z)) if dir_dot > 0 and mcl_sprint.is_sprinting(h_name) then knockback = knockback + hitter_mag * 0.6875 elseif dir_dot > 0 then From 113f07581b203b5728b22ed5431f548fe44f8658 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 14 Dec 2023 12:42:44 -0300 Subject: [PATCH 130/375] new sunflower mesh --- mods/ITEMS/mcl_flowers/init.lua | 31 +++++++++- .../models/mcl_flowers_sunflower.mtl | 32 ++++++++++ .../models/mcl_flowers_sunflower.obj | 59 +++++++++++++++++++ 3 files changed, 119 insertions(+), 3 deletions(-) create mode 100644 mods/ITEMS/mcl_flowers/models/mcl_flowers_sunflower.mtl create mode 100644 mods/ITEMS/mcl_flowers/models/mcl_flowers_sunflower.obj diff --git a/mods/ITEMS/mcl_flowers/init.lua b/mods/ITEMS/mcl_flowers/init.lua index 10189240b..148d9db53 100644 --- a/mods/ITEMS/mcl_flowers/init.lua +++ b/mods/ITEMS/mcl_flowers/init.lua @@ -383,9 +383,6 @@ add_large_plant("peony", S("Peony"), S("A peony is a large plant which occupies add_large_plant("rose_bush", S("Rose Bush"), S("A rose bush is a large plant which occupies two blocks. It is safe to touch it. Rose bushes are mainly used in dye production."), "mcl_flowers_double_plant_rose_bottom.png", "mcl_flowers_double_plant_rose_top.png", nil, 5/16, 1/16) add_large_plant("lilac", S("Lilac"), S("A lilac is a large plant which occupies two blocks. It is mainly used in dye production."), "mcl_flowers_double_plant_syringa_bottom.png", "mcl_flowers_double_plant_syringa_top.png", nil, 5/16, 6/16) --- TODO: Make the sunflower face East. Requires a mesh for the top node. -add_large_plant("sunflower", S("Sunflower"), S("A sunflower is a large plant which occupies two blocks. It is mainly used in dye production."), "mcl_flowers_double_plant_sunflower_bottom.png", "mcl_flowers_double_plant_sunflower_top.png^mcl_flowers_double_plant_sunflower_front.png", "mcl_flowers_double_plant_sunflower_front.png", 6/16, 6/16) - local longdesc_grass = S("Double tallgrass a variant of tall grass and occupies two blocks. It can be harvested for wheat seeds.") local longdesc_fern = S("Large fern is a variant of fern and occupies two blocks. It can be harvested for wheat seeds.") @@ -522,4 +519,32 @@ if mod_mcimport and mg_name == "singlenode" and fix_doubleplants == true then }) end +minetest.register_node("mcl_flowers:sunflower", { + description = S("Sunflower"), + _doc_items_longdesc = S("A sunflower is a large plant which occupies two blocks. It is mainly used in dye production."), + drawtype = "mesh", + groups = { + attached_node = 1, deco_block = 1, + dig_by_water = 1, destroy_by_lava_flow = 1, dig_by_piston = 1, + flammable = 2, fire_encouragement = 60, fire_flammability = 100, + plant = 1, double_plant = 1, non_mycelium_plant = 1, compostability = 65, grass_palette = nil + }, + inventory_image = "mcl_flowers_double_plant_sunflower_front.png", + mesh = "mcl_flowers_sunflower.obj", + paramtype = "light", + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 1.5, 0.25} + }, + sunlight_propagates = true, + tiles = { + "mcl_flowers_double_plant_sunflower_bottom.png", + "mcl_flowers_double_plant_sunflower_bottom.png", + "mcl_flowers_double_plant_sunflower_front.png", + "mcl_flowers_double_plant_sunflower_back.png" + }, + walkable = false, + wield_image = "mcl_flowers_double_plant_sunflower_front.png" +}) + dofile(modpath.."/register.lua") diff --git a/mods/ITEMS/mcl_flowers/models/mcl_flowers_sunflower.mtl b/mods/ITEMS/mcl_flowers/models/mcl_flowers_sunflower.mtl new file mode 100644 index 000000000..1a72d010b --- /dev/null +++ b/mods/ITEMS/mcl_flowers/models/mcl_flowers_sunflower.mtl @@ -0,0 +1,32 @@ +# Blender 3.6.4 MTL File: 'sunflower.blend' +# www.blender.org + +newmtl Flower_1 +Ns 250.000000 +Ka 1.000000 1.000000 1.000000 +Ks 0.500000 0.500000 0.500000 +Ke 0.000000 0.000000 0.000000 +Ni 1.450000 +d 1.000000 +illum 2 +map_Kd C:/Minetest-5.8/games/mineclone2/textures/mcl_flowers_double_plant_sunflower_front.png + +newmtl Flower_2 +Ns 250.000000 +Ka 1.000000 1.000000 1.000000 +Ks 0.500000 0.500000 0.500000 +Ke 0.000000 0.000000 0.000000 +Ni 1.450000 +d 1.000000 +illum 2 +map_Kd C:/Minetest-5.8/games/mineclone2/textures/mcl_flowers_double_plant_sunflower_back.png + +newmtl Stem +Ns 250.000000 +Ka 1.000000 1.000000 1.000000 +Ks 0.500000 0.500000 0.500000 +Ke 0.000000 0.000000 0.000000 +Ni 1.450000 +d 1.000000 +illum 2 +map_Kd C:/Minetest-5.8/games/mineclone2/textures/mcl_flowers_double_plant_sunflower_bottom.png diff --git a/mods/ITEMS/mcl_flowers/models/mcl_flowers_sunflower.obj b/mods/ITEMS/mcl_flowers/models/mcl_flowers_sunflower.obj new file mode 100644 index 000000000..4bac1dbd7 --- /dev/null +++ b/mods/ITEMS/mcl_flowers/models/mcl_flowers_sunflower.obj @@ -0,0 +1,59 @@ +# Blender 3.6.4 +# www.blender.org +mtllib sunflower.mtl +o Stem_1 +v 0.309359 1.500000 -0.309359 +v -0.309359 1.500000 0.309359 +v 0.309359 -0.500000 -0.309359 +v -0.309359 -0.500000 0.309359 +vn 0.7071 -0.0000 0.7071 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +s 0 +g Stem_1_Stem +usemtl Stem +f 1/1/1 2/2/1 4/3/1 3/4/1 +o Stem_2 +v 0.309359 1.500000 0.309359 +v -0.309359 1.500000 -0.309359 +v 0.309359 -0.500000 0.309359 +v -0.309359 -0.500000 -0.309359 +vn -0.7071 -0.0000 0.7071 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +s 0 +g Stem_2_Stem +usemtl Stem +f 5/5/2 6/6/2 8/7/2 7/8/2 +o Flower_1 +v -0.500000 1.933013 -0.125000 +v -0.500000 1.066987 0.375000 +v 0.500000 1.933013 -0.125000 +v 0.500000 1.066987 0.375000 +vn -0.0000 0.5000 0.8660 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +s 0 +g Flower_1_Flower_1 +usemtl Flower_1 +f 9/9/3 10/10/3 12/11/3 11/12/3 +o Flower_2 +v -0.500000 1.933013 -0.130000 +v -0.500000 1.066987 0.370000 +v 0.500000 1.933013 -0.130000 +v 0.500000 1.066987 0.370000 +vn -0.0000 0.5000 0.8660 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +s 0 +g Flower_2_Flower_2 +usemtl Flower_2 +f 13/13/4 14/14/4 16/15/4 15/16/4 From dd5a9178d9833804cddcaa462245ea42b7d506c0 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 14 Dec 2023 13:29:37 -0300 Subject: [PATCH 131/375] sunflower mapgen bug fix --- mods/MAPGEN/mcl_biomes/init.lua | 76 ++++++++++++++++++++++----------- 1 file changed, 52 insertions(+), 24 deletions(-) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index d42720d26..956a5dac8 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -4804,32 +4804,60 @@ local function register_decorations() b = {"FlowerForest"} end - minetest.register_decoration({ - deco_type = "schematic", - schematic = { - size = {x = 1, y = 3, z = 1}, - data = { - {name = "air", prob = 0}, - {name = "mcl_flowers:" .. name, param1 = 255, }, - {name = "mcl_flowers:" .. name .. "_top", param1 = 255, }, + if name ~= "sunflower" then + minetest.register_decoration({ + deco_type = "schematic", + schematic = { + size = {x = 1, y = 3, z = 1}, + data = { + {name = "air", prob = 0}, + {name = "mcl_flowers:" .. name, param1 = 255, }, + {name = "mcl_flowers:" .. name .. "_top", param1 = 255, }, + }, }, - }, - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 16, - noise_params = { - offset = o, - scale = 0.01, - spread = {x = 300, y = 300, z = 300}, - seed = seed, - octaves = 5, - persist = 0.62, - }, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - flags = "", - biomes = b, - }) + sidelen = 16, + noise_params = { + offset = o, + scale = 0.01, + spread = {x = 300, y = 300, z = 300}, + seed = seed, + octaves = 5, + persist = 0.62, + }, + y_min = 1, + y_max = mcl_vars.mg_overworld_max, + flags = "", + biomes = b, + }) + else + minetest.register_decoration({ + deco_type = "schematic", + schematic = { + size = {x = 1, y = 2, z = 1}, + data = { + {name = "air", prob = 0}, + {name = "mcl_flowers:" .. name, param1 = 255, }, + }, + }, + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + + sidelen = 16, + noise_params = { + offset = o, + scale = 0.01, + spread = {x = 300, y = 300, z = 300}, + seed = seed, + octaves = 5, + persist = 0.62, + }, + y_min = 1, + y_max = mcl_vars.mg_overworld_max, + flags = "", + biomes = b, + }) + end end end From e6a64cfc69c6ae6e7394863ace4ca66aa42d06c7 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 14 Dec 2023 22:35:59 -0300 Subject: [PATCH 132/375] Sound and mining sunflower bug fixes --- mods/ITEMS/mcl_flowers/init.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_flowers/init.lua b/mods/ITEMS/mcl_flowers/init.lua index 148d9db53..ef22da3a3 100644 --- a/mods/ITEMS/mcl_flowers/init.lua +++ b/mods/ITEMS/mcl_flowers/init.lua @@ -525,8 +525,8 @@ minetest.register_node("mcl_flowers:sunflower", { drawtype = "mesh", groups = { attached_node = 1, deco_block = 1, - dig_by_water = 1, destroy_by_lava_flow = 1, dig_by_piston = 1, - flammable = 2, fire_encouragement = 60, fire_flammability = 100, + dig_by_water = 1, destroy_by_lava_flow = 1, dig_by_piston = 1, dig_immediate = 3, + flammable = 2, flower = 1, fire_encouragement = 60, fire_flammability = 100, plant = 1, double_plant = 1, non_mycelium_plant = 1, compostability = 65, grass_palette = nil }, inventory_image = "mcl_flowers_double_plant_sunflower_front.png", @@ -536,6 +536,7 @@ minetest.register_node("mcl_flowers:sunflower", { type = "fixed", fixed = {-0.25, -0.5, -0.25, 0.25, 1.5, 0.25} }, + sounds = mcl_sounds.node_sound_leaves_defaults(), sunlight_propagates = true, tiles = { "mcl_flowers_double_plant_sunflower_bottom.png", From 85d21fa1e9dcd4abb3e62ad69c61a062ce7c0470 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 14 Dec 2023 23:18:38 -0300 Subject: [PATCH 133/375] new sunflower mesh --- .../models/mcl_flowers_sunflower.obj | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/mods/ITEMS/mcl_flowers/models/mcl_flowers_sunflower.obj b/mods/ITEMS/mcl_flowers/models/mcl_flowers_sunflower.obj index 4bac1dbd7..115670e11 100644 --- a/mods/ITEMS/mcl_flowers/models/mcl_flowers_sunflower.obj +++ b/mods/ITEMS/mcl_flowers/models/mcl_flowers_sunflower.obj @@ -1,12 +1,12 @@ # Blender 3.6.4 # www.blender.org -mtllib sunflower.mtl +mtllib mcl_flowers_sunflower.mtl o Stem_1 -v 0.309359 1.500000 -0.309359 -v -0.309359 1.500000 0.309359 -v 0.309359 -0.500000 -0.309359 -v -0.309359 -0.500000 0.309359 -vn 0.7071 -0.0000 0.7071 +v -0.309359 1.000000 -0.309359 +v 0.309359 1.000000 0.309359 +v -0.309359 -0.500000 -0.309359 +v 0.309359 -0.500000 0.309359 +vn 0.7071 -0.0000 -0.7071 vt 1.000000 1.000000 vt 0.000000 1.000000 vt 0.000000 0.000000 @@ -16,11 +16,11 @@ g Stem_1_Stem usemtl Stem f 1/1/1 2/2/1 4/3/1 3/4/1 o Stem_2 -v 0.309359 1.500000 0.309359 -v -0.309359 1.500000 -0.309359 -v 0.309359 -0.500000 0.309359 -v -0.309359 -0.500000 -0.309359 -vn -0.7071 -0.0000 0.7071 +v 0.309359 1.000000 -0.309359 +v -0.309359 1.000000 0.309359 +v 0.309359 -0.500000 -0.309359 +v -0.309359 -0.500000 0.309359 +vn 0.7071 -0.0000 0.7071 vt 1.000000 1.000000 vt 0.000000 1.000000 vt 0.000000 0.000000 @@ -30,11 +30,11 @@ g Stem_2_Stem usemtl Stem f 5/5/2 6/6/2 8/7/2 7/8/2 o Flower_1 -v -0.500000 1.933013 -0.125000 -v -0.500000 1.066987 0.375000 -v 0.500000 1.933013 -0.125000 -v 0.500000 1.066987 0.375000 -vn -0.0000 0.5000 0.8660 +v -0.145000 1.483012 0.500000 +v 0.355000 0.616987 0.500000 +v -0.145000 1.483012 -0.500000 +v 0.355000 0.616987 -0.500000 +vn 0.8660 0.5000 -0.0000 vt 0.000000 0.000000 vt 1.000000 0.000000 vt 1.000000 1.000000 @@ -44,11 +44,11 @@ g Flower_1_Flower_1 usemtl Flower_1 f 9/9/3 10/10/3 12/11/3 11/12/3 o Flower_2 -v -0.500000 1.933013 -0.130000 -v -0.500000 1.066987 0.370000 -v 0.500000 1.933013 -0.130000 -v 0.500000 1.066987 0.370000 -vn -0.0000 0.5000 0.8660 +v -0.150000 1.482013 0.500000 +v 0.350000 0.615987 0.500000 +v -0.150000 1.482013 -0.500000 +v 0.350000 0.615987 -0.500000 +vn 0.8660 0.5000 -0.0000 vt 0.000000 0.000000 vt 1.000000 0.000000 vt 1.000000 1.000000 From f9972aef015cc992b41ab2c004a1a3c5101c3310 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 14 Dec 2023 23:35:42 -0300 Subject: [PATCH 134/375] new lower mesh and selection box --- mods/ITEMS/mcl_flowers/init.lua | 2 +- .../models/mcl_flowers_sunflower.obj | 24 +++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/mods/ITEMS/mcl_flowers/init.lua b/mods/ITEMS/mcl_flowers/init.lua index ef22da3a3..ce8391c29 100644 --- a/mods/ITEMS/mcl_flowers/init.lua +++ b/mods/ITEMS/mcl_flowers/init.lua @@ -534,7 +534,7 @@ minetest.register_node("mcl_flowers:sunflower", { paramtype = "light", selection_box = { type = "fixed", - fixed = {-0.25, -0.5, -0.25, 0.25, 1.5, 0.25} + fixed = {-1/4, -1/2, -1/4, 1/4, 8/7, 1/4} }, sounds = mcl_sounds.node_sound_leaves_defaults(), sunlight_propagates = true, diff --git a/mods/ITEMS/mcl_flowers/models/mcl_flowers_sunflower.obj b/mods/ITEMS/mcl_flowers/models/mcl_flowers_sunflower.obj index 115670e11..43fc4301d 100644 --- a/mods/ITEMS/mcl_flowers/models/mcl_flowers_sunflower.obj +++ b/mods/ITEMS/mcl_flowers/models/mcl_flowers_sunflower.obj @@ -2,8 +2,8 @@ # www.blender.org mtllib mcl_flowers_sunflower.mtl o Stem_1 -v -0.309359 1.000000 -0.309359 -v 0.309359 1.000000 0.309359 +v -0.309359 0.750000 -0.309359 +v 0.309359 0.750000 0.309359 v -0.309359 -0.500000 -0.309359 v 0.309359 -0.500000 0.309359 vn 0.7071 -0.0000 -0.7071 @@ -16,8 +16,8 @@ g Stem_1_Stem usemtl Stem f 1/1/1 2/2/1 4/3/1 3/4/1 o Stem_2 -v 0.309359 1.000000 -0.309359 -v -0.309359 1.000000 0.309359 +v 0.309359 0.750000 -0.309359 +v -0.309359 0.750000 0.309359 v 0.309359 -0.500000 -0.309359 v -0.309359 -0.500000 0.309359 vn 0.7071 -0.0000 0.7071 @@ -30,10 +30,10 @@ g Stem_2_Stem usemtl Stem f 5/5/2 6/6/2 8/7/2 7/8/2 o Flower_1 -v -0.145000 1.483012 0.500000 -v 0.355000 0.616987 0.500000 -v -0.145000 1.483012 -0.500000 -v 0.355000 0.616987 -0.500000 +v -0.175000 1.233013 0.500000 +v 0.325000 0.366987 0.500000 +v -0.175000 1.233013 -0.500000 +v 0.325000 0.366987 -0.500000 vn 0.8660 0.5000 -0.0000 vt 0.000000 0.000000 vt 1.000000 0.000000 @@ -44,10 +44,10 @@ g Flower_1_Flower_1 usemtl Flower_1 f 9/9/3 10/10/3 12/11/3 11/12/3 o Flower_2 -v -0.150000 1.482013 0.500000 -v 0.350000 0.615987 0.500000 -v -0.150000 1.482013 -0.500000 -v 0.350000 0.615987 -0.500000 +v -0.180000 1.232013 0.500000 +v 0.320000 0.365988 0.500000 +v -0.180000 1.232013 -0.500000 +v 0.320000 0.365988 -0.500000 vn 0.8660 0.5000 -0.0000 vt 0.000000 0.000000 vt 1.000000 0.000000 From 4d5d5953107cca7339fac49377b6b125efc32499 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 15 Dec 2023 08:54:44 -0300 Subject: [PATCH 135/375] changes requested in sunflower definitions --- mods/ITEMS/mcl_flowers/init.lua | 23 ++++++++-- mods/MAPGEN/mcl_biomes/init.lua | 76 +++++++++++---------------------- 2 files changed, 43 insertions(+), 56 deletions(-) diff --git a/mods/ITEMS/mcl_flowers/init.lua b/mods/ITEMS/mcl_flowers/init.lua index ce8391c29..5277cd35c 100644 --- a/mods/ITEMS/mcl_flowers/init.lua +++ b/mods/ITEMS/mcl_flowers/init.lua @@ -192,7 +192,7 @@ if has_mcl_flowerpots then }) end -local function add_large_plant(name, desc, longdesc, bottom_img, top_img, inv_img, selbox_radius, selbox_top_height, drop, shears_drop, is_flower, grass_color, fortune_drop) +local function add_large_plant(name, desc, longdesc, bottom_img, top_img, inv_img, selbox_radius, selbox_top_height, drop, shears_drop, is_flower, grass_color, fortune_drop, mesh) if not inv_img then inv_img = top_img end @@ -236,13 +236,26 @@ local function add_large_plant(name, desc, longdesc, bottom_img, top_img, inv_im drop_top = drop drop_bottom = drop end + -- Sunflower mesh and tiles + local top_drawtype, bottom_drawtype + local bottom_tiles = {} + if not mesh then + top_drawtype = "plantlike" + bottom_drawtype = "plantlike" + table.insert(bottom_tiles, bottom_img) + else + top_drawtype = "airlike" + bottom_drawtype = "mesh" + bottom_tiles = bottom_img + end + -- Bottom minetest.register_node("mcl_flowers:"..name, { description = desc, _doc_items_create_entry = create_entry, _doc_items_longdesc = longdesc, _doc_items_usagehelp = plant_usage_help, - drawtype = "plantlike", - tiles = { bottom_img }, + drawtype = bottom_drawtype, + tiles = bottom_tiles, inventory_image = inv_img, wield_image = inv_img, sunlight_propagates = true, @@ -334,6 +347,7 @@ local function add_large_plant(name, desc, longdesc, bottom_img, top_img, inv_im end, groups = bottom_groups, sounds = mcl_sounds.node_sound_leaves_defaults(), + mesh = mesh }) local top_groups = table.copy(bottom_groups) @@ -345,7 +359,7 @@ local function add_large_plant(name, desc, longdesc, bottom_img, top_img, inv_im minetest.register_node("mcl_flowers:"..name.."_top", { description = desc.." " .. S("(Top Part)"), _doc_items_create_entry = false, - drawtype = "plantlike", + drawtype = top_drawtype, tiles = { top_img }, sunlight_propagates = true, paramtype = "light", @@ -382,6 +396,7 @@ end add_large_plant("peony", S("Peony"), S("A peony is a large plant which occupies two blocks. It is mainly used in dye production."), "mcl_flowers_double_plant_paeonia_bottom.png", "mcl_flowers_double_plant_paeonia_top.png", nil, 5/16, 6/16) add_large_plant("rose_bush", S("Rose Bush"), S("A rose bush is a large plant which occupies two blocks. It is safe to touch it. Rose bushes are mainly used in dye production."), "mcl_flowers_double_plant_rose_bottom.png", "mcl_flowers_double_plant_rose_top.png", nil, 5/16, 1/16) add_large_plant("lilac", S("Lilac"), S("A lilac is a large plant which occupies two blocks. It is mainly used in dye production."), "mcl_flowers_double_plant_syringa_bottom.png", "mcl_flowers_double_plant_syringa_top.png", nil, 5/16, 6/16) +add_large_plant("sunflower", S("Sunflower"), S("A sunflower is a large plant which occupies two blocks. It is mainly used in dye production."), {"mcl_flowers_double_plant_sunflower_bottom.png", "mcl_flowers_double_plant_sunflower_bottom.png", "mcl_flowers_double_plant_sunflower_front.png", "mcl_flowers_double_plant_sunflower_back.png"}, nil, "mcl_flowers_double_plant_sunflower_front.png", 6/16, 6/16, "mcl_flowers:sunflower", nil, true, nil, nil, "mcl_flowers_sunflower.obj") local longdesc_grass = S("Double tallgrass a variant of tall grass and occupies two blocks. It can be harvested for wheat seeds.") local longdesc_fern = S("Large fern is a variant of fern and occupies two blocks. It can be harvested for wheat seeds.") diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 956a5dac8..d42720d26 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -4804,60 +4804,32 @@ local function register_decorations() b = {"FlowerForest"} end - if name ~= "sunflower" then - minetest.register_decoration({ - deco_type = "schematic", - schematic = { - size = {x = 1, y = 3, z = 1}, - data = { - {name = "air", prob = 0}, - {name = "mcl_flowers:" .. name, param1 = 255, }, - {name = "mcl_flowers:" .. name .. "_top", param1 = 255, }, - }, + minetest.register_decoration({ + deco_type = "schematic", + schematic = { + size = {x = 1, y = 3, z = 1}, + data = { + {name = "air", prob = 0}, + {name = "mcl_flowers:" .. name, param1 = 255, }, + {name = "mcl_flowers:" .. name .. "_top", param1 = 255, }, }, - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, + }, + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - sidelen = 16, - noise_params = { - offset = o, - scale = 0.01, - spread = {x = 300, y = 300, z = 300}, - seed = seed, - octaves = 5, - persist = 0.62, - }, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - flags = "", - biomes = b, - }) - else - minetest.register_decoration({ - deco_type = "schematic", - schematic = { - size = {x = 1, y = 2, z = 1}, - data = { - {name = "air", prob = 0}, - {name = "mcl_flowers:" .. name, param1 = 255, }, - }, - }, - place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, - - sidelen = 16, - noise_params = { - offset = o, - scale = 0.01, - spread = {x = 300, y = 300, z = 300}, - seed = seed, - octaves = 5, - persist = 0.62, - }, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - flags = "", - biomes = b, - }) - end + sidelen = 16, + noise_params = { + offset = o, + scale = 0.01, + spread = {x = 300, y = 300, z = 300}, + seed = seed, + octaves = 5, + persist = 0.62, + }, + y_min = 1, + y_max = mcl_vars.mg_overworld_max, + flags = "", + biomes = b, + }) end end From f63e5d3c1978c766dd09fb9dcfed656e06061210 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 22 Dec 2023 14:35:47 -0300 Subject: [PATCH 136/375] fix facing west --- .../models/mcl_flowers_sunflower.obj | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/mods/ITEMS/mcl_flowers/models/mcl_flowers_sunflower.obj b/mods/ITEMS/mcl_flowers/models/mcl_flowers_sunflower.obj index 43fc4301d..9866fa4f2 100644 --- a/mods/ITEMS/mcl_flowers/models/mcl_flowers_sunflower.obj +++ b/mods/ITEMS/mcl_flowers/models/mcl_flowers_sunflower.obj @@ -2,11 +2,11 @@ # www.blender.org mtllib mcl_flowers_sunflower.mtl o Stem_1 -v -0.309359 0.750000 -0.309359 -v 0.309359 0.750000 0.309359 -v -0.309359 -0.500000 -0.309359 -v 0.309359 -0.500000 0.309359 -vn 0.7071 -0.0000 -0.7071 +v 0.381859 0.750000 0.309359 +v -0.236859 0.750000 -0.309359 +v 0.381859 -0.500000 0.309359 +v -0.236859 -0.500000 -0.309359 +vn -0.7071 -0.0000 0.7071 vt 1.000000 1.000000 vt 0.000000 1.000000 vt 0.000000 0.000000 @@ -16,11 +16,11 @@ g Stem_1_Stem usemtl Stem f 1/1/1 2/2/1 4/3/1 3/4/1 o Stem_2 -v 0.309359 0.750000 -0.309359 -v -0.309359 0.750000 0.309359 -v 0.309359 -0.500000 -0.309359 -v -0.309359 -0.500000 0.309359 -vn 0.7071 -0.0000 0.7071 +v -0.236859 0.750000 0.309359 +v 0.381859 0.750000 -0.309359 +v -0.236859 -0.500000 0.309359 +v 0.381859 -0.500000 -0.309359 +vn -0.7071 -0.0000 -0.7071 vt 1.000000 1.000000 vt 0.000000 1.000000 vt 0.000000 0.000000 @@ -30,11 +30,11 @@ g Stem_2_Stem usemtl Stem f 5/5/2 6/6/2 8/7/2 7/8/2 o Flower_1 -v -0.175000 1.233013 0.500000 -v 0.325000 0.366987 0.500000 -v -0.175000 1.233013 -0.500000 -v 0.325000 0.366987 -0.500000 -vn 0.8660 0.5000 -0.0000 +v 0.247500 1.233013 -0.500000 +v -0.252500 0.366987 -0.500000 +v 0.247500 1.233013 0.500000 +v -0.252500 0.366987 0.500000 +vn -0.8660 0.5000 -0.0000 vt 0.000000 0.000000 vt 1.000000 0.000000 vt 1.000000 1.000000 @@ -44,11 +44,11 @@ g Flower_1_Flower_1 usemtl Flower_1 f 9/9/3 10/10/3 12/11/3 11/12/3 o Flower_2 -v -0.180000 1.232013 0.500000 -v 0.320000 0.365988 0.500000 -v -0.180000 1.232013 -0.500000 -v 0.320000 0.365988 -0.500000 -vn 0.8660 0.5000 -0.0000 +v 0.252500 1.232013 -0.500000 +v -0.247500 0.365988 -0.500000 +v 0.252500 1.232013 0.500000 +v -0.247500 0.365988 0.500000 +vn -0.8660 0.5000 -0.0000 vt 0.000000 0.000000 vt 1.000000 0.000000 vt 1.000000 1.000000 From 92ee9c0557a88ce07c044de278c21c1414da51b0 Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Mon, 18 Dec 2023 02:14:01 +0100 Subject: [PATCH 137/375] Remove the wrong separate sunflower definition --- mods/ITEMS/mcl_flowers/init.lua | 29 ----------------------------- 1 file changed, 29 deletions(-) diff --git a/mods/ITEMS/mcl_flowers/init.lua b/mods/ITEMS/mcl_flowers/init.lua index 5277cd35c..75e133322 100644 --- a/mods/ITEMS/mcl_flowers/init.lua +++ b/mods/ITEMS/mcl_flowers/init.lua @@ -534,33 +534,4 @@ if mod_mcimport and mg_name == "singlenode" and fix_doubleplants == true then }) end -minetest.register_node("mcl_flowers:sunflower", { - description = S("Sunflower"), - _doc_items_longdesc = S("A sunflower is a large plant which occupies two blocks. It is mainly used in dye production."), - drawtype = "mesh", - groups = { - attached_node = 1, deco_block = 1, - dig_by_water = 1, destroy_by_lava_flow = 1, dig_by_piston = 1, dig_immediate = 3, - flammable = 2, flower = 1, fire_encouragement = 60, fire_flammability = 100, - plant = 1, double_plant = 1, non_mycelium_plant = 1, compostability = 65, grass_palette = nil - }, - inventory_image = "mcl_flowers_double_plant_sunflower_front.png", - mesh = "mcl_flowers_sunflower.obj", - paramtype = "light", - selection_box = { - type = "fixed", - fixed = {-1/4, -1/2, -1/4, 1/4, 8/7, 1/4} - }, - sounds = mcl_sounds.node_sound_leaves_defaults(), - sunlight_propagates = true, - tiles = { - "mcl_flowers_double_plant_sunflower_bottom.png", - "mcl_flowers_double_plant_sunflower_bottom.png", - "mcl_flowers_double_plant_sunflower_front.png", - "mcl_flowers_double_plant_sunflower_back.png" - }, - walkable = false, - wield_image = "mcl_flowers_double_plant_sunflower_front.png" -}) - dofile(modpath.."/register.lua") From 569dd691885d529efaebbfc9c2e3f1400a37578a Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Fri, 22 Dec 2023 23:36:49 +0100 Subject: [PATCH 138/375] Increase sunflower height --- .../models/mcl_flowers_sunflower.obj | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/mods/ITEMS/mcl_flowers/models/mcl_flowers_sunflower.obj b/mods/ITEMS/mcl_flowers/models/mcl_flowers_sunflower.obj index 9866fa4f2..fb9dfc7cf 100644 --- a/mods/ITEMS/mcl_flowers/models/mcl_flowers_sunflower.obj +++ b/mods/ITEMS/mcl_flowers/models/mcl_flowers_sunflower.obj @@ -2,8 +2,8 @@ # www.blender.org mtllib mcl_flowers_sunflower.mtl o Stem_1 -v 0.381859 0.750000 0.309359 -v -0.236859 0.750000 -0.309359 +v 0.381859 1.050000 0.309359 +v -0.236859 1.050000 -0.309359 v 0.381859 -0.500000 0.309359 v -0.236859 -0.500000 -0.309359 vn -0.7071 -0.0000 0.7071 @@ -16,8 +16,8 @@ g Stem_1_Stem usemtl Stem f 1/1/1 2/2/1 4/3/1 3/4/1 o Stem_2 -v -0.236859 0.750000 0.309359 -v 0.381859 0.750000 -0.309359 +v -0.236859 1.050000 0.309359 +v 0.381859 1.050000 -0.309359 v -0.236859 -0.500000 0.309359 v 0.381859 -0.500000 -0.309359 vn -0.7071 -0.0000 -0.7071 @@ -30,10 +30,10 @@ g Stem_2_Stem usemtl Stem f 5/5/2 6/6/2 8/7/2 7/8/2 o Flower_1 -v 0.247500 1.233013 -0.500000 -v -0.252500 0.366987 -0.500000 -v 0.247500 1.233013 0.500000 -v -0.252500 0.366987 0.500000 +v 0.247500 1.433013 -0.500000 +v -0.252500 0.766987 -0.500000 +v 0.247500 1.433013 0.500000 +v -0.252500 0.766987 0.500000 vn -0.8660 0.5000 -0.0000 vt 0.000000 0.000000 vt 1.000000 0.000000 @@ -44,10 +44,10 @@ g Flower_1_Flower_1 usemtl Flower_1 f 9/9/3 10/10/3 12/11/3 11/12/3 o Flower_2 -v 0.252500 1.232013 -0.500000 -v -0.247500 0.365988 -0.500000 -v 0.252500 1.232013 0.500000 -v -0.247500 0.365988 0.500000 +v 0.252500 1.432013 -0.500000 +v -0.247500 0.765988 -0.500000 +v 0.252500 1.432013 0.500000 +v -0.247500 0.765988 0.500000 vn -0.8660 0.5000 -0.0000 vt 0.000000 0.000000 vt 1.000000 0.000000 From beb06315ac6506b45bbd154f5b74143a2aea7f77 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 07:51:36 -0300 Subject: [PATCH 139/375] mcl_explosions pt_BR translation --- mods/CORE/mcl_explosions/locale/mcl_explosions.pt_BR.tr | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 mods/CORE/mcl_explosions/locale/mcl_explosions.pt_BR.tr diff --git a/mods/CORE/mcl_explosions/locale/mcl_explosions.pt_BR.tr b/mods/CORE/mcl_explosions/locale/mcl_explosions.pt_BR.tr new file mode 100644 index 000000000..d67ea4637 --- /dev/null +++ b/mods/CORE/mcl_explosions/locale/mcl_explosions.pt_BR.tr @@ -0,0 +1,2 @@ +# textdomain:mcl_explosions +@1 was caught in an explosion.=@1 foi pego(a) em uma explosão. From ad3ec48ec9fbb50a5073f9cfb20165feb457c9e6 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 08:18:10 -0300 Subject: [PATCH 140/375] mcl_boats pt_BR translation --- .../mcl_boats/locale/mcl_boats.pt_BR.tr | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 mods/ENTITIES/mcl_boats/locale/mcl_boats.pt_BR.tr diff --git a/mods/ENTITIES/mcl_boats/locale/mcl_boats.pt_BR.tr b/mods/ENTITIES/mcl_boats/locale/mcl_boats.pt_BR.tr new file mode 100644 index 000000000..65a5c3a54 --- /dev/null +++ b/mods/ENTITIES/mcl_boats/locale/mcl_boats.pt_BR.tr @@ -0,0 +1,23 @@ +# textdomain: mcl_boats +Acacia Boat=Barco de Acácia +Birch Boat=Barco de Bétula +Boat=Barco +Boats are used to travel on the surface of water.=Barcos são usados para viajar na superfície da água +Dark Oak Boat=Barco de Carvalho Escuro +Jungle Boat=Barco de Selva +Oak Boat=Barco de Carvalho +Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Use [Sneak] to leave the boat, punch the boat to make it drop as an item.=Clique com o botão direito em uma fonte de água para posicionar o barco. Clique com o botão direito no barco para entrar nele. Use [Esquerda] e [Direita] para fazer curva, [Frente] para acelerar e [Trás] para frear e ir para trás. Use [Agachar] para deixar o barco, soque-o para fazê-lo dropar como um item. +Spruce Boat=Barco de Pinheiro +Water vehicle=Veículo aquático +Sneak to dismount=Agache para desmontar +Obsidian Boat=Barco de Obsidiana +Mangrove Boat=Barco de Mangue +Cherry Boat=Barco de Cerejeira +Oak Chest Boat=Barco de Carvalho com Baú +Spruce Chest Boat=Barco de Pinheiro com Baú +Birch Chest Boat=Barco de Bétula com Baú +Jungle Chest Boat=Barco de Selva com Baú +Acacia Chest Boat=Barco de Acácia com Baú +Dark Oak Chest Boat=Barco de Carvalho Escuro com Baú +Mangrove Chest Boat=Barco de Mangue com Baú +Cherry Chest Boat=Barco de Cerejeira com Baú From 2370d155c9e5f5f9cab37676201bf80a799febac Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 08:23:34 -0300 Subject: [PATCH 141/375] mcl_falling_nodes pt_BR translation --- .../mcl_falling_nodes/locale/mcl_falling_nodes.pt_BR.tr | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.pt_BR.tr diff --git a/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.pt_BR.tr b/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.pt_BR.tr new file mode 100644 index 000000000..aaa378ba3 --- /dev/null +++ b/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.pt_BR.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_falling_nodes +@1 was smashed by a falling anvil.=@1 foi esmagado(a) por uma bigorna em queda. +@1 was smashed by a falling block.=@1 foi esmagado(a) por um bloco em queda. From 51dc10c9ea75f1f9bb5afec9f36c4bfa9f6d3f76 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 08:25:32 -0300 Subject: [PATCH 142/375] mcl_paintings pt_BR translation --- mods/ENTITIES/mcl_paintings/locale/mcl_paintings.pt_BR.tr | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 mods/ENTITIES/mcl_paintings/locale/mcl_paintings.pt_BR.tr diff --git a/mods/ENTITIES/mcl_paintings/locale/mcl_paintings.pt_BR.tr b/mods/ENTITIES/mcl_paintings/locale/mcl_paintings.pt_BR.tr new file mode 100644 index 000000000..3c0a840cf --- /dev/null +++ b/mods/ENTITIES/mcl_paintings/locale/mcl_paintings.pt_BR.tr @@ -0,0 +1,2 @@ +# textdomain:mcl_paintings +Painting=Pintura From df027704705e88aa986304deb3ad7e680850d1ce Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 09:14:20 -0300 Subject: [PATCH 143/375] mcl_minecarts pt_BR translation --- .../locale/mcl_minecarts.pt_BR.tr | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.pt_BR.tr diff --git a/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.pt_BR.tr b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.pt_BR.tr new file mode 100644 index 000000000..dda35e93f --- /dev/null +++ b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.pt_BR.tr @@ -0,0 +1,36 @@ +# textdomain: mcl_minecarts +Minecart=Carrinho +Minecarts can be used for a quick transportion on rails.=Carrinhos podem ser usados para transporte rápido em trilhos. +Minecarts only ride on rails and always follow the tracks. At a T-junction with no straight way ahead, they turn left. The speed is affected by the rail type.=Carrinhos viajam somente em trilhos e sempre seguem os traçados. Em uma junção em T sem linha reta à frente, eles viram à esquerda. A velocidade é afetada pelo tipo do trilho. +You can place the minecart on rails. Right-click it to enter it. Punch it to get it moving.=Você pode posicionar o carrinho em trilhos. Clique com o botão direito para entrar nele. Soque-o para fazê-lo mover. +To obtain the minecart, punch it while holding down the sneak key.=Para obter o carrinho, soque-o enquanto segura pressionada a tecla de agachar. +A minecart with TNT is an explosive vehicle that travels on rail.=Um carrinho com TNT é um veículo explosivo que viaja nos trilhos. +Place it on rails. Punch it to move it. The TNT is ignited with a flint and steel or when the minecart is on an powered activator rail.=Posicione-o nos trilhos. Soque-o para movê-lo. A TNT é acesa com um isqueiro ou quando o carrinho está sobre um trilho ativador energizado. +To obtain the minecart and TNT, punch them while holding down the sneak key. You can't do this if the TNT was ignited.=Para obter o carrinho e a TNT, soque-os enquanto segura pressionada a tecla de agachar. Você não consegue fazer isso se a TNT foi acesa. +A minecart with furnace is a vehicle that travels on rails. It can propel itself with fuel.=Um carrinho com fornalha é um veículo que viaja nos trilhos. Se move por conta própria com combustível. +Place it on rails. If you give it some coal, the furnace will start burning for a long time and the minecart will be able to move itself. Punch it to get it moving.=Posicione-o nos trilhos. Se você o der um pouco de carvão, a fornalha vai começar a queimar por um longo tempo e o carrinho será capaz de se mover por conta própria. Soque-o para fazê-lo mover. +To obtain the minecart and furnace, punch them while holding down the sneak key.=Para obter o carrinho e a fornalha, soque-os enquanto segura pressionada a tecla de agachar. +Minecart with Chest=Carrinho com Baú +Minecart with Furnace=Carrinho com Fornalha +Minecart with Command Block=Carrinho com Bloco de Comandos +Minecart with Hopper=Carrinho com Funil +Minecart with TNT=Carrinho com TNT +Place them on the ground to build your railway, the rails will automatically connect to each other and will turn into curves, T-junctions, crossings and slopes as needed.=Posicione-os no chão para construir suas linhas férreas, os trilhos vão conectar-se automaticamente uns nos outros e vão se transformar em curvas, junções em T, cruzamentos e rampas quando necessário. +Rail=Trilho +Rails can be used to build transport tracks for minecarts. Normal rails slightly slow down minecarts due to friction.=Trilhos podem ser usados para construir traçados de transporte para carrinhos. Trilhos normais freiam carrinhos gradativamente devido ao atrito. +Powered Rail=Trilho Energizador +Rails can be used to build transport tracks for minecarts. Powered rails are able to accelerate and brake minecarts.=Trilhos podem ser usados para construir traçados de transporte para carrinhos. Trilhos energizados são capazes de acelerar e frear carrinhos. +Without redstone power, the rail will brake minecarts. To make this rail accelerate minecarts, power it with redstone power.=Sem carga de redstone, o trilho vai frear os carrinhos. Para fazer o trilho acelerar os carrinhos, energize-o com uma carga de redstone. +Activator Rail=Trilho Ativador +Rails can be used to build transport tracks for minecarts. Activator rails are used to activate special minecarts.=Trilhos podem ser usados para construir traçados de transporte para carrinhos. Trilhos ativadores são usados para ativar carrinhos especiais. +To make this rail activate minecarts, power it with redstone power and send a minecart over this piece of rail.=Para fazer esse trilho ativar os carrinhos, energize-o com uma carga de redstone e envie um carrinho sobre esse pedaço de trilho. +Detector Rail=Trilho Detector +Rails can be used to build transport tracks for minecarts. A detector rail is able to detect a minecart above it and powers redstone mechanisms.=Trilhos podem ser usados para construir traçados de transporte para carrinhos. Um trilho detector é capaz de detectar um carrinho sobre ele e energizar mecanismos de redstone. +To detect a minecart and provide redstone power, connect it to redstone trails or redstone mechanisms and send any minecart over the rail.=Para detectar um carrinho e providenciar carga de redstone, conecte-o em trilhas de redstone ou mecanismos de redstone e envie qualquer carrinho sobre esse trilho. +Track for minecarts=Traçado para carrinhos +Speed up when powered, slow down when not powered=Acelera quando energizado, desacelera quando não energizado +Activates minecarts when powered=Ativa carrinhos quando energizado +Emits redstone power when a minecart is detected=Emite carga de redstone quando um carrinho é detectado +Vehicle for fast travel on rails=Veículo para viajar rápido em trilhos +Can be ignited by tools or powered activator rail=Pode ser aceso por ferramentas ou trilho ativador energizado +Sneak to dismount=Agache para desmontar From 5c06c28b0f858f958f29853bce8e728761b52f7e Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 09:25:59 -0300 Subject: [PATCH 144/375] mobs_mc pt_BR translation --- mods/ENTITIES/mobs_mc/locale/mobs_mc.pt_BR.tr | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 mods/ENTITIES/mobs_mc/locale/mobs_mc.pt_BR.tr diff --git a/mods/ENTITIES/mobs_mc/locale/mobs_mc.pt_BR.tr b/mods/ENTITIES/mobs_mc/locale/mobs_mc.pt_BR.tr new file mode 100644 index 000000000..a20d703a8 --- /dev/null +++ b/mods/ENTITIES/mobs_mc/locale/mobs_mc.pt_BR.tr @@ -0,0 +1,83 @@ +# textdomain: mobs_mc +Agent=Agente +Axolotl=Axolote +Bat=Morcego +Blaze=Blaze +Chicken=Galinha +Cow=Vaca +Mooshroom=Coguvaca +Creeper=Creeper +Ender Dragon=Dragão do Fim +Enderman=Enderman +Endermite=Endermite +Ghast=Ghast +Elder Guardian=Guardião Ancião +Guardian=Guardião +Horse=Cavalo +Skeleton Horse=Cavalo Esqueleto +Zombie Horse=Cavalo Zumbi +Donkey=Burro +Mule=Mula +Iron Golem=Golem de Ferro +Llama=Lhama +Ocelot=Jaguatirica +Cat=Gato +Parrot=Papagaio +Pig=Porco +Polar Bear=Urso Polar +Rabbit=Coelho +Killer Bunny=Coelho Assassino +Sheep=Ovelha +Shulker=Shulker +Silverfish=Traça +Skeleton=Esqueleto +Stray=Esqueleto Errante +Wither Skeleton=Esqueleto Wither +Magma Cube=Cubo de Magma +Slime=Slime +Snow Golem=Golem de Neve +Spider=Aranha +Cave Spider=Aranha de Caverna +Squid=Lula +Vex=Vex +Evoker=Invocador +Illusioner=Ilusionista +Villager=Aldeão +Vindicator=Vingador +Zombie Villager=Aldeão Zumbi +Witch=Bruxa +Wither=Wither +Wolf=Lobo +Husk=Zumbi-Múmia +Baby Husk=Zumbi-Múmia Bebê +Zombie=Zumbi +Baby Zombie=Zumbi Bebê +Piglin=Piglin +Baby Piglin=Piglin Bebê +Zombie Piglin=Piglin Zumbi +Baby Zombie Piglin=Piglin Zumbi Bebê +Sword Piglin=Piglin Espadachim +Piglin Brute=Piglin Barbáro +Farmer=Fazendeiro +Fisherman=Pescador +Fletcher=Flecheiro +Shepherd=Pastor +Librarian=Bibliotecário +Cartographer=Cartógrafo +Armorer=Armoreiro +Leatherworker=Coureiro +Butcher=Açougueiro +Weapon Smith=Armeiro +Tool Smith=Ferramenteiro +Cleric=Clérigo +Nitwit=Palerma +Cod=Bacalhau +Salmon=Salmão +Dolphin=Golfinho +Pillager=Saqueador +Tropical fish=Peixe Tropical +Hoglin=Hoglin +Baby hoglin=Hoglin Bebê +Zoglin=Zoglin +Strider=Lavagante +Glow Squid=Lula Brilhante From 947d20ae9665e68601809c07c7197c637ad53a73 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 09:44:20 -0300 Subject: [PATCH 145/375] mcl_mobs pt_BR translation --- mods/ENTITIES/mcl_mobs/locale/mcl_mobs.pt_BR.tr | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 mods/ENTITIES/mcl_mobs/locale/mcl_mobs.pt_BR.tr diff --git a/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.pt_BR.tr b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.pt_BR.tr new file mode 100644 index 000000000..20babe453 --- /dev/null +++ b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.pt_BR.tr @@ -0,0 +1,13 @@ +# textdomain: mcl_mobs +Peaceful mode active! No monsters will spawn.=Modo pacífico ativado! Nenhum monstro será gerado. +This allows you to place a single mob.=Isso permite você posicionar um único mob. +Just place it where you want the mob to appear. Animals will spawn tamed, unless you hold down the sneak key while placing. If you place this on a mob spawner, you change the mob it spawns.=Posicione-o onde você deseja que o mob apareça. Animais serão gerados domesticados, a menos que você segure pressionada a tecla de agachar enquanto posiciona. Se você posicionar em um gerador de mobs, você muda o mob que será gerado. +You need the “maphack” privilege to change the mob spawner.=Você precisa do privilégio "maphack" para mudar o gerador de mobs. +Name Tag=Etiqueta +A name tag is an item to name a mob.=Uma etiqueta é um item para nomear um mob. +Before you use the name tag, you need to set a name at an anvil. Then you can use the name tag to name a mob. This uses up the name tag.=Antes de você usar a etiqueta, você precisa determinar um nome em uma bigorna. Assim você pode usar a etiqueta para nomear um mob. Isso consumirá a etiqueta. +Only peaceful mobs allowed!=Apenas mobs pacíficos permitidos! +Give names to mobs=Dá nome aos mobs +Set name at anvil=Determine um nome em uma bigorna +Removes specified mobs except nametagged and tamed ones. For the second parameter, use nametagged/tamed to select only nametagged/tamed mobs, or a range to specify a maximum distance from the player.=Remove mobs especifícos exceto os mobs nomeados ou domesticados. Como segundo parâmetro, use nametagged/tamed para selecionar apenas mobs nomeados/domesticados, ou um alcançe para especificar uma distância máxima em relação ao jogador. +Default usage. Clearing hostile mobs. For more options please type: /help clearmobs=Uso padrão. Eliminando mobs hostis. Para mais opções por favor digite: /help clearmobs From f379a069989df00a3cc23e8bdd9c76c4ee893a58 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 09:47:20 -0300 Subject: [PATCH 146/375] mcl_raids pt_BR translation --- mods/ENVIRONMENT/mcl_raids/locale/mcl_raids.pt_BR.tr | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 mods/ENVIRONMENT/mcl_raids/locale/mcl_raids.pt_BR.tr diff --git a/mods/ENVIRONMENT/mcl_raids/locale/mcl_raids.pt_BR.tr b/mods/ENVIRONMENT/mcl_raids/locale/mcl_raids.pt_BR.tr new file mode 100644 index 000000000..cd59abb96 --- /dev/null +++ b/mods/ENVIRONMENT/mcl_raids/locale/mcl_raids.pt_BR.tr @@ -0,0 +1,2 @@ +# textdomain: mcl_raids +Ominous Banner=Estandarte Ameaçador From 72a144f0b2f4a73b1fd33078eff0a5caa79f0b13 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 09:49:41 -0300 Subject: [PATCH 147/375] mcl_void_damage pt_BR translation --- .../mcl_void_damage/locale/mcl_void_damage.pt_BR.tr | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 mods/ENVIRONMENT/mcl_void_damage/locale/mcl_void_damage.pt_BR.tr diff --git a/mods/ENVIRONMENT/mcl_void_damage/locale/mcl_void_damage.pt_BR.tr b/mods/ENVIRONMENT/mcl_void_damage/locale/mcl_void_damage.pt_BR.tr new file mode 100644 index 000000000..c4e2152ba --- /dev/null +++ b/mods/ENVIRONMENT/mcl_void_damage/locale/mcl_void_damage.pt_BR.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_void_damage +The void is off-limits to you!=O vazio está fora dos limites para você! +@1 fell into the endless void.=@1 caiu em um vazio sem fim. From 419456b83505c13a39456d2e745f254bfe4dc704 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 09:54:41 -0300 Subject: [PATCH 148/375] mcl_weather pt_BR translation --- mods/ENVIRONMENT/mcl_weather/locale/mcl_weather.pt_BR.tr | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 mods/ENVIRONMENT/mcl_weather/locale/mcl_weather.pt_BR.tr diff --git a/mods/ENVIRONMENT/mcl_weather/locale/mcl_weather.pt_BR.tr b/mods/ENVIRONMENT/mcl_weather/locale/mcl_weather.pt_BR.tr new file mode 100644 index 000000000..3d91979ae --- /dev/null +++ b/mods/ENVIRONMENT/mcl_weather/locale/mcl_weather.pt_BR.tr @@ -0,0 +1,8 @@ +# textdomain: mcl_weather +Gives ability to control weather=Dá a habilidade de controlar o clima +Changes the weather to the specified parameter.=Muda o clima para o parâmetro especificado. +Error: No weather specified.=Erro: Nenhum clima especificado. +Error: Invalid parameters.=Erro: Parâmetros inválidos. +Error: Duration can't be less than 1 second.=Erro: Duração não pode ser menor que 1 segundo. +Error: Invalid weather specified. Use “clear”, “rain”, “snow” or “thunder”.=Erro: Clima especificado é inválido. Use "clear", "rain", "snow" ou "thunder". +Toggles between clear weather and weather with downfall (randomly rain, thunderstorm or snow)=Alterna entre clima limpo e clima com quedas (aleatoriamente chuva, tempestade ou neve) From a3ccd4d0328a8f73ca34601df75150932bf61b52 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 10:00:30 -0300 Subject: [PATCH 149/375] lightning pt_BR translation --- mods/ENVIRONMENT/lightning/locale/lightning.pt_BR.tr | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 mods/ENVIRONMENT/lightning/locale/lightning.pt_BR.tr diff --git a/mods/ENVIRONMENT/lightning/locale/lightning.pt_BR.tr b/mods/ENVIRONMENT/lightning/locale/lightning.pt_BR.tr new file mode 100644 index 000000000..f896e3ac1 --- /dev/null +++ b/mods/ENVIRONMENT/lightning/locale/lightning.pt_BR.tr @@ -0,0 +1,3 @@ +# textdomain: lightning +Let lightning strike at the specified position or player. No parameter will strike yourself.=Deixa o relâmpago acertar a posição ou jogador especificado. Nenhum parâmetro irá acertar você mesmo. +No position specified and unknown player=Nenhuma posição especificada e jogador desconhecido From f824f109e2e3767ce0499c5d903eb49a948330ea Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 11:11:07 -0300 Subject: [PATCH 150/375] mcl_structures pt_BR translation --- mods/MAPGEN/mcl_structures/locale/mcl_structures.pt_BR.tr | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 mods/MAPGEN/mcl_structures/locale/mcl_structures.pt_BR.tr diff --git a/mods/MAPGEN/mcl_structures/locale/mcl_structures.pt_BR.tr b/mods/MAPGEN/mcl_structures/locale/mcl_structures.pt_BR.tr new file mode 100644 index 000000000..557cf4c21 --- /dev/null +++ b/mods/MAPGEN/mcl_structures/locale/mcl_structures.pt_BR.tr @@ -0,0 +1,7 @@ +# textdomain: mcl_structures +Generate a pre-defined structure near your position.=Gera uma estrutura pré-definida próximo a sua posição. +Structure placed.=Estrutura posicionada. +Village built. WARNING: Villages are experimental and might have bugs.=Aldeia construída. AVISO: Aldeias são experimentais e podem conter bugs. +Error: No structure type given. Please use “/spawnstruct ”.=Erro: Nenhum tipo de estrutura fornecido. Por favor use “/spawnstruct ”. +Error: Unknown structure type. Please use “/spawnstruct ”.=Erro: Tipo desconhecido de estrutura. Por favor use “/spawnstruct ”. +Use /help spawnstruct to see a list of avaiable types.= Use /help spawnstruct para ver uma lista dos tipos disponíveis. From aef093ef4ecef726409f940310b8f12abbecf6f0 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 11:14:33 -0300 Subject: [PATCH 151/375] doc_items pt_BR translation correction --- mods/HELP/doc/doc_items/locale/doc_items.pt_BR.tr | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/HELP/doc/doc_items/locale/doc_items.pt_BR.tr b/mods/HELP/doc/doc_items/locale/doc_items.pt_BR.tr index abcf11547..504d4e264 100644 --- a/mods/HELP/doc/doc_items/locale/doc_items.pt_BR.tr +++ b/mods/HELP/doc/doc_items/locale/doc_items.pt_BR.tr @@ -10,12 +10,12 @@ # Itemname (ca. 25%) @1 (ca. @2%)= # List separator (e.g. “one, two, three”) -, =, +, =, # Final list separator (e.g. “One, two and three”) - and = e + and = e 1 second=1 segundo A transparent block, basically empty space. It is usually left behind after digging something.=Um bloco transparente, basicamente um vazio. Isso geralmente fica no lugar de um bloco removido. -Air=Ár +Air=Ar Blocks=Blocos Building another block at this block will place it inside and replace it.=Construir outro bloco nesse bloco vai subistitui-lo. Building this block is completely silent.=Construir esse bloco é completamente silencioso. From 76e941cbb6a9c18d4e917a98d72cdaf9e1cb5743 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 11:17:06 -0300 Subject: [PATCH 152/375] doc_items pt_BR translation missing translation --- mods/HELP/doc/doc_items/locale/doc_items.pt_BR.tr | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mods/HELP/doc/doc_items/locale/doc_items.pt_BR.tr b/mods/HELP/doc/doc_items/locale/doc_items.pt_BR.tr index 504d4e264..eec43dba7 100644 --- a/mods/HELP/doc/doc_items/locale/doc_items.pt_BR.tr +++ b/mods/HELP/doc/doc_items/locale/doc_items.pt_BR.tr @@ -129,12 +129,12 @@ Unknown item (@1)=Item desconhecido (@1) • @1: @2, @3= • Flowing range: @1= • No flowing= -• Not renewable= -• Renewable= -• Viscosity: @1= +• Not renewable=• Não renovável +• Renewable=• Renovável +• Viscosity: @1=• Viscosidade: @1 Itemstring: "@1"= -Durability: @1 uses= -Durability: @1= +Durability: @1 uses=Durabilidade: @1 usos +Durability: @1=Durabilidade: @1 Mining durability:= • @1, level @2: @3 uses= • @1, level @2: Unlimited= From 6f9b70a98d2b36673435060d6d380b5ce5eab7cf Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 14:54:36 -0300 Subject: [PATCH 153/375] mcl_fireworks pt_BR translation --- mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.pt_BR.tr | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.pt_BR.tr diff --git a/mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.pt_BR.tr b/mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.pt_BR.tr new file mode 100644 index 000000000..6b42dd610 --- /dev/null +++ b/mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.pt_BR.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_fireworks +Firework Rocket=Foguete +Flight Duration:=Duração de Voo: From 6cbd98597481c4b15c3a27ee34f82299d16b7c52 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 15:26:32 -0300 Subject: [PATCH 154/375] mcl_honey pt_BR translation --- mods/ITEMS/mcl_honey/locale/mcl_honey.pt_BR.tr | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 mods/ITEMS/mcl_honey/locale/mcl_honey.pt_BR.tr diff --git a/mods/ITEMS/mcl_honey/locale/mcl_honey.pt_BR.tr b/mods/ITEMS/mcl_honey/locale/mcl_honey.pt_BR.tr new file mode 100644 index 000000000..cb6ae1d53 --- /dev/null +++ b/mods/ITEMS/mcl_honey/locale/mcl_honey.pt_BR.tr @@ -0,0 +1,11 @@ +# textdomain: mcl_honey +Honeycomb=Favo de Mel +Used to craft beehives and protect copper blocks from further oxidation.=Usado para fabricar colméias artificiais e protejer blocos de cobre da oxidação adicional. +Use on copper blocks to prevent further oxidation.=Use em blocos de cobre para previnir oxidação adicional. +Honeycomb Block=Bloco de Favo de Mel +Honeycomb Block. Used as a decoration.=Bloco de Favo de Mel. Usado como decoração +Honey Bottle=Garrafa de Mel +Honey Bottle is used to craft honey blocks and to restore hunger points.=Garrafa de Mel é usada para fabricar blocos de mel e para restaurar pontos de fome. +Drinking will restore 6 hunger points. Can also be used to craft honey blocks.=Beber irá restaurar 6 pontos de fome. Também pode ser usada para fabricar blocos de mel. +Honey Block=Bloco de Mel +Honey Block. Used as a decoration and in redstone. Is sticky on some sides.=Bloco de Mel. Usado como decoração e em redstone. É pegajoso em alguns lados. From 86d5e748bb69a3d590817a20f92930d4bf1b1030 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 15:33:58 -0300 Subject: [PATCH 155/375] mcl_craftguide pt_BR translation --- .../locale/mcl_craftguide.pt_BR.tr | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 mods/HELP/mcl_craftguide/locale/mcl_craftguide.pt_BR.tr diff --git a/mods/HELP/mcl_craftguide/locale/mcl_craftguide.pt_BR.tr b/mods/HELP/mcl_craftguide/locale/mcl_craftguide.pt_BR.tr new file mode 100644 index 000000000..d5bf41235 --- /dev/null +++ b/mods/HELP/mcl_craftguide/locale/mcl_craftguide.pt_BR.tr @@ -0,0 +1,37 @@ +# textdomain: craftguide +Any shulker box=Qualquer caixa shulker +Any wool=Qualquer lã +Any wood planks=Quaisquer tábuas de madeira +Any wood=Qualquer madeira +Any sand=Qualquer areia +Any normal sandstone=Qualquer arenito normal +Any red sandstone=Qualquer arenito vermelho +Any carpet=Qualquer carpete +Any dye=Qualquer tintura +Any water bucket=Qualquer balde de água +Any flower=Qualquer flor +Any mushroom=Qualquer cogumelo +Any wooden slab=Qualquer laje de madeira +Any wooden stairs=Quaisquer escadas de madeira +Any coal=Qualquer carvão +Any kind of quartz block=Qualquer tipo de bloco de quartzo +Any kind of purpur block=Qualquer tipo de bloco de purpúra +Any stone bricks=Quaisquer tijolos de pedra +Any stick=Qualquer graveto +Any item belonging to the @1 group=Qualquer item pertencente ao grupo @1 +Any item belonging to the groups: @1=Qualquer item pertencente aos grupos: @1 +Search=Pesquisar +Reset=Resetar +Previous page=Página anterior +Next page=Página posterior +Usage @1 of @2=Uso @1 de @2 +Recipe @1 of @2=Receita @1 de @2 +Burning time: @1=Tempo de queima: @1 +Cooking time: @1=Tempo de cozimento: @1 +Recipe is too big to be displayed (@1×@2)=Receita é muito grande para ser mostrada (@1x@2) +Shapeless=Sem forma +Cooking=Cozimento +Increase window size=Aumentar tamanho da janela +Decrease window size=Diminuir tamanho da janela +No item to show=Nenhum item para mostrar +Collect items to reveal more recipes=Colete itens para revelar mais receitas From 527577cbcc05dbe5a78509d0ce25881a6d49052b Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 16:07:06 -0300 Subject: [PATCH 156/375] mcl_raw_ores pt_BR translation --- mods/ITEMS/mcl_raw_ores/locale/mcl_raw_ores.pt_BR.tr | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 mods/ITEMS/mcl_raw_ores/locale/mcl_raw_ores.pt_BR.tr diff --git a/mods/ITEMS/mcl_raw_ores/locale/mcl_raw_ores.pt_BR.tr b/mods/ITEMS/mcl_raw_ores/locale/mcl_raw_ores.pt_BR.tr new file mode 100644 index 000000000..810557d4a --- /dev/null +++ b/mods/ITEMS/mcl_raw_ores/locale/mcl_raw_ores.pt_BR.tr @@ -0,0 +1,9 @@ +# textdomain: mcl_raw_ores +Raw Iron=Ferro Cru +Raw Gold=Ouro Cru +Raw iron. Mine an iron ore to get it.=Ferro cru. Minere um minério de ferro para obtê-lo. +Raw gold. Mine a gold ore to get it.=Ouro cru. Minere um minério de ouro para obtê-lo. +Block of Raw Iron=Bloco de Ferro Cru +Block of Raw Gold=Bloco de Ouro Cru +A block of raw iron is mostly a decorative block but also useful as a compact storage of raw iron.=Um bloco de ferro cru é majoritariamente um bloco decorativo mas também útil como um armazenamento compacto de ferro cru. +A block of raw gold is mostly a decorative block but also useful as a compact storage of raw gold.=Um bloco de ouro cru é majoritariamente um bloco decorativo mas também útil como um armazenamento compacto de ouro cru. From 9371ed5c4838edb74bc78ad14b805e3363fb8c93 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 16:12:22 -0300 Subject: [PATCH 157/375] mcl_spyglass pt_BR translation --- mods/ITEMS/mcl_spyglass/locale/mcl_spyglass.pt_BR.tr | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 mods/ITEMS/mcl_spyglass/locale/mcl_spyglass.pt_BR.tr diff --git a/mods/ITEMS/mcl_spyglass/locale/mcl_spyglass.pt_BR.tr b/mods/ITEMS/mcl_spyglass/locale/mcl_spyglass.pt_BR.tr new file mode 100644 index 000000000..60d730206 --- /dev/null +++ b/mods/ITEMS/mcl_spyglass/locale/mcl_spyglass.pt_BR.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_spyglass +Spyglass=Luneta +A spyglass is an item that can be used for zooming in on specific locations.=Uma luneta é um item que pode ser usado para dar zoom em uma localidade especifica. From 01641b5a8c6e2206aec1223c00e966b59d7296f1 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 16:19:16 -0300 Subject: [PATCH 158/375] mcl_flowerpots pt_BR translation --- .../locale/mcl_flowerpots.pt_BR.tr | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.pt_BR.tr diff --git a/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.pt_BR.tr b/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.pt_BR.tr new file mode 100644 index 000000000..563e252c3 --- /dev/null +++ b/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.pt_BR.tr @@ -0,0 +1,27 @@ +# textdomain: mcl_flowerpots +Dandelion Flower Pot=Vaso com Dente-de-Leão +Poppy Flower Pot=Vaso com Papoula +Blue Orchid Flower Pot=Vaso com Orquídea Azul +Allium Flower Pot=Vaso com Alho Silvestre +Azure Bluet Flower Pot=Vaso com Flor Silvestre Azul +Red Tulip Flower Pot=Vaso com Tulipa Vermelha +Pink Tulip Flower Pot=Vaso com Tulipa Rose +White Tulip Flower Pot=Vaso com Tulipa Branca +Orange Tulip Flower Pot=Vaso com Tulipa Laranja +Oxeye Daisy Flower Pot=Vaso com Margarida +Brown Mushroom Flower Pot=Vaso com Cogumelo Marrom +Red Mushroom Flower Pot=Vaso com Cogumelo Vermelho +Oak Sapling Flower Pot=Vaso com Muda de Carvalho +Acacia Sapling Flower Pot=Vaso com Muda de Acácia +Jungle Sapling Flower Pot=Vaso com Muda da Selva +Dark Oak Sapling Flower Pot=Vaso com Muda de Carvalho Escuro +Spruce Sapling Flower Pot=Vaso com Muda de Pinheiro +Birch Sapling Flower Pot=Vaso com Muda de Bétula +Dead Bush Flower Pot=Vaso com Arbusto Morto +Fern Flower Pot=Vaso com Samambaia +Cactus Flower Pot=Vaso com Cacto +Flower Pot=Vaso +Flower pots are decorative blocks in which flowers and other small plants can be placed.=Vasos são blocos decorativos aos quais flores e plantas pequenas podem ser posicionadas. +Just place a plant on the flower pot. Flower pots can hold small flowers (not higher than 1 block), saplings, ferns, dead bushes, mushrooms and cacti. Rightclick a potted plant to retrieve the plant.=Apenas posicione uma planta no vaso. Vasos podem segurar flores pequenas (não mais altas que 1 bloco), mudas, samambaias, arbustos mortos, cogumelos e cactos. Clique com o botão direito em uma planta envasada para recolher a planta. +Can hold a small flower or plant=Pode segurar uma flor ou planta pequenas +Cherry Sapling Flower Pot=Vaso com Muda de Cerejeira From 2da67765a0b4a3e4fdac06b0c5fee33ebbedb3e2 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 16:53:00 -0300 Subject: [PATCH 159/375] mcl_flowers pt_BR translation --- .../mcl_flowers/locale/mcl_flowers.pt_BR.tr | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 mods/ITEMS/mcl_flowers/locale/mcl_flowers.pt_BR.tr diff --git a/mods/ITEMS/mcl_flowers/locale/mcl_flowers.pt_BR.tr b/mods/ITEMS/mcl_flowers/locale/mcl_flowers.pt_BR.tr new file mode 100644 index 000000000..dcd5b5a14 --- /dev/null +++ b/mods/ITEMS/mcl_flowers/locale/mcl_flowers.pt_BR.tr @@ -0,0 +1,35 @@ +# textdomain: mcl_flowers +This is a small flower. Small flowers are mainly used for dye production and can also be potted.=Isso é uma flor pequena. Flores pequenas são majoritariamente usadas para a produção de corantes e também podem ser envasadas. +It can only be placed on a block on which it would also survive.=Apenas pode ser posicionada em um bloco ao qual vai sobreviver. +Poppy=Papoula +Dandelion=Dente-de-Leão +Oxeye Daisy=Margarida +Orange Tulip=Tulipa Laranja +Pink Tulip=Tulipa Rosa +Red Tulip=Tulipa Vermelha +White Tulip=Tulipa Branca +Allium=Alho Silvestre +Azure Bluet=Flor Silvestre Azul +Blue Orchid=Orquídea Azul +Wither Rose=Flor do Wither +Lily of the Valley=Lírio do Vale +Cornflower=Centáurea +Tall Grass=Grama Alta +Tall grass is a small plant which often occurs on the surface of grasslands. It can be harvested for wheat seeds. By using bone meal, tall grass can be turned into double tallgrass which is two blocks high.=Grama alta é uma planta pequena que muitas vezes ocorre na superfície de gramados. Pode ser colhida para obter sementes de trigo. Usando farinha de osso, a grama alta pode ser transformada em grama alta dupla a qual têm dois blocos de altura. +Fern=Samambaia +Ferns are small plants which occur naturally in jungles and taigas. They can be harvested for wheat seeds. By using bone meal, a fern can be turned into a large fern which is two blocks high.=Samambaias são plantas pequenas que ocorrem naturalmente em selvas e taigas. Podem ser colhidas para obter sementes de trigo. Usando farinha de osso, uma samambaia pode ser transformada em uma samambaia grande a qual têm dois blocos de altura. +(Top Part)=(Parte de Cima) +Peony=Peônia +A peony is a large plant which occupies two blocks. It is mainly used in dye production.=Uma peônia é uma planta alta que ocupa dois blocos. É majoritariamente usada para a produção de corante. +Rose Bush=Roseira +A rose bush is a large plant which occupies two blocks. It is safe to touch it. Rose bushes are mainly used in dye production.=Uma roseira é uma planta alta que ocupa dois blocos. É seguro tocá-la. Roseiras são majoritariamente usadas para a produção de corante. +Lilac=Lilás +A lilac is a large plant which occupies two blocks. It is mainly used in dye production.=Uma lilás é uma planta alta que ocupa dois blocos. É majoritariamente usada para a produção de corante. +Sunflower=Girassol +A sunflower is a large plant which occupies two blocks. It is mainly used in dye production.=Um girassol é uma planta alta que ocupa dois blocos. É majoritariamente usada para a produção de corante. +Double tallgrass a variant of tall grass and occupies two blocks. It can be harvested for wheat seeds.=Grama alta dupla é uma variante da grama alta e ocupa dois blocos. Pode ser colhida para obter sementes de trigo. +Large fern is a variant of fern and occupies two blocks. It can be harvested for wheat seeds.=Samambaia grande é uma variante da samambaia e ocupa dois blocos. Pode ser colhida para obter sementes de trigo. +Double Tallgrass=Grama Alta Dupla +Large Fern=Samambaia Grande +Lily Pad=Vitória-Régia +A lily pad is a flat plant block which can be walked on. They can be placed on water sources, ice and frosted ice.=Uma vitória-régia é um bloco de planta plano que pode ser pisado. Podem ser posicionadas em fontes de água, gelo e gelo fosco. From 9be815956cb456dadf7bb0feb41cfa84b0371c20 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 18:48:37 -0300 Subject: [PATCH 160/375] mcl_signs pt_BR translation --- .../ITEMS/mcl_signs/locale/mcl_signs.pt_BR.tr | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 mods/ITEMS/mcl_signs/locale/mcl_signs.pt_BR.tr diff --git a/mods/ITEMS/mcl_signs/locale/mcl_signs.pt_BR.tr b/mods/ITEMS/mcl_signs/locale/mcl_signs.pt_BR.tr new file mode 100644 index 000000000..08d67d573 --- /dev/null +++ b/mods/ITEMS/mcl_signs/locale/mcl_signs.pt_BR.tr @@ -0,0 +1,19 @@ +# textdomain: mcl_signs +Sign=Placa +Signs can be written and come in two variants: Wall sign and sign on a sign post. Signs can be placed on the top and the sides of other blocks, but not below them.=Placas podem ser escritas e vêm em duas variantes: Placa de parede e placa de poste. Placas podem ser posicionadas na parte superior e nas laterais de outros blocos, mas não abaixo deles. +After placing the sign, you can write something on it. You have 4 lines of text with up to 15 characters for each line; anything beyond these limits is lost. Not all characters are supported. The text can not be changed once it has been written; you have to break and place the sign again. Can be colored and made to glow.=Depois de posicionar a placa, você pode escrever qualquer coisa nela. Você tem 4 linhas de texto com 15 caracteres em cada linha; qualquer coisa além desses limites será perdido. Nem todos os caracteres são suportados. O texto não pode ser alterado uma vez que esse foi escrito; você terá que quebrar e posicionar a placa novamente. Pode ser colorida e pode brilhar. +Enter sign text:=Insira o texto da placa: +Maximum line length: 15=Comprimento máximo da linha: 15 +Maximum lines: 4=Máximo de linhas: 4 +Done=Feito +Can be written=Pode ser escrito +Oak Sign=Placa de Carvalho +Birch Sign=Placa de Bétula +Spruce Sign=Placa de Pinheiro +Dark Oak Sign=Placa de Carvalho Escuro +Jungle Sign=Placa da Selva +Acacia Sign=Placa de Acácia +Mangrove Sign=Placa de Mangue +Warped Hyphae Sign=Placa de Hifas Distorcidas +Crimson Hyphae Sign=Placa de Hifas Carmesim +Bamboo Sign=Placa de Bambu From 34c23bd578f734ddba6b67acfd3ae2b7cfb41b4a Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 18:58:49 -0300 Subject: [PATCH 161/375] mcl_tnt pt_BR translation --- mods/ITEMS/mcl_tnt/locale/mcl_tnt.pt_BR.tr | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 mods/ITEMS/mcl_tnt/locale/mcl_tnt.pt_BR.tr diff --git a/mods/ITEMS/mcl_tnt/locale/mcl_tnt.pt_BR.tr b/mods/ITEMS/mcl_tnt/locale/mcl_tnt.pt_BR.tr new file mode 100644 index 000000000..739d1414b --- /dev/null +++ b/mods/ITEMS/mcl_tnt/locale/mcl_tnt.pt_BR.tr @@ -0,0 +1,8 @@ +# textdomain: mcl_tnt +@1 was caught in an explosion.=@1 foi pego(a) em uma explosão. +TNT=TNT +An explosive device. When it explodes, it will hurt living beings and destroy blocks around it. TNT has an explosion radius of @1. With a small chance, blocks may drop as an item (as if being mined) rather than being destroyed. TNT can be ignited by tools, explosions, fire, lava and redstone signals.=Um artefato explosivo. Quando explode, machuca seres vivos e destrói blocos a sua volta. A TNT tem um raio de explosão de @1. Com pouca chance, blocos talvez dropem como um item (como se fosse minerado) ao invés de ser destruido. A TNT pode ser acesa por ferramentas explosões, fogo, lava e sinais de redstone. +An explosive device. When it explodes, it will hurt living beings. TNT has an explosion radius of @1. TNT can be ignited by tools, explosions, fire, lava and redstone signals.= +Place the TNT and ignite it with one of the methods above. Quickly get in safe distance. The TNT will start to be affected by gravity and explodes in 4 seconds.= Posicione a TNT e acenda-a com um dos métodos acima. Rapidamente mantenha uma distância segura. A TNT começará a ser afetada pela gravidade e explodirá em 4 segundos. +Ignited by tools, explosions, fire, lava, redstone power=Acesa por ferramentas, explosões, fogo, lava, carga de redstone +Explosion radius: @1=Raio de explosão: @1 From b0b120dd28dfa19bff11a87fc6990874c2afb0c9 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 19:17:53 -0300 Subject: [PATCH 162/375] mcl_walls pt_BR translation --- mods/ITEMS/mcl_walls/locale/mcl_walls.pt_BR.tr | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 mods/ITEMS/mcl_walls/locale/mcl_walls.pt_BR.tr diff --git a/mods/ITEMS/mcl_walls/locale/mcl_walls.pt_BR.tr b/mods/ITEMS/mcl_walls/locale/mcl_walls.pt_BR.tr new file mode 100644 index 000000000..a344d88c0 --- /dev/null +++ b/mods/ITEMS/mcl_walls/locale/mcl_walls.pt_BR.tr @@ -0,0 +1,17 @@ +# textdomain: mcl_walls +A piece of wall. It cannot be jumped over with a simple jump. When multiple of these are placed to next to each other, they will automatically build a nice wall structure.=Um pedaço de muro. Não pode ser pulado com um pulo simples. Quando muitos desses são posicionados próximos uns aos outros, vão construir automaticamente uma bela estrutura de muro. +Cobblestone Wall=Muro de Pedregulho +Mossy Cobblestone Wall=Muro de Pedregulho Musgoso +Andesite Wall=Muro de Andesito +Granite Wall=Muro de Granito +Diorite Wall=Muro de Diorito +Brick Wall=Muro de Tijolos +Sandstone Wall=Muro de Arenito +Red Sandstone Wall=Muro de Arenito Vermelho +Stone Brick Wall=Muro de Tijolos de Pedra +Mossy Stone Brick Wall=Muro de Tijolos de Pedra Musgosos +Prismarine Wall=Muro de Prismarinho +End Stone Brick Wall=Muro de Tijolos de Pedra do Fim +Nether Brick Wall=Muro de Tijolos do Nether +Red Nether Brick Wall=Muro de Tijolos Vermelhos do Nether +Mud Brick Wall=Muro de Tijolos de Barro From 60377c56cdda4ceec777178b51ec3877fbcd6247 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 19:25:20 -0300 Subject: [PATCH 163/375] mcl_tt pt_BR translation --- mods/HELP/mcl_tt/locale/mcl_tt.pt_BR.tr | 48 +++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 mods/HELP/mcl_tt/locale/mcl_tt.pt_BR.tr diff --git a/mods/HELP/mcl_tt/locale/mcl_tt.pt_BR.tr b/mods/HELP/mcl_tt/locale/mcl_tt.pt_BR.tr new file mode 100644 index 000000000..9d00a06d4 --- /dev/null +++ b/mods/HELP/mcl_tt/locale/mcl_tt.pt_BR.tr @@ -0,0 +1,48 @@ +# textdomain: mcl_tt +Head armor=Armadura de cabeça +Torso armor=Armadura de torso +Legs armor=Armadura de pernas +Feet armor=Armadura de pés +Armor points: @1=Pontos de armadura: @1 +Armor durability: @1=Durabilidade da armadura: @1 +Protection: @1%=Proteção: @1% +Hunger points: +@1=Pontos de fome: +@1 +Saturation points: +@1=Pontos de saturação: +@1 +Deals damage when falling=Dá dano enquanto cai +Grows on grass blocks or dirt=Cresce em blocos de grama ou terra +Grows on grass blocks, podzol, dirt or coarse dirt=Cresce em blocos de grama, podzol, terra ou terra infértil +Flammable=Inflamável +Zombie view range: -50%=Alcançe de visão do zumbi: -50% +Skeleton view range: -50%=Alcançe de visão do esqueleto: -50% +Creeper view range: -50%=Alcançe de visão do creeper: -50% +Damage: @1= Dano: @1 +Damage (@1): @2=Dano (@1): @2 +Healing: @1=Cura: @1 +Healing (@1): @2=Cura (@1): @2 +Full punch interval: @1s=Intervalo completo de batida: @1s +Contact damage: @1 per second=Dano por contaro: @1 por segundo +Contact healing: @1 per second=Cura por contato: @1 por segundo +Drowning damage: @1=Dano de afogamento: @1 +Bouncy (@1%)=Saltitante (@1%) +Luminance: @1=Bliho: @1 +Slippery=Escorregadio +Climbable=Escalável +Climbable (only downwards)=Escalável (apenas em descida) +No jumping=Sem pulo +No swimming upwards=Sem natação em subida +No rising=Sem levantamento +Fall damage: @1%=Dano de queda: @1% +Fall damage: +@1%=Dano de queda: +@1% +No fall damage=Sem dano de queda +Mining speed: @1=Velocidade de mineração: @1 +Very fast=Muito rápido +Extremely fast=Extremamente rápido +Fast=Rápido +Slow=Lento +Very slow=Muito lento +Painfully slow=Dolorosamente lento +Mining durability: @1=Durabilidade de mineração: @1 +Block breaking strength: @1=Força de quebra do bloco: @1 +@1 uses=@1 usos +Unlimited uses=Usos ilimitados +Durability: @1=Durabilidade: @1 From 1524f63a6d8c00da1edd0702fa93147c88e92ee0 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 19:56:41 -0300 Subject: [PATCH 164/375] mcl_hbarmor pt_BR translation --- mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.pt_BR.tr | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.pt_BR.tr diff --git a/mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.pt_BR.tr b/mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.pt_BR.tr new file mode 100644 index 000000000..f9529b482 --- /dev/null +++ b/mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.pt_BR.tr @@ -0,0 +1,2 @@ +# textdomain:hbarmor +Armor=Armadura From 6f7ac46f0532263e4271451891454b6077ade261 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 20:39:07 -0300 Subject: [PATCH 165/375] mcl_jukebox pt_BR translation --- mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.pt_BR.tr | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.pt_BR.tr diff --git a/mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.pt_BR.tr b/mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.pt_BR.tr new file mode 100644 index 000000000..6b46f67b9 --- /dev/null +++ b/mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.pt_BR.tr @@ -0,0 +1,11 @@ +# textdomain: mcl_jukebox +Music Disc=Disco de Música +A music disc holds a single music track which can be used in a jukebox to play music.=Um disco de música contém uma única faixa de música ao qual pode ser usado em uma jukebox para tocar música. +Place a music disc into an empty jukebox to play the music. Use the jukebox again to retrieve the music disc. The music can only be heard by you, not by other players.=Posicione um disco de música em uma jukebox vazia para tocar a música. Use novamente a jukebox para pegar o disco de música de volta. A música pode ser ouvida apenas por você, não por outros jogadores. +Music Disc=Disco de Música +@1—@2=@1-@2 +Jukebox=Jukebox +Jukeboxes play music when they're supplied with a music disc.=Jukeboxes tocam música quando são abastecidas com um disco de música. +Place a music disc into an empty jukebox to insert the music disc and play music. If the jukebox already has a music disc, you will retrieve this music disc first. The music can only be heard by you, not by other players.=Posicione um disco de música em uma jukebox vazia para inserir o disco de música e tocar a música. Se a jukebox já tiver um disco de música, você pegará esse disco de música de volta antes. A música pode ser ouvida apenas por você, não por outros jogadores. +Now playing: @1—@2=Tocando: @1-@2 +Uses music discs to play music=Use discos de música para tocar música From 232740b5e6911469d457e4f6c6de1417f22bea7b Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 20:45:11 -0300 Subject: [PATCH 166/375] mcl_totems pt_BR translation --- mods/ITEMS/mcl_totems/locale/mcl_totems.pt_BR.tr | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 mods/ITEMS/mcl_totems/locale/mcl_totems.pt_BR.tr diff --git a/mods/ITEMS/mcl_totems/locale/mcl_totems.pt_BR.tr b/mods/ITEMS/mcl_totems/locale/mcl_totems.pt_BR.tr new file mode 100644 index 000000000..c7ab1f3eb --- /dev/null +++ b/mods/ITEMS/mcl_totems/locale/mcl_totems.pt_BR.tr @@ -0,0 +1,5 @@ +# textdomain: mcl_totems +Totem of Undying=Totem da Imortalidade +A totem of undying is a rare artifact which may safe you from certain death.=Um totem da imortalidade é um artefato raro ao qual pode segurar você contra certas mortes. +The totem only works while you hold it in your hand. If you receive fatal damage, you are saved from death and you get a second chance with 1 HP. The totem is destroyed in the process, however.=O totem apenas funciona enquanto você o segura em sua mão. Se você receber um dano fatal, você será salvo da morte e receberá uma segunda chance com 1 HP. Porém, o totem é destruído no processo. +Protects you from death while wielding it=Proteje você da morte enquanto você segura-o From 5489bf20ead66a144eaecf392d22f3abcace7efb Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 20:48:21 -0300 Subject: [PATCH 167/375] mcl_beehives pt_BR translation --- mods/ITEMS/mcl_beehives/locale/mcl_beehives.pt_BR.tr | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 mods/ITEMS/mcl_beehives/locale/mcl_beehives.pt_BR.tr diff --git a/mods/ITEMS/mcl_beehives/locale/mcl_beehives.pt_BR.tr b/mods/ITEMS/mcl_beehives/locale/mcl_beehives.pt_BR.tr new file mode 100644 index 000000000..cf4923a83 --- /dev/null +++ b/mods/ITEMS/mcl_beehives/locale/mcl_beehives.pt_BR.tr @@ -0,0 +1,5 @@ +# textdomain: mcl_beehives +Beehive=Colméia Artificial +Artificial bee nest.=Colméia artificial. +Bee Nest=Colméia +A naturally generating block that houses bees and a tasty treat...if you can get it.=Um bloco naturalmente gerado que abriga abelhas e um regalo saboroso...se você conseguir pegá-lo. From 0626c3329b722fab08de82457707b7f8a2afd07a Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 21:05:24 -0300 Subject: [PATCH 168/375] mcl_sculk pt_BR translation --- mods/ITEMS/mcl_sculk/locale/mcl_sculk.pt_BR.tr | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 mods/ITEMS/mcl_sculk/locale/mcl_sculk.pt_BR.tr diff --git a/mods/ITEMS/mcl_sculk/locale/mcl_sculk.pt_BR.tr b/mods/ITEMS/mcl_sculk/locale/mcl_sculk.pt_BR.tr new file mode 100644 index 000000000..bbafc5c76 --- /dev/null +++ b/mods/ITEMS/mcl_sculk/locale/mcl_sculk.pt_BR.tr @@ -0,0 +1,7 @@ +# textdomain: mcl_sculk +Sculk=Sculk +Sculk Vein=Veio Sculk +Sculk vein.=Veio sculk. +Sculk Catalyst=Catalizador Sculk +Sculk Sensor=Sensor Sculk +Sculk Shrieker=Emissor Sculk From 3684cb8d2a7b1371002fa3bdc0a5367cd5104bc1 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 21:16:35 -0300 Subject: [PATCH 169/375] mcl_cherry_blossom pt_BR translation --- .../locale/mcl_cherry_blossom.pt_BR.tr | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 mods/ITEMS/mcl_cherry_blossom/locale/mcl_cherry_blossom.pt_BR.tr diff --git a/mods/ITEMS/mcl_cherry_blossom/locale/mcl_cherry_blossom.pt_BR.tr b/mods/ITEMS/mcl_cherry_blossom/locale/mcl_cherry_blossom.pt_BR.tr new file mode 100644 index 000000000..e3dc6d2fd --- /dev/null +++ b/mods/ITEMS/mcl_cherry_blossom/locale/mcl_cherry_blossom.pt_BR.tr @@ -0,0 +1,24 @@ +# textdomain: mcl_cherry_blossom +Cherry Log=Tronco de Cerejeira +The trunk of a cherry blossom tree.=O tronco de uma árvore de cerejeira. +Stripped Cherry Log=Tronco de Cerejeira Descascado +The stripped trunk of a cherry blossom tree.=O tronco descascado de uma árvore de cerejeira. +Cherry Bark=Casca de Cerejeira +This is a decorative block surrounded by the bark of a tree trunk.=Esse é um bloco decorativo rodeado pela casca do tronco de uma árvore. +Stripped Cherry Wood=Madeira de Cerejeira Descascada +The stripped wood of a cherry blossom tree.=A madeira descascada da árvore de cerejeira. +Cherry Wood Planks=Tábuas de Cerejeira +Cherry Leaves=Folhas de Cerejeira +Cherry blossom leaves are grown from cherry blossom trees.=Folhas de cerejeira crescem em árvores de cerejeira. +Cherry Sapling=Muda de Cerejeira +Cherry blossom sapling can be planted to grow cherry trees.=Muda de cerejeira pode ser plantada para crescer árvores de cerejeira. +Cherry Door=Porta de Cerejeira +Cherry Trapdoor=Alçapão de Cerejeira +Cherry Stairs=Escadas de Cerejeira +Cherry Slab=Laje de Cerejeira +Double Cherry Slab=Laje Dupla de Cerejeira +Cherry Sign=Placa de Cerejeira +Cherry Fence=Cerca de Cerejeira +Cherry Gate=Portão de Cerejeira +Cherry Pressure Plate=Placa de Pressão de Cerejeira +Cherry Button=Botão de Cerejeira From a93ce7af1f3700c7c81beea09d236c83a4c74975 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 21:18:15 -0300 Subject: [PATCH 170/375] mcl_inventory pt_BR translation --- .../locale/mcl_inventory.pt_BR.tr | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 mods/HUD/mcl_inventory/locale/mcl_inventory.pt_BR.tr diff --git a/mods/HUD/mcl_inventory/locale/mcl_inventory.pt_BR.tr b/mods/HUD/mcl_inventory/locale/mcl_inventory.pt_BR.tr new file mode 100644 index 000000000..a24e6afed --- /dev/null +++ b/mods/HUD/mcl_inventory/locale/mcl_inventory.pt_BR.tr @@ -0,0 +1,22 @@ +# textdomain: mcl_inventory +Recipe book=Livro de receitas +Help=Ajuda +Select player skin=Selecionar skin do jogador +Advancements=Progressos +Building Blocks=Blocos de construção +Decoration Blocks=Blocos de decoração +Redstone=Redstone +Transportation=Transporte +Brewing=Fermentação +Miscellaneous=Diversos +Search Items=Pesquisar Itens +Foodstuffs=Comida +Tools=Ferramentas +Combat=Combate +Mobs=Mobs +Materials=Materiais +Survival Inventory=Inventário do Sobrevivência +Crafting=Fabricação +Inventory=Inventário +@1/@2=@1/@2 +Switch stack size=Trocar tamanho da pilha From e2746adea8792239fae2bc31a0c970d37059b4e1 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 21:29:46 -0300 Subject: [PATCH 171/375] mcl_furnaces pt_BR translation --- mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.pt_BR.tr | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.pt_BR.tr diff --git a/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.pt_BR.tr b/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.pt_BR.tr new file mode 100644 index 000000000..e7e02f52b --- /dev/null +++ b/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.pt_BR.tr @@ -0,0 +1,12 @@ +# textdomain: mcl_furnaces +Furnace=Fornalha +Furnaces cook or smelt several items, using a furnace fuel, into something else.=Fornalhas cozinham ou derretem vários itens, usando um combustível de fornalha,para transformá=los em outras coisas. +Use the furnace to open the furnace menu.=Use a fornalha para abrir o menu da fornalha. +Place a furnace fuel in the lower slot and the source material in the upper slot.=Posicione um combustível de fornalha no slot mais baixo e o material fonte no slot acima. +The furnace will slowly use its fuel to smelt the item.=A fornalha irá usar lentamente seu combustível para derreter o item. +The result will be placed into the output slot at the right side.=O resultado será posicionado no slot de saída no lado direito. +Use the recipe book to see what you can smelt, what you can use as fuel and how long it will burn.=Use o livro de receitas para ver o que você pode derreter, o que você pode usar como combustível e por quanto tempo irá queimar. +Burning Furnace=Fornalha Queimando +Recipe book=Livro de receitas +Inventory=Inventário +Uses fuel to smelt or cook items=Usa combustível para derreter ou cozinhar itens From 9701526d162f9b491f9b60e056fcc51066a335fa Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 22:24:13 -0300 Subject: [PATCH 172/375] mcl_skins pt_BR translation --- mods/PLAYER/mcl_skins/locale/mcl_skins.pt_BR.tr | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 mods/PLAYER/mcl_skins/locale/mcl_skins.pt_BR.tr diff --git a/mods/PLAYER/mcl_skins/locale/mcl_skins.pt_BR.tr b/mods/PLAYER/mcl_skins/locale/mcl_skins.pt_BR.tr new file mode 100644 index 000000000..db1de34d1 --- /dev/null +++ b/mods/PLAYER/mcl_skins/locale/mcl_skins.pt_BR.tr @@ -0,0 +1,14 @@ +# textdomain: mcl_skins +Skins=Skins +Templates=Modelos +Arm size=Tamanho do Braço +Bases=Bases +Footwears=Calçados +Eyes=Olhos +Mouths=Bocas +Bottoms=Inferiores +Tops=Superiores +Hairs=Cabelos +Headwears=Acessórios +Open skin configuration screen.=Abrir tela de configuração de skin. +Select=Selecionar From 09a063256b5479b1db91d076a2142dbfebe83a14 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 22:36:16 -0300 Subject: [PATCH 173/375] mcl_wip pt_BR translation --- mods/MISC/mcl_wip/locale/mcl_wip.pt_BR.tr | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 mods/MISC/mcl_wip/locale/mcl_wip.pt_BR.tr diff --git a/mods/MISC/mcl_wip/locale/mcl_wip.pt_BR.tr b/mods/MISC/mcl_wip/locale/mcl_wip.pt_BR.tr new file mode 100644 index 000000000..9a30f5466 --- /dev/null +++ b/mods/MISC/mcl_wip/locale/mcl_wip.pt_BR.tr @@ -0,0 +1,4 @@ +# textdomain: mcl_wip +# WIP means “Work in Progress” +(WIP)=(Trabalho em progresso) +(Temporary)=(Temporário) From 21a10751d1c1d52d3344e899e57575fe006e1a36 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 22:42:01 -0300 Subject: [PATCH 174/375] mcl_lanterns pt_BR translation --- mods/ITEMS/mcl_lanterns/locale/mcl_lanterns.pt_BR.tr | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 mods/ITEMS/mcl_lanterns/locale/mcl_lanterns.pt_BR.tr diff --git a/mods/ITEMS/mcl_lanterns/locale/mcl_lanterns.pt_BR.tr b/mods/ITEMS/mcl_lanterns/locale/mcl_lanterns.pt_BR.tr new file mode 100644 index 000000000..de683f688 --- /dev/null +++ b/mods/ITEMS/mcl_lanterns/locale/mcl_lanterns.pt_BR.tr @@ -0,0 +1,6 @@ +# textdomain: mcl_lanterns +Lantern=Lanterna +Soul Lantern=Lanterna das Almas +Lanterns are light sources which can be placed on the top or the bottom of most blocks.=Lanternas são fontes de luz as quais podem ser posicionadas na parte superior ou inferior da maioria blocos. +Chain=Corrente +Chains are metallic decoration blocks.=Correntes são blocos de decoração metálicos. From 840381f73fffcf61e6eb1c19698692f96e1d3373 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 30 Nov 2023 22:44:14 -0300 Subject: [PATCH 175/375] mcl_fletching_table pt_BR translation --- .../mcl_fletching_table/locale/mcl_fletching_table.pt_BR.tr | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 mods/ITEMS/mcl_fletching_table/locale/mcl_fletching_table.pt_BR.tr diff --git a/mods/ITEMS/mcl_fletching_table/locale/mcl_fletching_table.pt_BR.tr b/mods/ITEMS/mcl_fletching_table/locale/mcl_fletching_table.pt_BR.tr new file mode 100644 index 000000000..a2b7e38b5 --- /dev/null +++ b/mods/ITEMS/mcl_fletching_table/locale/mcl_fletching_table.pt_BR.tr @@ -0,0 +1,4 @@ +# textdomain: mcl_fletching_table +Fletching Table=Bancada de Arco e Flecha +A fletching table=Uma bancada de arco e flecha +This is the fletcher villager's work station. It currently has no use beyond decoration.=Essa é a estação de trabalho do aldeão flecheiro. Atualmente não possui usos além de decoração. From 334ac81f589a32f8dd4331696a5ae3f3bc9e1ca6 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 05:43:22 -0300 Subject: [PATCH 176/375] mcl_fences pt_BR translation --- .../mcl_fences/locale/mcl_fences.pt_BR.tr | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 mods/ITEMS/mcl_fences/locale/mcl_fences.pt_BR.tr diff --git a/mods/ITEMS/mcl_fences/locale/mcl_fences.pt_BR.tr b/mods/ITEMS/mcl_fences/locale/mcl_fences.pt_BR.tr new file mode 100644 index 000000000..7c55be53d --- /dev/null +++ b/mods/ITEMS/mcl_fences/locale/mcl_fences.pt_BR.tr @@ -0,0 +1,18 @@ +# textdomain: mcl_fences +Fences are structures which block the way. Fences will connect to each other and solid blocks. They cannot be jumped over with a simple jump.=Cercas são estruturas as quais bloqueiam o caminho. Cercas vão conectar umas nas outras e em blocos sólidos. Não podem ser puladas com um simples pulo. +Fence gates can be opened or closed and can't be jumped over. Fences will connect nicely to fence gates.=Portões podem ser abertos ou fechados e não podem ser pulados. As cercas irão se conectar aos portões. +Right-click the fence gate to open or close it.=Clique com o botão direito no portão para abri-lo ou fecha-lo. +Oak Fence=Cerca de Carvalho +Oak Fence Gate=Portão de Carvalho +Spruce Fence=Cerca de Pinheiro +Spruce Fence Gate=Portão de Pinheiro +Birch Fence=Cerca de Bétula +Birch Fence Gate=Portão de Bétula +Jungle Fence=Cerca da Selva +Jungle Fence Gate=Portão da Selva +Dark Oak Fence=Cerca de Carvalho Escuro +Dark Oak Fence Gate=Portão de Carvalho Escuro +Acacia Fence=Cerca de Acácia +Acacia Fence Gate=Portão de Acácia +Nether Brick Fence=Cerca de Tijolos do Nether +Openable by players and redstone power=Abrível por jogadores e carga de redstone From 799462c4b447b0ac2e4f611d207aaf961bda00a3 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 05:55:17 -0300 Subject: [PATCH 177/375] mcl_credits pt_BR translation --- .../mcl_credits/locale/mcl_credits.pt_BR.tr | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 mods/HUD/mcl_credits/locale/mcl_credits.pt_BR.tr diff --git a/mods/HUD/mcl_credits/locale/mcl_credits.pt_BR.tr b/mods/HUD/mcl_credits/locale/mcl_credits.pt_BR.tr new file mode 100644 index 000000000..e693b0357 --- /dev/null +++ b/mods/HUD/mcl_credits/locale/mcl_credits.pt_BR.tr @@ -0,0 +1,19 @@ +# textdomain: mcl_credits +3D Models=Modelos 3D +A faithful Open Source clone of Minecraft=Um clone fiel Open Source do Minecraft +Contributors=Colaboradores +Creator of MineClone=Criador do MineClone +Creator of MineClone2=Criador do MineClone2 +Developers=Desenvolvedores +Past Developers=Desenvolvedores Passados +Jump to speed up (additionally sprint)=Pule para acelerar (arrancada adicional) +Maintainers=Mantedores +Previous Maintainers=Mantedores Anteriores +MineClone5=MineClone5 +Original Mod Authors=Autores Originais do Mod +Sneak to skip=Agache para pular +Textures=Texturas +Translations=Traduções +Music=Músicas +Funders=Financiadores +Special thanks=Agradecimentos especiais From 427724ced290ca0da5b01db36083a3bcf71b4d99 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 06:46:45 -0300 Subject: [PATCH 178/375] mcl_ver_info pt_BR translation --- mods/HUD/mcl_ver_info/locale/mcl_ver_info.pt_BR.tr | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 mods/HUD/mcl_ver_info/locale/mcl_ver_info.pt_BR.tr diff --git a/mods/HUD/mcl_ver_info/locale/mcl_ver_info.pt_BR.tr b/mods/HUD/mcl_ver_info/locale/mcl_ver_info.pt_BR.tr new file mode 100644 index 000000000..ef465f8a0 --- /dev/null +++ b/mods/HUD/mcl_ver_info/locale/mcl_ver_info.pt_BR.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_ver_info +Sorry, but your version of Minetest doesn't support the latest API. Please upgrade your minetest.=Desculpe, mas sua versão do Minetest não suporta a última API. Por favor atualize seu minetest. +Display Mineclone 2 game version.=Mostrar a versão do jogo Mineclone 2. From cb0c67b05fc4ab2d254464bf9d90330de5463fa9 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 07:32:08 -0300 Subject: [PATCH 179/375] mcl_fishing pt_BR translation --- .../mcl_fishing/locale/mcl_fishing.pt_BR.tr | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 mods/ITEMS/mcl_fishing/locale/mcl_fishing.pt_BR.tr diff --git a/mods/ITEMS/mcl_fishing/locale/mcl_fishing.pt_BR.tr b/mods/ITEMS/mcl_fishing/locale/mcl_fishing.pt_BR.tr new file mode 100644 index 000000000..638858432 --- /dev/null +++ b/mods/ITEMS/mcl_fishing/locale/mcl_fishing.pt_BR.tr @@ -0,0 +1,18 @@ +# textdomain: mcl_fishing +Fishing Rod=Vara de Pesca +Fishing rods can be used to catch fish.=Varas de pesca podem ser usadas para coletar peixes. +Rightclick to launch the bobber. When it sinks right-click again to reel in an item. Who knows what you're going to catch?=Clique com o botão direito para lançar a boia de pesca. Quando esta afundar clique com o botão direito novamente para enrola-la como um item. Quem sabe o que você está prestes a coletar? +Raw Fish=Peixe Cru +Raw fish is obtained by fishing and is a food item which can be eaten safely. Cooking it improves its nutritional value.=Peixe cru é obtido através da pesca e é um item de comida ao qual pode ser comido em segurança. Cozinha-lo aumenta seu valor nutricional. +Cooked Fish=Peixe Cozido +Mmh, fish! This is a healthy food item.=Mmh, peixe! Esse é um item de comida saudável. +Raw Salmon=Salmão Cru +Raw salmon is obtained by fishing and is a food item which can be eaten safely. Cooking it improves its nutritional value.=Salmão cru é obtido através da pesca e é um item de comida ao qual pode ser comido em segurança. Cozinha-lo aumenta seu valor nutricional. +Cooked Salmon=Salmão Cozido +This is a healthy food item which can be eaten.=Esse é um item de comida saudável ao qual pode ser comido. +Clownfish=Peixe-Palhaço +Clownfish may be obtained by fishing (and luck) and is a food item which can be eaten safely.=Peixes-Palhaço podem ser obtidos com pesca (e sorte) e são um item de comida ao qual pode ser comido em segurança. +Pufferfish=Baiacu +Pufferfish are a common species of fish and can be obtained by fishing. They can technically be eaten, but they are very bad for humans. Eating a pufferfish only restores 1 hunger point and will poison you very badly (which drains your health non-fatally) and causes serious food poisoning (which increases your hunger).=Baiacus são uma espécie comum de peixe e podem ser obtidos através da pesca. Tecnicamente eles podem ser comidos, mas eles são muito ruins para humanos. Comer um baiacu restaura apenas 1 ponto de fome e irá lhe envenenar muito (o que drenará sua saúde de forma não-fatal) e causará uma séria intoxicação alimentar (o que aumentará sua fome). +Catches fish in water=Coleta peixes na água. +Very poisonous=Muito venenoso From c6fc911c12603d253528e700980161ad4121d277 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 07:45:11 -0300 Subject: [PATCH 180/375] mcl_heads pt_BR translation --- mods/ITEMS/mcl_heads/locale/mcl_heads.pt_BR.tr | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 mods/ITEMS/mcl_heads/locale/mcl_heads.pt_BR.tr diff --git a/mods/ITEMS/mcl_heads/locale/mcl_heads.pt_BR.tr b/mods/ITEMS/mcl_heads/locale/mcl_heads.pt_BR.tr new file mode 100644 index 000000000..fb256997a --- /dev/null +++ b/mods/ITEMS/mcl_heads/locale/mcl_heads.pt_BR.tr @@ -0,0 +1,11 @@ +# textdomain: mcl_heads +Zombie Head=Cabeça de Zumbi +A zombie head is a small decorative block which resembles the head of a zombie. It can also be worn as a helmet, which reduces the detection range of zombies by 50%.=Uma cabeça de zumbi é um pequeno bloco decorativo ao qual remete a cabeça de um zumbi. Também pode ser usado como um capacete, o que reduz o alcançe de detecção dos zumbis em 50%. +Creeper Head=Cabeça de Creeper +A creeper head is a small decorative block which resembles the head of a creeper. It can also be worn as a helmet, which reduces the detection range of creepers by 50%.=Uma cabeça de creeper é um pequeno bloco decorativo ao qual remete a cabeça de um creeper. Também pode ser usado como um capacete, o que reduz o alcançe de detecção dos creepers em 50%. +Human Head=Cabeça Humana +A human head is a small decorative block which resembles the head of a human (i.e. a player character). It can also be worn as a helmet for fun, but does not offer any protection.=Uma cabeça de humano é um pequeno bloco decorativo ao qual remete a cabeça de um humano (ou seja, o personagem do jogador). Também pode ser usado como um capacete por diversão, mas não oferece nenhuma proteção. +Skeleton Skull=Cabeça de Esqueleto +A skeleton skull is a small decorative block which resembles the skull of a skeleton. It can also be worn as a helmet, which reduces the detection range of skeletons by 50%.=Uma cabeça de esqueleto é um pequeno bloco decorativo ao qual remete a cabeça de um esqueleto. Também pode ser usado como um capacete, o que reduz o alcançe de detecção dos esqueletos em 50%. +Wither Skeleton Skull=Cabeça de Esqueleto Wither +A wither skeleton skull is a small decorative block which resembles the skull of a wither skeleton. It can also be worn as a helmet for fun, but does not offer any protection.=Uma cabeça de esqueleto wither é um pequeno bloco decorativo ao qual remete a cabeça de um esqueleto wither. Também pode ser usado como um capacete por diversão, mas não oferece nenhuma proteção. From e536822b4d1f095d8bd70257f7b7f3926b945675 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 08:09:15 -0300 Subject: [PATCH 181/375] mcl_tools pt_BR translation --- .../ITEMS/mcl_tools/locale/mcl_tools.pt_BR.tr | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 mods/ITEMS/mcl_tools/locale/mcl_tools.pt_BR.tr diff --git a/mods/ITEMS/mcl_tools/locale/mcl_tools.pt_BR.tr b/mods/ITEMS/mcl_tools/locale/mcl_tools.pt_BR.tr new file mode 100644 index 000000000..a16b7868d --- /dev/null +++ b/mods/ITEMS/mcl_tools/locale/mcl_tools.pt_BR.tr @@ -0,0 +1,36 @@ +# textdomain: mcl_tools +You use your bare hand whenever you are not wielding any item. With your hand you can mine most blocks, but this is the slowest method and only the weakest blocks will yield their useful drop. The hand also deals minor damage by punching. Using the hand is often a last resort, as proper mining tools and weapons are much better.=Você usa sua mão nua sempre que não estiver segurando qualquer item. Com sua mão você pode minerar a maioria dos blocos, porém esse é o método mais lento e apenas os blocos mais fracos vão render seus drops úteis. A mão também dá o mínimo de dano quando soca. Usar a mão é muitas vezes o último recurso, uma vez que ferramentas de mineração apropriadas e armas são muito melhores. +When you are wielding an item which is not a mining tool or a weapon, it will behave as if it were the hand when you start mining or punching.=Quando você estiver segurando um item o qual não é uma ferramenta de mineração ou uma arma, este se comportará como se fosse a mão quando você começa a minerar ou socar. +In Creative Mode, the hand is able to break all blocks instantly.=No Modo Criativo, a mão é capaz de quebrar todos os blocos instantaneamente. +Pickaxes are mining tools to mine hard blocks, such as stone. A pickaxe can also be used as weapon, but it is rather inefficient.=Picaretas são ferramentas de mineração para minerar blocos duros, como rochas. Uma picareta também pode ser usada como arma, mas é bastante ineficiente. +An axe is your tool of choice to cut down trees, wood-based blocks and other blocks. Axes deal a lot of damage as well, but they are rather slow.=Um machado é sua ferramenta preferida para cortar árvores, blocos de madeira e outros blocos. Machados também dão muito dano, mas são bastante lentos. +Swords are great in melee combat, as they are fast, deal high damage and can endure countless battles. Swords can also be used to cut down a few particular blocks, such as cobwebs.=Espadas são excelentes no combate corpo a corpo, já que são rápidas, dão muito dano e podem suportar inúmeras batalhas. Espadas também podem ser usadas para cortar alguns blocos específicos, como as teias. +Shovels are tools for digging coarse blocks, such as dirt, sand and gravel. They can also be used to turn grass blocks to grass paths. Shovels can be used as weapons, but they are very weak.=Pás são ferramentas para cavar blocos grossos, como as terras, areias e cascalho. Também podem ser usadas para transformar blocos de grama em caminhos de grama. Pás podem ser usadas como armas, mas são muito fracas. +To turn a grass block into a grass path, hold the shovel in your hand, then use (rightclick) the top or side of a grass block. This only works when there's air above the grass block.=Para transformar um bloco de grama em um caminho de grama, segure a pá na sua mão, então use (clique com o botão direito) no topo ou lados de um bloco de grama. Isso só funcionará quando houver ar sobre o bloco de grama. +Shears are tools to shear sheep and to mine a few block types. Shears are a special mining tool and can be used to obtain the original item from grass, leaves and similar blocks that require cutting.=Tesouras são ferramentas para tosquear ovelhas e para minerar alguns tipos de blocos específicos. Tesouras são uma ferramenta de mineração especial e podem ser usadas para obter o item original da grama, folhas e blocos semelhantes que requerem corte. +To shear sheep or carve faceless pumpkins, use the “place” key on them. Faces can only be carved at the side of faceless pumpkins. Mining works as usual, but the drops are different for a few blocks.=Para tosquear ovelhas ou escavar abóboras, use a tecla "posicionar" neles. Rostos podem ser escavados na lateral das abóboras. Minerar funciona como de costume, porém os drops são diferentes para alguns blocos específicos. +Wooden Pickaxe=Picareta de Madeira +Stone Pickaxe=Picareta de Pedra +Iron Pickaxe=Picareta de Ferro +Golden Pickaxe=Picareta de Ouro +Diamond Pickaxe=Picareta de Diamante +Netherite Pickaxe=Picareta de Netherite +Wooden Shovel=Pá de Madeira +Stone Shovel=Pá de Pedra +Iron Shovel=Pá de Ferro +Golden Shovel=Pá de Ouro +Diamond Shovel=Pá de Diamante +Netherite Shovel=Pá de Netherite +Wooden Axe=Machado de Madeira +Stone Axe=Machado de Pedra +Iron Axe=Machado de Ferro +Golden Axe=Machado de Ouro +Diamond Axe=Machado de Diamante +Netherite Axe=Machado de Netherite +Wooden Sword=Espada de Madeira +Stone Sword=Espada de Pedra +Iron Sword=Espada de Ferro +Golden Sword=Espada de Ouro +Diamond Sword=Espada de Diamante +Netherite Sword=Espada de Netherite +Shears=Tesoura From 188f1cdaa6d3591a9d92de2236abc0a54fbe7457 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 08:59:52 -0300 Subject: [PATCH 182/375] mcl_itemframes pt_BR translation --- .../mcl_itemframes/locale/mcl_itemframes.pt_BR.tr | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.pt_BR.tr diff --git a/mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.pt_BR.tr b/mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.pt_BR.tr new file mode 100644 index 000000000..4c55b470f --- /dev/null +++ b/mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.pt_BR.tr @@ -0,0 +1,10 @@ +# textdomain: mcl_itemframes +Item Frame=Moldura +Item frames are decorative blocks in which items can be placed.=Molduras são blocos decorativos aos quais itens podem ser posicionadas. +Just place any item on the item frame. Use the item frame again to retrieve the item.=Apenas posicione qualquer item na moldura. Use a moldura de novo para pegar o item de volta. +Can hold an item.=Pode segurar um item. +Glowing Item Frame=Moldura Brilhante +Glowing item frames are decorative blocks in which items can be placed.=Molduras brilhantes são blocos decorativos aos quais itens podem ser posicionados. +Can hold an item and glows.=Pode segurar um item e brilha. +Glow and Behold!=Brilhe e Veja! +Craft a glow item frame.=Fabrique uma moldura brilhante. From 1c3003c85b1cf186d49866cfe0b0d899e965120d Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 09:02:42 -0300 Subject: [PATCH 183/375] mcl_spawn pt_BR translation --- mods/PLAYER/mcl_spawn/locale/mcl_spawn.pt_BR.tr | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 mods/PLAYER/mcl_spawn/locale/mcl_spawn.pt_BR.tr diff --git a/mods/PLAYER/mcl_spawn/locale/mcl_spawn.pt_BR.tr b/mods/PLAYER/mcl_spawn/locale/mcl_spawn.pt_BR.tr new file mode 100644 index 000000000..414f10b9f --- /dev/null +++ b/mods/PLAYER/mcl_spawn/locale/mcl_spawn.pt_BR.tr @@ -0,0 +1,5 @@ +# textdomain: mcl_spawn +New respawn position set!=Nova posição de renascimento definida! +Respawn position cleared!=Posição de renascimento limpa! +Couldn't get level of your respawn anchor!=Não foi possível nivelar sua âncora de renascimento! +Your spawn bed was missing or blocked, and you had no charged respawn anchor!=Sua cama está faltando ou foi bloqueada, e você não carregou sua âncora de renascimento. From d57fbb047d45735fa24c079f3a45654bc1612180 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 09:17:30 -0300 Subject: [PATCH 184/375] mcl_sponges pt_BR translation --- mods/ITEMS/mcl_sponges/locale/mcl_sponges.pt_BR.tr | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 mods/ITEMS/mcl_sponges/locale/mcl_sponges.pt_BR.tr diff --git a/mods/ITEMS/mcl_sponges/locale/mcl_sponges.pt_BR.tr b/mods/ITEMS/mcl_sponges/locale/mcl_sponges.pt_BR.tr new file mode 100644 index 000000000..e6a857347 --- /dev/null +++ b/mods/ITEMS/mcl_sponges/locale/mcl_sponges.pt_BR.tr @@ -0,0 +1,10 @@ +# textdomain: mcl_sponges +Sponge=Esponja +Sponges are blocks which remove water around them when they are placed or come in contact with water, turning it into a wet sponge.=Esponjas são blocos aos quais removem água ao seu redor quando elas são posicionadas ou entram em contato com a água, se transfomando em uma esponja molhada. +Waterlogged Sponge=Esponja Alagada +A waterlogged sponge can be dried in the furnace to turn it into (dry) sponge. When there's an empty bucket in the fuel slot of a furnace, the water will pour into the bucket.=Uma esponja alagada pode ser seca na fornalha para se tornar uma esponja (seca). Quando tem um balde vazio no slot de combustível da fornalha, a água irá se depositar dentro do balde. +Riverwaterlogged Sponge=Esponja Alagada em Rio +This is a sponge soaking wet with river water. It can be dried in the furnace to turn it into (dry) sponge. When there's an empty bucket in the fuel slot of the furnace, the river water will pour into the bucket.=Esta é uma esponja encharcada com água do rio. Uma esponja alagada em rio pode ser seca na fornalha para se tornar uma esponja (seca). Quando tem um balde vazio no slot de combustível da fornalha, a água de rio irá se depositar dentro do balde. +A sponge becomes riverwaterlogged (instead of waterlogged) if it sucks up more river water than (normal) water.=A esponja se torna alagada em rio (em vez de alagada) se esta sugar mais água de rio do que água (normal). +Removes water on contact=Remove água por contato +Can be dried in furnace=Pode ser secada na fornalha From 184a098964400531880b0aef236520de1cc3f65a Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 09:19:47 -0300 Subject: [PATCH 185/375] mcl_torches pt_BR translation --- mods/ITEMS/mcl_torches/locale/mcl_torches.pt_BR.tr | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 mods/ITEMS/mcl_torches/locale/mcl_torches.pt_BR.tr diff --git a/mods/ITEMS/mcl_torches/locale/mcl_torches.pt_BR.tr b/mods/ITEMS/mcl_torches/locale/mcl_torches.pt_BR.tr new file mode 100644 index 000000000..fc49b3a0f --- /dev/null +++ b/mods/ITEMS/mcl_torches/locale/mcl_torches.pt_BR.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_torches +Torch=Tocha +Torches are light sources which can be placed at the side or on the top of most blocks.=Tochas são fontes de luz as quais podem ser posicionadas nas laterais ou na parte superior de muitos blocos. From 8b02d7b0b297511d7ee4db1114c3f66336b25a97 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 09:21:19 -0300 Subject: [PATCH 186/375] mcl_walls pt_BR translation fix --- mods/ITEMS/mcl_walls/locale/mcl_walls.pt_BR.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_walls/locale/mcl_walls.pt_BR.tr b/mods/ITEMS/mcl_walls/locale/mcl_walls.pt_BR.tr index a344d88c0..8d06a55d1 100644 --- a/mods/ITEMS/mcl_walls/locale/mcl_walls.pt_BR.tr +++ b/mods/ITEMS/mcl_walls/locale/mcl_walls.pt_BR.tr @@ -11,7 +11,7 @@ Red Sandstone Wall=Muro de Arenito Vermelho Stone Brick Wall=Muro de Tijolos de Pedra Mossy Stone Brick Wall=Muro de Tijolos de Pedra Musgosos Prismarine Wall=Muro de Prismarinho -End Stone Brick Wall=Muro de Tijolos de Pedra do Fim +End Stone Brick Wall=Muro de Tijolos de Pedra do End Nether Brick Wall=Muro de Tijolos do Nether Red Nether Brick Wall=Muro de Tijolos Vermelhos do Nether Mud Brick Wall=Muro de Tijolos de Barro From 4a3369205e052ecb95187c50fc2823f63e30050b Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 09:32:43 -0300 Subject: [PATCH 187/375] mcl_wool pt_BR translation --- mods/ITEMS/mcl_wool/locale/mcl_wool.pt_BR.tr | 37 ++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 mods/ITEMS/mcl_wool/locale/mcl_wool.pt_BR.tr diff --git a/mods/ITEMS/mcl_wool/locale/mcl_wool.pt_BR.tr b/mods/ITEMS/mcl_wool/locale/mcl_wool.pt_BR.tr new file mode 100644 index 000000000..3ae9a6ce3 --- /dev/null +++ b/mods/ITEMS/mcl_wool/locale/mcl_wool.pt_BR.tr @@ -0,0 +1,37 @@ +# textdomain: mcl_wool +Wool=Lã +Carpet=Carpete +White Wool=Lã Branco +White Carpet=Carpete Branco +Grey Wool=Lã Cinza +Grey Carpet=Carpete Cinza +Light Grey Wool=Lã Cinza Claro +Light Grey Carpet=Carpete Cinza Claro +Black Wool=Lã Preto +Black Carpet=Carpete Preto +Red Wool=Lã Vermelho +Red Carpet=Carpete Vermelho +Yellow Wool=Lã Amarelo +Yellow Carpet=Carpete Amarelo +Green Wool=Lã Verde +Green Carpet=Carpete Verde +Cyan Wool=Lã Ciano +Cyan Carpet=Carpete Ciano +Blue Wool=Lã Azul +Blue Carpet=Carpete Azul +Magenta Wool=Lã Magenta +Magenta Carpet=Carpete Magenta +Orange Wool=Lã Laranja +Orange Carpet=Carpete Laranja +Purple Wool=Lã Roxo +Purple Carpet=Carpete Roxo +Brown Wool=Lã Marrom +Brown Carpet=Carpete Marrom +Pink Wool=Lã Rosa +Pink Carpet=Carpete Rosa +Lime Wool=Lã Lima +Lime Carpet=Carpete Lima +Light Blue Wool=Lã Azul Claro +Light Blue Carpet=Carpete Azul Claro +Wool is a decorative block which comes in many different colors.=Lã é um bloco decorativo ao qual vêm em várias cores diferentes. +Carpets are thin floor covers which come in many different colors.=Carpetes são coberturas finas para o piso aos quais vêm em diferentes cores. From 6dac6522410672b48f59bc593635a7a6d8be9986 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 09:35:52 -0300 Subject: [PATCH 188/375] mclx_core pt_BR translation --- mods/ITEMS/mclx_core/locale/mclx_core.pt_BR.tr | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 mods/ITEMS/mclx_core/locale/mclx_core.pt_BR.tr diff --git a/mods/ITEMS/mclx_core/locale/mclx_core.pt_BR.tr b/mods/ITEMS/mclx_core/locale/mclx_core.pt_BR.tr new file mode 100644 index 000000000..a6a8552c0 --- /dev/null +++ b/mods/ITEMS/mclx_core/locale/mclx_core.pt_BR.tr @@ -0,0 +1,5 @@ +# textdomain: mclx_core +River Water Source=Fonte de Água de Rio +River water has the same properties as water, but has a reduced flowing distance and is not renewable.=Água de rio têm as mesmas propriedades da água, mas tem uma distância de escoamento reduzido e não é renovável. +River Water=Água de Rio +Flowing River Water=Água Corrente de Rio From 3a89d367b06276858eb64b665d7b5db75bcef049 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 09:38:05 -0300 Subject: [PATCH 189/375] mclx_fences pt_BR translation --- mods/ITEMS/mclx_fences/locale/mclx_fences.pt_BR.tr | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 mods/ITEMS/mclx_fences/locale/mclx_fences.pt_BR.tr diff --git a/mods/ITEMS/mclx_fences/locale/mclx_fences.pt_BR.tr b/mods/ITEMS/mclx_fences/locale/mclx_fences.pt_BR.tr new file mode 100644 index 000000000..6de63f21d --- /dev/null +++ b/mods/ITEMS/mclx_fences/locale/mclx_fences.pt_BR.tr @@ -0,0 +1,4 @@ +# textdomain: mclx_fences +Red Nether Brick Fence=Cerca de Tijolos Vermelhos do Nether +Red Nether Brick Fence Gate=Portão de Tijolos Vermelhos do Nether +Nether Brick Fence Gate=Portão de Tijolos do Nether From 90a758c0023ff3becc168ff1b574bd8e936d45f3 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 09:50:00 -0300 Subject: [PATCH 190/375] mcl_lightning_rods pt_BR translation --- .../mcl_lightning_rods/locale/mcl_lightning_rods.pt_BR.tr | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 mods/ITEMS/mcl_lightning_rods/locale/mcl_lightning_rods.pt_BR.tr diff --git a/mods/ITEMS/mcl_lightning_rods/locale/mcl_lightning_rods.pt_BR.tr b/mods/ITEMS/mcl_lightning_rods/locale/mcl_lightning_rods.pt_BR.tr new file mode 100644 index 000000000..4a57a6dbf --- /dev/null +++ b/mods/ITEMS/mcl_lightning_rods/locale/mcl_lightning_rods.pt_BR.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_lightning_rods +Lightning Rod=Para-Raios +A block that attracts lightning=Um bloco que atrai raios From 908c46ce348183290138bb273888917332b4ff03 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 09:52:00 -0300 Subject: [PATCH 191/375] mcl_loom pt_BR translation --- mods/ITEMS/mcl_loom/locale/mcl_loom.pt_BR.tr | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 mods/ITEMS/mcl_loom/locale/mcl_loom.pt_BR.tr diff --git a/mods/ITEMS/mcl_loom/locale/mcl_loom.pt_BR.tr b/mods/ITEMS/mcl_loom/locale/mcl_loom.pt_BR.tr new file mode 100644 index 000000000..eef49ba0f --- /dev/null +++ b/mods/ITEMS/mcl_loom/locale/mcl_loom.pt_BR.tr @@ -0,0 +1,4 @@ +# textdomain: mcl_loom +Loom=Tear +Used to create banner designs=Usado para criar designs nos estandartes +This is the shepherd villager's work station. It is used to create banner designs.=Essa é a estação de trabalho do aldeão pastor. É usado para criar designs nos estandartes. From 487f78d66320c73c1817789c8370a69a6ea065f5 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 18:05:46 -0300 Subject: [PATCH 192/375] mcl_hunger pt_BR translation --- mods/PLAYER/mcl_hunger/locale/mcl_hunger.pt_BR.tr | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 mods/PLAYER/mcl_hunger/locale/mcl_hunger.pt_BR.tr diff --git a/mods/PLAYER/mcl_hunger/locale/mcl_hunger.pt_BR.tr b/mods/PLAYER/mcl_hunger/locale/mcl_hunger.pt_BR.tr new file mode 100644 index 000000000..c48a93090 --- /dev/null +++ b/mods/PLAYER/mcl_hunger/locale/mcl_hunger.pt_BR.tr @@ -0,0 +1,8 @@ +# textdomain: mcl_hunger +@1 succumbed to the poison.=@1 sucumbiu ao veneno. +Food=Comida +Saturation=Saturação +%s: %.1f/%d=%s: %.1f/%d +Exhaust.=Cansado. +%s: %d/%d=%s: %d/%d +@1 starved to death.=@1 morreu de fome. From 6480c6923acc6cb415b2da0167eefb343586be70 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 18:11:45 -0300 Subject: [PATCH 193/375] mcl_music pt_BR translation --- mods/PLAYER/mcl_music/locale/mcl_music.pt_BR.tr | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 mods/PLAYER/mcl_music/locale/mcl_music.pt_BR.tr diff --git a/mods/PLAYER/mcl_music/locale/mcl_music.pt_BR.tr b/mods/PLAYER/mcl_music/locale/mcl_music.pt_BR.tr new file mode 100644 index 000000000..8e6f062b1 --- /dev/null +++ b/mods/PLAYER/mcl_music/locale/mcl_music.pt_BR.tr @@ -0,0 +1,7 @@ +# textdomain: mcl_music +You need the debug privilege in order to turn ingame music on or off for somebody else!=Você precisa do privilégio debug para poder ligar ou desligar a música para alguém! +Couldn't find player @1!=O jogador @1 não pôde ser localizado! +Set music for @1 to: @2=Definida música @1 para: @2 +Turns music for yourself or another player on or off.=Liga ou desliga a música para você ou outro jogador. +on=ligado +off=desligado From cb6b4253d28ee5c7be0e4d7c8b8754eb4a4253ba Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 18:25:52 -0300 Subject: [PATCH 194/375] findbiome pt_BR translation --- mods/MISC/findbiome/locale/findbiome.pt_BR.tr | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 mods/MISC/findbiome/locale/findbiome.pt_BR.tr diff --git a/mods/MISC/findbiome/locale/findbiome.pt_BR.tr b/mods/MISC/findbiome/locale/findbiome.pt_BR.tr new file mode 100644 index 000000000..5e9e3a6cb --- /dev/null +++ b/mods/MISC/findbiome/locale/findbiome.pt_BR.tr @@ -0,0 +1,10 @@ +# textdomain: findbiome +Find and teleport to biome=Encontra e teleporta para um bioma += +No player.=Nenhum jogador. +Biome does not exist!=Bioma não existe! +Biome found at @1.=Bioma encontrado em @1. +No biome found!=Nenhum bioma encontrado! +List all biomes=Lista de todos os biomas +No biomes.=Nenhum bioma. +Not supported. The “biomeinfo” mod is required for v6 mapgen support!=Não suportado. O mod "biomeinfo" é necessário para o suporte da mapgen v6! From cde4bc797e47b7db189c669b1e96899ba23a1f69 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 18:34:19 -0300 Subject: [PATCH 195/375] mcl_commands pt_BR translation --- .../mcl_commands/locale/mcl_commands.pt_BR.tr | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 mods/MISC/mcl_commands/locale/mcl_commands.pt_BR.tr diff --git a/mods/MISC/mcl_commands/locale/mcl_commands.pt_BR.tr b/mods/MISC/mcl_commands/locale/mcl_commands.pt_BR.tr new file mode 100644 index 000000000..df12b27fe --- /dev/null +++ b/mods/MISC/mcl_commands/locale/mcl_commands.pt_BR.tr @@ -0,0 +1,23 @@ +# textdomain: mcl_commands +Players can't be killed right now, damage has been disabled.= +Player @1 does not exist.=Jogador @1 não existe. +You are already dead=Você já está morto +@1 is already dead=@1 já está morto +@1 committed suicide.=@1 cometeu suícidio. +@1 was killed by @2.=@1 foi morto(a) por @2. +[]=[] +Kill player or yourself=Mata jogadores ou você mesmo +Can use /say=Pode usar /say += +Send a message to every player=Envia uma mensagem para todos os jogadores +Invalid usage, see /help say.=Uso inválido, veja /help say. +,, = ,, +Set node at given position=Define um node na posição dada +Invalid node=Node inválido +@1 spawned.=@1 nasceu. +Invalid parameters (see /help setblock)=Parâmetros inválidos (veja /help setblock) +List bans=Lista banimentos +Ban list: @1=Lista de banimento: @1 +Show who is logged on=Mostra quem está logado +Displays the world seed=Mostra a semente do mundo +Only peaceful mobs allowed!=Apenas mobs pacíficos permitidos! From fcd4a610e596d21f60229b6de10dc5a1cb44d203 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 18:35:23 -0300 Subject: [PATCH 196/375] mcl_commands pt_BR translation missing --- mods/MISC/mcl_commands/locale/mcl_commands.pt_BR.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/MISC/mcl_commands/locale/mcl_commands.pt_BR.tr b/mods/MISC/mcl_commands/locale/mcl_commands.pt_BR.tr index df12b27fe..5a2688d67 100644 --- a/mods/MISC/mcl_commands/locale/mcl_commands.pt_BR.tr +++ b/mods/MISC/mcl_commands/locale/mcl_commands.pt_BR.tr @@ -1,5 +1,5 @@ # textdomain: mcl_commands -Players can't be killed right now, damage has been disabled.= +Players can't be killed right now, damage has been disabled.=Jogadores não podem ser mortos agora, dano foi desabilitado. Player @1 does not exist.=Jogador @1 não existe. You are already dead=Você já está morto @1 is already dead=@1 já está morto From d7c8c7a54ad8966149fff8e2e88592db73d5d138 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 18:37:35 -0300 Subject: [PATCH 197/375] mcl_privs pt_BR translation --- mods/MISC/mcl_privs/locale/mcl_privs.pt_BR.tr | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 mods/MISC/mcl_privs/locale/mcl_privs.pt_BR.tr diff --git a/mods/MISC/mcl_privs/locale/mcl_privs.pt_BR.tr b/mods/MISC/mcl_privs/locale/mcl_privs.pt_BR.tr new file mode 100644 index 000000000..fe57673f4 --- /dev/null +++ b/mods/MISC/mcl_privs/locale/mcl_privs.pt_BR.tr @@ -0,0 +1,2 @@ +# textdomain: mcl_privs +Can place and use advanced blocks like mob spawners, command blocks and barriers.=Pode posicionar e usar blocos avançados como geradores de mobs, blocos de comandos e barreiras. From 3e131a213f9eff8e7fe4ea98fd5acbd76241c575 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 18:41:41 -0300 Subject: [PATCH 198/375] mcl_villages pt_BR translation --- mods/MAPGEN/mcl_villages/locale/mcl_villages.pt_BR.tr | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 mods/MAPGEN/mcl_villages/locale/mcl_villages.pt_BR.tr diff --git a/mods/MAPGEN/mcl_villages/locale/mcl_villages.pt_BR.tr b/mods/MAPGEN/mcl_villages/locale/mcl_villages.pt_BR.tr new file mode 100644 index 000000000..bded6250d --- /dev/null +++ b/mods/MAPGEN/mcl_villages/locale/mcl_villages.pt_BR.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_villages +Chiseled Stone Village Bricks=Tijolos de Aldeia de Pedra Cinzelada +mcl_villages build tool=ferramenta de construção mcl_villages From 3f0e77b97158d71a61d1004f9a51eab65d31892f Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 18:52:32 -0300 Subject: [PATCH 199/375] mcl_bamboo pt_BR translation --- .../mcl_bamboo/locale/mcl_bamboo.pt_BR.tr | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 mods/ITEMS/mcl_bamboo/locale/mcl_bamboo.pt_BR.tr diff --git a/mods/ITEMS/mcl_bamboo/locale/mcl_bamboo.pt_BR.tr b/mods/ITEMS/mcl_bamboo/locale/mcl_bamboo.pt_BR.tr new file mode 100644 index 000000000..8517b0cbe --- /dev/null +++ b/mods/ITEMS/mcl_bamboo/locale/mcl_bamboo.pt_BR.tr @@ -0,0 +1,46 @@ +# textdomain: mcl_bamboo + +### bamboo_base.lua ### + +Bamboo=Bambu +Bamboo Mosaic Plank=Mosaico de Tábuas de Bambu +Bamboo Plank=Tábuas de Bambu +Stripped Bamboo Block=Bloco de Bambu Descascado +Bamboo Block=Bloco de Bambu + +### bamboo_items.lua ### + +A bamboo button is a redstone component made out of bamboo which can be pushed to provide redstone power. When pushed, it powers adjacent redstone components for 1 second.=Um botão de bambu é um componente de redstone feito de bambu ao qual pode ser empurrado para providenciar carga de redstone. Quando empurrado, energiza componentes de redstone adjacentes por 1 segundo. + +A wooden pressure plate is a redstone component which supplies its surrounding blocks with redstone power while any movable object (including dropped items, players and mobs) rests on top of it.=Uma placa de pressão de madeira é um componente de redstone ao qual alimenta os blocos ao seu redor com uma carga de redstone enquanto qualquer objeto móvel (incluindo itens largados, jogadores e mobs) parar em cima dela. + +Bamboo=Bambu +Bamboo Button=Botão de Bambu +Bamboo Door=Porta de Bambu +Bamboo Fence=Cerca de Bambu +Bamboo Fence Gate=Portão de Bambu +Bamboo Mosaic Slab=Laje de Mosaico de Bambu +Bamboo Mosaic Stair=Escada de Mosaico de Bambu +Bamboo Plank Slab=Laje de Tábuas de Bambu +Bamboo Plank Stair=Escada de Tábuas de Bambu +Bamboo Pressure Plate=Placa de Pressão de Bambu +Bamboo Sign=Placa de Bambu +Bamboo Slab=Laje de Bambu +Bamboo Stair=Escada de Bambu +Bamboo Trapdoor=Alçapão de Bambu +Double Bamboo Mosaic Slab=Laje Dupla de Mosaico de Bambu +Double Bamboo Plank Slab=Laje Dupla de Tábuas de Bambu +Double Bamboo Slab=Laje Dupla de Bambu +Double Stripped Bamboo Slab=Laje Dupla de Bambu Descascado +Scaffolding=Andaime +Scaffolding (horizontal)=Andaime (horizontal) +Scaffolding block used to climb up or out across areas.=Bloco de andaime é usado para escalar ou cruzar áreas. +Stripped Bamboo Slab=Laje de Bambu Descascado +Stripped Bamboo Stair=Escada de Bambu Descascado + +To open or close the trapdoor, rightclick it or send a redstone signal to it.=Para abrir ou fechar o alçapão, clique com o botão direito ou mande-o um sinal de redstone. + +Wooden trapdoors are horizontal barriers which can be opened and closed by hand or a redstone signal. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder.=Alçapões de madeira são barreiras horizontais as quais podem ser abertas ou fechadas com a mão ou um sinal de redstone. Eles ocupam a parte superior ou inferior de um bloco, dependendo de como eles são posicionados. Quando abertos, eles são escaláveis como uma escada. + +Wooden doors are 2-block high barriers which can be opened or closed by hand and by a redstone signal.=Portas de madeira são barreiras de 2 blocos de altura as quais podem ser abertas ou fechadas com a mão ou um sinal de redstone. +To open or close a wooden door, rightclick it or supply its lower half with a redstone signal.=Para abrir ou fechar uma porta de madeira, clique com o botão direito nela ou alimente sua metade inferior com um sinal de redstone. From 0638c67cf702a85242fce65ad599ccdf4a2e11ed Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 18:57:01 -0300 Subject: [PATCH 200/375] mcl_shields pt_BR translation --- .../mcl_shields/locale/mcl_shields.pt_BR.tr | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 mods/ITEMS/mcl_shields/locale/mcl_shields.pt_BR.tr diff --git a/mods/ITEMS/mcl_shields/locale/mcl_shields.pt_BR.tr b/mods/ITEMS/mcl_shields/locale/mcl_shields.pt_BR.tr new file mode 100644 index 000000000..1f3c3f09e --- /dev/null +++ b/mods/ITEMS/mcl_shields/locale/mcl_shields.pt_BR.tr @@ -0,0 +1,19 @@ +# textdomain: mcl_shields +Shield=Escudo +A shield is a tool used for protecting the player against attacks.=Um escudo é uma ferramenta usada para a proteção do jogador contra ataques. +White Shield=Escudo Branco +Grey Shield=Escudo Cinza +Light Grey Shield=Escudo Cinza Claro +Black Shield=Escudo Preto +Red Shield=Escudo Vermelho +Yellow Shield=Escudo Amarelo +Green Shield=Escudo Verde +Cyan Shield=Escudo Ciano +Blue Shield=Escudo Azul +Magenta Shield=Escudo Magenta +Orange Shield=Escudo Laranja +Purple Shield=Escudo Roxo +Brown Shield=Escudo Marrom +Pink Shield=Escudo Rosa +Lime Shield=Escudo Lima +Light Blue Shield=Escudo Azul Claro From 8b1ad1c217af9adfc48d18173bde209e81e7e7cd Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 19:01:20 -0300 Subject: [PATCH 201/375] mcl_smithing_table pt_BR translation --- .../mcl_smithing_table/locale/mcl_smithing_table.pt_BR.tr | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 mods/ITEMS/mcl_smithing_table/locale/mcl_smithing_table.pt_BR.tr diff --git a/mods/ITEMS/mcl_smithing_table/locale/mcl_smithing_table.pt_BR.tr b/mods/ITEMS/mcl_smithing_table/locale/mcl_smithing_table.pt_BR.tr new file mode 100644 index 000000000..065d5faba --- /dev/null +++ b/mods/ITEMS/mcl_smithing_table/locale/mcl_smithing_table.pt_BR.tr @@ -0,0 +1,4 @@ +# textdomain: mcl_smithing_table +Inventory=Inventário +Upgrade Gear=Atualizar Equipamento +Smithing table=Mesa de ferraria From ae470f8809caa2b93b09b52e329f3c62a7dc51c4 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 19:18:19 -0300 Subject: [PATCH 202/375] mcl_armor pt_BR translation missing --- mods/ITEMS/mcl_armor/locale/mcl_armor.pt_BR.tr | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mods/ITEMS/mcl_armor/locale/mcl_armor.pt_BR.tr b/mods/ITEMS/mcl_armor/locale/mcl_armor.pt_BR.tr index b12f07026..6ce4997db 100644 --- a/mods/ITEMS/mcl_armor/locale/mcl_armor.pt_BR.tr +++ b/mods/ITEMS/mcl_armor/locale/mcl_armor.pt_BR.tr @@ -46,3 +46,6 @@ Reduces most types of damage by 4% for each level.=Reduz a maioria dos tipos de Thorns=Espinhos Reflects some of the damage taken when hit, at the cost of reducing durability with each proc.=Reflete parte do dano tomado aos custos de reduzir a durabilidade com cada uso. Aqua Affinity=Afinidade Aqua + +#Translations for armor trims +Smithing Template '@1'=Molde de Ferraria From bc186560b4f07fdfa27641976adfb506e8100e69 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 21:06:52 -0300 Subject: [PATCH 203/375] mcl_hamburger pt_BR translation --- mods/ITEMS/mcl_hamburger/locale/mcl_hamburger.pt_BR.tr | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 mods/ITEMS/mcl_hamburger/locale/mcl_hamburger.pt_BR.tr diff --git a/mods/ITEMS/mcl_hamburger/locale/mcl_hamburger.pt_BR.tr b/mods/ITEMS/mcl_hamburger/locale/mcl_hamburger.pt_BR.tr new file mode 100644 index 000000000..63f37d579 --- /dev/null +++ b/mods/ITEMS/mcl_hamburger/locale/mcl_hamburger.pt_BR.tr @@ -0,0 +1,10 @@ +# textdomain: mcl_hamburger +A Hamburger=Hambúrguer + +A tasty hamburger that is sure to lure villagers around like a lead. Can be eaten.=Um hambúrguer saboroso certamente atrairá os aldeões como um laço. Pode ser comido. + +A tasty hamburger that is sure to lure villagers. 'I'll gladly pay you Tuesday, for a hamburger today.' - Wimpy.=Um hambúrguer saboroso certamente atrairá os aldeões.'Pagarei com prazer na terça-feira, por um hambúrguer hoje.' - Wimpy. + +Burger Time!=Hora do Hambúrguer! +Craft a Hamburger.=Fabrique um hambúrguer. +Wield this item to pull villagers to you.=Segure esse item para atrair aldeões até você. From 8afa57b914d155d8634b2844f78e0ba238912a06 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 21:39:44 -0300 Subject: [PATCH 204/375] mcl_sus_stew pt_BR translation --- mods/ITEMS/mcl_sus_stew/locale/mcl_sus_stew.pt_BR.tr | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 mods/ITEMS/mcl_sus_stew/locale/mcl_sus_stew.pt_BR.tr diff --git a/mods/ITEMS/mcl_sus_stew/locale/mcl_sus_stew.pt_BR.tr b/mods/ITEMS/mcl_sus_stew/locale/mcl_sus_stew.pt_BR.tr new file mode 100644 index 000000000..ece9c8301 --- /dev/null +++ b/mods/ITEMS/mcl_sus_stew/locale/mcl_sus_stew.pt_BR.tr @@ -0,0 +1,2 @@ +# textdomain: mcl_sus_stew +Suspicious Stew=Ensopado Suspeito From 7f36116146b83f6e14c18bcd7e8b07c0dba46103 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 21:42:50 -0300 Subject: [PATCH 205/375] screwdriver pt_BR translation --- mods/ITEMS/screwdriver/locale/screwdriver.pt_BR.tr | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 mods/ITEMS/screwdriver/locale/screwdriver.pt_BR.tr diff --git a/mods/ITEMS/screwdriver/locale/screwdriver.pt_BR.tr b/mods/ITEMS/screwdriver/locale/screwdriver.pt_BR.tr new file mode 100644 index 000000000..feb7ac77b --- /dev/null +++ b/mods/ITEMS/screwdriver/locale/screwdriver.pt_BR.tr @@ -0,0 +1,2 @@ +# textdomain: screwdriver +Screwdriver=Chave de Fenda From bd19c8fe679191dd6818a79aa59293d9d6ec2db4 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 21:54:56 -0300 Subject: [PATCH 206/375] mcl_mud pt_BR translation --- mods/ITEMS/mcl_mud/locale/mcl_mud.pt_BR.tr | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 mods/ITEMS/mcl_mud/locale/mcl_mud.pt_BR.tr diff --git a/mods/ITEMS/mcl_mud/locale/mcl_mud.pt_BR.tr b/mods/ITEMS/mcl_mud/locale/mcl_mud.pt_BR.tr new file mode 100644 index 000000000..c3b5edf0e --- /dev/null +++ b/mods/ITEMS/mcl_mud/locale/mcl_mud.pt_BR.tr @@ -0,0 +1,7 @@ +# textdomain: mcl_mud +Mud=Barro +Mud is a decorative block that generates in mangrove swamps. Mud can also be obtained by using water bottles on dirt or coarse dirt.=Barro é um bloco decorativo gerado em manguezais. Barro também pode ser obtido usando garrafas de água em blocos de terra ou terra infértil. +Packed Mud=Barro Seco +Packed mud is a decorative block used to craft mud bricks.=Barro seco é um bloco decorativo usado para fabricar tijolos de barro. +Mud Bricks=Tijolos de Barro +Decorative block crafted from packed mud.=Bloco decorativo fabricado a partir de barro seco. From e291d9918e8f61a62841dbdf5af5018bcd89f7f7 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 1 Dec 2023 22:15:05 -0300 Subject: [PATCH 207/375] mcl_stonecutter pt_BR translation --- mods/ITEMS/mcl_stonecutter/locale/mcl_stonecutter.pt_BR.tr | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 mods/ITEMS/mcl_stonecutter/locale/mcl_stonecutter.pt_BR.tr diff --git a/mods/ITEMS/mcl_stonecutter/locale/mcl_stonecutter.pt_BR.tr b/mods/ITEMS/mcl_stonecutter/locale/mcl_stonecutter.pt_BR.tr new file mode 100644 index 000000000..7b52a2507 --- /dev/null +++ b/mods/ITEMS/mcl_stonecutter/locale/mcl_stonecutter.pt_BR.tr @@ -0,0 +1,4 @@ +# textdomain: mcl_stonecutter +Stone Cutter=Cortador de Pedras +Used to cut stone like materials.=Usado para cortar materiais rochosos. +Stonecutters are used to create stairs and slabs from stone like materials. It is also the jobsite for the Stone Mason Villager.=Cortadores de pedras são usados para criar certas escadas e lajes a partir de materiais rochosos. Também é a estação de trabalho do aldeão pedreiro. From 8816e9fc61d18657341bb35f49d59f248449a554 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Sat, 2 Dec 2023 10:15:46 -0300 Subject: [PATCH 208/375] mcl_throwing pt_BR translation --- mods/ITEMS/mcl_throwing/locale/mcl_throwing.pt_BR.tr | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 mods/ITEMS/mcl_throwing/locale/mcl_throwing.pt_BR.tr diff --git a/mods/ITEMS/mcl_throwing/locale/mcl_throwing.pt_BR.tr b/mods/ITEMS/mcl_throwing/locale/mcl_throwing.pt_BR.tr new file mode 100644 index 000000000..8cdaff4d5 --- /dev/null +++ b/mods/ITEMS/mcl_throwing/locale/mcl_throwing.pt_BR.tr @@ -0,0 +1,12 @@ +# textdomain: mcl_throwing +@1 used the ender pearl too often.=@1 usou a pérola do ender muitas vezes. +Use the punch key to throw.=Use o botão de soco para arremessar. +Snowball=Bola de Neve +Snowballs can be thrown or launched from a dispenser for fun. Hitting something with a snowball does nothing.=Bolas de neve podem ser arremessadas ou lançadas a partir de um ejetor por diversão. Atingir coisas com bolas de neve não fará coisa alguma. +Egg=Ovo +Eggs can be thrown or launched from a dispenser and breaks on impact. There is a small chance that 1 or even 4 chicks will pop out of the egg.=Ovos podem ser arremessados ou lançados a partir de um ejetor e quebra no impacto. Existe uma pequena chance de 1 ou até 4 pintinhos aparecerem desse ovo. +Ender Pearl=Pérola do Ender +An ender pearl is an item which can be used for teleportation at the cost of health. It can be thrown and teleport the thrower to its impact location when it hits a solid block or a plant. Each teleportation hurts the user by 5 hit points.=Uma pérola do ender é um item ao qual pode ser usado para teleporte ao custo de saúde. Pode ser arremessada e teleporta o arremessador para seu local de impacto quando acerta um bloco sólido ou uma planta. Cada teleporte machuca o usuário em 5 pontos de dano. +Throwable=Arremesaável +Chance to hatch chicks when broken=Chance de eclodir pintinhos quando quebrado +Teleports you on impact for cost of 5 HP=Teleporta você no impacto ao custo de 5 HP From 8f3936792fbd5e7b3cae7fe9a8c1f0b2152d283d Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Sat, 2 Dec 2023 10:28:44 -0300 Subject: [PATCH 209/375] mcl_cocoas pt_BR translation missing --- mods/ITEMS/mcl_cocoas/locale/mcl_cocoas.pt_BR.tr | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mods/ITEMS/mcl_cocoas/locale/mcl_cocoas.pt_BR.tr b/mods/ITEMS/mcl_cocoas/locale/mcl_cocoas.pt_BR.tr index 4501fc1be..41336b19f 100644 --- a/mods/ITEMS/mcl_cocoas/locale/mcl_cocoas.pt_BR.tr +++ b/mods/ITEMS/mcl_cocoas/locale/mcl_cocoas.pt_BR.tr @@ -1,4 +1,8 @@ # textdomain: mcl_cocoas +Cocoa Beans=Sementes de Cacau +Grows at the side of jungle trees=Cresce nas laterais de árvores da selva. +Cocoa beans can be used to plant cocoa, bake cookies or craft brown dye.=Sementes de cacau podem ser usadas para plantar cacau, cozinhar biscoitos e fabricar corante marrom. +Right click on the side of a jungle tree trunk (Jungle Wood) to plant a young cocoa.=Clique com o botão direito na lateral de um tronco de árvore da selva (Madeira da Selva) para plantar um cacau jovem. Premature Cocoa Pod=Vagem de Cacau Prematuro Cocoa pods grow on the side of jungle trees in 3 stages.=Vagens de cacau crescem ao lado de árvores de selva em 3 estágios. Medium Cocoa Pod=Vagem de Cacau Média From b476c703f103b809f8709f50601bbb62c1fc3dd3 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Sat, 2 Dec 2023 10:37:42 -0300 Subject: [PATCH 210/375] mcl_lectern pt_BR translation --- mods/ITEMS/mcl_lectern/locale/mcl_lectern.pt_BR.tr | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 mods/ITEMS/mcl_lectern/locale/mcl_lectern.pt_BR.tr diff --git a/mods/ITEMS/mcl_lectern/locale/mcl_lectern.pt_BR.tr b/mods/ITEMS/mcl_lectern/locale/mcl_lectern.pt_BR.tr new file mode 100644 index 000000000..58b0e693d --- /dev/null +++ b/mods/ITEMS/mcl_lectern/locale/mcl_lectern.pt_BR.tr @@ -0,0 +1,4 @@ +# textdomain: mcl_lectern +Lectern=Atril +Lecterns not only look good, but are job site blocks for Librarians.=Atris não apenas são bonitos, mas são a estação de trabalho dos Bibliotecários. +Place the Lectern on a solid node for best results. May attract villagers, so it's best to place outside of where you call 'home'.=Posicione o atril em um bloco sólido para melhores resultados. Talvez atraia aldeões, então é melhor posicioná-lo do lado de fora do que você chama de 'lar'. From 2d5b57c60df737d40f4bbc581eb7b910f3cbb573 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Sat, 2 Dec 2023 10:42:25 -0300 Subject: [PATCH 211/375] mcl_experience pt_BR translation --- mods/HUD/mcl_experience/locale/mcl_experience.pt_BR.tr | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 mods/HUD/mcl_experience/locale/mcl_experience.pt_BR.tr diff --git a/mods/HUD/mcl_experience/locale/mcl_experience.pt_BR.tr b/mods/HUD/mcl_experience/locale/mcl_experience.pt_BR.tr new file mode 100644 index 000000000..0a7cef5dd --- /dev/null +++ b/mods/HUD/mcl_experience/locale/mcl_experience.pt_BR.tr @@ -0,0 +1,8 @@ +# textdomain: mcl_experience +[[] ]=[[] ] +Gives a player some XP=Dá algum XP a um jogador +Error: Too many parameters!=Erro: Muitos parâmetros +Error: Incorrect value of XP=Erro: Valor incorreto de XP +Error: Player not found=Erro: Jogador não encontrado +Added @1 XP to @2, total: @3, experience level: @4=Adicionado @1 XP para @2, total: @3, nível de experiência: @4 +Bottle o' Enchanting=Frasco de Experiência From 00bf5f0331b70ac5cd62d8bfeb0ff997cfdc723d Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Sat, 2 Dec 2023 10:49:53 -0300 Subject: [PATCH 212/375] mcl_smoker pt_BR translation --- mods/ITEMS/mcl_smoker/locale/mcl_smoker.pt_BR.tr | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 mods/ITEMS/mcl_smoker/locale/mcl_smoker.pt_BR.tr diff --git a/mods/ITEMS/mcl_smoker/locale/mcl_smoker.pt_BR.tr b/mods/ITEMS/mcl_smoker/locale/mcl_smoker.pt_BR.tr new file mode 100644 index 000000000..4820d01bf --- /dev/null +++ b/mods/ITEMS/mcl_smoker/locale/mcl_smoker.pt_BR.tr @@ -0,0 +1,11 @@ +# textdomain: mcl_smoker +Inventory=Inventário +Smoker=Defumador +Cooks food faster than furnace=Cozinha comida mais rápido que a fornalha +Use the smoker to open the furnace menu.=Use o defumador para abrir o menu de fornalha. +Place a furnace fuel in the lower slot and the source material in the upper slot.=Posicione um combustível de fornalha no slot mais abaixo e o material fonte no slot mais acima. +The smoker will slowly use its fuel to smelt the item.=O defumador usará seu combustível lentamente para cozinhar o item. +The result will be placed into the output slot at the right side.=O resultado será posicionado no slot de saída no lado direito. +Use the recipe book to see what foods you can smelt, what you can use as fuel and how long it will burn.=Use o livro de receitas para ver quais comidas você pode cozinhar, quais combustíveis você pode usar e por quanto tempo irá queimar. +Smokers cook several items, mainly raw foods, into cooked foods, but twice as fast as a normal furnace.=Defumadores cozinham muitos itens, principalmente comidas cruas, em comida cozida, mas duas vezes mais rápido que uma fornalha normal. +Burning Smoker=Defumador Ativo From 2a8da574f02c2b3574c6142de16fdacd9ae42cfe Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Sat, 2 Dec 2023 23:18:34 -0300 Subject: [PATCH 213/375] mcl_ocean pt_BR translation --- .../ITEMS/mcl_ocean/locale/mcl_ocean.pt_BR.tr | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 mods/ITEMS/mcl_ocean/locale/mcl_ocean.pt_BR.tr diff --git a/mods/ITEMS/mcl_ocean/locale/mcl_ocean.pt_BR.tr b/mods/ITEMS/mcl_ocean/locale/mcl_ocean.pt_BR.tr new file mode 100644 index 000000000..2e522e1b5 --- /dev/null +++ b/mods/ITEMS/mcl_ocean/locale/mcl_ocean.pt_BR.tr @@ -0,0 +1,60 @@ +# textdomain: mcl_ocean +Sea Lantern=Lanterna do Mar +Sea lanterns are decorative light sources which look great underwater but can be placed anywhere.=Lanternas do mar são fontes de luz decorativas as quais ficam bonitas em baixo d'água mas podem ser posicionadas em qualquer lugar. +Prismarine=Prismarinho +Prismarine is used as a building block. It slowly changes its color.=Prismarinho é usado como um bloco de costrução. Muda de cor lentamente. +Prismarine Bricks=Tijolos de Prismarinho +Dark Prismarine=Prismarinho Escuro +Prismarine Crystals=Cristais de Prismarinho +Prismarine Shard=Fragmentos de Prismarinho +Dried Kelp=Alga Seca +Dried Kelp Block=Bloco de Alga Seca +Brain Coral Block=Bloco de Coral-de-Cérebro +Brain Coral Fan=Gorgônia-de-Cérebro +Brain Coral=Coral-de-Cérebro +Bubble Coral Block=Bloco de Coral-de-Bolha +Bubble Coral Fan=Gorgônia-de-Bolha +Bubble Coral=Coral-de-Bolha +Fire Coral Block=Bloco de Coral-de-Fogo +Fire Coral Fan=Gorgônia-de-Fogo +Fire Coral=Coral-de-Fogo +Horn Coral Block=Bloco de Coral-de-Chifre +Horn Coral Fan=Gorgônia-de-Chifre +Horn Coral=Coral-de-Chifre +Tube Coral Block=Bloco de Coral-de-Tubo +Tube Coral Fan=Gorgônia-de-Tubo +Tube Coral=Coral-de-Tubo +Dead Brain Coral Block=Bloco de Coral-de-Cérebro Morto +Dead Brain Coral Fan=Gorgônia-de-Cérebro Morta +Dead Brain Coral=Coral-de-Cérebro Morto +Dead Bubble Coral Block=Bloco de Coral-de-Bolha Morto +Dead Bubble Coral Fan=Gorgônia-de-Bolha Morta +Dead Bubble Coral=Coral-de-Bolha Morto +Dead Fire Coral Block=Bloco de Coral-de-Fogo Morto +Dead Fire Coral Fan=Gorgônia-de-Fogo Morta +Dead Fire Coral=Coral-de-Fogo Morto +Dead Horn Coral Block=Bloco de Coral-de-Chifre Morto +Dead Horn Coral Fan=Gorgônia-de-Chifre Morta +Dead Horn Coral=Coral-de-Chifre Morto +Dead Tube Coral Block=Bloco de Coral-de-Tubo Morto +Dead Tube Coral Fan=Gorgônia-de-Tubo Morta +Dead Tube Coral=Coral-de-Tubo Morto +Seagrass=Grama Marinha +Kelp=Alga +Kelp grows inside water on top of dirt, sand or gravel.=Alga cresce dentro da água sobre terra, areia ou cascalho. +Coral blocks live in the oceans and need a water source next to them to survive. Without water, they die off.=Blocos de corais vivem em oceanos e precisam de uma fonte de água próxima para sobreviver. Sem água, eles morrem. +Corals grow on top of coral blocks and need to be inside a water source to survive. Without water, it will die off, as well as the coral block below.=Corais crescem sobre blocos de corais e precisam estar dentro de uma fonte de água para sobreviver. Sem água, eles morrem, assim como o bloco de coral abaixo. +Corals fans grow on top of coral blocks and need to be inside a water source to survive. Without water, it will die off, as well as the coral block below.=Gorgônias crescem sobre blocos de corais e precisam estar dentro de uma fonte de água para sobreviver. Sem água, elas morrem, assim como o bloco de coral abaixo. +Seagrass grows inside water on top of dirt, sand or gravel.=Grama marinha cresce dento da água sobre terra, areia ou cascalho. +A decorative block that serves as a great furnace fuel.=Um bloco decorativo que serve como uma ótimo combustível de fornalha. +Dried kelp is a food item.=Alga seca é um item de comida. +Grows on coral block of same species=Cresce em blocos de corais da mesma espécie +Needs water to live=Precisa de água para viver +Grows in water on dirt, sand, gravel=Cresce na água sobre a terra, areia, cascalho +Glows in the water=Brilha na água +4 possible sizes=4 tamanhos possíveis +Grows on dead brain coral block=Cresce no bloco de coral-de-cérebro morto +Sea Pickle=Pepino-do-Mar +Sea pickles grow on dead brain coral blocks and provide light when underwater. They come in 4 sizes that vary in brightness.=Pepino-do-mar cresce em blocos de coral-de-cérebro mortos e fornecem luz quando estão em baixo d'água. Eles vêm em 4 tamanhos que variam em luminosidade. +It can only be placed on top of dead brain coral blocks. Placing a sea pickle on another sea pickle will make it grow and brighter.=Podem ser posicionados apenas sobre blocos de coral-de-cérebro mortos. Posicionar um pepino-do-mar em outro pepino-do-mar o fará crescer e brilhar. + From 3047568ed497f54579d0243947ec85316f186211 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Sat, 2 Dec 2023 23:47:22 -0300 Subject: [PATCH 214/375] mcl_maps pt_BR translation --- mods/ITEMS/mcl_maps/locale/mcl_maps.pt_BR.tr | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 mods/ITEMS/mcl_maps/locale/mcl_maps.pt_BR.tr diff --git a/mods/ITEMS/mcl_maps/locale/mcl_maps.pt_BR.tr b/mods/ITEMS/mcl_maps/locale/mcl_maps.pt_BR.tr new file mode 100644 index 000000000..a28d211b0 --- /dev/null +++ b/mods/ITEMS/mcl_maps/locale/mcl_maps.pt_BR.tr @@ -0,0 +1,8 @@ +# textdomain: mcl_maps +Empty Map=Mapa Vazio +Empty maps are not useful as maps, but they can be stacked and turned to maps which can be used.=Mapas vazios não são úteis como mapas, mas eles podem ser empilhados e transfomados em mapas aos quais podem ser usados. +Rightclick to create a filled map (which can't be stacked anymore).=Clique com o botão direito para criar um mapa preenchido (ao qual não pode mais ser empilhado). +Map=Mapa +Shows a map image.=Mostra uma imagem do mapa. +When created, the map saves the nearby area as an image that can be viewed any time by holding the map.=Quando criado, o mapa salva a área próxima como uma imagem que pode ser visualizada sempre que você segurar o mapa. +Hold the map in your hand. This will display a map on your screen.=Segure o mapa em suas mãos. Isso mostrará um mapa em sua tela. From 9a8a6764d1df1849823039b671df97e574d7fcd8 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Sun, 3 Dec 2023 20:55:16 -0300 Subject: [PATCH 215/375] mcl_doors and mcl_fences pt_BR translation fixes --- mods/ITEMS/mcl_doors/locale/mcl_doors.pt_BR.tr | 2 +- mods/ITEMS/mcl_fences/locale/mcl_fences.pt_BR.tr | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_doors/locale/mcl_doors.pt_BR.tr b/mods/ITEMS/mcl_doors/locale/mcl_doors.pt_BR.tr index 321c99e33..fe6245f56 100644 --- a/mods/ITEMS/mcl_doors/locale/mcl_doors.pt_BR.tr +++ b/mods/ITEMS/mcl_doors/locale/mcl_doors.pt_BR.tr @@ -20,5 +20,5 @@ Wooden trapdoors are horizontal barriers whch can be opened and closed by hand o To open or close the trapdoor, rightclick it or send a redstone signal to it.=Para abrir ou fechar um alçapão, aperte com o botão direito nela ou acione-o com um sinal de redstone. Iron Trapdoor=Alçapão de Ferro Iron trapdoors are horizontal barriers which can only be opened and closed by redstone signals, but not by hand. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder.=Alçapões de ferro são barreiras horizontais que podem ser abertas ou fechadas por sinais de redstone, mas não manualmente. Eles ocupam a parte inferior ou superior de um bloco, dependendo de como foram colocados. Quando abertos, podem ser escaladas como escadas. -Openable by players and redstone power=Aberto por jogadores ou sinal de redstone +Openable by players and redstone power=Aberto por jogadores e sinal de redstone Openable by redstone power=Aberto por sinal de redstone diff --git a/mods/ITEMS/mcl_fences/locale/mcl_fences.pt_BR.tr b/mods/ITEMS/mcl_fences/locale/mcl_fences.pt_BR.tr index 7c55be53d..69349e48b 100644 --- a/mods/ITEMS/mcl_fences/locale/mcl_fences.pt_BR.tr +++ b/mods/ITEMS/mcl_fences/locale/mcl_fences.pt_BR.tr @@ -15,4 +15,4 @@ Dark Oak Fence Gate=Portão de Carvalho Escuro Acacia Fence=Cerca de Acácia Acacia Fence Gate=Portão de Acácia Nether Brick Fence=Cerca de Tijolos do Nether -Openable by players and redstone power=Abrível por jogadores e carga de redstone +Openable by players and redstone power=Aberto por jogadores e sinal de redstone From aeeb5acc2596e8daf84196465ce14f520bf49dbc Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Sun, 3 Dec 2023 20:56:09 -0300 Subject: [PATCH 216/375] mcl_armor pt_BR translation correction --- mods/ITEMS/mcl_armor/locale/mcl_armor.pt_BR.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_armor/locale/mcl_armor.pt_BR.tr b/mods/ITEMS/mcl_armor/locale/mcl_armor.pt_BR.tr index 6ce4997db..7c11b26c1 100644 --- a/mods/ITEMS/mcl_armor/locale/mcl_armor.pt_BR.tr +++ b/mods/ITEMS/mcl_armor/locale/mcl_armor.pt_BR.tr @@ -48,4 +48,4 @@ Reflects some of the damage taken when hit, at the cost of reducing durability w Aqua Affinity=Afinidade Aqua #Translations for armor trims -Smithing Template '@1'=Molde de Ferraria +Smithing Template '@1'=Molde de Ferraria '@1' From 04b77db7fa1486891077fcd3712a3eac809e5271 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Sun, 3 Dec 2023 21:01:02 -0300 Subject: [PATCH 217/375] mcl_books and mcl_bows pt_BR translation fixes --- mods/ITEMS/mcl_books/locale/mcl_books.pt_BR.tr | 2 +- mods/ITEMS/mcl_bows/locale/mcl_bows.pt_BR.tr | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_books/locale/mcl_books.pt_BR.tr b/mods/ITEMS/mcl_books/locale/mcl_books.pt_BR.tr index fbbb543fd..ed84cf067 100644 --- a/mods/ITEMS/mcl_books/locale/mcl_books.pt_BR.tr +++ b/mods/ITEMS/mcl_books/locale/mcl_books.pt_BR.tr @@ -2,7 +2,7 @@ Book=Livro Books are used to make bookshelves and book and quills.=Livros são utilizados para fazer prateleiras de livros e livro e pena. “@1”= -Copy of “@1”=Copia de "@1" +Copy of “@1”=Cópia de "@1" Copy of Copy of “@1”=Cópia da Cópia de "@1" Tattered Book=Livro Esfarrapado by @1=por @1 diff --git a/mods/ITEMS/mcl_bows/locale/mcl_bows.pt_BR.tr b/mods/ITEMS/mcl_bows/locale/mcl_bows.pt_BR.tr index 66044f8a0..ebb9e407c 100644 --- a/mods/ITEMS/mcl_bows/locale/mcl_bows.pt_BR.tr +++ b/mods/ITEMS/mcl_bows/locale/mcl_bows.pt_BR.tr @@ -9,7 +9,7 @@ Bows are ranged weapons to shoot arrows at your foes.=Arcos são armas de longo The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 20% of a critical hit, dealing 10 damage instead.=A velocidade e o dano da flecha aumenta quanto mais você puxar o arco. O dano regular de uma flecha varia entre 1 e 9. Quando puxado no máximo, há também uma chance de 20% de causar acerto crítico, efetuando 10 de dano. To use the bow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot.=Para usar o arco, você primeiro precisa possuir pelo menos uma flecha em qualquer lugar do seu inventário (a não ser no Modo Criativo). Segure o botão direito do mouse para puxar o arco, solte-o para disparar. Bow=Arco -Ammunition=munição +Ammunition=Munição Damage from bow: 1-10=Dano provocado pelo arco: 1-10 Damage from dispenser: 3=Dano provocado pelo dispensor: 3 Launches arrows=Dispara flechas From 6bffaf56d2eccf47fb447aaad38242a4600aaf57 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Sun, 3 Dec 2023 21:08:59 -0300 Subject: [PATCH 218/375] mcl_dye and mcl_smithing_table translation fixes --- mods/ITEMS/mcl_dye/locale/mcl_dye.pt_BR.tr | 30 +++++++++---------- .../locale/mcl_smithing_table.pt_BR.tr | 2 +- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/mods/ITEMS/mcl_dye/locale/mcl_dye.pt_BR.tr b/mods/ITEMS/mcl_dye/locale/mcl_dye.pt_BR.tr index 2b6aef9f0..14ff0b091 100644 --- a/mods/ITEMS/mcl_dye/locale/mcl_dye.pt_BR.tr +++ b/mods/ITEMS/mcl_dye/locale/mcl_dye.pt_BR.tr @@ -1,26 +1,26 @@ # textdomain: mcl_dye Bone Meal=Farinha de Osso -Light Grey Dye=Tintura Cinza Claro -Grey Dye=Tintura Cinza +Light Grey Dye=Corante Cinza Claro +Grey Dye=Corante Cinza Ink Sac=Saco de Tinta -Purple Dye=Tintura Roxa +Purple Dye=Corante Roxo Lapis Lazuli=Lápis-lazuli -Light Blue Dye=Tintura Azul Claro -Cyan Dye=Tintura Ciano -Green Dye=Tintura Verde -Lime Dye=Tintura Lima -Yellow Dye=Tintura Amarela +Light Blue Dye=Corante Azul Claro +Cyan Dye=Corante Ciano +Green Dye=Corante Verde +Lime Dye=Corante Lima +Yellow Dye=Corante Amarelo Cocoa Beans=Sementes de Cacau -Orange Dye=Tintura Laranja -Red Dye=Tintura Vermelha -Magenta Dye=Tintura Magenta -Pink Dye=Tintura Rosa -This item is a dye which is used for dyeing and crafting.=Este item é uma tintura e pode ser usado para tingir ou fabricar. +Orange Dye=Corante Laranja +Red Dye=Corante Vermelho +Magenta Dye=Corante Magenta +Pink Dye=Corante Rosa +This item is a dye which is used for dyeing and crafting.=Este item é uma corante e pode ser usado para tingir ou fabricar. Rightclick on a sheep to dye its wool. Other things are dyed by crafting.=Clique com o botão direito em uma ovelha para tingir sua lã. Outras coisas são tingidas ao fabricá-las. Bone Meal=Farinha de Osso -Bone meal is a white dye and also useful as a fertilizer to speed up the growth of many plants.=Farinha de osso é uma tintura branca e também é útil como fertilizante ao acelerar o crescimento de diversas plantas. +Bone meal is a white dye and also useful as a fertilizer to speed up the growth of many plants.=Farinha de osso é um corante branco e também é útil como fertilizante ao acelerar o crescimento de diversas plantas. Rightclick a sheep to turn its wool white. Rightclick a plant to speed up its growth. Note that not all plants can be fertilized like this. When you rightclick a grass block, tall grass and flowers will grow all over the place.=Clique com o botão direito em uma ovelha para tornar sua lã branca. Clique com o botão direito em uma planta para acelerar seu crescimento. Note que nem todas as plantas podem ser fertilizadas assim. Quando você clica com o botão direito em um bloco de grama, grama alta e flores crescerão ao redor. -Cocoa beans are a brown dye and can be used to plant cocoas.=Sementes de cacau são um pigmento marrom e podem ser usadas para plantar cacau. +Cocoa beans are a brown dye and can be used to plant cocoas.=Sementes de cacau são um corante marrom e podem ser usadas para plantar cacau. Rightclick a sheep to turn its wool brown. Rightclick on the side of a jungle tree trunk (Jungle Wood) to plant a young cocoa.=Clique com o botão direito em uma ovelha para tornar sua lã marrom. Clique com o botão direito na lateral de um tronco de árvore da selva para plantar um cacau jovem. Cocoa Beans=Sementes de Cacau Grows at the side of jungle trees=Cresce na lateral de árvores da selva diff --git a/mods/ITEMS/mcl_smithing_table/locale/mcl_smithing_table.pt_BR.tr b/mods/ITEMS/mcl_smithing_table/locale/mcl_smithing_table.pt_BR.tr index 065d5faba..5c42b2488 100644 --- a/mods/ITEMS/mcl_smithing_table/locale/mcl_smithing_table.pt_BR.tr +++ b/mods/ITEMS/mcl_smithing_table/locale/mcl_smithing_table.pt_BR.tr @@ -1,4 +1,4 @@ # textdomain: mcl_smithing_table Inventory=Inventário Upgrade Gear=Atualizar Equipamento -Smithing table=Mesa de ferraria +Smithing table=Mesa de Ferraria From 1f370bf1f2d83a325fd4504f5799a9a0e946b3b9 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Mon, 4 Dec 2023 21:00:47 -0300 Subject: [PATCH 219/375] hudbars pt_BR translation --- mods/HUD/hudbars/locale/hudbars.pt_BR.tr | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 mods/HUD/hudbars/locale/hudbars.pt_BR.tr diff --git a/mods/HUD/hudbars/locale/hudbars.pt_BR.tr b/mods/HUD/hudbars/locale/hudbars.pt_BR.tr new file mode 100644 index 000000000..566906452 --- /dev/null +++ b/mods/HUD/hudbars/locale/hudbars.pt_BR.tr @@ -0,0 +1,6 @@ +# textdomain: hudbars +Health=Saúde +Breath=Respiração + +# Default format string for progress bar-style HUD bars, e.g. “Health 5/20” +@1: @2/@3=@1: @2/@3 From 8c0d9cc450197c18e1003511073b133cb33e4e39 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Mon, 4 Dec 2023 21:03:52 -0300 Subject: [PATCH 220/375] mcl_info pt_BR translation --- mods/HUD/mcl_info/locale/mcl_info.pt_BR.tr | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 mods/HUD/mcl_info/locale/mcl_info.pt_BR.tr diff --git a/mods/HUD/mcl_info/locale/mcl_info.pt_BR.tr b/mods/HUD/mcl_info/locale/mcl_info.pt_BR.tr new file mode 100644 index 000000000..89ea171e0 --- /dev/null +++ b/mods/HUD/mcl_info/locale/mcl_info.pt_BR.tr @@ -0,0 +1,4 @@ +# textdomain: mcl_info +Set debug bit mask: 0 @= disable, 1 @= biome name, 2 @= coordinates, 3 @= all=Defina a máscara de bits de debug: 0 @= desabilitado, 1 @= nome do bioma, 2 @= coordenadas, 3 @= todos +Error! Possible values are integer numbers from @1 to @2=Erro! Valores possíveis são números inteiros de @1 até @2 +Debug bit mask set to @1=Máscara de bits de debug definida como @1 From 6c4101dc125947df4c135851c969d31f0c6fa39c Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Mon, 4 Dec 2023 21:48:07 -0300 Subject: [PATCH 221/375] mcl_hoppers pt_BR translation --- .../mcl_hoppers/locale/mcl_hoppers.pt_BR.tr | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.pt_BR.tr diff --git a/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.pt_BR.tr b/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.pt_BR.tr new file mode 100644 index 000000000..3ed5bcfad --- /dev/null +++ b/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.pt_BR.tr @@ -0,0 +1,16 @@ +# textdomain: mcl_hoppers +Hopper=Funil +Hoppers are containers with 5 inventory slots. They collect dropped items from above, take items from a container above and attempt to put its items it into an adjacent container. Hoppers can go either downwards or sideways. Hoppers interact with chests, droppers, dispensers, shulker boxes, furnaces and hoppers.=Funis são recipientes com 5 slots de inventário. Eles coletam itens largados acima, pegam itens de um recipiente acima e tentam colocar seus itens em um recipiente adjacente. Funis podem ir tanto para baixo quanto para os lados. Funis interagem com baús, liberadores, ejetores, caixas shulker, fornalhas e funis. +Hoppers interact with containers the following way:=Funis interagem com recipientes da seguinte maneira: +• Furnaces: Hoppers from above will put items into the source slot. Hoppers from below take items from the output slot. They also take items from the fuel slot when they can't be used as a fuel. Sideway hoppers that point to the furnace put items into the fuel slot=• Fornalhas: Funis acima irão colocar itens no slot da fonte. Funis abaixo pegam itens do slot de saída. Eles também pegam itens do slot de combustível quando estes não podem ser usados como combustível. Funis laterais que apontem para a fornalha colocam itens no slot de combustível. +• Ender chests: No interaction.=• Baús do ender: Sem interações. +• Other containers: Normal interaction.=• Outros recipientes: Interação normal. +Hoppers can be disabled when supplied with redstone power. Disabled hoppers don't move items.= Funis pode ser desativados quando alimentados com carga de redstone. Funis desativados não movem itens. +To place a hopper vertically, place it on the floor or a ceiling. To place it sideways, place it at the side of a block. Use the hopper to access its inventory.=Para posicionar um funil verticalmente, posicione-o no chão ou no teto. Para posiciona-lo lateralmente, posicione-o na lateral de um bloco. Use o funil para acessar seu inventário. +Disabled Hopper=Funil Desativado +Side Hopper=Funil Lateral +Disabled Side Hopper=Funil Lateral Desativado +Inventory=Inventário +5 inventory slots=5 slots de inventário +Collects items from above, moves items to container below=Coleta itens vindos de cima, move itens para recipientes abaixo. +Can be disabled with redstone power=Pode ser desativado com carga de redstone From f8ef5a15c5723b8c54d5048814e7ce215cc86937 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Mon, 4 Dec 2023 23:13:25 -0300 Subject: [PATCH 222/375] mcl_death_messages pt_BR translation --- .../locale/mcl_death_messages.pt_BR.tr | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 mods/HUD/mcl_death_messages/locale/mcl_death_messages.pt_BR.tr diff --git a/mods/HUD/mcl_death_messages/locale/mcl_death_messages.pt_BR.tr b/mods/HUD/mcl_death_messages/locale/mcl_death_messages.pt_BR.tr new file mode 100644 index 000000000..f1f64fa5c --- /dev/null +++ b/mods/HUD/mcl_death_messages/locale/mcl_death_messages.pt_BR.tr @@ -0,0 +1,55 @@ +# textdomain: mcl_death_messages +@1 went up in flames=@1 pegou fogo +@1 walked into fire whilst fighting @2=@1 caminhou no fogo enquanto lutava contra @2 +@1 was struck by lightning=@1 foi atingido(a) por um raio +@1 was struck by lightning whilst fighting @2=@1 foi atingido(a) por um raio enquanto lutava contra @2 +@1 burned to death=@1 queimou até a morte +@1 was burnt to a crisp whilst fighting @2=@1 foi queimado até a crocância enquanto lutava contra @2 +@1 tried to swim in lava=@1 tentou nadar em lava +@1 tried to swim in lava to escape @2=@1 tentou nadar em lava para escapar de @2 +@1 discovered the floor was lava=@1 descobriu que o chão era lava +@1 walked into danger zone due to @2=@1 caminhou numa zona perigosa por conta de @2 +@1 suffocated in a wall=@1 sufocou em uma parede +@1 suffocated in a wall whilst fighting @2=@1 sufocou em uma parede enquanto lutava contra @2 +@1 drowned=@1 se afogou +@1 drowned whilst trying to escape @2=@1 se afogou enquanto tentava escapar de @2 +@1 starved to death=@1 morreu de fome +@1 starved to death whilst fighting @2=@1 morreu de fome enquanto lutava contra @2 +@1 was pricked to death=@1 foi espetado até a morte +@1 walked into a cactus whilst trying to escape @2=@1 caminhou até um cacto enquanto tentava escapar de @2 +@1 hit the ground too hard=@1 bateu muito forte no chão +@1 hit the ground too hard whilst trying to escape @2=@1 bateu muito forte no chão enquanto tentava escapar de @2 +@1 experienced kinetic energy=@1 experienciou a energia cinética +@1 experienced kinetic energy whilst trying to escape @2=@1 experienciou a energia cinética enquanto tentava escapar de @2 +@1 fell out of the world=@1 caiu do mundo +@1 didn't want to live in the same world as @2=@1 não queria viver no mesmo mundo que @2 +@1 died=@1 morreu +@1 died because of @2=@1 morreu por conta de @2 +@1 was killed by magic=@1 foi morto(a) por magia +@1 was killed by magic whilst trying to escape @2=@1 foi morto(a) por magia enquanto tentava escapar de @2 +@1 was killed by @2 using magic=@1 foi morto(a) por @2 usando magia +@1 was killed by @2 using @3=@1 foi morto(a) por @2 usando @3 +@1 was roasted in dragon breath=@1 foi assado(a) no bafo do dragão +@1 was roasted in dragon breath by @2=@1 foi assado(a) no bafo do dragão por @2 +@1 withered away=@1 apodreceu +@1 withered away whilst fighting @2=@1 apodreceu enquanto lutava contra @2 +@1 was shot by a skull from @2=@1 foi acertado(a) por um crânio vindo de @2 +@1 was squashed by a falling anvil=@1 foi esmagado(a) por uma bigorna em queda +@1 was squashed by a falling anvil whilst fighting @2=@1 foi esmagado(a) por uma bigorna enquanto lutava contra @2 +@1 was squashed by a falling block=@1 foi esmagado(a) por um bloco em queda +@1 was squashed by a falling block whilst fighting @2=@1 foi esmagado(a) por um bloco em queda enquanto lutava contra @2 +@1 was slain by @2=@1 foi assassinado por @2 +@1 was slain by @2 using @3=@1 foi assassinado por @2 usando @3 +@1 was shot by @2=@1 foi acertado(a) por @2 +@1 was shot by @2 using @3=@1 foi acertado(a) por @2 usando @3 +@1 was fireballed by @2=@1 foi atingido(a) por uma bola de fogo de @2 +@1 was fireballed by @2 using @3=@1 foi atingido(a) por uma bola de fogo de @2 usando @3 +@1 was killed trying to hurt @2=@1 foi morto(a) tentando machucar @2 +@1 tried to hurt @2 and died by @3=@1 tentou machucar @2 e morreu por conta de @3 +@1 blew up=@1 explodiu +@1 was blown up by @2=@1 foi explodido por @2 +@1 was blown up by @2 using @3=@1 foi explodido por @2 usando @3 +@1 was squished too much=@1 foi esmagado(a) demais +@1 was squashed by @2=@1 foi esmagado(a) por @2 +@1 went off with a bang=@1 saiu com um estrondo +@1 went off with a bang due to a firework fired by @2 from @3=@1 saiu com um estrondo por conta de um fogo de artifício disparado por @2 vindo de @3 From a2b754945666c96ff474f3ddf8866ebe67f13698 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Tue, 5 Dec 2023 21:24:32 -0300 Subject: [PATCH 223/375] mcl_mangrove pt_BR translation --- .../mcl_mangrove/locale/mcl_mangrove.pt_BR.tr | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 mods/ITEMS/mcl_mangrove/locale/mcl_mangrove.pt_BR.tr diff --git a/mods/ITEMS/mcl_mangrove/locale/mcl_mangrove.pt_BR.tr b/mods/ITEMS/mcl_mangrove/locale/mcl_mangrove.pt_BR.tr new file mode 100644 index 000000000..fc26a7531 --- /dev/null +++ b/mods/ITEMS/mcl_mangrove/locale/mcl_mangrove.pt_BR.tr @@ -0,0 +1,36 @@ +# textdomain: mcl_mangrove +Mangrove Wood=Madeira de Mangue +The trunk of a Mangrove tree.=O tronco de uma árvore de mangue. +Mangrove Bark=Casca de Mangue +The bark of a Mangrove tree.=A casca de uma árvore de mangue. +Mangrove Wood Planks=Tábuas de Mangue +Mangrove Leaves=Folhas de Mangue +Mangrove leaves are grown from mangrove trees.=Folhas de mangue crescem em árvores de mangue. +Stripped Mangrove Log=Tronco de Mangue Descascado +The stripped wood of a Mangrove tree=A madeira descascada de uma árvore de mangue. +Stripped Mangrove Wood=Madeira de Mangue Descascada +The stripped bark of a Mangrove tree=A casca descascada de uma árvore de mangue. +Mangrove Roots=Raízes de Mangue +Mangrove roots are decorative blocks that form as part of mangrove trees.=Raízes de mangue são blocos decorativos que se formam como parte das árvores de mangue. +Mangrove Propagule=Propágulo de Mangue +Needs soil and light to grow=Precisa de solo e luz para crescer +When placed on soil (such as dirt) and exposed to light, an propagule will grow into an mangrove after some time.=Quando posicionado em solo (como em terra) e exposto à luz, um propágulo irá crescer uma árvore de mangue depois de algum tempo. +Hanging Propagule=Propágulo Pendurado +Grows on Mangrove leaves=Cresce em folhas de mangue +water logged mangrove roots=Raízes de Mangue Alagadas +Mangrove roots, despite being a full block, can be waterlogged and do not flow water out=Raízes de mangue, mesmo sendo um bloco inteiro, podem ser alagadas e não escorre água delas. +These cannot be crafted yet only occure when get in contact of water.=Essas não podem ser fabricadas ainda ocorrendo apenas quando tem contato com a água. +Muddy Mangrove Roots=Raízes Barrentas de Mangue +crafted with Mud and Mangrove roots=Fabricadas com barro e raízes de mangue +Muddy Mangrove Roots is a block from mangrove swamp.It drowns player a bit inside it.=Raízes barrentas de mangue é um bloco dos pântanos de mangue. Afunda o jogador um pouco para dentro de si. +Mangrove Door=Porta de Mangue +Wooden doors are 2-block high barriers which can be opened or closed by hand and by a redstone signal.=Portas de madeira são barreiras de 2 blocos de altura as quais podem ser abertas ou fechadas pela mão e por um sinal de redstone. +To open or close a wooden door, rightclick it or supply its lower half with a redstone signal.=Para abrir ou fechar uma porta de madeira, clique com o botão direito nela ou alimente-a em sua metade inferior com um sinal de redstone. +Mangrove Trapdoor=Alçapão de Mangue +Wooden trapdoors are horizontal barriers which can be opened and closed by hand or a redstone signal. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder.=Alçapões de madeira são barreiras horizontais as quais podem ser abertas ou fechadas com a mão ou um sinal de redstone. Eles ocupam a parte superior ou inferior de um bloco, dependendo de como eles foram posicionados. Quando abertos, eles podem ser escalados como uma escada. +To open or close the trapdoor, rightclick it or send a redstone signal to it.=Para abrir e fechar o alçapão, clique com o botão direito nele ou envie um sinal de redstone para ele. +Mangrove Wood Fence=Cerca de Mangue +Mangrove Wood Fence Gate=Portão de Mangue +Mangrove Wood Stairs=Escadas de Mangue +Mangrove Wood Slab=Laje de Mangue +Double Mangrove Wood Slab=Laje Dupla de Mangue From ad099ed7c21564bd39e14d058ea52a0155ab50bc Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Wed, 6 Dec 2023 12:29:21 -0300 Subject: [PATCH 224/375] mcl_grindstone pt_BR translation --- .../mcl_grindstone/locale/mcl_grindstone.pt_BR.tr | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 mods/ITEMS/mcl_grindstone/locale/mcl_grindstone.pt_BR.tr diff --git a/mods/ITEMS/mcl_grindstone/locale/mcl_grindstone.pt_BR.tr b/mods/ITEMS/mcl_grindstone/locale/mcl_grindstone.pt_BR.tr new file mode 100644 index 000000000..03a5ca41e --- /dev/null +++ b/mods/ITEMS/mcl_grindstone/locale/mcl_grindstone.pt_BR.tr @@ -0,0 +1,11 @@ +# textdomain: mcl_grindstone +Inventory=Inventário +Repair & Disenchant=Reparar & Desencantar +Grindstone=Rebolo +Used to disenchant/fix tools=Usado para desencantar/consertar ferramentas +Grindstone disenchants tools and armour except for curses, and repairs two items of the same type it is also the weapon smith's work station.=Rebolos desencantam ferramentas e armaduras exceto as maldições, e consertam dois itens do mesmo tipo e ainda é a estação de trabalho do armeiro. +To use the grindstone, rightclick it, Two input slots (on the left) and a single output slot.=Para usar o rebolo, clique com o botão direito nele. +To disenchant an item place enchanted item in one of the input slots and take the disenchanted item from the output.=Para desencantar um item posicione o item encantado em um dos slots de entrada e pegue o item desencantado na saída. +To repair a tool you need a tool of the same type and material, put both items in the input slot and the output slot will combine two items durabilities with 5% bonus.=Para consertar uma ferramenta você precisará de uma ferramenta do mesmo tipo e material, ponha ambos os itens nos slots de entrada e o slot de saída irá combinar a durabilidade dos dois itens com um bônus de 5%. +If both items have enchantments the player will get xp from both items from the disenchant.=Se ambos itens possuem encantamentos o jogador receberá XP de ambos os itens no desencanto. +Curses cannot be removed and will be transfered to the new repaired item, if both items have a different curse the curses will be combined.=Maldições não podem ser removidas e serão transferidas para o novo item reparado, se ambos os itens tiverem maldições diferentes, as maldições serão combinadas. From bef3253d5c173b5615721ea7f439486454d9095c Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Wed, 6 Dec 2023 13:05:56 -0300 Subject: [PATCH 225/375] mcl_enchanting pt_BR translation --- .../locale/mcl_enchanting.pt_BR.tr | 144 ++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.pt_BR.tr diff --git a/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.pt_BR.tr b/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.pt_BR.tr new file mode 100644 index 000000000..f17678f3f --- /dev/null +++ b/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.pt_BR.tr @@ -0,0 +1,144 @@ +# textdomain: mcl_enchanting + + +### enchantments.lua ### + +Arrows passes through multiple objects.=Flechas atravessam múltiplos objetos. +Arrows set target on fire.=Flechas colocam fogo no alvo. +Bane of Arthropods=Ruína dos Artrópodes +Channeling=Condutividade + +Channels a bolt of lightning toward a target. Works only during thunderstorms and if target is unobstructed with opaque blocks.=Canaliza um relâmpago em direção ao alvo. Funciona apenas durante tempestades e se o alvo estiver desobistruido por blocos opacos. + +Curse of Vanishing=Maldição do Desaparecimento +Decreases crossbow charging time.=Diminui o tempo de recarga da besta. +Decreases time until rod catches something.=Diminui o tempo para a vara coletar alguma coisa. +Depth Strider=Passos Profundos +Efficiency=Eficiência +Extends underwater breathing time.=Extende o tempo de respiração em baixo da água. +Fire Aspect=Aspecto Flamejante +Flame=Chama +Fortune=Fortuna +Frost Walker=Passos Gelados +Impaling=Penetração +Increases arrow damage.=Aumenta o dano das flechas. +Increases arrow knockback.=Aumenta a repulsão das flechas. +Increases certain block drops.=Aumenta o drop de certos blocos. + +Increases damage and applies Slowness IV to arthropod mobs (spiders, cave spiders, silverfish and endermites).=Aumenta o dano e aplica Lentidão IV para mobs artrópodes (aranhas, aranhas de cavernas, traças e endermites). + +Increases damage to undead mobs.=Aumenta o dano para mobs mortos-vivos. +Increases damage.=Aumenta o dano +Increases item durability.=Aumenta a durabilidade do item. +Increases knockback.=Aumenta a repulsão. +Increases mining speed.=Aumenta a velocidade de mineração. +Increases mob loot.=Aumenta o saque de mobs. +Increases rate of good loot (enchanting books, etc.)=Aumenta a taxa de bons saques (livros encantados, etc.) +Increases sweeping attack damage.= +Increases underwater movement speed.=Aumenta a velocidade de movimento embaixo da água. +Increases walking speed on soul sand.=Aumenta a velocidade de caminhada na areia das almas. +Infinity=Infinidade +Item destroyed on death.=Item é destruído na morte. +Knockback=Repulsão +Looting=Saque +Loyalty=Lealdade +Luck of the Sea=Sorte do Mar +Lure=Isca +Mending=Remendo +Mined blocks drop themselves.=Blocos minerados dropam a si mesmos. +Multishot=Rajada +Piercing=Perfuração +Power=Força +Punch=Impacto +Quick Charge=Recarga Rápida +Repair the item while gaining XP orbs.=Repara o item enquanto ganha orbes de XP. +Respiration=Respiração +Riptide=Correnteza +Sets target on fire.=Coloca fogo no alvo. +Sharpness=Afiação +Shoot 3 arrows at the cost of one.=Atira 3 flechas ao custo de uma. +Shooting consumes no regular arrows.=Atirar não consome flechas normais. +Silk Touch=Toque Suave +Smite=Julgamento +Soul Speed=Velocidade das Almas +Sweeping Edge=Alcance +Trident deals additional damage to ocean mobs.=Tridente dá dano adicional em mobs oceanicos. + +Trident launches player with itself when thrown. Works only in water or rain.=Tridente lança o jogador junto de si mesmo quando lançado. + +Trident returns after being thrown. Higher levels reduce return time.=Tridente retorna depois de ser arremessado. Níveis altos reduzem o tempo de retorno. + +Turns water beneath the player into frosted ice and prevents the damage from magma blocks.=Transforma a água abaixo do jogador em gelo e previne o dano dos blocos de magma. + +Unbreaking=Inquebrável + +### engine.lua ### + +@1 Enchantment Levels=@1 Níveis de Encantamento +@1 Lapis Lazuli=@1 Lápis Lazuli +Inventory=Inventário +Level requirement: @1=Nível requerido: @1 + +### init.lua ### + +'@1' is not a valid number='@1' não é um número válido +'@1' is not a valid number.='@1' não é um número válido. + []= [] +@1 can't be combined with @2.=@1 não pode ser combinado com @2. + +After finally selecting your enchantment; left-click on the selection, and you will see both the lapis lazuli and your experience levels consumed. And, an enchanted item left in its place.=Depois de finalmente selecionar seu encantamento; clique com o botão esquerdo na seleção, e você irá ver ambos os lápis lazuli e seus níveis de experiência serem consumidos. E, um item encantado deixado em seu lugar. + +After placing your items in the slots, the enchanting options will be shown. Hover over the options to read what is available to you.=Depois de posicionar seus itens nos slots, as opções de encantamentos serão mostradas. Passe o mouse sobre as opções para ler o que está disponível para você. + +Enchant=Encantar +Enchant an item=Encantar um item +Enchanted Book=Livro Encantado +Enchanting Table=Mesa de Encantamento + +Enchanting Tables will let you enchant armors, tools, weapons, and books with various abilities. But, at the cost of some experience, and lapis lazuli.=A mesa de encantamentos permitem a você encantar armaduras, ferramentas, armas, e livros com várias habilidades. Mas, ao custo de alguma experiência, e lápis lazuli. + +Enchanting succeded.=Encantamento sucessido. +Forcefully enchant an item=Encantamento forçado em um item. + +Place a tool, armor, weapon or book into the top left slot, and then place 1-3 Lapis Lazuli in the slot to the right.=Posicione uma ferramenta, armadura, arma ou livro no slot superior esquerdo, e então posicione 1-3 lápis lazuli no slot da direita. + +Player '@1' cannot be found.=Jogador '@1' não pôde ser encontrado. +Rightclick the Enchanting Table to open the enchanting menu.=Clique com o botão direito na mesa de encantamentos para abrir o menu de encantamentos. +Spend experience, and lapis to enchant various items.=Invista experiência, e lápis para encantar vários itens. + +The number you have entered (@1) is too big, it must be at most @2.=O número que você inseriu (@1) é muito grande, deve ser no máximo @2. + +The number you have entered (@1) is too small, it must be at least @2.=O número que você inseriu (@1) é muito pequeno, deve ser no mínimo @2. + +The selected enchantment can't be added to the target item.=O encantamento selecionado não pode ser adicionado ao item alvo. +The target doesn't hold an item.=O alvo não está segurando um item. +The target item is not enchantable.=O item alvo não é encantável. +There is no such enchantment '@1'.=Não existe um encantamento '@1'. + +These options are randomized, and dependent on experience level; but the enchantment strength can be increased.=Essas opções são aleatorias, e dependentes do nível de experiência; mas a força do encantamento pode ser aumentado. + +To increase the enchantment strength, place bookshelves around the enchanting table. However, you will need to keep 1 air node between the table, & the bookshelves to empower the enchanting table.=Para aumentar a força do encantamento, posicione estantes de livros em volta da mesa de encantamentos. Porém, você precisará manter 1 bloco de ar entre a mesa e as estantes para potencializar a mesa de encantamentos. + +Usage: /enchant []=Uso: /enchant [] +Usage: /forceenchant []=Uso: /forceenchant [] + + +##### not used anymore ##### + +# textdomain: mcl_enchanting +Aqua Affinity=Afinidade Aquática +Increases underwater mining speed.=Aumenta a velocidade de mineração em baixo da água. +Blast Protection=Proteção Contra Explosões +Reduces explosion damage and knockback.=Reduz dano de explosão e repulsão. +Curse of Binding=Maldição do Ligamento +Item cannot be removed from armor slots except due to death, breaking or in Creative Mode.=Item não pode ser removido dos slots de armadura exceto em caso de morte, quebra ou no Modo Criativo. +Feather Falling=Peso-Pena +Reduces fall damage.=Reduz o dano de queda. +Fire Protection=Proteção Contra Fogo +Reduces fire damage.=Reduz o dano do fogo. +Projectile Protection=Proteção Contra Projéteis +Reduces projectile damage.=Reduz danos de projéteis. +Protection=Proteção +Reduces most types of damage by 4% for each level.=Reduz a maioria dos tipos de danos em 4% para cada nível. +Thorns=Espinhos +Reflects some of the damage taken when hit, at the cost of reducing durability with each proc.=Reflete parte do dano recebido quando acertado, ao custo de reduzir a durabilidade em cada processo. From d0697c70ccc5d9ad122cabf3bebcb62ce6783be0 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Wed, 6 Dec 2023 13:15:50 -0300 Subject: [PATCH 226/375] mcl_fire pt_BR translation --- mods/ITEMS/mcl_fire/locale/mcl_fire.pt_BR.tr | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 mods/ITEMS/mcl_fire/locale/mcl_fire.pt_BR.tr diff --git a/mods/ITEMS/mcl_fire/locale/mcl_fire.pt_BR.tr b/mods/ITEMS/mcl_fire/locale/mcl_fire.pt_BR.tr new file mode 100644 index 000000000..f14b142a1 --- /dev/null +++ b/mods/ITEMS/mcl_fire/locale/mcl_fire.pt_BR.tr @@ -0,0 +1,19 @@ +# textdomain: mcl_fire +Fire Charge=Bola de Fogo +Fire charges are primarily projectiles which can be launched from dispensers, they will fly in a straight line and burst into a fire on impact. Alternatively, they can be used to ignite fires directly.=Bolas de fogo são primariamente Projéteis aos quais podem ser lançados por ejetores, eles voarão em linha reta e explodirão em chamas no impacto. Alternativamente, elas podem ser usadas para acender fogos diretamente. +Put the fire charge into a dispenser and supply it with redstone power to launch it. To ignite a fire directly, simply place the fire charge on the ground, which uses it up.=Ponha a bola de fogo em um ejetor e forneça-o uma carga de redstone para lança-la. Para acender um fogo diretamente, simplesmente posicione a bola de fogo no chão, o que a consumirá. +Flint and Steel=Isqueiro +Flint and steel is a tool to start fires and ignite blocks.=Isqueiro é uma ferramenta que põe fogo e acende blocos. +Rightclick the surface of a block to attempt to light a fire in front of it or ignite the block. A few blocks have an unique reaction when ignited.=Clique com o botão direito na superfície de um bloco para tentar acender um fogo em frente ou acender um bloco. Poucos blocos têm uma reação única quando acesos. +Fire is a damaging and destructive but short-lived kind of block. It will destroy and spread towards near flammable blocks, but fire will disappear when there is nothing to burn left. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.=Fogo é um tipo de bloco danoso e destrutivo de vida curta. Destruirá e se espalhará para blocos inflamáveis próximos, mas o fogo vai desaparecer quando não restar mais nada para queimar. Será extinguido por água próxima ou pela chuva. O fogo pode ser destruído em segurança socando-o, mas é doloroso se você ficar em pé diretamente nele. Se um fogo for iniciado sobre netherrack ou bloco de magma, será transformado imediatamente em fogo eterno. +Fire is a damaging but non-destructive short-lived kind of block. It will disappear when there is no flammable block around. Fire does not destroy blocks, at least not in this world. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.=Fogo é um tipo de bloco danoso mas não destrutivo de vida curta. Irá desaparecer quando não houver mais blocos inflamáveis por perto. O fogo não destrói blocos, pelo menos não nesse mundo. Será extinguido por água próxima ou chuva. O fogo pode ser destruído em segurança socando-o, mas é doloroso se você ficar em pé diretamente nele. Se um fogo for iniciado sobre netherrack ou bloco de magma, será transformado imediatamente em fogo eterno. +Eternal fire is a damaging block that might create more fire. It will create fire around it when flammable blocks are nearby. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.=Fogo eterno é um bloco danoso que pode criar mais fogo. Irá criar fogo em volta quando blocos inflamáveis estão por perto. O fogo eterno pode ser extinguido por socos ou blocos de água próximos. Diferente do fogo (normal), o fogo eterno não se extingue sozinho e também continua queimando sob chuvas. Socar o fogo eterno é seguro, mas machuca se você ficar em pé dentro. +Eternal fire is a damaging block. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.=Fogo eterno é um bloco danoso. O fogo eterno pode ser extinguido por socos ou blocos de água próximos. Diferente do fogo (normal), o fogo eterno não se extingue sozinho e também continua queimando sob chuvas. Socar o fogo eterno é seguro, mas machuca se você ficar em pé dentro. +@1 has been cooked crisp.=@1 foi cozido crocante. +@1 felt the burn.=@1 sentiu a queimadura. +@1 died in the flames.=@1 morreu em chamas. +@1 died in a fire.=@1 morreu em um fogo. +Fire=Fogo +Eternal Fire=Fogo Eterno +Dispenser projectile=Projétil do Ejetor +Starts fires and ignites blocks=Põe fogo e acende blocos From c1e3c698006f26d113b529cfa1f9d1fcae5e6970 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Wed, 6 Dec 2023 13:29:38 -0300 Subject: [PATCH 227/375] mcl_monster_eggs pt_BR translation --- .../mcl_monster_eggs/locale/mcl_monster_eggs.pt_BR.tr | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 mods/ITEMS/mcl_monster_eggs/locale/mcl_monster_eggs.pt_BR.tr diff --git a/mods/ITEMS/mcl_monster_eggs/locale/mcl_monster_eggs.pt_BR.tr b/mods/ITEMS/mcl_monster_eggs/locale/mcl_monster_eggs.pt_BR.tr new file mode 100644 index 000000000..ae5e247b1 --- /dev/null +++ b/mods/ITEMS/mcl_monster_eggs/locale/mcl_monster_eggs.pt_BR.tr @@ -0,0 +1,9 @@ +# textdomain: mcl_monster_eggs +An infested block is a block from which a silverfish will pop out when it is broken. It looks identical to its normal counterpart.=Um bloco infestado é um bloco ao qual uma traça irá sair quando quebrá-lo. Parece idêntico a sua contraparte normal. +Infested Stone=Pedra Infestada +Infested Cobblestone=Pedregulho Infestado +Infested Stone Bricks=Tijolos de Pedra Infestados +Infested Cracked Stone Bricks=Tijolos de Pedra Rachados Infestados +Infested Mossy Stone Bricks=Tijolos de Pedra Musgosos Infestados +Infested Chiseled Stone Bricks=Tijolos de Pedra Talhados Infestados +Hides a silverfish=Escondem uma traça From f904512e61a0966ce40ef19b639fc2bdfc32cce7 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 7 Dec 2023 21:08:28 -0300 Subject: [PATCH 228/375] mcl_comparators pt_BR translation --- .../mcl_comparators/locale/mcl_comparators.pt_BR.tr | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.pt_BR.tr diff --git a/mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.pt_BR.tr b/mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.pt_BR.tr new file mode 100644 index 000000000..2139b73b1 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.pt_BR.tr @@ -0,0 +1,12 @@ +# textdomain: mcl_comparators +Redstone comparators are multi-purpose redstone components.=Comparadores de redstone são componentes de redstone multi propósito. +They can transmit a redstone signal, detect whether a block contains any items and compare multiple signals.=Eles podem transmitir um sinal de redstone, detectar se um bloco contém alguns itens e compara multíplos sinais. +A redstone comparator has 1 main input, 2 side inputs and 1 output. The output is in arrow direction, the main input is in the opposite direction. The other 2 sides are the side inputs.=Um comparador de redstone tem 1 entrada principal, 2 entradas laterais e 1 saída. A saída é na direção da seta, a entrada principal é na direção oposta. Os outros 2 lados são as entradas laterais. +The main input can powered in 2 ways: First, it can be powered directly by redstone power like any other component. Second, it is powered if, and only if a container (like a chest) is placed in front of it and the container contains at least one item.=A entrada principal pode ser energizada de 2 maneiras: Primeiro, ela pode ser energizada diretamente por carga de redstone como qualquer outro componente. Segundo, é energizada se, e somente se um recipiente (como um baú) é posicionado em frente dele e o recipiente conter pelo menos um item. +The side inputs are only powered by normal redstone power. The redstone comparator can operate in two modes: Transmission mode and subtraction mode. It starts in transmission mode and the mode can be changed by using the block.=As entradas laterais são energizadas apenas por cargas normais de redstone. O comparador de redstone pode operar em dois modos: Modo de transmissão e modo de subtração. Iniciará em modo de transmissão e o modo pode ser alterado usando o bloco. +Transmission mode:@nThe front torch is unlit and lowered. The output is powered if, and only if the main input is powered. The two side inputs are ignored.=Modo de transmissão:@nA tocha frontal é apagada e baixada. A saída é energizada se, e somente se a entrada principal é energizada. As entradas laterais são ignoradas. +Subtraction mode:@nThe front torch is lit. The output is powered if, and only if the main input is powered and none of the side inputs is powered.=Modo de subtração:@nA tocha frontal é acesa. A saída é energizada se, e somente se a entrada principal é energizada e nenhuma das entradas laterais estiverem energizadas. +Redstone Comparator=Comparador de Redstone +Redstone Comparator (Subtract)=Comparador de Redstone (Subtração) +Redstone Comparator (Powered)=Comparador de Redstone (Energizado) +Redstone Comparator (Subtract, Powered)=Comparador de Redstone (Subtração, Energizado) From a5370bc63d9851925b4d2281c2e7366718d21235 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 7 Dec 2023 21:13:21 -0300 Subject: [PATCH 229/375] mcl_target pt_BR translation --- mods/ITEMS/REDSTONE/mcl_target/locale/mcl_target.pt_BR.tr | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 mods/ITEMS/REDSTONE/mcl_target/locale/mcl_target.pt_BR.tr diff --git a/mods/ITEMS/REDSTONE/mcl_target/locale/mcl_target.pt_BR.tr b/mods/ITEMS/REDSTONE/mcl_target/locale/mcl_target.pt_BR.tr new file mode 100644 index 000000000..877e89c82 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_target/locale/mcl_target.pt_BR.tr @@ -0,0 +1,4 @@ +# textdomain: mcl_target +Target=Alvo +A target is a block that provides a temporary redstone charge when hit by a projectile.=Um alvo é um bloco que fornece uma carga temporária de redstone quando atingido por um projétil. +Throw a projectile on the target to activate it.=Arremesse um projétil no alvo para ativá-lo. From e28207f44e7e4e900f9def7c3552f04c6717508f Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 7 Dec 2023 21:30:42 -0300 Subject: [PATCH 230/375] mesecons_walllever pt_BR translation --- .../mesecons_walllever/locale/mesecons_walllever.pt_BR.tr | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.pt_BR.tr diff --git a/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.pt_BR.tr b/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.pt_BR.tr new file mode 100644 index 000000000..e2f6b7d45 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.pt_BR.tr @@ -0,0 +1,5 @@ +# textdomain: mesecons_walllever +Lever=Alavanca +A lever is a redstone component which can be flipped on and off. It supplies redstone power to adjacent blocks while it is in the “on” state.=Uma alavanca é um componente de redstone ao qual pode ser comutado em ligado ou desligado. Fornecerá carga de redstone para blocos adjacentes enquanto estiver no estado "ligado". +Use the lever to flip it on or off.=Use a alavanca para comutá-la em ligado ou desligado. +Provides redstone power while it's turned on=Fornece carga de redstone enquanto estiver ligada From 01abafe50ff87faafff4f986fe5ec73e11776f85 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 7 Dec 2023 21:46:22 -0300 Subject: [PATCH 231/375] mesecons_button pt_BR translation --- .../locale/mesecons_button.pt_BR.tr | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.pt_BR.tr diff --git a/mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.pt_BR.tr b/mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.pt_BR.tr new file mode 100644 index 000000000..f7ec2dd59 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.pt_BR.tr @@ -0,0 +1,20 @@ +# textdomain: mesecons_button +Use the button to push it.=Use o botão para pressioná-lo. +Stone Button=Botão de Pedra +A stone button is a redstone component made out of stone which can be pushed to provide redstone power. When pushed, it powers adjacent redstone components for 1 second.=Um botão de pedra é um componente de redstone feito de pedra ao qual pode ser pressionado para fornecer carga de redstone. Quando pressionado, irá energizar componentes de redstone adjacentes por 1 segundo. +Polished Blackstone Button=Botão de Rocha Negra Polida +A polished blackstone button is a redstone component made out of polished blackstone which can be pushed to provide redstone power. When pushed, it powers adjacent redstone components for 1 second.=Um botão de rocha negra polida é um componente de redstone feito de pedra negra polida ao qual pode ser pressionado para fornecer carga de redstone. Quando pressionado, irá energizar componentes de redstone adjacentes por 1 segundo. +Oak Button=Botão de Carvalho +Acacia Button=Botão de Acácia +Birch Button=Botão de Bétula +Dark Oak Button=Botão de Carvalho Escuro +Spruce Button=Botão de Pinheiro +Jungle Button=Botão da Selva +Mangrove Button=Botão de Mangue +Crimson Button=Botão de Hifas Carmesim +Warped Button=Botão de Hifas Distorcidas +A wooden button is a redstone component made out of wood which can be pushed to provide redstone power. When pushed, it powers adjacent redstone components for 1.5 seconds. Wooden buttons may also be pushed by arrows.=Um botão de madeira é um componente de redstone feito de madeira ao qual pode ser pressionado para fornecer carga de redstone. Quando pressionado, irá energizar componentes de redstone adjacentes por 1.5 segundo. Botões de madeira também podem ser pressionados por flechas. +Provides redstone power when pushed=Fornece carga de redstone quando é pressionado +Push duration: @1s=Duração de pressão: @1s +Pushable by arrow=Pressionável por flecha +A button is a redstone component which can be pushed to provide redstone power. When pushed, it powers adjacent redstone components for @1 seconds.=Um botão é um componente de redstone ao qual pode ser pressionado para fornecer carga de redstone. Quando pressionado, irá energizar componentes de redstone adjacentes por @1 segundos. From 73bcb0026f063b56e171c103b24ca947728e284b Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 7 Dec 2023 21:53:29 -0300 Subject: [PATCH 232/375] mcl_observers pt_BR translation --- .../REDSTONE/mcl_observers/locale/mcl_observers.pt_BR.tr | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 mods/ITEMS/REDSTONE/mcl_observers/locale/mcl_observers.pt_BR.tr diff --git a/mods/ITEMS/REDSTONE/mcl_observers/locale/mcl_observers.pt_BR.tr b/mods/ITEMS/REDSTONE/mcl_observers/locale/mcl_observers.pt_BR.tr new file mode 100644 index 000000000..18e82eb11 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_observers/locale/mcl_observers.pt_BR.tr @@ -0,0 +1,5 @@ +# textdomain: mcl_observers +Observer=Observador +An observer is a redstone component which observes the block in front of it and sends a very short redstone pulse whenever this block changes.=Um observador é um componente de redstone o qual observa o bloco a sua frente e envia um pulso de redstone muito curto sempre que esse bloco mudar. +Place the observer directly in front of the block you want to observe with the “face” looking at the block. The arrow points to the side of the output, which is at the opposite side of the “face”. You can place your redstone dust or any other component here.=Posicione o observador diretamente em frente ao bloco que você deseja observar com a "face" olhando para o bloco. A seta aponta para o lado da saída, a qual está no lado oposto da "face". Você pode posicionar seu pó de redstone ou outros componentes aqui. +Emits redstone pulse when block in front changes=Emite um pulso de redstone quando um bloco muda em sua frente From 7b93c65c450934ec97e3592202f851ca559ce5e3 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 7 Dec 2023 21:59:49 -0300 Subject: [PATCH 233/375] mcl_droppers pt_BR translation --- .../REDSTONE/mcl_droppers/locale/mcl_droppers.pt_BR.tr | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.pt_BR.tr diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.pt_BR.tr b/mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.pt_BR.tr new file mode 100644 index 000000000..56917c8f2 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.pt_BR.tr @@ -0,0 +1,9 @@ +# textdomain: mcl_droppers +Dropper=Liberador +A dropper is a redstone component and a container with 9 inventory slots which, when supplied with redstone power, drops an item or puts it into a container in front of it.=Um liberador é um componente de redstone e um recipiente com 9 slots de inventário ao qual, quando alimentado com carga de redstone, libera um item ou coloca-o em um recipiente em sua frente. +Droppers can be placed in 6 possible directions, items will be dropped out of the hole. Use the dropper to access its inventory. Supply it with redstone energy once to make the dropper drop or transfer a random item.=Liberadores podem ser posicionados em 6 direções possíveis, os itens serão liberados pelo buraco. Use o liberador para acessar seu inventário. Alimente-o com carga de redstone uma vez para fazer o liberador liberar ou transferir um item aleatório. +Downwards-Facing Dropper=Liberador Virado Para Baixo +Upwards-Facing Dropper=Liberador Virado Para Cima +Inventory=Inventário +9 inventory slots=Inventário de 9 slots +Drops item when powered by redstone power=Libera itens quando energizados por carga de redstone From 907e037430ad73ecf7f649488b535ad478bcf640 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 7 Dec 2023 22:14:32 -0300 Subject: [PATCH 234/375] mcl_dispensers pt_BR translation --- .../locale/mcl_dispensers.pt_BR.tr | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.pt_BR.tr diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.pt_BR.tr b/mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.pt_BR.tr new file mode 100644 index 000000000..b21f401ed --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.pt_BR.tr @@ -0,0 +1,25 @@ +# textdomain: mcl_dispensers +Dispenser=Ejetor +A dispenser is a block which acts as a redstone component which, when powered with redstone power, dispenses an item. It has a container with 9 inventory slots.=Um ejetor é um bloco ao qual age como um componente de redstone ao qual, quando energizado com carga de redstone, ejeta um item. Tem um recipiente com 9 slots de inventário. +Place the dispenser in one of 6 possible directions. The “hole” is where items will fly out of the dispenser. Use the dispenser to access its inventory. Insert the items you wish to dispense. Supply the dispenser with redstone energy once to dispense a random item.=Posicione o ejetor em uma das 6 direções possíveis. O "buraco" é por onde os itens irão voar para fora do ejetor. Use o ejetor para acessar seu inventário. Insira os itens que você deseja ejetar. Alimente o ejetor com carga de redstone uma vez para ejetar um item aleatório. +The dispenser will do different things, depending on the dispensed item:=O ejetor irá fazer coisas diferentes, dependendo do item ejetado: +• Arrows: Are launched=• Flechas: Serão lançadas +• Eggs and snowballs: Are thrown=• Ovos e bolas de neve: São arremessadas +• Fire charges: Are fired in a straight line=• Bolas de fogo: São atiradas em uma linha reta +• Armor: Will be equipped to players and armor stands=• Armadura: Será equipada em jogadores e suportes de armaduras +• Boats: Are placed on water or are dropped=• Barcos: São posicionados em água ou são liberados +• Minecart: Are placed on rails or are dropped=• Carrinhos: São posicionados em trilhos ou são liberados +• Bone meal: Is applied on the block it is facing=• Farinha de osso: É aplicada no bloco ao qual está encarando +• Empty buckets: Are used to collect a liquid source=• Baldes vazios: São usados para coletar uma fonte de líquido +• Filled buckets: Are used to place a liquid source=• Baldes preenchidos: São usados para posicionar uma fonte de líquido +• Heads, pumpkins: Equipped to players and armor stands, or placed as a block=• Cabeças, abóboras: São equipadas em jogadores e suportes de armaduras, ou posicionadas como um bloco +• Shulker boxes: Are placed as a block=• Caixas shulker: São posicionadas como um bloco +• TNT: Is placed and ignited=• TNT: É posicionada e acesa +• Flint and steel: Is used to ignite a fire in air and to ignite TNT=• Isqueiro: É usado para acender um fogo no ar e para acender uma TNT +• Spawn eggs: Will summon the mob they contain=• Ovos de geração: Vão invocar o mob que eles contém +• Other items: Are simply dropped=• Outros itens: São simplesmente liberados +Downwards-Facing Dispenser=Ejetor Virado Para Baixo +Upwards-Facing Dispenser=Ejetor Virado Para Cima +Inventory=Inventário +9 inventory slots=Inventário de 9 slots +Launches item when powered by redstone power=Lança itens quando energizados por carga de redstone From 85bc643442d0bd9ab77344b7cd838ce13f4497a1 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Thu, 7 Dec 2023 22:19:13 -0300 Subject: [PATCH 235/375] mesecons_lightstone pt_BR translation --- .../mesecons_lightstone/locale/mesecons_lightstone.pt_BR.tr | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.pt_BR.tr diff --git a/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.pt_BR.tr b/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.pt_BR.tr new file mode 100644 index 000000000..8d3c8a0fd --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.pt_BR.tr @@ -0,0 +1,4 @@ +# textdomain: mesecons_lightstone +Redstone Lamp=Lâmpada de Redstone +Redstone lamps are simple redstone components which glow brightly (light level @1) when they receive redstone power.=Lâmpadas de redstone são componentes de redstone simples ao qual brilha intensamente (nível de brilho @1) quando recebe carga de redstone. +Glows when powered by redstone power=Bliha quando energizada com carga de redstone From c20a37486e4b55e3a9ade123b751d5758d8a9d54 Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 8 Dec 2023 06:25:57 -0300 Subject: [PATCH 236/375] mesecons_pressureplates pt_BR translation --- .../locale/mesecons_pressureplates.pt_BR.tr | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.pt_BR.tr diff --git a/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.pt_BR.tr b/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.pt_BR.tr new file mode 100644 index 000000000..b0abc529c --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.pt_BR.tr @@ -0,0 +1,21 @@ +# textdomain: mesecons_pressureplates +A pressure plate is a redstone component which supplies its surrounding blocks with redstone power while someone or something rests on top of it.=Uma placa de pressão é um componente de redstone ao qual alimenta os blocos ao seu redor com carga de redstone enquanto alguém ou alguma coisa descansa em cima dela. +Oak Pressure Plate=Placa de Pressão de Carvalho +Acacia Pressure Plate=Placa de Pressão de Acácia +Birch Pressure Plate=Placa de Pressão de Bétula +Dark Oak Pressure Plate=Placa de Pressão de Carvalho Escuro +Spruce Pressure Plate=Placa de Pressão de Pinheiro +Jungle Pressure Plate=Placa de Pressão da Selva +Mangrove Pressure Plate=Placa de Pressão de Mangue +Crimson Pressure Plate=Placa de Pressão de Hifas Carmesim +Warped Pressure Plate=Placa de Pressão de Hifas Distorcidas +A wooden pressure plate is a redstone component which supplies its surrounding blocks with redstone power while any movable object (including dropped items, players and mobs) rests on top of it.=Uma placa de pressão de madeira é um componente de redstone ao qual alimenta os blocos ao seu redor com carga de redstone enquanto qualquer objeto móvel (incluindo itens largados, jogadores e mobs) descansarem em cima dela. +Polished Blackstone Pressure Plate=Placa de Pressão de Rocha Negra Polida +A polished blackstone pressure plate is a redstone component which supplies its surrounding blocks with redstone power while a player or mob stands on top of it. It is not triggered by anything else.=Uma placa de pressão de pedra negra polida é um componente de redstone ao qual alimenta os blocos ao seu redor com carga de redstone enquanto um jogador ou mob estiver em pé em cima dela. Não é acionada por outras coisas. +Stone Pressure Plate=Placa de Pressão de Pedra +A stone pressure plate is a redstone component which supplies its surrounding blocks with redstone power while a player or mob stands on top of it. It is not triggered by anything else.=Uma placa de pressão de pedra é um componente de redstone ao qual alimenta os blocos ao seu redor com carga de redstone enquanto um jogador ou mob estiver em pé em cima dela. Não é acionada por outras coisas. +Provides redstone power when pushed=Fornece carga de redstone quando pressionada +Pushable by players, mobs and objects=Pressionável por jogadores, mobs e objetos +Pushable by players and mobs=Pressionável por jogadores e mobs +Pushable by players=Pressionável por jogadores +Pushable by mobs=Pressionável por mobs From d59a6c6a009ef7c1de4a16471eb6caabcadd4c1e Mon Sep 17 00:00:00 2001 From: JoseDouglas26 Date: Fri, 8 Dec 2023 06:39:40 -0300 Subject: [PATCH 237/375] mesecons_delayer pt_BR translation --- .../locale/mesecons_delayer.pt_BR.tr | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.pt_BR.tr diff --git a/mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.pt_BR.tr b/mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.pt_BR.tr new file mode 100644 index 000000000..75af2b8b1 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.pt_BR.tr @@ -0,0 +1,13 @@ +# textdomain: mesecons_delayer +Redstone repeaters are versatile redstone components with multiple purposes: 1. They only allow signals to travel in one direction. 2. They delay the signal. 3. Optionally, they can lock their output in one state.=Repetidores de redstone são componentes de redstone versáteis com multíplos propósitos: 1. Eles apenas permitem que sinais viajem em uma direção. 2. Eles atrasam o sinal. 3. Opcionalmente, eles podem travar suas saídas em um estado. +To power a redstone repeater, send a signal in “arrow” direction (the input). The signal goes out on the opposite side (the output) with a delay. To change the delay, use the redstone repeater. The delay is between 0.1 and 0.4 seconds long and can be changed in steps of 0.1 seconds. It is indicated by the position of the moving redstone torch.=Para energizar um repetidor de redstone, envie um sinal na direção da "seta" (a entrada). O sinal sairá no lado oposto (a saída) com um atraso. Para mudar o atraso, use o repetidor de redstone. O atraso é entre 0.1 e 0.4 segundos de duração e podem ser mudados em passos de 0.1 segundo. É indicado pela posição da tocha tocha de redstone móvel. +To lock a repeater, send a signal from an adjacent repeater into one of its sides. While locked, the moving redstone torch disappears, the output doesn't change and the input signal is ignored.=Para travar um repetidor, envie um sinal de um repetidor adjacente para uma de suas laterais. Enquanto travado, a tocha de redstone móvel desaparece, a saída não muda e o sinal de entrada é ignorado. +Redstone Repeater=Repetidor de Redstone +Redstone Repeater (Powered)=Repetidor de Redstone (Energizado) +Redstone Repeater (Locked)=Repetidor de Redstone (Travado) +Redstone Repeater (Locked, Powered)=Repetidor de Redstone (Travado, Energizado) +Redstone Repeater (Delay @1)=Repetidor de Redstone (Atraso @1) +Redstone Repeater (Delay @1, Powered)=Repetidor de Redstone (Atraso @1, Energizado) +Transmits redstone power only in one direction=Transmite carga de redstone em apenas uma direção +Delays signal=Atrasa o sinal +Output locks when getting active redstone repeater signal from the side=A saída é travada quando estiver recebendo um sinal de um repetidor de redstone ativo pelas laterais From 29d40ef55375b7cc1d31b442038c75613d6db32d Mon Sep 17 00:00:00 2001 From: cora Date: Mon, 18 Dec 2023 12:02:46 +0100 Subject: [PATCH 238/375] Mix down new mob sounds to mono --- .../mobs_mc/sounds/extra_mobs_hoglin.1.ogg | Bin 6514 -> 4948 bytes .../mobs_mc/sounds/extra_mobs_hoglin.2.ogg | Bin 10262 -> 7163 bytes .../mobs_mc/sounds/extra_mobs_hoglin_hurt.ogg | Bin 5751 -> 4363 bytes 3 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 mods/ENTITIES/mobs_mc/sounds/extra_mobs_hoglin.1.ogg mode change 100755 => 100644 mods/ENTITIES/mobs_mc/sounds/extra_mobs_hoglin.2.ogg mode change 100755 => 100644 mods/ENTITIES/mobs_mc/sounds/extra_mobs_hoglin_hurt.ogg diff --git a/mods/ENTITIES/mobs_mc/sounds/extra_mobs_hoglin.1.ogg b/mods/ENTITIES/mobs_mc/sounds/extra_mobs_hoglin.1.ogg old mode 100755 new mode 100644 index 06bdc4b248f23aa576569030446b3e56a2cb6196..5bc9a18ee96d50606bd4f24ba243925fb6c7ec9c GIT binary patch literal 4948 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 literal 6514 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 literal 5751 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 From e1d5899aa53337dcaf0354614910ea6b2070635b Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Sun, 24 Dec 2023 01:27:29 +0100 Subject: [PATCH 239/375] Remove unneeded dependencies This patches a heisenbug to be investigated later --- mods/PLAYER/mcl_fovapi/mod.conf | 1 - mods/PLAYER/mcl_sprint/mod.conf | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/mods/PLAYER/mcl_fovapi/mod.conf b/mods/PLAYER/mcl_fovapi/mod.conf index 86f174c41..3aff902a1 100644 --- a/mods/PLAYER/mcl_fovapi/mod.conf +++ b/mods/PLAYER/mcl_fovapi/mod.conf @@ -1,4 +1,3 @@ name = mcl_fovapi author = Michieal, Herowl description = An API for handling FOV changes. -depends = mcl_player diff --git a/mods/PLAYER/mcl_sprint/mod.conf b/mods/PLAYER/mcl_sprint/mod.conf index 9b9a7366b..b8bc02698 100644 --- a/mods/PLAYER/mcl_sprint/mod.conf +++ b/mods/PLAYER/mcl_sprint/mod.conf @@ -2,4 +2,4 @@ name = mcl_sprint author = GunshipPenguin description = Allows the player to sprint by pressing the “AUX” key (default: E). depends = mcl_playerinfo, playerphysics, mcl_hunger, mcl_fovapi -optional = mcl_bows \ No newline at end of file +optional = mcl_bows From a2a4da5aed0aaf94c941cb457e760cf8cfaec60d Mon Sep 17 00:00:00 2001 From: the-real-herowl Date: Sun, 24 Dec 2023 05:48:41 +0100 Subject: [PATCH 240/375] Added shepherd functionality --- mods/CORE/mcl_util/init.lua | 13 ++- mods/ENTITIES/mcl_mobs/breeding.lua | 3 + mods/ENTITIES/mobs_mc/sheep.lua | 2 +- mods/ENVIRONMENT/mcl_weather/skycolor.lua | 3 +- mods/ITEMS/mcl_chests/init.lua | 12 +-- mods/ITEMS/mcl_shepherd/init.lua | 91 ++++++++++++++++++ mods/ITEMS/mcl_shepherd/mod.conf | 4 + .../mcl_shepherd/sounds/shepherd-midnight.ogg | Bin 0 -> 488662 bytes mods/ITEMS/mcl_spyglass/init.lua | 6 ++ textures/mcl_moon_special.png | Bin 0 -> 2316 bytes textures/mcl_tool_shepherd_staff.png | Bin 0 -> 176 bytes 11 files changed, 119 insertions(+), 15 deletions(-) create mode 100644 mods/ITEMS/mcl_shepherd/init.lua create mode 100644 mods/ITEMS/mcl_shepherd/mod.conf create mode 100644 mods/ITEMS/mcl_shepherd/sounds/shepherd-midnight.ogg create mode 100644 textures/mcl_moon_special.png create mode 100644 textures/mcl_tool_shepherd_staff.png diff --git a/mods/CORE/mcl_util/init.lua b/mods/CORE/mcl_util/init.lua index af0f92698..17ac6c9d6 100644 --- a/mods/CORE/mcl_util/init.lua +++ b/mods/CORE/mcl_util/init.lua @@ -327,7 +327,7 @@ function mcl_util.hopper_push(pos, dst_pos) local dst_list = 'main' local dst_inv, stack_id - + if dst_def._mcl_hoppers_on_try_push then dst_inv, dst_list, stack_id = dst_def._mcl_hoppers_on_try_push(dst_pos, pos, hop_inv, hop_list) else @@ -365,7 +365,7 @@ function mcl_util.hopper_pull(pos, src_pos) local src_list = 'main' local src_inv, stack_id - + if src_def._mcl_hoppers_on_try_pull then src_inv, src_list, stack_id = src_def._mcl_hoppers_on_try_pull(src_pos, pos, hop_inv, hop_list) else @@ -1096,3 +1096,12 @@ function mcl_util.move_player_list(player, src_listname) vector.offset(player:get_pos(), 0, 1.2, 0), player:get_look_dir(), false) end + +function mcl_util.is_it_christmas() + local date = os.date("*t") + if date.month == 12 and date.day >= 24 or date.month == 1 and date.day <= 7 then + return true + else + return false + end +end diff --git a/mods/ENTITIES/mcl_mobs/breeding.lua b/mods/ENTITIES/mcl_mobs/breeding.lua index c6d8f92cd..8d3e03ec6 100644 --- a/mods/ENTITIES/mcl_mobs/breeding.lua +++ b/mods/ENTITIES/mcl_mobs/breeding.lua @@ -32,6 +32,9 @@ function mob_class:feed_tame(clicker, feed_count, breed, tame, notake) if not self.follow then return false end + if clicker:get_wielded_item():get_definition()._mcl_not_consumable then + return false + end -- can eat/tame with item in hand if self.nofollow or self:follow_holding(clicker) then local consume_food = false diff --git a/mods/ENTITIES/mobs_mc/sheep.lua b/mods/ENTITIES/mobs_mc/sheep.lua index 4a5e924d8..b67b672c5 100644 --- a/mods/ENTITIES/mobs_mc/sheep.lua +++ b/mods/ENTITIES/mobs_mc/sheep.lua @@ -111,7 +111,7 @@ mcl_mobs.register_mob("mobs_mc:sheep", { run_start = 81, run_end = 121, run_speed = 60, eat_start = 121, eat_start = 161, eat_loop = false, }, - follow = { "mcl_farming:wheat_item" }, + follow = { "mcl_farming:wheat_item", "mcl_shepherd:shepherd_staff" }, view_range = 12, -- Eat grass diff --git a/mods/ENVIRONMENT/mcl_weather/skycolor.lua b/mods/ENVIRONMENT/mcl_weather/skycolor.lua index aea469760..6d9efd47a 100644 --- a/mods/ENVIRONMENT/mcl_weather/skycolor.lua +++ b/mods/ENVIRONMENT/mcl_weather/skycolor.lua @@ -120,12 +120,13 @@ mcl_weather.skycolor = { override_day_night_ratio = function(player, ratio) local meta = player:get_meta() local has_night_vision = meta:get_int("night_vision") == 1 + local is_visited_shepherd = meta:get_int("mcl_shepherd:special") == 1 local arg -- Apply night vision only for dark sky local is_dark = minetest.get_timeofday() > 0.8 or minetest.get_timeofday() < 0.2 or mcl_weather.state ~= "none" local pos = player:get_pos() local dim = mcl_worlds.pos_to_dimension(pos) - if has_night_vision and is_dark and dim ~= "nether" and dim ~= "end" then + if (has_night_vision or is_visited_shepherd) and is_dark and dim ~= "nether" and dim ~= "end" then if ratio == nil then arg = NIGHT_VISION_RATIO else diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index 38b1102a3..629f48fbc 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -13,17 +13,7 @@ local mod_doc = minetest.get_modpath("doc") mcl_chests = {} -- Christmas chest setup -local it_is_christmas = false -local date = os.date("*t") -if ( - date.month == 12 and ( - date.day == 24 or - date.day == 25 or - date.day == 26 - ) - ) then - it_is_christmas = true -end +local it_is_christmas = mcl_util.is_it_christmas() local tiles_chest_normal_small = { "mcl_chests_normal.png" } local tiles_chest_normal_double = { "mcl_chests_normal_double.png" } diff --git a/mods/ITEMS/mcl_shepherd/init.lua b/mods/ITEMS/mcl_shepherd/init.lua new file mode 100644 index 000000000..d06b02f93 --- /dev/null +++ b/mods/ITEMS/mcl_shepherd/init.lua @@ -0,0 +1,91 @@ +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) +local S = minetest.get_translator(modname) + + +minetest.register_tool("mcl_shepherd:shepherd_staff", { + description = S("Shepherd Staff"), + _doc_items_longdesc = S(""), + _doc_items_usagehelp = S(""), + inventory_image = "mcl_tool_shepherd_staff.png", + wield_scale = 1.3*mcl_vars.tool_wield_scale, + stack_max = 1, + groups = { weapon=1, tool=1, staff=1, enchantability=-1 }, + tool_capabilities = { + full_punch_interval = 1, + max_drop_level=1, + damage_groups = {fleshy=2}, + punch_attack_uses = 45, + }, + sound = { breaks = "default_tool_breaks" }, + _mcl_toollike_wield = true, + _mcl_diggroups = { + swordy = { speed = 1, level = 1, uses = 60 }, + swordy_cobweb = { speed = 1, level = 1, uses = 60 } + }, + _mcl_not_consumable = true, +}) + +if mcl_util.is_it_christmas() then + minetest.register_globalstep(function(dtime) + local time = minetest.get_timeofday() + if time < 0.005 or time > 0.995 then + for _, player in pairs(minetest.get_connected_players()) do + local meta = player:get_meta() + local sp = meta:get_int("mcl_shepherd:special") + if sp == 0 and player:get_wielded_item():get_definition().groups.staff then + local has_sheep = false + for _, obj in pairs(minetest.get_objects_inside_radius(player:get_pos(), 3)) do + local ent = obj:get_luaentity() + if ent and ent.name == "mobs_mc:sheep" then + has_sheep = true + break + end + end + if has_sheep then + minetest.sound_play( + {name="shepherd-midnight", gain=3, pitch=1.0}, + {to_player=player:get_player_name(), gain=1.0, fade=0.0, pitch=1.0}, + false + ) + meta:set_int("mcl_shepherd:special", 1) + mcl_weather.skycolor.update_sky_color({player}) + minetest.after(45, function(name) + local player = minetest.get_player_by_name(name) + if not player then return end + local meta = player:get_meta() + meta:set_int("mcl_shepherd:special", 0) + mcl_weather.skycolor.update_sky_color({player}) + end, player:get_player_name()) + end + end + end + end + end) + minetest.register_on_joinplayer(function(player) + local meta = player:get_meta() + meta:set_int("mcl_shepherd:special", 0) + end) +end + +minetest.register_craft({ + output = "mcl_shepherd:shepherd_staff", + recipe = { + {"","","mcl_core:stick"}, + {"","mcl_core:stick",""}, + {"mcl_core:stick","",""}, + } +}) +minetest.register_craft({ + output = "mcl_shepherd:shepherd_staff", + recipe = { + {"mcl_core:stick", "", ""}, + {"", "mcl_core:stick", ""}, + {"","","mcl_core:stick"}, + } +}) +minetest.register_craft({ + type = "fuel", + recipe = "mcl_shepherd:shepherd_staff", + burntime = 15, +}) diff --git a/mods/ITEMS/mcl_shepherd/mod.conf b/mods/ITEMS/mcl_shepherd/mod.conf new file mode 100644 index 000000000..972e324d0 --- /dev/null +++ b/mods/ITEMS/mcl_shepherd/mod.conf @@ -0,0 +1,4 @@ +name = mcl_shepherd +author = Herowl +depends = mcl_core, mobs_mc, mcl_util +optional_depends = doc diff --git a/mods/ITEMS/mcl_shepherd/sounds/shepherd-midnight.ogg b/mods/ITEMS/mcl_shepherd/sounds/shepherd-midnight.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ddd6a4e90fe4fc07f87322a3930e0374211b4e43 GIT binary patch literal 488662 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�{zZ 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