diff --git a/.gitignore b/.gitignore index de181d31a..900629d0f 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,6 @@ *.blend3 /.idea/ *.xcf -.Rproj.user \ No newline at end of file +.Rproj.user +prompt.txt +__pycache__ diff --git a/CREDITS.md b/CREDITS.md index 39eed70e1..548ff94f6 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,21 @@ * Niterux * appgurueu * seventeenthShulker +* DinoNuggies4665 +* basxto +* Morik666 +* Eliy21 +* mdk +* Alessandra Lozoya +* VanicGame +* ThePython10110 +* Araca +* Montandalar +* mim +* Dark +* Bakawun +* JoseDouglas26 +* Zasco ## Music * Jordach for the jukebox music compilation from Big Freaking Dig @@ -155,6 +172,7 @@ * cora * Faerraven / Michieal * PrairieWind +* ChrisPHP ## 3D Models * 22i @@ -162,6 +180,7 @@ * epCode * Faerraven / Michieal * SumianVoice +* thunder1035 ## Textures * XSSheep @@ -181,6 +200,8 @@ * Aeonix_Aeon * Wbjitscool * SmokeyDope +* thunder1035 +* Herowl ## Translations * Wuzzy @@ -200,6 +221,10 @@ * Temak * megustanlosfrijoles * kbundg +* Isaac Dennis +* ADLON +* Sab Pyrope +* JoseDouglas26 ## Funders * 40W diff --git a/game.conf b/game.conf index 3ad5a33a5..d238ce93c 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.87.0-SNAPSHOT diff --git a/mods/CORE/controls/init.lua b/mods/CORE/controls/init.lua index ef57281a4..7f308d8e0 100644 --- a/mods/CORE/controls/init.lua +++ b/mods/CORE/controls/init.lua @@ -31,6 +31,7 @@ local known_controls = { aux1 = true, down = true, up = true, + zoom = true, } minetest.register_on_joinplayer(function(player) diff --git a/mods/CORE/mcl_explosions/locale/mcl_explosions.oc.tr b/mods/CORE/mcl_explosions/locale/mcl_explosions.oc.tr new file mode 100644 index 000000000..eac0b501d --- /dev/null +++ b/mods/CORE/mcl_explosions/locale/mcl_explosions.oc.tr @@ -0,0 +1,2 @@ +# textdomain:mcl_explosions +@1 was caught in an explosion.=@1 z-es mòrt dins una explosion 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. diff --git a/mods/CORE/mcl_util/init.lua b/mods/CORE/mcl_util/init.lua index af0f92698..4541c603e 100644 --- a/mods/CORE/mcl_util/init.lua +++ b/mods/CORE/mcl_util/init.lua @@ -160,7 +160,7 @@ function mcl_util.rotate_axis_and_place(itemstack, placer, pointed_thing, infini return end local undef = minetest.registered_nodes[unode.name] - if undef and undef.on_rightclick then + if undef and undef.on_rightclick and not invert_wall then undef.on_rightclick(pointed_thing.under, unode, placer, itemstack, pointed_thing) return @@ -198,25 +198,11 @@ function mcl_util.rotate_axis_and_place(itemstack, placer, pointed_thing, infini local p2 if is_y then - if invert_wall then - if fdir == 3 or fdir == 1 then - p2 = 12 - else - p2 = 6 - end - end + p2 = 0 elseif is_x then - if invert_wall then - p2 = 0 - else - p2 = 12 - end + p2 = 12 elseif is_z then - if invert_wall then - p2 = 0 - else - p2 = 6 - end + p2 = 6 end minetest.set_node(pos, {name = wield_name, param2 = p2}) @@ -327,7 +313,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 +351,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 @@ -1075,7 +1061,7 @@ function mcl_util.move_list(src_inv, src_listname, out_inv, out_listname, pos, d v.y = v.y * 4 + 2 v.z = v.z * 4 obj:set_velocity(v) - minetest.log("error", vector.to_string(v)) + mcl_util.mcl_log("item velocity calculated "..vector.to_string(v), "[mcl_util]") end if not insta_collect then obj:get_luaentity()._insta_collect = false @@ -1096,3 +1082,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_boats/locale/mcl_boats.oc.tr b/mods/ENTITIES/mcl_boats/locale/mcl_boats.oc.tr new file mode 100644 index 000000000..7ee886712 --- /dev/null +++ b/mods/ENTITIES/mcl_boats/locale/mcl_boats.oc.tr @@ -0,0 +1,21 @@ +# textdomain: mcl_boats +Acacia Boat=Barca de Cacèir +Birch Boat=Barca de Beç +Boat=Barca +Boats are used to travel on the surface of water.=Las barcas son utilizadas per voiatja per aigas. +Dark Oak Boat=Barca de Ròure Nèir +Jungle Boat=Barca d'Acajó +Oak Boat=Barca de Ròure +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.=Fasetz un clic dreit sobre una sorça d'aiga per plaça la barca. Fasetz un clic dreit sobre la barca per rintrar. Utilizatz [Gaucha] e [Dreita] per menar, [Davant] per accelerar e [Darrèir] per ralentir o racuolar. Utilizatz [Sneak] per z-o quitar, tustatz la barca per z-o faire tombar coma objècte. +Spruce Boat=Barca de Sap +Water vehicle=Veïcule per aiga +Sneak to dismount=Se baissar per descendre +Obsidian Boat=Barca d'Obsidiana +Mangrove Boat=Barca de Paletuvèir +Oak Chest Boat=Barca de Ròure embei una Mala +Spruce Chest Boat=Barca de Sap embei una Mala +Birch Chest Boat=Barca de Beç embei una Mala +Jungle Chest Boat=Barca d'Acajó embei una Mala +Acacia Chest Boat=Barca de Cacèir embei una Mala +Dark Oak Chest Boat=Barca de Ròure Nèir embei una Mala +Mangrove Chest Boat=Barca de Paletuvèir embei una Mala 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ú diff --git a/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.oc.tr b/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.oc.tr new file mode 100644 index 000000000..0d6da5d05 --- /dev/null +++ b/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.oc.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_falling_nodes +@1 was smashed by a falling anvil.=@1 a estat espotit per un enclutge +@1 was smashed by a falling block.=@1 a estat espotit per un blòc 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. diff --git a/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.oc.tr b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.oc.tr new file mode 100644 index 000000000..5b8cfb7a9 --- /dev/null +++ b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.oc.tr @@ -0,0 +1,36 @@ +# textdomain: mcl_minecarts +Minecart=Vagonet +Minecarts can be used for a quick transportion on rails.=Los vagonet pòdon èsser utilizats per un transpòrt rapide per ralhs. +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.=Los vagonets ròtlon mas per ralhs e seguisson totjorn la pista. A una joncion T embei ren davant, tòrnon a gaucha. +You can place the minecart on rails. Right-click it to enter it. Punch it to get it moving.=Podètz plaçar le vagonet per ralhs. Fasetz un clic dreit dessobre per çai rentrar. Tustatz z-o per z-o faire bojar. +To obtain the minecart, punch it while holding down the sneak key.=Per aver le vagonet, tustatz z-o embei la tocha sneak enfonçada. +A minecart with TNT is an explosive vehicle that travels on rail.=Un vagonet embei TNT z-es un vagonet explosiu que voiatja per ralhs. +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.=Plaçatz z-o per ralhs. Tustatz z-o per z-o desplaçar. La TNT z-es atubada embei un batifuòc o quand le vagonet z-es per un ralh d'activacion atubat. +To obtain the minecart and TNT, punch them while holding down the sneak key. You can't do this if the TNT was ignited.=Per obtenèr le vagonet e la TNT, tustatz z-o embei la tocha sneak enfonçada. Podètz pas faire quo si la TNT z-es atubada. +A minecart with furnace is a vehicle that travels on rails. It can propel itself with fuel.=Un vagonet embei un fornil z-es un veïcule que voiatja per ralhs. Pòt se propulsar embei dau carburant. +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.=Plaçatz z-o per ralhs. Si li balhatz dau charbon, le fornil vai començar de borlar lòngtemps e porà rotlar. Tustatz z-o per z-o faire bojar. +To obtain the minecart and furnace, punch them while holding down the sneak key.=Per obtener le vagonet e le fornil, tustatz z-o embei la tocha sneak enfonçada. +Minecart with Chest=Vagonet embei una Mala +Minecart with Furnace=Vagonet embei un Fornil +Minecart with Command Block=Vagonet embei un Blòc de Comandas +Minecart with Hopper=Vagonet embei un Embure +Minecart with TNT=Vagonet embei de la 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.=Plaçatz z-o per sòu per construrre vostre chamin de fèrre, los ralhs se conectaron entre ilhs e faron de las corbas, de las junccions en T, en traversadas et en pentas au besonh. +Rail=Ralh +Rails can be used to build transport tracks for minecarts. Normal rails slightly slow down minecarts due to friction.=Los ralhs pòdon èsser utilizats per construrre los chamins de transpòrt per los vagonets. Los ralhs normaus ralentissons gentament los vagonet per causa de friccion. +Powered Rail=Ralh Atubat +Rails can be used to build transport tracks for minecarts. Powered rails are able to accelerate and brake minecarts.=Los ralhs pòdon èsser utilizats per construrre los chamins de transpòrt per los vagonets. Los ralhs atubats son per faire accelerar o frenar los vagonets. +Without redstone power, the rail will brake minecarts. To make this rail accelerate minecarts, power it with redstone power.=Sens energia de pèirotge, le ralh vai frenar los vagonets. Per que le ralh accelera los vagonets, alimentatz z-o embei de l'energia de pèirotge. +Activator Rail=Ralh d'Activacion +Rails can be used to build transport tracks for minecarts. Activator rails are used to activate special minecarts.=Los ralhs pòdon èsser utilizats per construrre los chamins de transpòrt per los vagonets. Los ralhs d'activacion son utilizats per activar daus vagonets speciaus. +To make this rail activate minecarts, power it with redstone power and send a minecart over this piece of rail.=Per activar le ralh, alimentatz z-o embei de l'energia de pèirotge e fasetz rotlar un vagonet per aqueste ralh. +Detector Rail=Ralh de Deteccion +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.=Los ralhs pòdon èsser utilizats per construirre los chamins de transpòrt per los vagonets. Los ralhs de deteccion pòdon detectar un vagonet per ilhs e atubar un mecanisme de pèirotge. +To detect a minecart and provide redstone power, connect it to redstone trails or redstone mechanisms and send any minecart over the rail.=Per detectar un vagonet e produrre de l'energia de pèirotge, conectatz le ralh a de la pèirotge e fasetz rotlar un vagonet per i-aul. +Track for minecarts=Pista per vagonets +Speed up when powered, slow down when not powered=Acceleratz quand z-es atubat, ralentissetz quand z-es pas atubat. +Activates minecarts when powered=Activa los vagonets quand pas atubat. +Emits redstone power when a minecart is detected=Emeta de l'energia de pèirotge quand un vagonet z-es detectat. +Vehicle for fast travel on rails=Veicule per voiatjar vistament per ralhs. +Can be ignited by tools or powered activator rail=Pòt èsser atubat embei daus otilhs o un ralh d'activacion +Sneak to dismount=Se baissar per descendre 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 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/mcl_mobs/combat.lua b/mods/ENTITIES/mcl_mobs/combat.lua index 6952f6581..745a06c5c 100644 --- a/mods/ENTITIES/mcl_mobs/combat.lua +++ b/mods/ENTITIES/mcl_mobs/combat.lua @@ -35,14 +35,19 @@ function mob_class:day_docile() end end --- attack player/mob -function mob_class:do_attack(player) +-- get this mob to attack the object +function mob_class:do_attack(object) if self.state == "attack" or self.state == "die" then return end - self.attack = player + + if object:is_player() and not minetest.settings:get_bool("enable_damage") then + return + end + + self.attack = object self.state = "attack" -- TODO: Implement war_cry sound without being annoying @@ -516,6 +521,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 +561,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 @@ -719,12 +724,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 @@ -1231,6 +1236,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 @@ -1250,7 +1258,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 diff --git a/mods/ENTITIES/mcl_mobs/init.lua b/mods/ENTITIES/mcl_mobs/init.lua index 630548f12..fb39fa151 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, @@ -333,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) @@ -349,16 +357,18 @@ 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, switch = 0, - _lifetime = def._lifetime or 150, + _lifetime = def._lifetime or 7, owner_id = def.owner_id, rotate = def.rotate, - on_punch = def.on_punch or function(self) - local vel = self.object:get_velocity() - self.object:set_velocity({x=vel.x * -1, y=vel.y * -1, z=vel.z * -1}) + on_punch = def.on_punch or function(self, puncher, time_from_last_punch, tool_capabilities, dir, damage) + local vel = self.object:get_velocity():length() + self.object:set_velocity({x=dir.x * vel, y=dir.y * vel, z=dir.z * vel}) + self._puncher = puncher end, collisionbox = def.collisionbox or {0, 0, 0, 0, 0, 0}, automatic_face_movement_dir = def.rotate @@ -368,7 +378,7 @@ function mcl_mobs.register_arrow(name, def) on_step = def.on_step or function(self, dtime) - self.timer = self.timer + 1 + self.timer = self.timer + dtime local pos = self.object:get_pos() @@ -421,26 +431,37 @@ 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 + for _,object in pairs(minetest.get_objects_inside_radius(pos, 1.5)) do if self.hit_player - and player:is_player() then + and object:is_player() then - self.hit_player(self, player) + self.hit_player(self, object) self.object:remove(); return end - local entity = player:get_luaentity() + local entity = object:get_luaentity() if entity and self.hit_mob and entity.is_mob == true - and tostring(player) ~= self.owner_id + and (tostring(object) ~= self.owner_id or self.timer > 2) and entity.name ~= self.object:get_luaentity().name then - self.hit_mob(self, player) + self.hit_mob(self, object) self.object:remove(); return end @@ -448,9 +469,9 @@ function mcl_mobs.register_arrow(name, def) if entity and self.hit_object and (not entity.is_mob) - and tostring(player) ~= self.owner_id + and (tostring(object) ~= self.owner_id or self.timer > 2) and entity.name ~= self.object:get_luaentity().name then - self.hit_object(self, player) + self.hit_object(self, object) self.object:remove(); return end diff --git a/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.oc.tr b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.oc.tr new file mode 100644 index 000000000..a9e775fff --- /dev/null +++ b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.oc.tr @@ -0,0 +1,13 @@ +# textdomain: mcl_mobs +Peaceful mode active! No monsters will spawn.=Mòde tranquile actiu! Gis de mostre vai aparèisser. +This allows you to place a single mob.=Quo permet de plaça una creatura. +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.=Plaçatz z-o a l'endreit que volètz veire la creatura aparèisser. Las bèstias seron dejà domesticadas, defòra si laissatz la tocha se baissar enfonçada. Si z-o plaçatz sobre un generator de creaturas, chamjatz la creatura generada. +You need the “maphack” privilege to change the mob spawner.=Avètz besonh dau privilègi "maphack" per chamjar le generator de creaturas. +Name Tag=Étiquette de nom +A name tag is an item to name a mob.=Una etiqueta z-es un otilh per chamjar le nom de la creatura. +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.=Davant d'utilizar l'etiqueta, vos fau li botar un nom embei una enclutge. Après, podètz utilizar l'etiqueta per nomar una creatura. L'etiqueta pòt èsser utilizada un còp. +Only peaceful mobs allowed!=Mas las creaturas pacificas son autorizadas! +Give names to mobs=Balha daus noms a las creaturas +Set name at anvil=Botar le nom embei l'enclutge +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.=Lèva las creaturas specifiadas defòra de las que son nomadas o domesticadas. Per le paramètre segònd, utilizar nomat/domesticat per mas seleccionar las creaturas nomadas/domesticadas, o una distança per specifiar la distança maximum embei li joairi. +Default usage. Clearing hostile mobs. For more options please type: /help clearmobs=Usage par défaut. Lèva las creaturas ostilas. Per mai d'opcions, escriure : /help clearmobs 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 diff --git a/mods/ENTITIES/mcl_mobs/physics.lua b/mods/ENTITIES/mcl_mobs/physics.lua index 64bcfa822..705b22dbb 100644 --- a/mods/ENTITIES/mcl_mobs/physics.lua +++ b/mods/ENTITIES/mcl_mobs/physics.lua @@ -761,6 +761,61 @@ function mob_class:do_env_damage() end end + -- Cactus damage + local near = minetest.find_node_near(pos, 1, "mcl_core:cactus", true) + if not near and near ~= nil then + near = find_node_near({x=pos.x, y=pos.y-1, z=pos.z}, 1, "mcl_core:cactus", true) + end + if near then + -- is mob touching the cactus? + local dist = vector.distance(pos, near) + local dist_feet = vector.distance({x=pos.x, y=pos.y-1, z=pos.z}, near) + local large_mob = false + local medium_mob = false + if self.name == "mobs_mc:ender_dragon" or + self.name == "mobs_mc:ghast" or + self.name == "mobs_mc:guardian_elder" or + self.name == "mobs_mc:slime_big" or + self.name == "mobs_mc:magma_cube_big" or + self.name == "mobs_mc:wither" then + + large_mob = true + elseif self.name == "mobs_mc:hoglin" or + self.name == "mobs_mc:zoglin" or + self.name == "mobs_mc:horse" or + self.name == "mobs_mc:skeleton_horse" or + self.name == "mobs_mc:zombie_horse" or + self.name == "mobs_mc:donkey" or + self.name == "mobs_mc:mule" or + self.name == "mobs_mc:iron_golem" or + self.name == "mobs_mc:polar_bear" or + self.name == "mobs_mc:spider" or + self.name == "mobs_mc:cave_spider" or + self.name == "mobs_mc:strider" then + + medium_mob = true + end + if (not large_mob and not medium_mob and (dist < 1.03 or dist_feet < 1.6)) or (medium_mob and (dist < 1.165 or dist_feet < 1.73)) or (large_mob and (dist < 1.25 or dist_feet < 1.9)) then + if self.health ~= 0 then + self:damage_mob("cactus", 2) + + if self:check_for_death("cactus", {type = "environment", + pos = pos, node = self.standing_in}) then + return true + end + end + end + end + -- is mob standing on the cactus? + if self.standing_on == "mcl_core:cactus" or self.standing_in == "mcl_core:cactus" or self.standing_under == "mcl_core:cactus" then + self:damage_mob("cactus", 2) + + if self:check_for_death("cactus", {type = "environment", + pos = pos, node = self.standing_in}) then + return true + end + end + -- Drowning damage if self.breath_max ~= -1 then local drowning = false diff --git a/mods/ENTITIES/mcl_mobs/spawning.lua b/mods/ENTITIES/mcl_mobs/spawning.lua old mode 100644 new mode 100755 index 885391759..4108d038c --- a/mods/ENTITIES/mcl_mobs/spawning.lua +++ b/mods/ENTITIES/mcl_mobs/spawning.lua @@ -16,7 +16,6 @@ local find_nodes_in_area_under_air = minetest.find_nodes_in_area_under_air local get_biome_name = minetest.get_biome_name local get_objects_inside_radius = minetest.get_objects_inside_radius local get_connected_players = minetest.get_connected_players -local minetest_get_perlin = minetest.get_perlin local math_random = math.random local math_floor = math.floor @@ -97,19 +96,6 @@ local mobs_spawn = minetest.settings:get_bool("mobs_spawn", true) ~= false local spawn_protected = minetest.settings:get_bool("mobs_spawn_protected") ~= false local logging = minetest.settings:get_bool("mcl_logging_mobs_spawn",true) -local noise_params = { - offset = 0, - scale = 3, - spread = { - x = 301, - y = 50, - z = 304, - }, - seed = 100, - octaves = 3, - persistence = 0.5, -} - -- THIS IS THE BIG LIST OF ALL BIOMES - used for programming/updating mobs -- Also used for missing parameter -- Please update the list when adding new biomes! @@ -446,7 +432,6 @@ WARNING: BIOME INTEGRATION NEEDED -> How to get biome through lua?? local spawn_dictionary = {} --this is where all of the spawning information is kept for mobs that don't naturally spawn local non_spawn_dictionary = {} -local summary_chance = 0 function mcl_mobs:spawn_setup(def) if not mobs_spawn then return end @@ -508,7 +493,6 @@ function mcl_mobs:spawn_setup(def) check_position = check_position, on_spawn = on_spawn, } - summary_chance = summary_chance + chance end function mcl_mobs:mob_light_lvl(mob_name, dimension) @@ -612,10 +596,8 @@ function mcl_mobs:spawn_specific(name, dimension, type_of_spawning, biomes, min_ spawn_dictionary[key]["day_toggle"] = day_toggle spawn_dictionary[key]["check_position"] = check_position - summary_chance = summary_chance + chance end - local two_pi = 2 * math.pi local function get_next_mob_spawn_pos(pos) -- TODO We should consider spawning something a little further away sporadically. @@ -875,8 +857,6 @@ minetest.register_chatcommand("spawn_mob",{ if mobs_spawn then - local perlin_noise - -- Get pos to spawn, x and z are randomised, y is range @@ -973,9 +953,21 @@ if mobs_spawn then return spawning_position end + local cumulative_chance = nil + local mob_library_worker_table = nil + local function initialize_spawn_data() + if not mob_library_worker_table then + mob_library_worker_table = table_copy(spawn_dictionary) + end + if not cumulative_chance then + cumulative_chance = 0 + for k, v in pairs(mob_library_worker_table) do + cumulative_chance = cumulative_chance + v.chance + end + end + end + local function spawn_a_mob(pos, cap_space_hostile, cap_space_non_hostile) - --create a disconnected clone of the spawn dictionary, prevents memory leak - local mob_library_worker_table = table_copy(spawn_dictionary) local spawning_position = find_spawning_position(pos, FIND_SPAWN_POS_RETRIES) if not spawning_position then @@ -988,22 +980,25 @@ if mobs_spawn then --output_mob_stats(mob_counts_wide) --grab mob that fits into the spawning location - --randomly grab a mob, don't exclude any possibilities - perlin_noise = perlin_noise or minetest_get_perlin(noise_params) - local noise = perlin_noise:get_3d(spawning_position) - local current_summary_chance = summary_chance + --use random weighted choice with replacement to grab a mob, don't exclude any possibilities + --shuffle table once every loop to provide equal inclusion probability to all mobs + --repeat grabbing a mob to maintain existing spawn rates + local spawn_loop_counter = #mob_library_worker_table - table.shuffle(mob_library_worker_table) - - while #mob_library_worker_table > 0 do - local mob_chance_offset = (math_round(noise * current_summary_chance + 12345) % current_summary_chance) + 1 + while spawn_loop_counter > 0 do + table.shuffle(mob_library_worker_table) + local mob_chance_offset = math_random(1, cumulative_chance) local mob_index = 1 local mob_chance = mob_library_worker_table[mob_index].chance local step_chance = mob_chance while step_chance < mob_chance_offset do mob_index = mob_index + 1 - mob_chance = mob_library_worker_table[mob_index].chance - step_chance = step_chance + mob_chance + if mob_index <= #mob_library_worker_table then + mob_chance = mob_library_worker_table[mob_index].chance + step_chance = step_chance + mob_chance + else + break + end end --minetest.log(mob_def.name.." "..step_chance.. " "..mob_chance) @@ -1088,8 +1083,7 @@ if mobs_spawn then end end - current_summary_chance = current_summary_chance - mob_chance - table_remove(mob_library_worker_table, mob_index) + spawn_loop_counter = spawn_loop_counter - 1 end end @@ -1101,6 +1095,7 @@ if mobs_spawn then timer = timer + dtime if timer < WAIT_FOR_SPAWN_ATTEMPT then return end + initialize_spawn_data() timer = 0 local players = get_connected_players() diff --git a/mods/ENTITIES/mcl_paintings/locale/mcl_paintings.oc.tr b/mods/ENTITIES/mcl_paintings/locale/mcl_paintings.oc.tr new file mode 100644 index 000000000..6f368b3d2 --- /dev/null +++ b/mods/ENTITIES/mcl_paintings/locale/mcl_paintings.oc.tr @@ -0,0 +1,2 @@ +# textdomain:mcl_paintings +Painting=Quadre 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 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. 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..83277910e 100644 --- a/mods/ENTITIES/mobs_mc/ghast.lua +++ b/mods/ENTITIES/mobs_mc/ghast.lua @@ -20,7 +20,7 @@ mcl_mobs.register_mob("mobs_mc:ghast", { hp_max = 10, xp_min = 5, xp_max = 5, - collisionbox = {-2, 5, -2, 2, 9, 2}, + collisionbox = {-2, 0, -2, 2, 4, 2, rotate=true}, visual = "mesh", mesh = "mobs_mc_ghast.b3d", spawn_in_group = 1, @@ -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,11 +50,11 @@ 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_offset = -5, + shoot_interval = 5, + shoot_offset = -0.5, dogshoot_switch = 1, dogshoot_count_max =1, passive = false, @@ -97,7 +97,7 @@ mcl_mobs:spawn_specific( 0, 7, 30, -72000, +400, 2, mcl_vars.mg_nether_min, mcl_vars.mg_nether_max) @@ -107,8 +107,9 @@ 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}, + _lifetime = 10, _is_fireball = true, hit_player = function(self, player) @@ -130,6 +131,10 @@ mcl_mobs.register_arrow("mobs_mc:fireball", { damage_groups = {fleshy = 6}, }, nil) mcl_mobs.mob_class.boom(self,self.object:get_pos(), 1, true) + local ent = mob:get_luaentity() + if not ent or ent.health <= 0 then + awards.unlock(self._puncher:get_player_name(), "mcl:fireball_redir_serv") + end end, hit_node = function(self, pos, node) 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..08f9a46ad 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, @@ -92,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 @@ -129,7 +136,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..773f53c86 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() @@ -612,7 +609,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 +632,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/locale/mobs_mc.oc.tr b/mods/ENTITIES/mobs_mc/locale/mobs_mc.oc.tr new file mode 100644 index 000000000..ad81ec88c --- /dev/null +++ b/mods/ENTITIES/mobs_mc/locale/mobs_mc.oc.tr @@ -0,0 +1,73 @@ +# textdomain: mobs_mc +Agent=Agent +Axolotl=Axolòtl +Bat=Ratapenada +Blaze=Flamor +Chicken=Polet +Cow=Vacha +Mooshroom=Vachairòla +Creeper=Creeper +Ender Dragon=Dragon de Finuèit +Enderman=Finuèairi +Endermite=Finuèibau +Ghast=Òrra +Elder Guardian=Ancian Gardian +Guardian=Gardian +Horse=Ega +Skeleton Horse=Ega Squeleta +Zombie Horse=Ega Zombia +Donkey=Asne +Mule=Miule +Iron Golem=Golem de Fèrre +Llama=Lamà +Ocelot=Ocelòt +Parrot=Papagai +Pig=Cochon +Polar Bear=Ors Blanc +Rabbit=Lapin +Killer Bunny=Lapin Tuaire +Sheep=Moton +Shulker=Coirafin +Silverfish=Peiçon d'Argent +Skeleton=Squeleta +Stray=Trainabiaça +Wither Skeleton=Squeleta Sechaire +Magma Cube=Cube de Magmà +Slime=Slime +Snow Golem=Golem d'Ivèrn +Spider=Aranha +Cave Spider=Aranha Venimósa +Squid=Pofre +Vex=Vex +Evoker=Invocataire +Illusioner=Fisiciaire +Villager=Vialatgés +Vindicator=Vindicataire +Zombie Villager=Vialatgés Zombia +Witch=Fachinèira +Wither=Le Sechaire +Wolf=Lop +Husk=Zombia Momificat +Zombie=Zombia +Zombie Piglin=Porcadés Zombia +Farmer=Boriaire +Fisherman=Peschaire +Fletcher=Archèir +Shepherd=Bergèir +Librarian=Bibliotecaire +Cartographer=Cartografe +Armorer=Armurèir +Leatherworker=Tanaire +Butcher=Maselèir +Weapon Smith=Farjaire d'Armas +Tool Smith=Farjaire d'Otilhs +Cleric=Clerc +Nitwit=Simple +Cod=Merluça +Salmon=Saumon +Dolphin=Daufin +Pillager=Pilhard +Tropical fish=Peiçon tropicau +Hoglin=Porcard +Strider=Trèva +Glow Squid=Pofre Lusent 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 diff --git a/mods/ENTITIES/mobs_mc/models/mobs_mc_ghast.b3d b/mods/ENTITIES/mobs_mc/models/mobs_mc_ghast.b3d index cebc037c0..fefc20ecd 100644 Binary files a/mods/ENTITIES/mobs_mc/models/mobs_mc_ghast.b3d and b/mods/ENTITIES/mobs_mc/models/mobs_mc_ghast.b3d differ 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..b9bddb025 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, @@ -397,7 +399,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 +415,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 +431,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 +448,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..6ef8016e6 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 @@ -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/shulker.lua b/mods/ENTITIES/mobs_mc/shulker.lua index ecf60debd..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 = 0.5, + shoot_interval = 6, arrow = "mobs_mc:shulkerbullet", shoot_offset = 0.5, passive = false, @@ -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", @@ -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,19 @@ 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 = 45, walk_end = 65, + walk_loop = false, + run_start = 65, run_end = 85, + run_loop = false, 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,12 +85,13 @@ 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") + self:set_animation("run") + self.armor = 0 + elseif self.state == "stand" then + self.armor = 20 + elseif self.state == "walk" or self.state == "run" then + self.armor = 0 end self.path.way = false self.look_at_players = false @@ -149,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) @@ -156,27 +164,12 @@ mcl_mobs.register_arrow("mobs_mc:shulkerbullet", { visual = "sprite", visual_size = {x = 0.25, y = 0.25}, textures = {"mobs_mc_shulkerbullet.png"}, - velocity = 6, - - 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 + velocity = 5, + homing = true, + 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) --[[ 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..743f37cee 100644 --- a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua +++ b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua @@ -6,6 +6,7 @@ local MAPBLOCK_SIZE = 16 local seed = minetest.get_mapgen_setting("seed") local slime_chunk_match +local slime_chunk_spawn_max = mcl_worlds.layer_to_y(40) local x_modifier local z_modifier @@ -166,11 +167,11 @@ local swamp_light_max = 7 local function slime_spawn_check(pos, environmental_light, artificial_light, sky_light) local maxlight = swamp_light_max - if is_slime_chunk(pos) then + if pos.y <= slime_chunk_spawn_max and is_slime_chunk(pos) then maxlight = minetest.LIGHT_MAX + 1 end - return artificial_light <= maxlight + return math.max(artificial_light, sky_light) <= maxlight end -- Slime @@ -183,7 +184,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", @@ -197,7 +198,7 @@ local slime_big = { distance = 16, }, damage = 4, - reach = 3, + reach = 2.5, armor = 100, drops = {}, -- TODO: Fix animations @@ -235,10 +236,10 @@ 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.75 +slime_small.reach = 2.25 slime_small.walk_velocity = 1.8 slime_small.run_velocity = 1.8 slime_small.jump_height = 4.3 @@ -252,10 +253,10 @@ 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 = 0 -slime_tiny.reach = 2.5 +slime_tiny.damage = 1 +slime_tiny.reach = 2 slime_tiny.drops = { -- slimeball {name = "mcl_mobitems:slimeball", @@ -321,7 +322,7 @@ cave_biomes, 0, minetest.LIGHT_MAX+1, 30, -12000, +1000, 4, cave_min, cave_max, @@ -335,7 +336,7 @@ swampy_biomes, 0, swamp_light_max, 30, -12000, +1000, 4, swamp_min, swamp_max) @@ -348,7 +349,7 @@ cave_biomes, 0, minetest.LIGHT_MAX+1, 30, -8500, +1000, 4, cave_min, cave_max, @@ -362,7 +363,7 @@ swampy_biomes, 0, swamp_light_max, 30, -8500, +1000, 4, swamp_min, swamp_max) @@ -375,7 +376,7 @@ cave_biomes, 0, minetest.LIGHT_MAX+1, 30, -10000, +1000, 4, cave_min, cave_max, @@ -389,7 +390,7 @@ swampy_biomes, 0, swamp_light_max, 30, -10000, +1000, 4, swamp_min, swamp_max) @@ -403,7 +404,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", @@ -418,7 +419,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", @@ -463,10 +464,10 @@ 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.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 @@ -485,13 +486,13 @@ 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 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 @@ -512,7 +513,7 @@ magma_cube_biomes, 0, minetest.LIGHT_MAX+1, 30, -15000, +100, 4, nether_min, nether_max) @@ -525,7 +526,7 @@ magma_cube_biomes, 0, minetest.LIGHT_MAX+1, 30, -15500, +100, 4, nether_min, nether_max) @@ -538,7 +539,7 @@ magma_cube_biomes, 0, minetest.LIGHT_MAX+1, 30, -16000, +100, 4, nether_min, nether_max) 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 100644 index 000000000..5bc9a18ee Binary files /dev/null and b/mods/ENTITIES/mobs_mc/sounds/extra_mobs_hoglin.1.ogg differ diff --git a/mods/ENTITIES/mobs_mc/sounds/extra_mobs_hoglin.2.ogg b/mods/ENTITIES/mobs_mc/sounds/extra_mobs_hoglin.2.ogg new file mode 100644 index 000000000..552d27c5f Binary files /dev/null and b/mods/ENTITIES/mobs_mc/sounds/extra_mobs_hoglin.2.ogg differ diff --git a/mods/ENTITIES/mobs_mc/sounds/extra_mobs_hoglin_hurt.ogg b/mods/ENTITIES/mobs_mc/sounds/extra_mobs_hoglin_hurt.ogg new file mode 100644 index 000000000..7c74f8fb3 Binary files /dev/null and b/mods/ENTITIES/mobs_mc/sounds/extra_mobs_hoglin_hurt.ogg differ 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/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.lua b/mods/ENTITIES/mobs_mc/villager.lua index cb421b78b..3a7dbb93b 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 @@ -2335,7 +2336,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_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 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/wither.lua b/mods/ENTITIES/mobs_mc/wither.lua index cda3f0153..f1e1e6e78 100644 --- a/mods/ENTITIES/mobs_mc/wither.lua +++ b/mods/ENTITIES/mobs_mc/wither.lua @@ -463,7 +463,7 @@ mcl_mobs.register_arrow("mobs_mc:wither_skull", { }, velocity = 7, rotate = 90, - _lifetime = 350, + _lifetime = 15, on_punch = function(self) end, -- direct hit @@ -516,7 +516,7 @@ mcl_mobs.register_arrow("mobs_mc:wither_skull_strong", { }, velocity = 4, rotate = 90, - _lifetime = 500, + _lifetime = 25, on_punch = function(self) end, -- direct hit 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) 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 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 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. 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) 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/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= 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..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 @@ -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. @@ -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= 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 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 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..bc962eef8 --- /dev/null +++ b/mods/HELP/mcl_tt/locale/mcl_tt.es.tr @@ -0,0 +1,48 @@ +# textdomain: mcl_tt +Head armor=Armadura para la cabeza +Torso armor=Armadura para el torso +Legs armor=Armadura para las piernas +Feet armor=Armadura para los pies +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=Causa daño al caer +Grows on grass blocks or dirt=Crece sobre bloques de pasto o tierra +Grows on grass blocks, podzol, dirt or coarse dirt=Crece sobre bloques de pasto, podsol, tierra o tierra estéril +Flammable=Inflamable +Zombie view range: -50%=Rango de visión zombie: -50% +Skeleton view range: -50%=Rango de visión de esqueleto: -50% +Creeper view range: -50%=Rango de visión de creeper: -50% +Damage: @1=Daño: @1 +Damage (@1): @2=Daño (@1): @2 +Healing: @1=Curación: @1 +Healing (@1): @2=Curación (@1): @2 +Full punch interval: @1s=Intervalo de golpe completo: @1s +Contact damage: @1 per second=Daño por contacto: @1 por segundo +Contact healing: @1 per second=Curación por contacto: @1 por segundo +Drowning damage: @1=Dañor por ahogamiento: @1 +Bouncy (@1%)=Rebota (@1%) +Luminance: @1=Luminancia: @1 +Slippery=Resbaladizo +Climbable=Escalable +Climbable (only downwards)=Escalable (solo hacia abajo) +No jumping=No saltar +No swimming upwards=No nadar hacia arriba +No rising=No levantar +Fall damage: @1%=Daño por caída: @1% +Fall damage: +@1%=Daño por caída: @1% +No fall damage=Sin daño por caída +Mining speed: @1=Velocidad de minado: @1 +Very fast=Muy rápido +Extremely fast=Extremadamente rápido +Fast=Rápido +Slow=Lento +Very slow=Muy lento +Painfully slow=Dolorosamente lento +Mining durability: @1=Durabilidad de minería: @1 +Block breaking strength: @1=Fuerza para romper bloques: @1 +@1 uses=@1 usos +Unlimited uses=Usos ilimitados +Durability: @1=Durabilidad: @1 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 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! 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 diff --git a/mods/HUD/mcl_achievements/init.lua b/mods/HUD/mcl_achievements/init.lua index 61ef9a9f2..361a3e659 100755 --- a/mods/HUD/mcl_achievements/init.lua +++ b/mods/HUD/mcl_achievements/init.lua @@ -550,6 +550,13 @@ awards.register_achievement("mcl:obsidian", { type = "Advancement", group = "Overworld", }) +awards.register_achievement("mcl:fireball_redir_serv", { + title = S("Fireball Redirection Service"), + description = S("Defeat a ghast with his own weapon."), + icon = "mcl_fire_fire_charge.png", + type = "Advancement", + group = "Nether", +}) awards.register_achievement("mcl:hero_of_the_village", { title = S("Hero of the Village"), 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 diff --git a/mods/HUD/mcl_credits/people.lua b/mods/HUD/mcl_credits/people.lua index 7421350d0..d562f2e53 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,21 @@ return { "Niterux", "appgurueu", "seventeenthShulker", + "DinoNuggies4665", + "basxto", + "Morik666", + "Eliy21", + "mdk", + "Alessandra Lozoya", + "VanicGame", + "ThePython10110", + "Araca", + "Montandalar", + "mim", + "Dark", + "Bakawun", + "JoseDouglas26", + "Zasco", }}, {S("Music"), 0xA60014, { "Jordach for the jukebox music compilation from Big Freaking Dig", @@ -157,6 +174,7 @@ return { "cora", "Faerraven / Michieal", "PrairieWind", + "ChrisPHP", }}, {S("3D Models"), 0x0019FF, { "22i", @@ -164,6 +182,7 @@ return { "epCode", "Faerraven / Michieal", "SumianVoice", + "thunder1035", }}, {S("Textures"), 0xFF9705, { "XSSheep", @@ -180,8 +199,11 @@ return { "Faerraven / Michieal", "Nicu", "Exhale", + "Aeonix_Aeon", "Wbjitscool", "SmokeyDope", + "thunder1035", + "Herowl", }}, {S("Translations"), 0x00FF60, { "Wuzzy", @@ -201,6 +223,10 @@ return { "Temak", "megustanlosfrijoles", "kbundg", + "Isaac Dennis", + "ADLON", + "Sab Pyrope", + "JoseDouglas26", }}, {S("Funders"), 0xF7FF00, { "40W", 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/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 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 diff --git a/mods/HUD/mcl_experience/orb.lua b/mods/HUD/mcl_experience/orb.lua index 9aecce00d..462456aad 100644 --- a/mods/HUD/mcl_experience/orb.lua +++ b/mods/HUD/mcl_experience/orb.lua @@ -155,7 +155,7 @@ minetest.register_entity("mcl_experience:orb", { collisionbox = {-0.2, -0.2, -0.2, 0.2, 0.2, 0.2}, visual = "sprite", visual_size = {x = 0.4, y = 0.4}, - textures = {name="mcl_experience_orb.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=2.0}}, + textures = {"mcl_experience_orb.png"}, spritediv = {x = 1, y = 14}, initial_sprite_basepos = {x = 0, y = 0}, is_visible = true, 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 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 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 diff --git a/mods/HUD/mcl_inventory/init.lua b/mods/HUD/mcl_inventory/init.lua index c2555581c..2383295bc 100644 --- a/mods/HUD/mcl_inventory/init.lua +++ b/mods/HUD/mcl_inventory/init.lua @@ -3,6 +3,19 @@ mcl_inventory = {} dofile(minetest.get_modpath(minetest.get_current_modname()) .. "/creative.lua") dofile(minetest.get_modpath(minetest.get_current_modname()) .. "/survival.lua") +local old_is_creative_enabled = minetest.is_creative_enabled + +function minetest.is_creative_enabled(name) + if old_is_creative_enabled(name) then return true end + if not name then return false end + assert(type(name) == "string", "minetest.is_creative_enabled requires a string (the playername) argument.") + local p = minetest.get_player_by_name(name) + if p then + return p:get_meta():get_string("gamemode") == "creative" + end + return false +end + ---@param player mt.PlayerObjectRef ---@param armor_change_only? boolean local function set_inventory(player, armor_change_only) @@ -73,12 +86,14 @@ end) ---@param player mt.PlayerObjectRef function mcl_inventory.update_inventory(player) - local player_gamemode = mcl_gamemode.get_gamemode(player) - if player_gamemode == "creative" then + local player_name = player:get_player_name() + local is_gamemode_creative = minetest.is_creative_enabled(player_name) + if is_gamemode_creative then mcl_inventory.set_creative_formspec(player) - elseif player_gamemode == "survival" then + elseif not is_gamemode_creative then player:set_inventory_formspec(mcl_inventory.build_survival_formspec(player)) end + mcl_meshhand.update_player(player) end mcl_gamemode.register_on_gamemode_change(function(player, old_gamemode, new_gamemode) 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 diff --git a/mods/HUD/mcl_inventory/survival.lua b/mods/HUD/mcl_inventory/survival.lua index 5b5c6032c..4922c8f88 100644 --- a/mods/HUD/mcl_inventory/survival.lua +++ b/mods/HUD/mcl_inventory/survival.lua @@ -1,18 +1,15 @@ ---@diagnostic disable need-check-nil - -local table = table -local ipairs = ipairs - local S = minetest.get_translator("mcl_inventory") local F = minetest.formspec_escape ---@type {id: string, description: string, item_icon: string, build: (fun(player: ObjectRef): string), handle: fun(player: ObjectRef, fields: table), access: (fun(player): boolean), show_inventory: boolean}[] mcl_inventory.registered_survival_inventory_tabs = {} + ---@param def {id: string, description: string, item_icon: string, build: (fun(player: ObjectRef): string), handle: fun(player: ObjectRef, fields: table), access: (fun(player): boolean), show_inventory: boolean} function mcl_inventory.register_survival_inventory_tab(def) if #mcl_inventory.registered_survival_inventory_tabs == 7 then - error("Too much tabs registered!") + error("Too many tabs registered!") end assert(def.id) @@ -134,10 +131,10 @@ local main_page_static = table.concat({ --Listring "listring[current_player;main]", - "listring[current_player;armor]", - "listring[current_player;main]", "listring[current_player;craft]", "listring[current_player;main]", + "listring[current_player;armor]", + "listring[current_player;main]", }) mcl_inventory.register_survival_inventory_tab({ @@ -204,13 +201,14 @@ function mcl_inventory.build_survival_formspec(player) end minetest.register_on_player_receive_fields(function(player, formname, fields) + local player_name = player:get_player_name() if formname == "" and #mcl_inventory.registered_survival_inventory_tabs ~= 1 and - mcl_gamemode.get_gamemode(player) == "survival" then + not minetest.is_creative_enabled(player_name) then for _, d in ipairs(mcl_inventory.registered_survival_inventory_tabs) do if fields["tab_" .. d.id] and d.access(player) then player_current_tab[player] = d.id mcl_inventory.update_inventory(player) - return + break end end 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. 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) 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 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 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 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. 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. 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 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 diff --git a/mods/ITEMS/REDSTONE/mesecons_lightstone/init.lua b/mods/ITEMS/REDSTONE/mesecons_lightstone/init.lua index 0e517e4dc..0e0235642 100644 --- a/mods/ITEMS/REDSTONE/mesecons_lightstone/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_lightstone/init.lua @@ -2,7 +2,24 @@ local S = minetest.get_translator(minetest.get_current_modname()) local light = minetest.LIGHT_MAX -minetest.register_node("mesecons_lightstone:lightstone_off", { +local function generate_action_on(color) + local n = "mesecons_lightstone:lightstone_on" + if color then n = n .. "_" .. color end + return function(pos, node) + minetest.swap_node(pos, {name=n, param2 = node.param2}) + end +end + +local function generate_action_off(color) + local n = "mesecons_lightstone:lightstone_off" + if color then n = n .. "_" .. color end + return function(pos, node) + minetest.swap_node(pos, {name=n, param2 = node.param2}) + end +end + +local ls_off_name = "mesecons_lightstone:lightstone_off" +local ls_off_def = { tiles = {"jeija_lightstone_gray_off.png"}, groups = {handy=1, mesecon_effector_off = 1, mesecon = 2}, is_ground_content = false, @@ -11,16 +28,16 @@ minetest.register_node("mesecons_lightstone:lightstone_off", { _doc_items_longdesc = S("Redstone lamps are simple redstone components which glow brightly (light level @1) when they receive redstone power.", light), sounds = mcl_sounds.node_sound_glass_defaults(), mesecons = {effector = { - action_on = function(pos, node) - minetest.swap_node(pos, {name="mesecons_lightstone:lightstone_on", param2 = node.param2}) - end, + action_on = generate_action_on(), rules = mesecon.rules.alldirs, }}, _mcl_blast_resistance = 0.3, _mcl_hardness = 0.3, -}) +} +minetest.register_node(ls_off_name, ls_off_def) -minetest.register_node("mesecons_lightstone:lightstone_on", { +local ls_on_name = "mesecons_lightstone:lightstone_on" +local ls_on_def = { tiles = {"jeija_lightstone_gray_on.png"}, groups = {handy=1, not_in_creative_inventory=1, mesecon = 2, opaque = 1}, drop = "node mesecons_lightstone:lightstone_off", @@ -29,14 +46,59 @@ minetest.register_node("mesecons_lightstone:lightstone_on", { light_source = light, sounds = mcl_sounds.node_sound_glass_defaults(), mesecons = {effector = { - action_off = function(pos, node) - minetest.swap_node(pos, {name="mesecons_lightstone:lightstone_off", param2 = node.param2}) - end, + action_off = generate_action_off(), rules = mesecon.rules.alldirs, }}, _mcl_blast_resistance = 0.3, _mcl_hardness = 0.3, -}) +} +minetest.register_node(ls_on_name, ls_on_def) + +local colored_lamps = { + {"white", S("White Redstone Lamp"), "white"}, + {"grey", S("Grey Redstone Lamp"), "dark_grey"}, + {"silver", S("Light Grey Redstone Lamp"), "grey"}, + {"black", S("Black Redstone Lamp"), "black"}, + {"red", S("Red Redstone Lamp"), "red"}, + {"yellow", S("Yellow Redstone Lamp"), "yellow"}, + {"green", S("Green Redstone Lamp"), "dark_green"}, + {"cyan", S("Cyan Redstone Lamp"), "cyan"}, + {"blue", S("Blue Redstone Lamp"), "blue"}, + {"magenta", S("Magenta Redstone Lamp"), "magenta"}, + {"orange", S("Orange Redstone Lamp"), "orange"}, + {"purple", S("Purple Redstone Lamp"), "violet"}, + {"brown", S("Brown Redstone Lamp"), "brown"}, + {"pink", S("Pink Redstone Lamp"), "pink"}, + {"lime", S("Lime Redstone Lamp"), "green"}, + {"lightblue", S("Light Blue Redstone Lamp"), "lightblue"}, +} +for _, row in ipairs(colored_lamps) do + local name = row[1] + local desc = row[2] + local dye = row[3] + local mask = "^[hsl:0:-100^(mcl_lightstone_mask.png^[multiply:" .. name .. "^[opacity:100)" + if name == "lightblue" then + mask = "^[hsl:0:-100^(mcl_lightstone_mask.png^[multiply:" .. name .. "^[hsl:0:200^[opacity:100)" + end + local name_off = ls_off_name .. "_" .. name + local def_off = table.copy(ls_off_def) + def_off.description = desc + def_off._doc_items_longdesc = nil + def_off._doc_items_create_entry = false + def_off.mesecons.effector.action_on = generate_action_on(name) + def_off.tiles[1] = def_off.tiles[1] .. mask + local def_on = table.copy(ls_on_def) + def_on.drop = name_off + def_on.tiles[1] = def_on.tiles[1] .. mask + def_on.mesecons.effector.action_off = generate_action_off(name) + minetest.register_node(name_off, def_off) + minetest.register_node(ls_on_name.."_"..name, def_on) + minetest.register_craft({ + type = "shapeless", + output = name_off, + recipe = {ls_off_name, "mcl_dye:" .. dye} + }) +end minetest.register_craft({ output = "mesecons_lightstone:lightstone_off", diff --git a/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.de.tr b/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.de.tr index a0cfc2213..1b0407d1a 100644 --- a/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.de.tr +++ b/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.de.tr @@ -2,3 +2,19 @@ Redstone Lamp=Redstonelampe Redstone lamps are simple redstone components which glow brightly (light level @1) when they receive redstone power.=Redstonelampen sind einfache Redstonekomponenten, die hell aufleuchten (Helligkeitspegel von @1), wenn sie Redstoneenergie erhalten. Glows when powered by redstone power=Leuchtet, wenn mit Redstoneenergie versorgt +White Redstone Lamp=Weiße Redstonelampe +Grey Redstone Lamp=Graue Redstonelampe +Light Grey Redstone Lamp=Hellgraue Redstonelampe +Black Redstone Lamp=Schwartze Redstonelampe +Red Redstone Lamp=Rote Redstonelampe +Yellow Redstone Lamp=Gelbe Redstonelampe +Green Redstone Lamp=Grüne Redstonelampe +Cyan Redstone Lamp=Türkise Redstonelampe +Blue Redstone Lamp=Blaue Redstonelampe +Magenta Redstone Lamp=Magenta Redstonelampe +Orange Redstone Lamp=Orange Redstonelampe +Purple Redstone Lamp=Violette Redstonelampe +Brown Redstone Lamp=Braune Redstonelampe +Pink Redstone Lamp=Rosa Redstonelampe +Lime Redstone Lamp=Lindgrüne Redstonelampe +Light Blue Redstone Lamp=Hellblaue Redstonelampe 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 diff --git a/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.pl.tr b/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.pl.tr index cd2f755c9..99d01bb07 100644 --- a/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.pl.tr +++ b/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.pl.tr @@ -2,3 +2,19 @@ Redstone Lamp=Lampa czerwienitowa Redstone lamps are simple redstone components which glow brightly (light level @1) when they receive redstone power.=Lampy czerwienitowe to mechanizmy czerwienitowe, które jasno świecą (poziom światła @1), gdy są zasilone energią czerwienitową. Glows when powered by redstone power=Świeci gdy zasilana czerwienitem +White Redstone Lamp=Biała lampa czerwienitowa +Grey Redstone Lamp=Szara lampa czerwienitowa +Light Grey Redstone Lamp=Jasnoszara lampa czerwienitowa +Black Redstone Lamp=Czarna lampa czerwienitowa +Red Redstone Lamp=Czerwona lampa czerwienitowa +Yellow Redstone Lamp=Żółta lampa czerwienitowa +Green Redstone Lamp=Zielona lampa czerwienitowa +Cyan Redstone Lamp=Błękitna lampa czerwienitowa +Blue Redstone Lamp=Niebieska lampa czerwienitowa +Magenta Redstone Lamp=Karmazynowa lampa czerwienitowa +Orange Redstone Lamp=Pomarańczowa lampa czerwienitowa +Purple Redstone Lamp=Fioletowa lampa czerwienitowa +Brown Redstone Lamp=Brązowa lampa czerwienitowa +Pink Redstone Lamp=Różowa lampa czerwienitowa +Lime Redstone Lamp=Jasnozielona lampa czerwienitowa +Light Blue Redstone Lamp=Jasnoniebieska lampa czerwienitowa 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 diff --git a/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/template.txt index 2d2cc419f..0d743daa4 100644 --- a/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/template.txt @@ -2,3 +2,19 @@ Redstone Lamp= Redstone lamps are simple redstone components which glow brightly (light level @1) when they receive redstone power.= Glows when powered by redstone power= +White Redstone Lamp= +Grey Redstone Lamp= +Light Grey Redstone Lamp= +Black Redstone Lamp= +Red Redstone Lamp= +Yellow Redstone Lamp= +Green Redstone Lamp= +Cyan Redstone Lamp= +Blue Redstone Lamp= +Magenta Redstone Lamp= +Orange Redstone Lamp= +Purple Redstone Lamp= +Brown Redstone Lamp= +Pink Redstone Lamp= +Lime Redstone Lamp= +Light Blue Redstone Lamp= 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 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 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 diff --git a/mods/ITEMS/mcl_amethyst/locale/mcl_amethyst.de.tr b/mods/ITEMS/mcl_amethyst/locale/mcl_amethyst.de.tr new file mode 100644 index 000000000..29d8d4c0f --- /dev/null +++ b/mods/ITEMS/mcl_amethyst/locale/mcl_amethyst.de.tr @@ -0,0 +1,19 @@ +# textdomain: mcl_amethyst +Amethyst Cluster=Amethysthaufen +Amethyst Cluster is the final growth of amethyst bud.=Der Amethysthaufen ist das endgültige Wachstum der Amethystknospe. +Amethyst Shard=Amethystsplitter +An amethyst shard is a crystalline mineral.=Ein Amethystsplitter ist ein kristallines Mineral. +Block of Amethyst=Amethystblock +Budding Amethyst=Amethystknospe +Calcite=Kalzit +Calcite can be found as part of amethyst geodes.=Kalzit kann als Teil von Amethystgeoden gefunden werden. +Large Amethyst Bud=Große Amethystknospe +Large Amethyst Bud is the third growth of amethyst bud.=Die große Amethystknospe ist die dritte Wachstumsstufe der Amethystknospe. +Medium Amethyst Bud=Mittelgroße Amethystknospe +Medium Amethyst Bud is the second growth of amethyst bud.=Die mittelgroße Amethystknospe ist die zweite Wachstumsstufe der Amethystknospe. +Small Amethyst Bud=Kleine Amethystknospe +Small Amethyst Bud is the first growth of amethyst bud.=Die kleine Amethystknospe ist die erste Wachstumsstufe der Amethystknospe. +The Block of Amethyst is a decoration block crafted from amethyst shards.=Der Amethystblock ist ein aus Amethystsplittern gefertigter Dekorationsblock. +The Budding Amethyst can grow amethyst=Knospender Amethyst kann Amethyst wachsen lassen. +Tinted Glass=Getöntes Glas +Tinted Glass is a type of glass which blocks lights while it is visually transparent.=Getöntes Glas ist eine Art von Glas, das Licht blockiert, während es visuell transparent ist. diff --git a/mods/ITEMS/mcl_armor/api.lua b/mods/ITEMS/mcl_armor/api.lua index 1e88643f1..750bd66c8 100755 --- a/mods/ITEMS/mcl_armor/api.lua +++ b/mods/ITEMS/mcl_armor/api.lua @@ -103,10 +103,10 @@ local function get_armor_texture(textures, name, modname, itemname, itemstring) end if overlay == "" then return core_armor_texture end -- key not present; armor not trimmed - + return core_armor_texture .. overlay end - + return func end @@ -129,6 +129,7 @@ function mcl_armor.register_set(def) local groups = table.copy(groups) groups["armor_" .. name] = 1 groups["combat_armor_" .. name] = 1 + groups["armor_" .. def.name] = 1 groups.armor = 1 groups.combat_armor = 1 groups.mcl_armor_points = def.points[name] @@ -326,12 +327,12 @@ end tt.register_snippet(function(itemstring, toolcaps, stack) if not stack then return nil end local meta = stack:get_meta() - if not mcl_armor.is_trimmed(stack) then return nil end + if not mcl_armor.is_trimmed(stack) then return nil end -- we need to get the part of the overlay image between the overlay begin ( and the trim name end _ -- we COULD easily store this info in meta, but that would bloat the meta storage, as the same few values would be stored over and over again on every trimmed item -- this is fine here as this code gets only executed when you put armor and a trim in a smithing table local full_overlay = meta:get_string("mcl_armor:trim_overlay") - local trim_name = full_overlay:match("%((.-)%_") + local trim_name = full_overlay:match("%((.-)%_") return "Upgrade:\n " .. trim_name:gsub("^%l", string.upper) .. " Armor Trim" end) @@ -339,4 +340,4 @@ function mcl_armor.is_trimmed(itemstack) -- this meta value will be there for every trimmed armor piece -- remember, get_string returns "" if the key doesn't exist return itemstack:get_meta():get_string("mcl_armor:trim_overlay") ~= "" -end \ No newline at end of file +end diff --git a/mods/ITEMS/mcl_armor/init.lua b/mods/ITEMS/mcl_armor/init.lua index 402d9eef3..8f592d3ac 100644 --- a/mods/ITEMS/mcl_armor/init.lua +++ b/mods/ITEMS/mcl_armor/init.lua @@ -71,5 +71,6 @@ dofile(modpath .. "/api.lua") dofile(modpath .. "/player.lua") dofile(modpath .. "/damage.lua") dofile(modpath .. "/register.lua") +dofile(modpath .. "/leather.lua") dofile(modpath .. "/alias.lua") dofile(modpath .. "/trims.lua") diff --git a/mods/ITEMS/mcl_armor/leather.lua b/mods/ITEMS/mcl_armor/leather.lua new file mode 100644 index 000000000..c2366166b --- /dev/null +++ b/mods/ITEMS/mcl_armor/leather.lua @@ -0,0 +1,207 @@ +local C = minetest.colorize + +local colors = { + -- { ID, decription, wool, dye } + { "red", "Red", "mcl_dye:red", "#951d1d" }, + { "blue", "Blue", "mcl_dye:blue", "#2a2c94" }, + { "cyan", "Cyan", "mcl_dye:cyan", "#0d7d8e" }, + { "grey", "Grey", "mcl_dye:dark_grey", "#363a3f" }, + { "silver", "Light Grey", "mcl_dye:grey", "#818177" }, + { "black", "Black", "mcl_dye:black", "#020307" }, + { "yellow", "Yellow", "mcl_dye:yellow", "#f2b410" }, + { "green", "Green", "mcl_dye:dark_green", "#495d20" }, + { "magenta", "Magenta", "mcl_dye:magenta", "#ae2ea4" }, + { "orange", "Orange", "mcl_dye:orange", "#e36501" }, + { "purple", "Purple", "mcl_dye:violet", "#681ba1" }, + { "brown", "Brown", "mcl_dye:brown", "#623b1a" }, + { "pink", "Pink", "mcl_dye:pink", "#d66691" }, + { "lime", "Lime", "mcl_dye:green", "#60ad13" }, + { "light_blue", "Light Blue", "mcl_dye:lightblue", "#1f8eca" }, + { "white", "White", "mcl_dye:white", "#d1d7d8" }, +} + +local function color_string_to_table(colorstring) + return { + r = tonumber(colorstring:sub(2,3), 16), -- 16 as second parameter allows hexadecimal + g = tonumber(colorstring:sub(4,5), 16), + b = tonumber(colorstring:sub(6,7), 16), + } +end + +local function av(a, b) + return (a + b)/2 +end + +local function calculate_color(first, last) + return { + r = av(first.r, last.r), + g = av(first.g, last.g), + b = av(first.b, last.b), + } +end + +local function get_texture_function(texture) + local function get_texture(_, itemstack) + local out + local color = itemstack:get_meta():get_string("mcl_armor:color") + if color == "" or color == nil then + out = texture + else + out = texture.."^[hsl:0:100:50^[multiply:"..color + end + + if mcl_enchanting.is_enchanted(itemstack:get_name()) then + return out..mcl_enchanting.overlay + else + return out + end + end + return get_texture +end + +function mcl_armor.colorize_leather_armor(itemstack, colorstring) + if not itemstack or minetest.get_item_group(itemstack:get_name(), "armor_leather") == 0 then + return + end + local color = color_string_to_table(colorstring) + colorstring = minetest.colorspec_to_colorstring(color) + local meta = itemstack:get_meta() + local old_color = meta:get_string("mcl_armor:color") + if old_color == colorstring then return + elseif old_color ~= "" then + color = calculate_color( + color_string_to_table(minetest.colorspec_to_colorstring(old_color)), + color + ) + colorstring = minetest.colorspec_to_colorstring(color) + end + meta:set_string("mcl_armor:color", colorstring) + meta:set_string("inventory_image", + itemstack:get_definition().inventory_image .. "^[hsl:0:100:50^[multiply:" .. colorstring + ) + tt.reload_itemstack_description(itemstack) + return itemstack +end + +function mcl_armor.wash_leather_armor(itemstack) + if not itemstack or minetest.get_item_group(itemstack:get_name(), "armor_leather") == 0 then + return + end + local meta = itemstack:get_meta() + meta:set_string("mcl_armor:color", "") + meta:set_string("inventory_image", "") + tt.reload_itemstack_description(itemstack) + return itemstack +end + +mcl_armor.register_set({ + name = "leather", + description = "Leather", + descriptions = { + head = "Cap", + torso = "Tunic", + legs = "Pants", + }, + durability = 80, + enchantability = 15, + points = { + head = 1, + torso = 3, + legs = 2, + feet = 1, + }, + textures = { + head = get_texture_function("mcl_armor_helmet_leather.png"), + torso = get_texture_function("mcl_armor_chestplate_leather.png"), + legs = get_texture_function("mcl_armor_leggings_leather.png"), + feet = get_texture_function("mcl_armor_boots_leather.png"), + }, + craft_material = "mcl_mobitems:leather", +}) + +tt.register_priority_snippet(function(_, _, itemstack) + if not itemstack or minetest.get_item_group(itemstack:get_name(), "armor_leather") == 0 then + return + end + local color = itemstack:get_meta():get_string("mcl_armor:color") + if color and color ~= "" then + local text = C(mcl_colors.GRAY, "Dyed: "..color) + return text, false + end +end) + +for name, element in pairs(mcl_armor.elements) do + local modname = minetest.get_current_modname() + local itemname = modname .. ":" .. element.name .. "_leather" + minetest.register_craft({ + type = "shapeless", + output = itemname, + recipe = { + itemname, + "group:dye", + }, + }) + local ench_itemname = itemname .. "_enchanted" + minetest.register_craft({ + type = "shapeless", + output = ench_itemname, + recipe = { + ench_itemname, + "group:dye", + }, + }) +end + +local function colorizing_crafting(itemstack, player, old_craft_grid, craft_inv) + if minetest.get_item_group(itemstack:get_name(), "armor_leather") == 0 then + return + end + + local found_la = nil + local dye_color = nil + for _, item in pairs(old_craft_grid) do + local name = item:get_name() + if name == "" then + -- continue + elseif minetest.get_item_group(name, "armor_leather") > 0 then + if found_la then return end + found_la = item + elseif minetest.get_item_group(name, "dye") > 0 then + if dye_color then return end + for _, row in pairs(colors) do + if row[3] == name then dye_color = row[4] end + end + else return end + end + + return mcl_armor.colorize_leather_armor(found_la, dye_color) or ItemStack() +end + +minetest.register_craft_predict(colorizing_crafting) +minetest.register_on_craft(colorizing_crafting) + + +minetest.register_chatcommand("color_leather", { + params = "", + description = "Colorize a piece of leather armor, or wash it", + privs = {debug = true}, + func = function(name, param) + local player = minetest.get_player_by_name(name) + if player then + local item = player:get_wielded_item() + if not item or minetest.get_item_group(item:get_name(), "armor_leather") == 0 then + return false, "Not leather armor." + end + if param == "wash" then + player:set_wielded_item(mcl_armor.wash_leather_armor(item)) + return true, "Washed." + end + local colorstring = minetest.colorspec_to_colorstring(param) + if not colorstring then return false, "Invalid color" end + player:set_wielded_item(mcl_armor.colorize_leather_armor(item, colorstring)) + return true, "Done: " .. colorstring + else + return false, "Player isn't online" + end + end, +}) diff --git a/mods/ITEMS/mcl_armor/locale/mcl_armor.de.tr b/mods/ITEMS/mcl_armor/locale/mcl_armor.de.tr index 312b9fafb..7db10c8aa 100644 --- a/mods/ITEMS/mcl_armor/locale/mcl_armor.de.tr +++ b/mods/ITEMS/mcl_armor/locale/mcl_armor.de.tr @@ -1,6 +1,6 @@ # textdomain: mcl_armor This is a piece of equippable armor which reduces the amount of damage you receive.=Dies ist ein Teil einer tragbaren Rüstung, die die Menge an Schaden, den Sie erleiden, reduziert. -To equip it, put it on the corresponding armor slot in your inventory menu.=Um es zu tragen, legen Sie es in den passenden Rüstungsplatz in ihrem Inventarmenü. +To equip it, put it on the corresponding armor slot in your inventory menu.=Um es zu tragen, legen Sie es in den passenden Rüstungsplatz in Ihrem Inventarmenü. Leather Cap=Lederkappe Iron Helmet=Eisenhelm Golden Helmet=Goldhelm 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..7c11b26c1 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 '@1' 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'= diff --git a/mods/ITEMS/mcl_armor/mod.conf b/mods/ITEMS/mcl_armor/mod.conf index cfbaa831f..48e00a30c 100644 --- a/mods/ITEMS/mcl_armor/mod.conf +++ b/mods/ITEMS/mcl_armor/mod.conf @@ -1,5 +1,5 @@ name = mcl_armor author = stu description = Adds craftable armor that is visible to other players. -depends = mcl_core, mcl_player, mcl_enchanting, mcl_damage, mcl_grindstone +depends = mcl_core, mcl_player, mcl_enchanting, mcl_damage, mcl_colors, mcl_grindstone optional_depends = mcl_fire, ethereal, bakedclay diff --git a/mods/ITEMS/mcl_armor/register.lua b/mods/ITEMS/mcl_armor/register.lua index c7fa91475..4c4330f3e 100644 --- a/mods/ITEMS/mcl_armor/register.lua +++ b/mods/ITEMS/mcl_armor/register.lua @@ -1,24 +1,5 @@ local S = minetest.get_translator(minetest.get_current_modname()) -mcl_armor.register_set({ - name = "leather", - description = "Leather", - descriptions = { - head = "Cap", - torso = "Tunic", - legs = "Pants", - }, - durability = 80, - enchantability = 15, - points = { - head = 1, - torso = 3, - legs = 2, - feet = 1, - }, - craft_material = "mcl_mobitems:leather", -}) - mcl_armor.register_set({ name = "gold", description = "Golden", @@ -227,5 +208,27 @@ minetest.register_tool("mcl_armor:elytra", { on_place = mcl_armor.equip_on_use, on_secondary_use = mcl_armor.equip_on_use, _mcl_armor_element = "torso", - _mcl_armor_texture = "mcl_armor_elytra.png" + _mcl_armor_texture = function(obj, itemstack) + if obj:is_player() then + local cape = mcl_skins.player_skins[obj].cape + if cape ~= "blank.png" then + return cape:gsub("_body", "_elytra") + end + end + return "mcl_armor_elytra.png" + end, + _on_equip = function(obj, itemstack) + if not obj:is_player() then return end + local cape = mcl_skins.player_skins[obj].cape + if cape ~= "blank.png" then + local skinval = mcl_player.player_get_skin(obj) + skinval = skinval:gsub("%^" .. cape, "") + mcl_player.player_set_skin(obj, skinval) + -- this doesn't mess with the data mcl_skins has, so when mcl_skins reloads (which happens when the elytra is unequipped), the normal cape returns + end + end, + _on_unequip = function(obj, itemstack) + if not obj:is_player() then return end + mcl_skins.update_player_skin(obj) + end }) diff --git a/mods/ITEMS/mcl_bamboo/bamboo_base.lua b/mods/ITEMS/mcl_bamboo/bamboo_base.lua index 0cbea4361..33e0cebaa 100644 --- a/mods/ITEMS/mcl_bamboo/bamboo_base.lua +++ b/mods/ITEMS/mcl_bamboo/bamboo_base.lua @@ -280,31 +280,7 @@ local bamboo_block_def = { _mcl_blast_resistance = 3, _mcl_hardness = 2, _mcl_stripped_variant = "mcl_bamboo:bamboo_block_stripped", -- this allows us to use the built in Axe's strip block. - on_place = function(itemstack, placer, pointed_thing) - if not pointed_thing then - return itemstack - end - - if pointed_thing.type ~= "node" then -- make sure that pointed_thing is not null and is pointing at a node. - return itemstack - end - - local pos = pointed_thing.under - - if mcl_bamboo.is_protected(pos, placer) then - return - end - - -- Use pointed node's on_rightclick function first, if present - local node = minetest.get_node(pointed_thing.under) - if placer and not placer:get_player_control().sneak then - if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then - return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack) or itemstack - end - end - - return minetest.item_place(itemstack, placer, pointed_thing, minetest.dir_to_facedir(vector.direction(pointed_thing.above, pointed_thing.under))) - end, + on_place = mcl_util.rotate_axis, } minetest.register_node("mcl_bamboo:bamboo_block", bamboo_block_def) diff --git a/mods/ITEMS/mcl_bamboo/bamboo_items.lua b/mods/ITEMS/mcl_bamboo/bamboo_items.lua index 95d4999fc..a7a28257e 100644 --- a/mods/ITEMS/mcl_bamboo/bamboo_items.lua +++ b/mods/ITEMS/mcl_bamboo/bamboo_items.lua @@ -316,10 +316,15 @@ minetest.register_node(SCAFFOLDING_NAME, { -- A quick check, that may or may not work, to attempt to prevent placing things on the side of other nodes. local dir = vector.subtract(pointed.under, pointed.above) local wdir = minetest.dir_to_wallmounted(dir) + local anode = minetest.get_node(pointed.above).name if wdir == 1 then - minetest.set_node(pointed.above, { name = SCAFFOLDING_NAME, param2 = 0 }) - if not minetest.is_creative_enabled(placer:get_player_name()) then - itemstack:take_item(1) + if (anode == "air" or minetest.registered_nodes[anode].buildable_to) and not mcl_bamboo.is_protected(pointed.above, placer) then + minetest.set_node(pointed.above, { name = SCAFFOLDING_NAME, param2 = 0 }) + if not minetest.is_creative_enabled(placer:get_player_name()) then + itemstack:take_item(1) + end + else + return end return itemstack else 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. 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 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. 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. 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= 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/bow.lua b/mods/ITEMS/mcl_bows/bow.lua index 174208c3c..37c38a085 100644 --- a/mods/ITEMS/mcl_bows/bow.lua +++ b/mods/ITEMS/mcl_bows/bow.lua @@ -33,6 +33,15 @@ 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({ + name = "bowcomplete", + fov_factor = 0.8, + time = 1, + reset_time = 0.3, + 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") if power == nil then @@ -48,7 +57,9 @@ 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 if enchantments.flame then mcl_burning.set_on_fire(obj, math.huge) @@ -131,7 +142,7 @@ minetest.register_tool("mcl_bows:bow", { _tt_help = S("Launches arrows"), _doc_items_longdesc = S("Bows are ranged weapons to shoot arrows at your foes.").."\n".. S("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."), - _doc_items_usagehelp = S("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."), + _doc_items_usagehelp = S("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 (or the zoom key) to charge, release to shoot."), _doc_items_durability = BOW_DURABILITY, inventory_image = "mcl_bows_bow.png", wield_scale = mcl_vars.tool_wield_scale, @@ -183,6 +194,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 @@ -227,7 +241,7 @@ end controls.register_on_release(function(player, key, time) - if key~="RMB" then return end + if key~="RMB" and key~="zoom" then return end --local inv = minetest.get_inventory({type="player", name=player:get_player_name()}) local wielditem = player:get_wielded_item() if (wielditem:get_name()=="mcl_bows:bow_0" or wielditem:get_name()=="mcl_bows:bow_1" or wielditem:get_name()=="mcl_bows:bow_2" or @@ -295,25 +309,30 @@ end) controls.register_on_hold(function(player, key, time) local name = player:get_player_name() local creative = minetest.is_creative_enabled(name) - if key ~= "RMB" or not (creative or get_arrow(player)) then + if (key ~= "RMB" and key ~= "zoom") or not (creative or get_arrow(player)) then return end --local inv = minetest.get_inventory({type="player", name=name}) local wielditem = player:get_wielded_item() - if bow_load[name] == nil and (wielditem:get_name()=="mcl_bows:bow" or wielditem:get_name()=="mcl_bows:bow_enchanted") and wielditem:get_meta():get("active") and (creative or get_arrow(player)) then - local enchanted = mcl_enchanting.is_enchanted(wielditem:get_name()) - if enchanted then - wielditem:set_name("mcl_bows:bow_0_enchanted") - else - wielditem:set_name("mcl_bows:bow_0") - end - player:set_wielded_item(wielditem) - if minetest.get_modpath("playerphysics") then - -- Slow player down when using bow - playerphysics.add_physics_factor(player, "speed", "mcl_bows:use_bow", PLAYER_USE_BOW_SPEED) - end - bow_load[name] = minetest.get_us_time() - bow_index[name] = player:get_wield_index() + if bow_load[name] == nil + and (wielditem:get_name()=="mcl_bows:bow" or wielditem:get_name()=="mcl_bows:bow_enchanted") + and (wielditem:get_meta():get("active") or key == "zoom") and (creative or get_arrow(player)) then + local enchanted = mcl_enchanting.is_enchanted(wielditem:get_name()) + if enchanted then + wielditem:set_name("mcl_bows:bow_0_enchanted") + else + wielditem:set_name("mcl_bows:bow_0") + end + player:set_wielded_item(wielditem) + if minetest.get_modpath("playerphysics") then + -- Slow player down when using bow + playerphysics.add_physics_factor(player, "speed", "mcl_bows:use_bow", PLAYER_USE_BOW_SPEED) + 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 diff --git a/mods/ITEMS/mcl_bows/crossbow.lua b/mods/ITEMS/mcl_bows/crossbow.lua index df7b5f560..b6a1a3ad6 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 @@ -132,7 +132,7 @@ minetest.register_tool("mcl_bows:crossbow", { _tt_help = S("Launches arrows"), _doc_items_longdesc = S("Crossbows are ranged weapons to shoot arrows at your foes.").."\n".. S("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."), - _doc_items_usagehelp = S("To use the crossbow, 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 load an arrow into the chamber, then to shoot press left mouse."), + _doc_items_usagehelp = S("To use the crossbow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button (or zoom key) to charge, release to load an arrow into the chamber, then to shoot press left mouse."), _doc_items_durability = BOW_DURABILITY, inventory_image = "mcl_bows_crossbow.png", wield_scale = mcl_vars.tool_wield_scale, @@ -263,7 +263,7 @@ end controls.register_on_release(function(player, key, time) - if key~="RMB" then return end + if key~="RMB" and key~="zoom" then return end --local inv = minetest.get_inventory({type="player", name=player:get_player_name()}) local wielditem = player:get_wielded_item() if wielditem:get_name()=="mcl_bows:crossbow_2" and get_arrow(player) or wielditem:get_name()=="mcl_bows:crossbow_2" and minetest.is_creative_enabled(player:get_player_name()) or wielditem:get_name()=="mcl_bows:crossbow_2_enchanted" and get_arrow(player) or wielditem:get_name()=="mcl_bows:crossbow_2_enchanted" and minetest.is_creative_enabled(player:get_player_name()) then @@ -359,7 +359,7 @@ end) controls.register_on_hold(function(player, key, time) local name = player:get_player_name() local creative = minetest.is_creative_enabled(name) - if key ~= "RMB" then + if key ~= "RMB" and key ~= "zoom" then return end --local inv = minetest.get_inventory({type="player", name=name}) @@ -373,22 +373,24 @@ controls.register_on_hold(function(player, key, time) BOW_CHARGE_TIME_FULL = _BOW_CHARGE_TIME_FULL end - if bow_load[name] == nil and (wielditem:get_name()=="mcl_bows:crossbow" or wielditem:get_name()=="mcl_bows:crossbow_enchanted") and wielditem:get_meta():get("active") and (creative or get_arrow(player)) then - local enchanted = mcl_enchanting.is_enchanted(wielditem:get_name()) - if enchanted then - wielditem:set_name("mcl_bows:crossbow_0_enchanted") - play_load_sound(0, player:get_pos()) - else - wielditem:set_name("mcl_bows:crossbow_0") - play_load_sound(0, player:get_pos()) - end - player:set_wielded_item(wielditem) - if minetest.get_modpath("playerphysics") then - -- Slow player down when using bow - playerphysics.add_physics_factor(player, "speed", "mcl_bows:use_crossbow", PLAYER_USE_CROSSBOW_SPEED) - end - bow_load[name] = minetest.get_us_time() - bow_index[name] = player:get_wield_index() + if bow_load[name] == nil + and (wielditem:get_name()=="mcl_bows:crossbow" or wielditem:get_name()=="mcl_bows:crossbow_enchanted") + and (wielditem:get_meta():get("active") or key=="zoom") and (creative or get_arrow(player)) then + local enchanted = mcl_enchanting.is_enchanted(wielditem:get_name()) + if enchanted then + wielditem:set_name("mcl_bows:crossbow_0_enchanted") + play_load_sound(0, player:get_pos()) + else + wielditem:set_name("mcl_bows:crossbow_0") + play_load_sound(0, player:get_pos()) + end + player:set_wielded_item(wielditem) + if minetest.get_modpath("playerphysics") then + -- Slow player down when using bow + playerphysics.add_physics_factor(player, "speed", "mcl_bows:use_crossbow", PLAYER_USE_CROSSBOW_SPEED) + end + bow_load[name] = minetest.get_us_time() + bow_index[name] = player:get_wield_index() else if player:get_wield_index() == bow_index[name] then if type(bow_load[name]) == "number" then 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. 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 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_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 = { diff --git a/mods/ITEMS/mcl_cauldrons/init.lua b/mods/ITEMS/mcl_cauldrons/init.lua index 0ba678583..89f173399 100644 --- a/mods/ITEMS/mcl_cauldrons/init.lua +++ b/mods/ITEMS/mcl_cauldrons/init.lua @@ -94,6 +94,14 @@ local function register_filled_cauldron(water_level, description, liquid) drop = "mcl_cauldrons:cauldron", _mcl_hardness = 2, _mcl_blast_resistance = 2, + on_rightclick = function(pos, node, player, itemstack) + local outcome = mcl_armor.wash_leather_armor(itemstack) + if outcome then + minetest.sound_play("mcl_potions_bottle_pour", + {pos=pos, gain=0.5, max_hear_range=16},true) + end + return outcome + end, }) -- Add entry aliases for the Help 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 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_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 diff --git a/mods/ITEMS/mcl_colorblocks/init.lua b/mods/ITEMS/mcl_colorblocks/init.lua index 6eec8a9df..f865628a3 100644 --- a/mods/ITEMS/mcl_colorblocks/init.lua +++ b/mods/ITEMS/mcl_colorblocks/init.lua @@ -4,27 +4,28 @@ local doc_mod = minetest.get_modpath("doc") local block = {} block.dyes = { - {"white", S("White Terracotta"), S("White Glazed Terracotta"), S("White Concrete Powder"), S("White Concrete"), "white"}, - {"grey", S("Grey Terracotta"), S("Grey Glazed Terracotta"), S("Grey Concrete Powder"), S("Grey Concrete"), "dark_grey"}, - {"silver", S("Light Grey Terracotta"), S("Light Grey Glazed Terracotta"), S("Light Grey Concrete Powder"), S("Light Grey Concrete"), "grey"}, - {"black", S("Black Terracotta"), S("Black Glazed Terracotta"), S("Black Concrete Powder"), S("Black Concrete"), "black"}, - {"red", S("Red Terracotta"), S("Red Glazed Terracotta"), S("Red Concrete Powder"), S("Red Concrete"), "red"}, - {"yellow", S("Yellow Terracotta"), S("Yellow Glazed Terracotta"), S("Yellow Concrete Powder"), S("Yellow Concrete"), "yellow"}, - {"green", S("Green Terracotta"), S("Green Glazed Terracotta"), S("Green Concrete Powder"), S("Green Concrete"), "dark_green"}, - {"cyan", S("Cyan Terracotta"), S("Cyan Glazed Terracotta"), S("Cyan Concrete Powder"), S("Cyan Concrete"), "cyan"}, - {"blue", S("Blue Terracotta"), S("Blue Glazed Terracotta"), S("Blue Concrete Powder"), S("Blue Concrete"), "blue"}, - {"magenta", S("Magenta Terracotta"), S("Magenta Glazed Terracotta"), S("Magenta Concrete Powder"), S("Magenta Concrete"), "magenta"}, - {"orange", S("Orange Terracotta"), S("Orange Glazed Terracotta"), S("Orange Concrete Powder"), S("Orange Concrete"), "orange"}, - {"purple", S("Purple Terracotta"), S("Purple Glazed Terracotta"), S("Purple Concrete Powder"), S("Purple Concrete"), "violet"}, - {"brown", S("Brown Terracotta"), S("Brown Glazed Terracotta"), S("Brown Concrete Powder"), S("Brown Concrete"), "brown"}, - {"pink", S("Pink Terracotta"), S("Pink Glazed Terracotta"), S("Pink Concrete Powder"), S("Pink Concrete"), "pink"}, - {"lime", S("Lime Terracotta"), S("Lime Glazed Terracotta"), S("Lime Concrete Powder"), S("Lime Concrete"), "green"}, - {"light_blue", S("Light Blue Terracotta"), S("Light Blue Glazed Terracotta"), S("Light Blue Concrete Powder"), S("Light Blue Concrete"), "lightblue"}, + {"white", S("White Terracotta"), S("White Glazed Terracotta"), S("White Glazed Terracotta Pillar"), S("White Concrete Powder"), S("White Concrete"), "white"}, + {"grey", S("Grey Terracotta"), S("Grey Glazed Terracotta"), S("Grey Glazed Terracotta Pillar"), S("Grey Concrete Powder"), S("Grey Concrete"), "dark_grey"}, + {"silver", S("Light Grey Terracotta"), S("Light Grey Glazed Terracotta"), S("Light Grey Glazed Terracotta Pillar"), S("Light Grey Concrete Powder"), S("Light Grey Concrete"), "grey"}, + {"black", S("Black Terracotta"), S("Black Glazed Terracotta"), S("Black Glazed Terracotta Pillar"), S("Black Concrete Powder"), S("Black Concrete"), "black"}, + {"red", S("Red Terracotta"), S("Red Glazed Terracotta"), S("Red Glazed Terracotta Pillar"), S("Red Concrete Powder"), S("Red Concrete"), "red"}, + {"yellow", S("Yellow Terracotta"), S("Yellow Glazed Terracotta"), S("Yellow Glazed Terracotta Pillar"), S("Yellow Concrete Powder"), S("Yellow Concrete"), "yellow"}, + {"green", S("Green Terracotta"), S("Green Glazed Terracotta"), S("Green Glazed Terracotta Pillar"), S("Green Concrete Powder"), S("Green Concrete"), "dark_green"}, + {"cyan", S("Cyan Terracotta"), S("Cyan Glazed Terracotta"), S("Cyan Glazed Terracotta Pillar"), S("Cyan Concrete Powder"), S("Cyan Concrete"), "cyan"}, + {"blue", S("Blue Terracotta"), S("Blue Glazed Terracotta"), S("Blue Glazed Terracotta Pillar"), S("Blue Concrete Powder"), S("Blue Concrete"), "blue"}, + {"magenta", S("Magenta Terracotta"), S("Magenta Glazed Terracotta"), S("Magenta Glazed Terracotta Pillar"), S("Magenta Concrete Powder"), S("Magenta Concrete"), "magenta"}, + {"orange", S("Orange Terracotta"), S("Orange Glazed Terracotta"), S("Orange Glazed Terracotta Pillar"), S("Orange Concrete Powder"), S("Orange Concrete"), "orange"}, + {"purple", S("Purple Terracotta"), S("Purple Glazed Terracotta"), S("Purple Glazed Terracotta Pillar"), S("Purple Concrete Powder"), S("Purple Concrete"), "violet"}, + {"brown", S("Brown Terracotta"), S("Brown Glazed Terracotta"), S("Brown Glazed Terracotta Pillar"), S("Brown Concrete Powder"), S("Brown Concrete"), "brown"}, + {"pink", S("Pink Terracotta"), S("Pink Glazed Terracotta"), S("Pink Glazed Terracotta Pillar"), S("Pink Concrete Powder"), S("Pink Concrete"), "pink"}, + {"lime", S("Lime Terracotta"), S("Lime Glazed Terracotta"), S("Lime Glazed Terracotta Pillar"), S("Lime Concrete Powder"), S("Lime Concrete"), "green"}, + {"light_blue", S("Light Blue Terracotta"), S("Light Blue Glazed Terracotta"), S("Light Blue Glazed Terracotta Pillar"), S("Light Blue Concrete Powder"), S("Light Blue Concrete"), "lightblue"}, } local canonical_color = "yellow" local hc_desc = S("Terracotta is a basic building material. It comes in many different colors.") local gt_desc = S("Glazed terracotta is a decorative block with a complex pattern. It can be rotated by placing it in different directions.") +local gtp_desc = S("Glazed terracotta pillar is a decorative block with a complex pattern. It can be used with Glazed terracotta to make uneven patterns.") local cp_desc = S("Concrete powder is used for creating concrete, but it can also be used as decoration itself. It comes in different colors. Concrete powder turns into concrete of the same color when it comes in contact with water.") local c_desc = S("Concrete is a decorative block which comes in many different colors. It is notable for having a very strong and clean color.") local cp_tt = S("Turns into concrete on water contact") @@ -57,8 +58,9 @@ for _, row in ipairs(block.dyes) do local is_canonical = name == canonical_color local sdesc_hc = row[2] local sdesc_gt = row[3] - local sdesc_cp = row[4] - local sdesc_c = row[5] + local sdesc_gtp = row[4] + local sdesc_cp = row[5] + local sdesc_c = row[6] local ldesc_hc, ldesc_gt, ldesc_cp, ldesc_c local create_entry local ename_hc, ename_gt, ename_cp, ename_c @@ -66,16 +68,18 @@ for _, row in ipairs(block.dyes) do if is_canonical then ldesc_hc = hc_desc ldesc_gt = gt_desc + ldesc_gtp = gtp_desc ldesc_cp = cp_desc ldesc_c = c_desc ename_hc = S("Colored Terracotta") ename_gt = S("Glazed Terracotta") + ename_gtp = S("Glazed Terracotta Pillar") ename_cp = S("Concrete Powder") ename_c = S("Concrete") else create_entry = false end - local craft_color_group = row[6] + local craft_color_group = row[7] -- Node Definition minetest.register_node("mcl_colorblocks:hardened_clay_"..name, { description = sdesc_hc, @@ -162,6 +166,22 @@ for _, row in ipairs(block.dyes) do _mcl_hardness = 1.4, on_rotate = on_rotate, }) + minetest.register_node("mcl_colorblocks:glazed_terracotta_pillar_"..name, { + description = sdesc_gtp, + _doc_items_longdesc = ldesc_gtp, + _doc_items_create_entry = create_entry, + _doc_items_entry_name = ename_gtp, + tiles = {"mcl_colorblocks_glazed_terracotta_pillar_top_"..name..".png", "mcl_colorblocks_glazed_terracotta_pillar_top_"..name..".png", "mcl_colorblocks_glazed_terracotta_pillar_side_"..name..".png"}, + groups = {handy=1,pickaxey=1, glazed_terracotta=1,building_block=1, material_stone=1}, + paramtype2 = "facedir", + stack_max = 64, + is_ground_content = false, + sounds = mcl_sounds.node_sound_stone_defaults(), + _mcl_blast_resistance = 4.2, + _mcl_hardness = 1.4, + on_place = mcl_util.rotate_axis, + on_rotate = on_rotate, + }) if not is_canonical and doc_mod then doc.add_entry_alias("nodes", "mcl_colorblocks:hardened_clay_"..canonical_color, "nodes", "mcl_colorblocks:hardened_clay_"..name) @@ -196,6 +216,16 @@ for _, row in ipairs(block.dyes) do recipe = "mcl_colorblocks:hardened_clay_"..name, cooktime = 10, }) + + minetest.register_craft({ + output = "mcl_colorblocks:glazed_terracotta_pillar_"..name.." 2", + recipe = { + {"mcl_colorblocks:glazed_terracotta_"..name}, + {"mcl_colorblocks:glazed_terracotta_"..name}, + } + }) + + mcl_stonecutter.register_recipe("mcl_colorblocks:glazed_terracotta_"..name, "mcl_colorblocks:glazed_terracotta_pillar_"..name) end end diff --git a/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.fr.tr b/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.fr.tr index f71b54063..a4bcf2c8f 100644 --- a/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.fr.tr +++ b/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.fr.tr @@ -1,76 +1,94 @@ # textdomain: mcl_colorblocks White Terracotta=Terre cuite blanche White Glazed Terracotta=Terre cuite emaillée blanche +White Glazed Terracotta Pillar=Pilier de terre cuite emaillée blanche White Concrete Powder=Béton en poudre blanc White Concrete=Béton blanc Grey Terracotta=Terre cuite grise Grey Glazed Terracotta=Terre cuite emaillée grise +Grey Glazed Terracotta Pillar=Pilier de terre cuite emaillée grise Grey Concrete Powder=Béton en goudre gris Grey Concrete=Béton gris Light Grey Terracotta=Terre cuite gris clair Light Grey Glazed Terracotta=Terre cuite emaillée gris clair +Light Grey Glazed Terracotta Pillar=Pilier de terre cuite emaillée gris clair Light Grey Concrete Powder=Béton en poudre gris clair Light Grey Concrete=Béton gris clair Black Terracotta=Terre cuite noir Black Glazed Terracotta=Terre cuite emaillée noir +Black Glazed Terracotta Pillar=Pilier de terre cuite emaillée noir Black Concrete Powder=Béton en poudre noir Black Concrete=Béton noir Red Terracotta=Terre cuite rouge Red Glazed Terracotta=Terre cuite emaillée rouge +Red Glazed Terracotta Pillar=Pilier de terre cuite emaillée rouge Red Concrete Powder=Béton en poudre rouge Red Concrete=Béton rouge Yellow Terracotta=Terre cuite jaune Yellow Glazed Terracotta=Terre cuite emaillée jaune +Yellow Glazed Terracotta Pillar=Pilier de terre cuite emaillée jaune Yellow Concrete Powder=Béton en poudre jaune Yellow Concrete=Béton jaune Green Terracotta=Terre cuite verte Green Glazed Terracotta=Terre cuite emaillée verte +Green Glazed Terracotta Pillar=Pilier de terre cuite emaillée verte Green Concrete Powder=Béton en poudre vert Green Concrete=Béton vert Cyan Terracotta=Terre cuite cyan Cyan Glazed Terracotta=Terre cuite emaillée cyan +Cyan Glazed Terracotta Pillar=Pilier de terre cuite emaillée cyan Cyan Concrete Powder=Béton en poudre cyan Cyan Concrete=Béton cyan Blue Terracotta=Terre cuite bleue Blue Glazed Terracotta=Terre cuite emaillée bleue +Blue Glazed Terracotta Pillar=Pilier de terre cuite emaillée bleue Blue Concrete Powder=Béton en poudre bleu Blue Concrete=Béton bleu Magenta Terracotta=Terre cuite magenta Magenta Glazed Terracotta=Terre cuite emaillée magenta +Magenta Glazed Terracotta Pillar=Pilier de terre cuite emaillée magenta Magenta Concrete Powder=Béton en poudre magenta Magenta Concrete=Béton magenta Orange Terracotta=Terre cuite orange Orange Glazed Terracotta=Terre cuite emaillée orange +Orange Glazed Terracotta Pillar=Pilier de terre cuite emaillée orange Orange Concrete Powder=Béton en poudre orange Orange Concrete=Béton orange Purple Terracotta=Terre cuite violette Purple Glazed Terracotta=Terre cuite emaillée violette +Purple Glazed Terracotta Pillar=Pilier de terre cuite emaillée violette Purple Concrete Powder=Béton en poudre violet Purple Concrete=Béton violet Brown Terracotta=Terre cuite marron Brown Glazed Terracotta=Terre cuite emaillée marron +Brown Glazed Terracotta Pillar=Pilier de terre cuite emaillée marron Brown Concrete Powder=Béton en poudre marron Brown Concrete=Béton marron Pink Terracotta=Terre cuite rose Pink Glazed Terracotta=Terre cuite emaillée rose +Pink Glazed Terracotta Pillar=Pilier de terre cuite emaillée rose Pink Concrete Powder=Béton en poudre rose Pink Concrete=Béton rose Lime Terracotta=Terre cuite verte clair Lime Glazed Terracotta=Terre cuite emaillée verte clair +Lime Glazed Terracotta Pillar=Pilier de terre cuite emaillée verte clair Lime Concrete Powder=Béton en poudre vert clair Lime Concrete=Béton vert clair Light Blue Terracotta=Terre cuite bleu clair Light Blue Glazed Terracotta=Terre cuite emaillée bleu clair +Light Blue Glazed Terracotta Pillar=Pilier de terre cuite emaillée bleu clair Light Blue Concrete Powder=Béton en poudre bleu clair Light Blue Concrete=Béton bleu clair Terracotta is a basic building material. It comes in many different colors.=La terre cuite est un matériau de construction de base. Il est disponible dans de nombreuses couleurs différentes. Glazed terracotta is a decorative block with a complex pattern. It can be rotated by placing it in different directions.=La terre cuite émaillée est un bloc décoratif au motif complexe. Il peut être tourné en le plaçant dans différentes directions. +Glazed terracotta pillar is a decorative block with a complex pattern. It can be used with Glazed terracotta to make uneven patterns.=Le pilier de terre cuite émaillée est un bloc décoratif au motif complexe. Il peut être utilisé avec la terre cuite émaillée pour réaliser des motifs impairs. Concrete powder is used for creating concrete, but it can also be used as decoration itself. It comes in different colors. Concrete powder turns into concrete of the same color when it comes in contact with water.=La poudre de béton est utilisée pour créer du béton, mais elle peut également être utilisée comme décoration elle-même. Il est disponible en différentes couleurs. La poudre de béton se transforme en béton de la même couleur au contact de l'eau. Concrete is a decorative block which comes in many different colors. It is notable for having a very strong and clean color.=Le béton est un bloc décoratif qui se décline en de nombreuses couleurs différentes. Il est remarquable pour avoir une couleur très forte et propre. Terracotta=Terre cuite Terracotta is a basic building material which comes in many different colors. This particular block is uncolored.=La terre cuite est un matériau de construction de base qui se décline en de nombreuses couleurs différentes. Ce bloc particulier n'est pas coloré. Colored Terracotta=Terre cuite colorée Glazed Terracotta=Terre cuite emaillée +Glazed Terracotta Pillar=Pilier de terre cuite emaillée Concrete Powder=Béton en poudre Concrete=Béton Turns into concrete on water contact=Se transforme en béton au contact de l'eau diff --git a/mods/ITEMS/mcl_colorblocks/locale/template.txt b/mods/ITEMS/mcl_colorblocks/locale/template.txt index ca1c059a1..8fbe7713f 100644 --- a/mods/ITEMS/mcl_colorblocks/locale/template.txt +++ b/mods/ITEMS/mcl_colorblocks/locale/template.txt @@ -1,76 +1,94 @@ # textdomain: mcl_colorblocks White Terracotta= White Glazed Terracotta= +White Glazed Terracotta Pillar= White Concrete Powder= White Concrete= Grey Terracotta= Grey Glazed Terracotta= +Grey Glazed Terracotta Pillar= Grey Concrete Powder= Grey Concrete= Light Grey Terracotta= Light Grey Glazed Terracotta= +Light Grey Glazed Terracotta Pillar= Light Grey Concrete Powder= Light Grey Concrete= Black Terracotta= Black Glazed Terracotta= +Black Glazed Terracotta Pillar= Black Concrete Powder= Black Concrete= Red Terracotta= Red Glazed Terracotta= +Red Glazed Terracotta Pillar= Red Concrete Powder= Red Concrete= Yellow Terracotta= Yellow Glazed Terracotta= +Yellow Glazed Terracotta Pillar= Yellow Concrete Powder= Yellow Concrete= Green Terracotta= Green Glazed Terracotta= +Green Glazed Terracotta Pillar= Green Concrete Powder= Green Concrete= Cyan Terracotta= Cyan Glazed Terracotta= +Cyan Glazed Terracotta Pillar= Cyan Concrete Powder= Cyan Concrete= Blue Terracotta= Blue Glazed Terracotta= +Blue Glazed Terracotta Pillar= Blue Concrete Powder= Blue Concrete= Magenta Terracotta= Magenta Glazed Terracotta= +Magenta Glazed Terracotta Pillar= Magenta Concrete Powder= Magenta Concrete= Orange Terracotta= Orange Glazed Terracotta= +Orange Glazed Terracotta Pillar= Orange Concrete Powder= Orange Concrete= Purple Terracotta= Purple Glazed Terracotta= +Purple Glazed Terracotta Pillar= Purple Concrete Powder= Purple Concrete= Brown Terracotta= Brown Glazed Terracotta= +Brown Glazed Terracotta Pillar= Brown Concrete Powder= Brown Concrete= Pink Terracotta= Pink Glazed Terracotta= +Pink Glazed Terracotta Pillar= Pink Concrete Powder= Pink Concrete= Lime Terracotta= Lime Glazed Terracotta= +Lime Glazed Terracotta Pillar= Lime Concrete Powder= Lime Concrete= Light Blue Terracotta= Light Blue Glazed Terracotta= +Light Blue Glazed Terracotta Pillar= Light Blue Concrete Powder= Light Blue Concrete= Terracotta is a basic building material. It comes in many different colors.= Glazed terracotta is a decorative block with a complex pattern. It can be rotated by placing it in different directions.= +Glazed terracotta pillar is a decorative block with a complex pattern. It can be used with Glazed terracotta to make uneven patterns.= Concrete powder is used for creating concrete, but it can also be used as decoration itself. It comes in different colors. Concrete powder turns into concrete of the same color when it comes in contact with water.= Concrete is a decorative block which comes in many different colors. It is notable for having a very strong and clean color.= Terracotta= Terracotta is a basic building material which comes in many different colors. This particular block is uncolored.= Colored Terracotta= Glazed Terracotta= +Glazed Terracotta Pillar= Concrete Powder= Concrete= Turns into concrete on water contact= 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 diff --git a/mods/ITEMS/mcl_compressed_blocks/init.lua b/mods/ITEMS/mcl_compressed_blocks/init.lua new file mode 100644 index 000000000..e81c7f4a0 --- /dev/null +++ b/mods/ITEMS/mcl_compressed_blocks/init.lua @@ -0,0 +1,5 @@ +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) + +dofile(modpath.."/nodes.lua") +dofile(modpath.."/recipes.lua") diff --git a/mods/ITEMS/mcl_compressed_blocks/mod.conf b/mods/ITEMS/mcl_compressed_blocks/mod.conf new file mode 100644 index 000000000..6e1128c1d --- /dev/null +++ b/mods/ITEMS/mcl_compressed_blocks/mod.conf @@ -0,0 +1,5 @@ +name = mcl_compressed_blocks +depends = mcl_core +description = adds compressed blocks to mineclone2 + + diff --git a/mods/ITEMS/mcl_compressed_blocks/nodes.lua b/mods/ITEMS/mcl_compressed_blocks/nodes.lua new file mode 100644 index 000000000..32c47bfd4 --- /dev/null +++ b/mods/ITEMS/mcl_compressed_blocks/nodes.lua @@ -0,0 +1,121 @@ +--Compressed Cobblestone +minetest.register_node("mcl_compressed_blocks:compressed_cobblestone", { + description = "Compressed Cobblestone", + _doc_items_longdesc = ("Compressed Cobblestone is a decorative block made from 9 Cobblestone. It is useful for saving space in your inventories."), + _doc_items_hidden = false, + tiles = {"mcl_compressed_blocks_compressed_cobblestone.png"}, + is_ground_content = true, + stack_max = 64, + groups = {pickaxey=1, stone=1, building_block=1}, + sounds = mcl_sounds.node_sound_stone_defaults(), + _mcl_blast_resistance = 11, + _mcl_hardness = 3, +}) + +--Double Compressed Cobble +minetest.register_node("mcl_compressed_blocks:double_compressed_cobblestone", { + description = "Double Compressed Cobblestone", + _doc_items_longdesc = ("Double Compressed Cobblestone is a decorative block made from 9 Compressed Cobblestone. It is useful for saving space in your inventories."), + _doc_items_hidden = false, + tiles = {"mcl_compressed_blocks_double_compressed_cobblestone.png"}, + is_ground_content = true, + stack_max = 64, + groups = {pickaxey=1, stone=1, building_block=1}, + sounds = mcl_sounds.node_sound_stone_defaults(), + _mcl_blast_resistance = 19, + _mcl_hardness = 4, +}) + +--Triple Compressed Cobble +minetest.register_node("mcl_compressed_blocks:triple_compressed_cobblestone", { + description = "Triple Compressed Cobblestone", + _doc_items_longdesc = ("Triple Compressed Cobblestone is a decorative block made from 9 Double Compressed Cobblestone. It is useful for saving space in your inventories."), + _doc_items_hidden = false, + tiles = {"mcl_compressed_blocks_triple_compressed_cobblestone.png"}, + is_ground_content = true, + stack_max = 64, + groups = {pickaxey=1, stone=1, building_block=1}, + sounds = mcl_sounds.node_sound_stone_defaults(), + _mcl_blast_resistance = 33, + _mcl_hardness = 5, +}) + +--Quadruple Compressed Cobble +minetest.register_node("mcl_compressed_blocks:quadruple_compressed_cobblestone", { + description = "Quadruple Compressed Cobblestone", + _doc_items_longdesc = ("Quadruple Compressed Cobblestone is a decorative block made from 9 Triple Compressed Cobblestone. It is useful for saving space in your inventories."), + _doc_items_hidden = false, + tiles = {"mcl_compressed_blocks_quadruple_compressed_cobblestone.png"}, + is_ground_content = true, + stack_max = 64, + groups = {pickaxey=1, stone=1, building_block=1}, + sounds = mcl_sounds.node_sound_stone_defaults(), + _mcl_blast_resistance = 58, + _mcl_hardness = 7, +}) + +--Quintuple Compressed Cobble +minetest.register_node("mcl_compressed_blocks:quintuple_compressed_cobblestone", { + description = "Quintuple Compressed Cobblestone", + _doc_items_longdesc = ("Quintuple Compressed Cobblestone is a decorative block made from 9 Quadruple Compressed Cobblestone. It is useful for saving space in your inventories."), + _doc_items_hidden = false, + tiles = {"mcl_compressed_blocks_quintuple_compressed_cobblestone.png"}, + is_ground_content = true, + stack_max = 64, + groups = {pickaxey=1, stone=1, building_block=1}, + sounds = mcl_sounds.node_sound_stone_defaults(), + _mcl_blast_resistance = 102, + _mcl_hardness = 9, +}) + +--Sextuple Compressed Cobble +minetest.register_node("mcl_compressed_blocks:sextuple_compressed_cobblestone", { + description = "Sextuple Compressed Cobblestone", + _doc_items_longdesc = ("Sextuple Compressed Cobblestone is a decorative block made from 9 Quintuple Compressed Cobblestone. It is useful for saving space in your inventories."), + _doc_items_hidden = false, + tiles = {"mcl_compressed_blocks_sextuple_compressed_cobblestone.png"}, + is_ground_content = true, + stack_max = 64, + groups = {pickaxey=1, stone=1, building_block=1}, + sounds = mcl_sounds.node_sound_stone_defaults(), + _mcl_blast_resistance = 179, + _mcl_hardness = 12, +}) + +--Septuple Compressed Cobble +minetest.register_node("mcl_compressed_blocks:septuple_compressed_cobblestone", { + description = "Septuple Compressed Cobblestone", + _doc_items_longdesc = ("Septuple Compressed Cobblestone is a decorative block made from 9 Sextuple Compressed Cobblestone. It is useful for saving space in your inventories."), + _doc_items_hidden = false, + tiles = {"mcl_compressed_blocks_septuple_compressed_cobblestone.png"}, + is_ground_content = true, + stack_max = 64, + groups = {pickaxey=1, stone=1, building_block=1}, + sounds = mcl_sounds.node_sound_stone_defaults(), + _mcl_blast_resistance = 313, + _mcl_hardness = 16, +}) + +--Ocutple Compressed Cobble +minetest.register_node("mcl_compressed_blocks:octuple_compressed_cobblestone", { + description = "Octuple Compressed Cobblestone", + _doc_items_longdesc = ("Octuple Compressed Cobblestone is a decorative block made from 9 Septuple Compressed Cobblestone. It is useful for saving space in your inventories."), + _doc_items_hidden = false, + tiles = {"mcl_compressed_blocks_octuple_compressed_cobblestone.png"}, + is_ground_content = true, + stack_max = 64, + groups = {pickaxey=1, stone=1, building_block=1}, + drop = { + + max_items = 2, + items = { + {items = {"mcl_core:diamond 9"}}, + {items = {"mcl_nether:netherite_scrap 18"}}, + }, + }, + + sounds = mcl_sounds.node_sound_stone_defaults(), + _mcl_blast_resistance = 548, + _mcl_hardness = 21, + _mcl_silk_touch_drop = true, +}) diff --git a/mods/ITEMS/mcl_compressed_blocks/recipes.lua b/mods/ITEMS/mcl_compressed_blocks/recipes.lua new file mode 100644 index 000000000..a02e8c612 --- /dev/null +++ b/mods/ITEMS/mcl_compressed_blocks/recipes.lua @@ -0,0 +1,127 @@ +minetest.register_craft({ + output = "mcl_compressed_blocks:compressed_cobblestone", + recipe = { + { "mcl_core:cobble", "mcl_core:cobble", "mcl_core:cobble" }, + { "mcl_core:cobble", "mcl_core:cobble", "mcl_core:cobble" }, + { "mcl_core:cobble", "mcl_core:cobble", "mcl_core:cobble" }, + }, +}) + +minetest.register_craft({ + output = "mcl_core:cobble 9", + recipe = { + { "mcl_compressed_blocks:compressed_cobblestone" }, + }, +}) + +minetest.register_craft({ + output = "mcl_compressed_blocks:double_compressed_cobblestone", + recipe = { + { "mcl_compressed_blocks:compressed_cobblestone", "mcl_compressed_blocks:compressed_cobblestone", "mcl_compressed_blocks:compressed_cobblestone" }, + { "mcl_compressed_blocks:compressed_cobblestone", "mcl_compressed_blocks:compressed_cobblestone", "mcl_compressed_blocks:compressed_cobblestone" }, + { "mcl_compressed_blocks:compressed_cobblestone", "mcl_compressed_blocks:compressed_cobblestone", "mcl_compressed_blocks:compressed_cobblestone" }, + }, +}) + +minetest.register_craft({ + output = "mcl_compressed_blocks:compressed_cobblestone 9", + recipe = { + { "mcl_compressed_blocks:double_compressed_cobblestone" }, + }, +}) + +minetest.register_craft({ + output = "mcl_compressed_blocks:triple_compressed_cobblestone", + recipe = { + { "mcl_compressed_blocks:double_compressed_cobblestone", "mcl_compressed_blocks:double_compressed_cobblestone", "mcl_compressed_blocks:double_compressed_cobblestone" }, + { "mcl_compressed_blocks:double_compressed_cobblestone", "mcl_compressed_blocks:double_compressed_cobblestone", "mcl_compressed_blocks:double_compressed_cobblestone" }, + { "mcl_compressed_blocks:double_compressed_cobblestone", "mcl_compressed_blocks:double_compressed_cobblestone", "mcl_compressed_blocks:double_compressed_cobblestone" }, + }, +}) + +minetest.register_craft({ + output = "mcl_compressed_blocks:double_compressed_cobblestone 9", + recipe = { + { "mcl_compressed_blocks:triple_compressed_cobblestone" }, + }, +}) + +minetest.register_craft({ + output = "mcl_compressed_blocks:quadruple_compressed_cobblestone", + recipe = { + { "mcl_compressed_blocks:triple_compressed_cobblestone", "mcl_compressed_blocks:triple_compressed_cobblestone", "mcl_compressed_blocks:triple_compressed_cobblestone" }, + { "mcl_compressed_blocks:triple_compressed_cobblestone", "mcl_compressed_blocks:triple_compressed_cobblestone", "mcl_compressed_blocks:triple_compressed_cobblestone" }, + { "mcl_compressed_blocks:triple_compressed_cobblestone", "mcl_compressed_blocks:triple_compressed_cobblestone", "mcl_compressed_blocks:triple_compressed_cobblestone" }, + }, +}) + +minetest.register_craft({ + output = "mcl_compressed_blocks:triple_compressed_cobblestone 9", + recipe = { + { "mcl_compressed_blocks:quadruple_compressed_cobblestone" }, + }, +}) + +minetest.register_craft({ + output = "mcl_compressed_blocks:quintuple_compressed_cobblestone", + recipe = { + { "mcl_compressed_blocks:quadruple_compressed_cobblestone", "mcl_compressed_blocks:quadruple_compressed_cobblestone", "mcl_compressed_blocks:quadruple_compressed_cobblestone" }, + { "mcl_compressed_blocks:quadruple_compressed_cobblestone", "mcl_compressed_blocks:quadruple_compressed_cobblestone", "mcl_compressed_blocks:quadruple_compressed_cobblestone" }, + { "mcl_compressed_blocks:quadruple_compressed_cobblestone", "mcl_compressed_blocks:quadruple_compressed_cobblestone", "mcl_compressed_blocks:quadruple_compressed_cobblestone" }, + }, +}) + +minetest.register_craft({ + output = "mcl_compressed_blocks:quadruple_compressed_cobblestone 9", + recipe = { + { "mcl_compressed_blocks:quintuple_compressed_cobblestone" }, + }, +}) + +minetest.register_craft({ + output = "mcl_compressed_blocks:sextuple_compressed_cobblestone", + recipe = { + { "mcl_compressed_blocks:quintuple_compressed_cobblestone", "mcl_compressed_blocks:quintuple_compressed_cobblestone", "mcl_compressed_blocks:quintuple_compressed_cobblestone" }, + { "mcl_compressed_blocks:quintuple_compressed_cobblestone", "mcl_compressed_blocks:quintuple_compressed_cobblestone", "mcl_compressed_blocks:quintuple_compressed_cobblestone" }, + { "mcl_compressed_blocks:quintuple_compressed_cobblestone", "mcl_compressed_blocks:quintuple_compressed_cobblestone", "mcl_compressed_blocks:quintuple_compressed_cobblestone" }, + }, +}) + +minetest.register_craft({ + output = "mcl_compressed_blocks:quintuple_compressed_cobblestone 9", + recipe = { + { "mcl_compressed_blocks:sextuple_compressed_cobblestone" }, + }, +}) + +minetest.register_craft({ + output = "mcl_compressed_blocks:septuple_compressed_cobblestone", + recipe = { + { "mcl_compressed_blocks:sextuple_compressed_cobblestone", "mcl_compressed_blocks:sextuple_compressed_cobblestone", "mcl_compressed_blocks:sextuple_compressed_cobblestone" }, + { "mcl_compressed_blocks:sextuple_compressed_cobblestone", "mcl_compressed_blocks:sextuple_compressed_cobblestone", "mcl_compressed_blocks:sextuple_compressed_cobblestone" }, + { "mcl_compressed_blocks:sextuple_compressed_cobblestone", "mcl_compressed_blocks:sextuple_compressed_cobblestone", "mcl_compressed_blocks:sextuple_compressed_cobblestone" }, + }, +}) + +minetest.register_craft({ + output = "mcl_compressed_blocks:sextuple_compressed_cobblestone 9", + recipe = { + { "mcl_compressed_blocks:septuple_compressed_cobblestone" }, + }, +}) + +minetest.register_craft({ + output = "mcl_compressed_blocks:octuple_compressed_cobblestone", + recipe = { + { "mcl_compressed_blocks:septuple_compressed_cobblestone", "mcl_compressed_blocks:septuple_compressed_cobblestone", "mcl_compressed_blocks:septuple_compressed_cobblestone" }, + { "mcl_compressed_blocks:septuple_compressed_cobblestone", "mcl_compressed_blocks:septuple_compressed_cobblestone", "mcl_compressed_blocks:septuple_compressed_cobblestone" }, + { "mcl_compressed_blocks:septuple_compressed_cobblestone", "mcl_compressed_blocks:septuple_compressed_cobblestone", "mcl_compressed_blocks:septuple_compressed_cobblestone" }, + }, +}) + +minetest.register_craft({ + output = "mcl_compressed_blocks:septuple_compressed_cobblestone 9", + recipe = { + { "mcl_compressed_blocks:octuple_compressed_cobblestone" }, + }, +}) diff --git a/mods/ITEMS/mcl_compressed_blocks/textures/mcl_compressed_blocks_compressed_cobblestone.png b/mods/ITEMS/mcl_compressed_blocks/textures/mcl_compressed_blocks_compressed_cobblestone.png new file mode 100644 index 000000000..30ba3c4a1 Binary files /dev/null and b/mods/ITEMS/mcl_compressed_blocks/textures/mcl_compressed_blocks_compressed_cobblestone.png differ diff --git a/mods/ITEMS/mcl_compressed_blocks/textures/mcl_compressed_blocks_double_compressed_cobblestone.png b/mods/ITEMS/mcl_compressed_blocks/textures/mcl_compressed_blocks_double_compressed_cobblestone.png new file mode 100644 index 000000000..593422c03 Binary files /dev/null and b/mods/ITEMS/mcl_compressed_blocks/textures/mcl_compressed_blocks_double_compressed_cobblestone.png differ diff --git a/mods/ITEMS/mcl_compressed_blocks/textures/mcl_compressed_blocks_octuple_compressed_cobblestone.png b/mods/ITEMS/mcl_compressed_blocks/textures/mcl_compressed_blocks_octuple_compressed_cobblestone.png new file mode 100644 index 000000000..b8d302487 Binary files /dev/null and b/mods/ITEMS/mcl_compressed_blocks/textures/mcl_compressed_blocks_octuple_compressed_cobblestone.png differ diff --git a/mods/ITEMS/mcl_compressed_blocks/textures/mcl_compressed_blocks_quadruple_compressed_cobblestone.png b/mods/ITEMS/mcl_compressed_blocks/textures/mcl_compressed_blocks_quadruple_compressed_cobblestone.png new file mode 100644 index 000000000..ac897b8c0 Binary files /dev/null and b/mods/ITEMS/mcl_compressed_blocks/textures/mcl_compressed_blocks_quadruple_compressed_cobblestone.png differ diff --git a/mods/ITEMS/mcl_compressed_blocks/textures/mcl_compressed_blocks_quintuple_compressed_cobblestone.png b/mods/ITEMS/mcl_compressed_blocks/textures/mcl_compressed_blocks_quintuple_compressed_cobblestone.png new file mode 100644 index 000000000..d82c648b4 Binary files /dev/null and b/mods/ITEMS/mcl_compressed_blocks/textures/mcl_compressed_blocks_quintuple_compressed_cobblestone.png differ diff --git a/mods/ITEMS/mcl_compressed_blocks/textures/mcl_compressed_blocks_septuple_compressed_cobblestone.png b/mods/ITEMS/mcl_compressed_blocks/textures/mcl_compressed_blocks_septuple_compressed_cobblestone.png new file mode 100644 index 000000000..75bfd2d49 Binary files /dev/null and b/mods/ITEMS/mcl_compressed_blocks/textures/mcl_compressed_blocks_septuple_compressed_cobblestone.png differ diff --git a/mods/ITEMS/mcl_compressed_blocks/textures/mcl_compressed_blocks_sextuple_compressed_cobblestone.png b/mods/ITEMS/mcl_compressed_blocks/textures/mcl_compressed_blocks_sextuple_compressed_cobblestone.png new file mode 100644 index 000000000..4ffce6d77 Binary files /dev/null and b/mods/ITEMS/mcl_compressed_blocks/textures/mcl_compressed_blocks_sextuple_compressed_cobblestone.png differ diff --git a/mods/ITEMS/mcl_compressed_blocks/textures/mcl_compressed_blocks_triple_compressed_cobblestone.png b/mods/ITEMS/mcl_compressed_blocks/textures/mcl_compressed_blocks_triple_compressed_cobblestone.png new file mode 100644 index 000000000..d42c7bf29 Binary files /dev/null and b/mods/ITEMS/mcl_compressed_blocks/textures/mcl_compressed_blocks_triple_compressed_cobblestone.png differ diff --git a/mods/ITEMS/mcl_core/craftitems.lua b/mods/ITEMS/mcl_core/craftitems.lua index 32a5f7cbc..e89fe124a 100644 --- a/mods/ITEMS/mcl_core/craftitems.lua +++ b/mods/ITEMS/mcl_core/craftitems.lua @@ -181,6 +181,67 @@ local function eat_gapple(itemstack, placer, pointed_thing) return gapple_hunger_restore(itemstack, placer, pointed_thing) end +local function eat_gapple_delayed(itemstack, placer, pointed_thing) + + if pointed_thing.type == "node" then + local node = minetest.get_node(pointed_thing.under) + if placer and not placer:get_player_control().sneak then + if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then + return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack) or itemstack + end + end + elseif pointed_thing.type == "object" then + return itemstack + end + + local function eat_gapple(itemstack, placer, pointed_thing) + if pointed_thing.type == "node" then + local node = minetest.get_node(pointed_thing.under) + if placer and not placer:get_player_control().sneak then + if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then + return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack) or itemstack + end + end + elseif pointed_thing.type == "object" then + return itemstack + end + + local regen_duration, absorbtion_factor = 5, 1 + if itemstack:get_name() == "mcl_core:apple_gold_enchanted" then + regen_duration, absorbtion_factor = 20, 4 + mcl_potions.fire_resistance_func(placer, 1, 300) + mcl_potions.leaping_func(placer, 1, 300) + if enable_fapples then + mcl_potions.swiftness_func(placer, absorbtion_factor, 120) + end + end + -- TODO: Absorbtion + mcl_potions.regeneration_func(placer, 2, regen_duration) + --return gapple_hunger_restore(itemstack, placer, pointed_thing) + end + + -- Wrapper for handling mcl_hunger delayed eating + local name = placer:get_player_name() + mcl_hunger.eat_internal[name]._custom_itemstack = itemstack -- Used as comparison to make sure the custom wrapper executes only when the same item is eaten + mcl_hunger.eat_internal[name]._custom_var = { + itemstack = itemstack, + placer = placer, + pointed_thing = pointed_thing, + } + mcl_hunger.eat_internal[name]._custom_func = eat_gapple + mcl_hunger.eat_internal[name]._custom_wrapper = function(name) + + mcl_hunger.eat_internal[name]._custom_func( + mcl_hunger.eat_internal[name]._custom_var.itemstack, + mcl_hunger.eat_internal[name]._custom_var.placer, + mcl_hunger.eat_internal[name]._custom_var.pointed_thing + ) + end + + --mcl_hunger.eat_internal[name]._custom_do_delayed = true -- Only _custom_wrapper will be executed after holding RMB or LMB within a specified delay + minetest.do_item_eat(4, nil, itemstack, placer, pointed_thing) +end + minetest.register_craftitem("mcl_core:apple_gold", { -- TODO: Add special highlight color description = S("Golden Apple"), @@ -188,8 +249,10 @@ minetest.register_craftitem("mcl_core:apple_gold", { wield_image = "mcl_core_apple_golden.png", inventory_image = "mcl_core_apple_golden.png", stack_max = 64, - on_place = eat_gapple, - on_secondary_use = eat_gapple, + --on_place = eat_gapple, -- Will do effect immediately but not reduce item count until eating delay ends which makes it exploitable by deliberately not finishing delay + --on_secondary_use = eat_gapple, + on_place = eat_gapple_delayed, + on_secondary_use = eat_gapple_delayed, groups = { food = 2, eatable = 4, can_eat_when_full = 1 }, _mcl_saturation = 9.6, }) @@ -200,8 +263,10 @@ minetest.register_craftitem("mcl_core:apple_gold_enchanted", { wield_image = "mcl_core_apple_golden.png" .. mcl_enchanting.overlay, inventory_image = "mcl_core_apple_golden.png" .. mcl_enchanting.overlay, stack_max = 64, - on_place = eat_gapple, - on_secondary_use = eat_gapple, + --on_place = eat_gapple, + --on_secondary_use = eat_gapple, + on_place = eat_gapple_delayed, + on_secondary_use = eat_gapple_delayed, groups = { food = 2, eatable = 4, can_eat_when_full = 1 }, _mcl_saturation = 9.6, }) diff --git a/mods/ITEMS/mcl_core/nodes_cactuscane.lua b/mods/ITEMS/mcl_core/nodes_cactuscane.lua index 79b440f61..805385124 100644 --- a/mods/ITEMS/mcl_core/nodes_cactuscane.lua +++ b/mods/ITEMS/mcl_core/nodes_cactuscane.lua @@ -135,4 +135,4 @@ minetest.register_node("mcl_core:reeds", { end, _mcl_blast_resistance = 0, _mcl_hardness = 0, -}) +}) \ No newline at end of file diff --git a/mods/ITEMS/mcl_crimson/init.lua b/mods/ITEMS/mcl_crimson/init.lua index cd9c9354c..b6e6b44e8 100644 --- a/mods/ITEMS/mcl_crimson/init.lua +++ b/mods/ITEMS/mcl_crimson/init.lua @@ -148,6 +148,22 @@ minetest.register_node("mcl_crimson:twisting_vines", { end return itemstack end, + on_place = function(itemstack, placer, pointed_thing) + local under = pointed_thing.under + local above = pointed_thing.above + local unode = minetest.get_node(under) + if under.y < above.y then + minetest.set_node(above, {name = "mcl_crimson:twisting_vines"}) + if not minetest.is_creative_enabled(placer:get_player_name()) then + itemstack:take_item() + end + else + if unode.name == "mcl_crimson:twisting_vines" then + return minetest.registered_nodes[unode.name].on_rightclick(under, unode, placer, itemstack, pointed_thing) + end + end + return itemstack + end, on_dig = function(pos, node, digger) local above = vector.offset(pos,0,1,0) local abovenode = minetest.get_node(above) @@ -223,7 +239,22 @@ minetest.register_node("mcl_crimson:weeping_vines", { end return itemstack end, - + on_place = function(itemstack, placer, pointed_thing) + local under = pointed_thing.under + local above = pointed_thing.above + local unode = minetest.get_node(under) + if under.y > above.y then + minetest.set_node(above, {name = "mcl_crimson:weeping_vines"}) + if not minetest.is_creative_enabled(placer:get_player_name()) then + itemstack:take_item() + end + else + if unode.name == "mcl_crimson:weeping_vines" then + return minetest.registered_nodes[unode.name].on_rightclick(under, unode, placer, itemstack, pointed_thing) + end + end + return itemstack + end, on_dig = function(pos, node, digger) local below = vector.offset(pos,0,-1,0) local belownode = minetest.get_node(below) @@ -663,6 +694,22 @@ mcl_dye.register_on_bone_meal_apply(function(pt,user) end end) +minetest.register_abm({ + label = "Turn Crimson Nylium and Warped Nylium below solid block into Netherrack", + nodenames = {"mcl_crimson:crimson_nylium","mcl_crimson:warped_nylium"}, + neighbors = {"group:solid"}, + interval = 8, + chance = 50, + action = function(pos, node) + local above = {x = pos.x, y = pos.y + 1, z = pos.z} + local name = minetest.get_node(above).name + local nodedef = minetest.registered_nodes[name] + if name ~= "ignore" and nodedef and (nodedef.groups and nodedef.groups.solid) then + minetest.set_node(pos, {name = "mcl_nether:netherrack"}) + end + end +}) + mcl_doors:register_door("mcl_crimson:crimson_door", { description = S("Crimson Door"), _doc_items_longdesc = S("Wooden doors are 2-block high barriers which can be opened or closed by hand and by a redstone signal."), @@ -808,4 +855,4 @@ minetest.register_craft({ } }) -dofile(modpath.."/alias.lua") \ No newline at end of file +dofile(modpath.."/alias.lua") 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. 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_dye/locale/mcl_dye.pl.tr b/mods/ITEMS/mcl_dye/locale/mcl_dye.pl.tr index 921983ec0..85e5b9605 100644 --- a/mods/ITEMS/mcl_dye/locale/mcl_dye.pl.tr +++ b/mods/ITEMS/mcl_dye/locale/mcl_dye.pl.tr @@ -1,5 +1,5 @@ # textdomain: mcl_dye -White Dye=Biały farba +White Dye=Biała farba Light Grey Dye=Jasnoszara farba Grey Dye=Szara farba Black Dye=Czarny farba 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_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index f137b4230..591dfb679 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 @@ -276,11 +280,73 @@ 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 + 3 * 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 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 + 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 + -- add minimum knockback + if knockback <= 1.5 then + knockback = knockback + 4.875 + elseif knockback <= 6.19 then + 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() + local dir_dot = (hv.x * dir.x) + (hv.z * dir.z) + local hitter_mag = math.sqrt((hv.x * hv.x) + (hv.z * hv.z)) + 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.515625 + end + -- reduce floatiness + minetest.after(0.25, function() + 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 + end + elseif hitter and hitter:is_player() and distance > 3 then + knockback = 0 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 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. 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.= diff --git a/mods/ITEMS/mcl_end/building.lua b/mods/ITEMS/mcl_end/building.lua index 7a3cdfd1d..7baa22c0f 100644 --- a/mods/ITEMS/mcl_end/building.lua +++ b/mods/ITEMS/mcl_end/building.lua @@ -59,16 +59,18 @@ minetest.register_node("mcl_end:purpur_pillar", { _mcl_hardness = 1.5, }) -minetest.register_node("mcl_end:end_rod", { +local end_rod_name = "mcl_end:end_rod" +local end_rod_side_tex = "mcl_end_end_rod_side.png" +local end_rod_def = { description = S("End Rod"), _doc_items_longdesc = S("End rods are decorative light sources."), tiles = { "mcl_end_end_rod_top.png", "mcl_end_end_rod_bottom.png", - "mcl_end_end_rod_side.png", - "mcl_end_end_rod_side.png", - "mcl_end_end_rod_side.png", - "mcl_end_end_rod_side.png", + end_rod_side_tex, + end_rod_side_tex, + end_rod_side_tex, + end_rod_side_tex, }, drawtype = "nodebox", is_ground_content = false, @@ -76,7 +78,7 @@ minetest.register_node("mcl_end:end_rod", { paramtype2 = "facedir", light_source = minetest.LIGHT_MAX, sunlight_propagates = true, - groups = { dig_immediate=3, deco_block=1, destroy_by_lava_flow=1, }, + groups = { dig_immediate=3, deco_block=1, destroy_by_lava_flow=1, end_rod=1 }, node_box = { type = "fixed", fixed = { @@ -132,7 +134,58 @@ minetest.register_node("mcl_end:end_rod", { sounds = mcl_sounds.node_sound_glass_defaults(), _mcl_blast_resistance = 0, -}) +} +minetest.register_node(end_rod_name, end_rod_def) + +-- register colored end_rods +local colored_end_rods = { + {"white", S("White End Rod"), "white"}, + {"grey", S("Grey End Rod"), "dark_grey"}, + {"silver", S("Light Grey End Rod"), "grey"}, + {"black", S("Black End Rod"), "black"}, + {"red", S("Red End Rod"), "red"}, + {"yellow", S("Yellow End Rod"), "yellow"}, + {"green", S("Green End Rod"), "dark_green"}, + {"cyan", S("Cyan End Rod"), "cyan"}, + {"blue", S("Blue End Rod"), "blue"}, + {"magenta", S("Magenta End Rod"), "magenta"}, + {"orange", S("Orange End Rod"), "orange"}, + {"purple", S("Purple End Rod"), "violet"}, + {"brown", S("Brown End Rod"), "brown"}, + {"pink", S("Pink End Rod"), "pink"}, + {"lime", S("Lime End Rod"), "green"}, + {"lightblue", S("Light Blue End Rod"), "lightblue"}, +} +local top_mask = "^[mask:mobs_mc_empty.png\\^[fill\\:2x2\\:7,7\\:white" +local side_mask = "^[mask:mobs_mc_empty.png\\^[fill\\:16x15\\:0,0\\:white" +for num, row in ipairs(colored_end_rods) do + local name = row[1] + local desc = row[2] + local dye = row[3] + local def = table.copy(end_rod_def) + def.description = desc + def._doc_items_longdesc = nil + def._doc_items_create_entry = false + local side_tex + if name == "pink" then + def.tiles[1] = def.tiles[1] .. "^(" .. def.tiles[1] .. top_mask .. "^[multiply:" .. name .. "^[hsl:0:300)" + side_tex = end_rod_side_tex .. "^(" .. end_rod_side_tex .. side_mask .. "^[multiply:" .. name .. "^[hsl:0:300)" + elseif num > 4 then + def.tiles[1] = def.tiles[1] .. "^(" .. def.tiles[1] .. top_mask .. "^[multiply:" .. name .. "^[hsl:0:300^[opacity:120)" + side_tex = end_rod_side_tex .. "^(" .. end_rod_side_tex .. side_mask .. "^[multiply:" .. name .. "^[hsl:0:300^[opacity:120)" + else + def.tiles[1] = def.tiles[1] .. "^(" .. def.tiles[1] .. top_mask .. "^[multiply:" .. name .. "^[hsl:0:-100^[opacity:170)" + side_tex = end_rod_side_tex .. "^(" .. end_rod_side_tex .. side_mask .. "^[multiply:" .. name .. "^[hsl:0:-100^[opacity:170)" + end + for i=3, 6 do def.tiles[i] = side_tex end + minetest.register_node(end_rod_name.."_"..name, def) + minetest.register_craft({ + type = "shapeless", + output = end_rod_name.."_"..name, + recipe = {"group:end_rod", "mcl_dye:"..dye} + }) +end + minetest.register_node("mcl_end:dragon_egg", { description = S("Dragon Egg"), diff --git a/mods/ITEMS/mcl_end/locale/mcl_end.de.tr b/mods/ITEMS/mcl_end/locale/mcl_end.de.tr index 69a3408bb..9fb4c6b88 100644 --- a/mods/ITEMS/mcl_end/locale/mcl_end.de.tr +++ b/mods/ITEMS/mcl_end/locale/mcl_end.de.tr @@ -5,6 +5,22 @@ Purpur Block=Purpurblock Purpur Pillar=Purpursäule End Rod=Endstab End rods are decorative light sources.=Endstäbe sind dekorative Lichtquellen. +White End Rod=Weißer Endstab +Grey End Rod=Grauer Endstab +Light Grey End Rod=Hellgrauer Endstab +Black End Rod=Schwarzer Endstab +Red End Rod=Roter Endstab +Yellow End Rod=Gelber Endstab +Green End Rod=Grüner Endstab +Cyan End Rod=Türkiser Endstab +Blue End Rod=Blauer Endstab +Magenta End Rod=Magenta Endstab +Orange End Rod=Orange Endstab +Purple End Rod=Violetter Endstab +Brown End Rod=Brauner Endstab +Pink End Rod=Rosa Endstab +Lime End Rod=Lindgrüner Endstab +Light Blue End Rod=Hellblauer Endstab Dragon Egg=Drachenei A dragon egg is a decorative item which can be placed.=Ein Drahenei ist ein dekorativer, platzierbarer Gegenstand. Chorus Flower=Chorusblume diff --git a/mods/ITEMS/mcl_end/locale/mcl_end.pl.tr b/mods/ITEMS/mcl_end/locale/mcl_end.pl.tr index e6526b265..e159f738b 100644 --- a/mods/ITEMS/mcl_end/locale/mcl_end.pl.tr +++ b/mods/ITEMS/mcl_end/locale/mcl_end.pl.tr @@ -5,6 +5,22 @@ Purpur Block=Blok purpury Purpur Pillar=Filar purpury End Rod=Różdżka Kresu End rods are decorative light sources.=Różdżki Kresu są dekoracyjnymi źródłami światła. +White End Rod=Biała Różdżka Kresu +Grey End Rod=Szara Różdżka Kresu +Light Grey End Rod=Jasnoszara Różdżka Kresu +Black End Rod=Czarna Różdżka Kresu +Red End Rod=Czerwona Różdżka Kresu +Yellow End Rod=Żółta Różdżka Kresu +Green End Rod=Zielona Różdżka Kresu +Cyan End Rod=Błękitna Różdżka Kresu +Blue End Rod=Niebieska Różdżka Kresu +Magenta End Rod=Karmazynowa Różdżka Kresu +Orange End Rod=Pomarańczowa Różdżka Kresu +Purple End Rod=Fioletowa Różdżka Kresu +Brown End Rod=Brązowa Różdżka Kresu +Pink End Rod=Różowa Różdżka Kresu +Lime End Rod=Jasnozielona Różdżka Kresu +Light Blue End Rod=Jasnoniebieska Różdżka Kresu Dragon Egg=Jajo smoka A dragon egg is a decorative item which can be placed.=Jajo smoka jest przedmiotem dekoracyjnym, który można postawić. Chorus Flower=Kwiat refrenusu diff --git a/mods/ITEMS/mcl_end/locale/template.txt b/mods/ITEMS/mcl_end/locale/template.txt index 08c7de07b..4040b3756 100644 --- a/mods/ITEMS/mcl_end/locale/template.txt +++ b/mods/ITEMS/mcl_end/locale/template.txt @@ -5,6 +5,22 @@ Purpur Block= Purpur Pillar= End Rod= End rods are decorative light sources.= +White End Rod= +Grey End Rod= +Light Grey End Rod= +Black End Rod= +Red End Rod= +Yellow End Rod= +Green End Rod= +Cyan End Rod= +Blue End Rod= +Magenta End Rod= +Orange End Rod= +Purple End Rod= +Brown End Rod= +Pink End Rod= +Lime End Rod= +Light Blue End Rod= Dragon Egg= A dragon egg is a decorative item which can be placed.= Chorus Flower= diff --git a/mods/ITEMS/mcl_farming/beetroot.lua b/mods/ITEMS/mcl_farming/beetroot.lua index 3785db111..f32b2bf8e 100644 --- a/mods/ITEMS/mcl_farming/beetroot.lua +++ b/mods/ITEMS/mcl_farming/beetroot.lua @@ -157,7 +157,7 @@ minetest.register_craftitem("mcl_farming:beetroot_soup", { wield_image = "mcl_farming_beetroot_soup.png", on_place = minetest.item_eat(6, "mcl_core:bowl"), on_secondary_use = minetest.item_eat(6, "mcl_core:bowl"), - groups = { food = 3, eatable = 6 }, + groups = { food = 2, eatable = 6 }, _mcl_saturation = 7.2, }) diff --git a/mods/ITEMS/mcl_farming/carrots.lua b/mods/ITEMS/mcl_farming/carrots.lua index f21285445..e8e295d8b 100644 --- a/mods/ITEMS/mcl_farming/carrots.lua +++ b/mods/ITEMS/mcl_farming/carrots.lua @@ -78,6 +78,13 @@ minetest.register_node("mcl_farming:carrot", { groups = {dig_immediate=3, not_in_creative_inventory=1,plant=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1}, sounds = mcl_sounds.node_sound_leaves_defaults(), _mcl_blast_resistance = 0, + _mcl_fortune_drop = { + discrete_uniform_distribution = true, + items = {"mcl_farming:carrot_item"}, + min_count = 2, + max_count = 4, + cap = 5, + } }) minetest.register_craftitem("mcl_farming:carrot_item", { 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 diff --git a/mods/ITEMS/mcl_farming/potatoes.lua b/mods/ITEMS/mcl_farming/potatoes.lua index e29219fd8..d3f4e4fc0 100644 --- a/mods/ITEMS/mcl_farming/potatoes.lua +++ b/mods/ITEMS/mcl_farming/potatoes.lua @@ -83,6 +83,13 @@ minetest.register_node("mcl_farming:potato", { groups = {dig_immediate=3, not_in_creative_inventory=1,plant=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1}, sounds = mcl_sounds.node_sound_leaves_defaults(), _mcl_blast_resistance = 0, + _mcl_fortune_drop = { + discrete_uniform_distribution = true, + items = {"mcl_farming:potato_item"}, + min_count = 2, + max_count = 4, + cap = 5 + } }) minetest.register_craftitem("mcl_farming:potato_item", { diff --git a/mods/ITEMS/mcl_farming/pumpkin.lua b/mods/ITEMS/mcl_farming/pumpkin.lua index 7354c0038..47c2a0ddf 100644 --- a/mods/ITEMS/mcl_farming/pumpkin.lua +++ b/mods/ITEMS/mcl_farming/pumpkin.lua @@ -38,7 +38,7 @@ local stem_drop = { { items = {"mcl_farming:pumpkin_seeds 2"}, rarity = 31 }, -- 3 seeds: 1/125 chance - { items = {"mcl_farming:pumkin_seeds 3"}, rarity = 125 }, + { items = {"mcl_farming:pumpkin_seeds 3"}, rarity = 125 }, }, } diff --git a/mods/ITEMS/mcl_farming/sweet_berry.lua b/mods/ITEMS/mcl_farming/sweet_berry.lua index 7dc6326a4..59b3a5a8b 100644 --- a/mods/ITEMS/mcl_farming/sweet_berry.lua +++ b/mods/ITEMS/mcl_farming/sweet_berry.lua @@ -20,7 +20,7 @@ for i=0, 3 do sunlight_propagates = true, paramtype2 = "meshoptions", place_param2 = 3, - liquid_viscosity = 15, + liquid_viscosity = 7, liquidtype = "source", liquid_alternative_flowing = node_name, liquid_alternative_source = node_name, diff --git a/mods/ITEMS/mcl_farming/wheat.lua b/mods/ITEMS/mcl_farming/wheat.lua index 15fd98e2a..676cc1301 100644 --- a/mods/ITEMS/mcl_farming/wheat.lua +++ b/mods/ITEMS/mcl_farming/wheat.lua @@ -89,6 +89,13 @@ minetest.register_node("mcl_farming:wheat", { dig_by_water=1,destroy_by_lava_flow=1, dig_by_piston=1}, sounds = mcl_sounds.node_sound_leaves_defaults(), _mcl_blast_resistance = 0, + _mcl_fortune_drop = { + discrete_uniform_distribution = true, + items = {"mcl_farming:wheat_seeds"}, + min_count = 1, + max_count = 6, + cap = 7 + } }) mcl_farming:add_plant("plant_wheat", "mcl_farming:wheat", {"mcl_farming:wheat_1", "mcl_farming:wheat_2", "mcl_farming:wheat_3", "mcl_farming:wheat_4", "mcl_farming:wheat_5", "mcl_farming:wheat_6", "mcl_farming:wheat_7"}, 25, 20) 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..69349e48b --- /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=Aberto por jogadores e sinal de redstone 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 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 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: 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 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. 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 diff --git a/mods/ITEMS/mcl_flowers/init.lua b/mods/ITEMS/mcl_flowers/init.lua index 10189240b..75e133322 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,9 +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) - --- 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) +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/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. 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..fb9dfc7cf --- /dev/null +++ b/mods/ITEMS/mcl_flowers/models/mcl_flowers_sunflower.obj @@ -0,0 +1,59 @@ +# Blender 3.6.4 +# www.blender.org +mtllib mcl_flowers_sunflower.mtl +o Stem_1 +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 +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.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 +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.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 +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.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 +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 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 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. 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ê. 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. diff --git a/mods/ITEMS/mcl_honey/locale/mcl_honey.es.tr b/mods/ITEMS/mcl_honey/locale/mcl_honey.es.tr index 90382020a..f22ae7702 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 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 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. 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 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. 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 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. 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'. 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 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. 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 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. diff --git a/mods/ITEMS/mcl_mobitems/init.lua b/mods/ITEMS/mcl_mobitems/init.lua index a47e11bfa..421ee184e 100644 --- a/mods/ITEMS/mcl_mobitems/init.lua +++ b/mods/ITEMS/mcl_mobitems/init.lua @@ -145,6 +145,52 @@ local function drink_milk(itemstack, player, pointed_thing) return bucket end +local function drink_milk_delayed(itemstack, player, pointed_thing) + + if pointed_thing.type == "node" then + local node = minetest.get_node(pointed_thing.under) + if player and not player:get_player_control().sneak then + if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then + return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, player, itemstack) or itemstack + end + end + elseif pointed_thing.type == "object" then + return itemstack + end + + local function drink_milk(itemstack, player, pointed_thing) + --local bucket = minetest.do_item_eat(0, "mcl_buckets:bucket_empty", itemstack, player, pointed_thing) + -- Check if we were allowed to drink this (eat delay check) + --if mcl_hunger.active and (bucket:get_name() ~= "mcl_mobitems:milk_bucket" or minetest.is_creative_enabled(player:get_player_name())) then + if mcl_hunger.active and (player:get_inventory():get_stack("main", player:get_wield_index(), itemstack) == "mcl_mobitems:milk_bucket" or minetest.is_creative_enabled(player:get_player_name())) then + mcl_hunger.stop_poison(player) + end + mcl_potions._reset_player_effects(player) + return bucket + end + + -- Wrapper for handling mcl_hunger delayed eating + local name = player:get_player_name() + mcl_hunger.eat_internal[name]._custom_itemstack = itemstack -- Used as comparison to make sure the custom wrapper executes only when the same item is eaten + mcl_hunger.eat_internal[name]._custom_var = { + itemstack = itemstack, + player = player, + pointed_thing = pointed_thing, + } + mcl_hunger.eat_internal[name]._custom_func = drink_milk + mcl_hunger.eat_internal[name]._custom_wrapper = function(name) + + mcl_hunger.eat_internal[name]._custom_func( + mcl_hunger.eat_internal[name]._custom_var.itemstack, + mcl_hunger.eat_internal[name]._custom_var.player, + mcl_hunger.eat_internal[name]._custom_var.pointed_thing + ) + end + + --mcl_hunger.eat_internal[name]._custom_do_delayed = true -- Only _custom_wrapper will be executed after holding RMB or LMB within a specified delay + minetest.do_item_eat(0, "mcl_buckets:bucket_empty", itemstack, player, pointed_thing) +end + minetest.register_craftitem("mcl_mobitems:milk_bucket", { description = S("Milk"), _tt_help = minetest.colorize(mcl_colors.GREEN, S("Removes all status effects")), @@ -152,8 +198,10 @@ minetest.register_craftitem("mcl_mobitems:milk_bucket", { _doc_items_usagehelp = S("Use the placement key to drink the milk."), inventory_image = "mcl_mobitems_bucket_milk.png", wield_image = "mcl_mobitems_bucket_milk.png", - on_place = drink_milk, - on_secondary_use = drink_milk, + --on_place = drink_milk, -- Will do effect immediately but not reduce item count until eating delay ends which makes it exploitable by deliberately not finishing delay + --on_secondary_use = drink_milk, + on_place = drink_milk_delayed, + on_secondary_use = drink_milk_delayed, stack_max = 1, groups = { food = 3, can_eat_when_full = 1 }, }) @@ -298,7 +346,7 @@ minetest.register_craftitem("mcl_mobitems:rabbit_stew", { stack_max = 1, on_place = minetest.item_eat(10, "mcl_core:bowl"), on_secondary_use = minetest.item_eat(10, "mcl_core:bowl"), - groups = { food = 3, eatable = 10 }, + groups = { food = 2, eatable = 10 }, _mcl_saturation = 12.0, }) 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 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. diff --git a/mods/ITEMS/mcl_mushrooms/small.lua b/mods/ITEMS/mcl_mushrooms/small.lua index f6fbd2909..4d1ffa2f5 100644 --- a/mods/ITEMS/mcl_mushrooms/small.lua +++ b/mods/ITEMS/mcl_mushrooms/small.lua @@ -87,7 +87,7 @@ minetest.register_craftitem("mcl_mushrooms:mushroom_stew", { inventory_image = "farming_mushroom_stew.png", on_place = minetest.item_eat(6, "mcl_core:bowl"), on_secondary_use = minetest.item_eat(6, "mcl_core:bowl"), - groups = { food = 3, eatable = 6 }, + groups = { food = 2, eatable = 6 }, _mcl_saturation = 7.2, stack_max = 1, }) 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. + 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! diff --git a/mods/ITEMS/mcl_potions/potions.lua b/mods/ITEMS/mcl_potions/potions.lua index 225fffed2..fd9240b92 100644 --- a/mods/ITEMS/mcl_potions/potions.lua +++ b/mods/ITEMS/mcl_potions/potions.lua @@ -61,7 +61,26 @@ function return_on_use(def, effect, dur) return itemstack end - def.on_use(user, effect, dur) + --def.on_use(user, effect, dur) -- Will do effect immediately but not reduce item count until eating delay ends which makes it exploitable by deliberately not finishing delay + + -- Wrapper for handling mcl_hunger delayed eating + local name = user:get_player_name() + mcl_hunger.eat_internal[name]._custom_itemstack = itemstack -- Used as comparison to make sure the custom wrapper executes only when the same item is eaten + mcl_hunger.eat_internal[name]._custom_var = { + user = user, + effect = effect, + dur = dur, + } + mcl_hunger.eat_internal[name]._custom_func = def.on_use + mcl_hunger.eat_internal[name]._custom_wrapper = function(name) + + mcl_hunger.eat_internal[name]._custom_func( + mcl_hunger.eat_internal[name]._custom_var.user, + mcl_hunger.eat_internal[name]._custom_var.effect, + mcl_hunger.eat_internal[name]._custom_var.dur + ) + end + local old_name, old_count = itemstack:get_name(), itemstack:get_count() itemstack = minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) if old_name ~= itemstack:get_name() or old_count ~= itemstack:get_count() then 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. 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 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 000000000..ddd6a4e90 Binary files /dev/null and b/mods/ITEMS/mcl_shepherd/sounds/shepherd-midnight.ogg differ diff --git a/mods/ITEMS/mcl_shields/init.lua b/mods/ITEMS/mcl_shields/init.lua index fa7714366..6edee7e89 100644 --- a/mods/ITEMS/mcl_shields/init.lua +++ b/mods/ITEMS/mcl_shields/init.lua @@ -112,16 +112,18 @@ end function mcl_shields.is_blocking(obj) if not obj:is_player() then return end - local blocking = mcl_shields.players[obj].blocking - if blocking <= 0 then - return - end + if mcl_shields.players[obj] then + local blocking = mcl_shields.players[obj].blocking + if blocking <= 0 then + return + end - local shieldstack = obj:get_wielded_item() - if blocking == 1 then - shieldstack = obj:get_inventory():get_stack("offhand", 1) + local shieldstack = obj:get_wielded_item() + if blocking == 1 then + shieldstack = obj:get_inventory():get_stack("offhand", 1) + end + return blocking, shieldstack end - return blocking, shieldstack end mcl_damage.register_modifier(function(obj, damage, reason) 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 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 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..5c42b2488 --- /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 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 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 diff --git a/mods/ITEMS/mcl_spyglass/init.lua b/mods/ITEMS/mcl_spyglass/init.lua index fa1a82339..afa7adaf4 100644 --- a/mods/ITEMS/mcl_spyglass/init.lua +++ b/mods/ITEMS/mcl_spyglass/init.lua @@ -17,6 +17,15 @@ minetest.register_craft({ } }) +mcl_fovapi.register_modifier({ + name = "spyglass", + fov_factor = 8, + time = 0.1, + reset_time = 0, + is_multiplier = false, + exclusive = true, +}) + local spyglass_scope = {} local function add_scope(player) @@ -29,6 +38,12 @@ local function add_scope(player) text = "mcl_spyglass_scope.png", }) player:hud_set_flags({wielditem = false}) + if mcl_util.is_it_christmas() then + local time = minetest.get_timeofday() + if (time < 0.01 or time > 0.99) and player:get_look_vertical() < -1.335 then + player:set_moon({texture = "mcl_moon_special.png"}) + end + end end end @@ -37,25 +52,31 @@ 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 controls.register_on_press(function(player, key) - if key ~= "RMB" then return end - add_scope(player) + if key ~= "RMB" and key ~= "zoom" then return end + if spyglass_scope[player] == nil then + add_scope(player) + end end) controls.register_on_release(function(player, key, time) - if key ~= "RMB" then return end + if key ~= "RMB" and key ~= "zoom" then return end + local ctrl = player:get_player_control() + if key == "RMB" and ctrl.zoom or key == "zoom" and ctrl.place then return end remove_scope(player) end) controls.register_on_hold(function(player, key, time) - if key ~= "RMB" then return end + if key ~= "RMB" and key ~= "zoom" 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 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. 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/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 } } }, diff --git a/mods/ITEMS/mcl_stonecutter/locale/mcl_stonecutter.de.tr b/mods/ITEMS/mcl_stonecutter/locale/mcl_stonecutter.de.tr new file mode 100644 index 000000000..852a78406 --- /dev/null +++ b/mods/ITEMS/mcl_stonecutter/locale/mcl_stonecutter.de.tr @@ -0,0 +1,4 @@ +# textdomain: mcl_stonecutter +Stone Cutter=Steinsäge +Used to cut stone like materials.=Wird zum Schneiden von steinähnlichen Materialien verwendet. +Stonecutters are used to create stairs and slabs from stone like materials. It is also the jobsite for the Stone Mason Villager.=Steinsägen stellen Treppen und Platten aus steinähnlichen Materialien her. Diese sind auch der Arbeitsplatz für den Steinmetz-Dorfbewohner. 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. diff --git a/mods/ITEMS/mcl_sus_stew/init.lua b/mods/ITEMS/mcl_sus_stew/init.lua index 01c8d2d55..d34dbbf00 100644 --- a/mods/ITEMS/mcl_sus_stew/init.lua +++ b/mods/ITEMS/mcl_sus_stew/init.lua @@ -78,6 +78,50 @@ local function eat_stew(itemstack, user, pointed_thing) end end +local function eat_stew_delayed(itemstack, user, pointed_thing) + + if pointed_thing.type == "node" then + if user and not user:get_player_control().sneak then + -- Use pointed node's on_rightclick function first, if present + local node = minetest.get_node(pointed_thing.under) + if user and not user:get_player_control().sneak then + if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then + return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, user, itemstack) or itemstack + end + end + end + elseif pointed_thing.type == "object" then + return itemstack + end + + -- Wrapper for handling mcl_hunger delayed eating + local name = user:get_player_name() + mcl_hunger.eat_internal[name]._custom_itemstack = itemstack -- Used as comparison to make sure the custom wrapper executes only when the same item is eaten + mcl_hunger.eat_internal[name]._custom_var = { + itemstack = itemstack, + user = user, + pointed_thing = pointed_thing, + } + mcl_hunger.eat_internal[name]._custom_func = eat_stew + mcl_hunger.eat_internal[name]._custom_wrapper = function(name) + + mcl_hunger.eat_internal[name]._custom_func( + mcl_hunger.eat_internal[name]._custom_var.itemstack, + mcl_hunger.eat_internal[name]._custom_var.user, + mcl_hunger.eat_internal[name]._custom_var.pointed_thing + ) + + local user = mcl_hunger.eat_internal[name]._custom_var.user + + minetest.after(0, function() + user:get_inventory():set_stack("main", user:get_wield_index(), "mcl_core:bowl") + end) + end + + mcl_hunger.eat_internal[name]._custom_do_delayed = true -- Only _custom_wrapper will be executed after holding RMB or LMB within a specified delay + --minetest.do_item_eat(0, "mcl_core:bowl", itemstack, user, pointed_thing) +end + minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv) if itemstack:get_name() ~= "mcl_sus_stew:stew" then return end for f,e in pairs(flower_effect) do @@ -96,8 +140,10 @@ minetest.register_craftitem("mcl_sus_stew:stew",{ description = S("Suspicious Stew"), inventory_image = "sus_stew.png", stack_max = 1, - on_place = eat_stew, - on_secondary_use = eat_stew, + --on_place = eat_stew, + --on_secondary_use = eat_stew, + on_place = eat_stew_delayed, + on_secondary_use = eat_stew_delayed, groups = { food = 2, eatable = 4, can_eat_when_full = 1, not_in_creative_inventory=1,}, _mcl_saturation = 7.2, }) 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 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 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 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 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. 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 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..8d06a55d1 --- /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 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 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. 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 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 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 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", 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. 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.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 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 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! 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..5a2688d67 --- /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.=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 +@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! 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. 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) 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) diff --git a/mods/PLAYER/mcl_fovapi/api.md b/mods/PLAYER/mcl_fovapi/api.md new file mode 100644 index 000000000..d4a9cb1fb --- /dev/null +++ b/mods/PLAYER/mcl_fovapi/api.md @@ -0,0 +1,82 @@ +### 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) + + +#### Description +This API defines and applies different Field Of View effects to players via MODIFIERS. + +#### 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. + +#### Modifier Definition +```lua +def = { + 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, +} +``` +* 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.) + 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 + 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. + +Note: passing incorrect values in the definition will have unintended consequences. + +#### Global MCL_FOVAPI Tables +There are three tables that are accessible via the API. They are `registered_modifiers` and `applied_modifiers`. + +`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. + +#### Namespaces +`mcl_fovapi` is the default API Namespace. + +#### Functions +`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. + +`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 new file mode 100644 index 000000000..92815d833 --- /dev/null +++ b/mods/PLAYER/mcl_fovapi/init.lua @@ -0,0 +1,232 @@ +--- +--- Copyright 2023, Michieal. +--- License: GPL3. (Default Mineclone2 License) +--- Created by michieal. +--- DateTime: 12/2/23 5:47 AM +--- + +-- Locals (and cached) +local DEBUG = false -- debug constant for troubleshooting. +local pairs = pairs + +-- Globals +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 player_name = player:get_player_name() + + -- handle clean up + mcl_fovapi.applied_modifiers[player_name] = nil +end) + +function mcl_fovapi.register_modifier(def) + if type(def.name) ~= "string" then + error("Modifier name must be a string") + end + if type(def.fov_factor) ~= "number" then + error("FOV factor must be a number") + end + 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") + 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 + 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 + 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[def.name] = mdef + +end + +minetest.register_on_respawnplayer(function(player) + mcl_fovapi.remove_all_modifiers(player) +end) + +function mcl_fovapi.apply_modifier(player, modifier_name) + if not player or not modifier_name then + return + end + if mcl_fovapi.registered_modifiers[modifier_name] == nil 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 + + 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 then + modifier.on_start(player) + end + + 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_name])) + end + + if DEBUG then + minetest.log("FOV::Modifier applied to player:" .. player_name .. " 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. + 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, modifier.time) + end + end + +end + +function mcl_fovapi.remove_modifier(player, modifier_name) + if not player or not modifier_name then + return + end + + 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 + minetest.log("FOV::Player: " .. player_name .. " modifier: " .. modifier_name .. "removed.") + end + + 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_name]) do + applied[k] = mcl_fovapi.registered_modifiers[k] + end + + local elem = next + if elem(applied) == nil then + player:set_fov(0, false, modifier.reset_time) + return + end + local exc = false + for k, _ in pairs(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. + local fov_factor = 1 + 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, not non_multiplier_added, modifier.reset_time) + end + + 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 not player then + return + end + + local player_name = player:get_player_name() + if DEBUG then + minetest.log("FOV::Player: " .. player_name .. " modifiers have been reset.") + end + + 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) +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. + +--]] diff --git a/mods/PLAYER/mcl_fovapi/mod.conf b/mods/PLAYER/mcl_fovapi/mod.conf new file mode 100644 index 000000000..3aff902a1 --- /dev/null +++ b/mods/PLAYER/mcl_fovapi/mod.conf @@ -0,0 +1,3 @@ +name = mcl_fovapi +author = Michieal, Herowl +description = An API for handling FOV changes. diff --git a/mods/PLAYER/mcl_hunger/changelog.txt b/mods/PLAYER/mcl_hunger/changelog.txt index a56dbcb89..8eb370e94 100644 --- a/mods/PLAYER/mcl_hunger/changelog.txt +++ b/mods/PLAYER/mcl_hunger/changelog.txt @@ -49,3 +49,7 @@ Initial release - Fix mod not working with both intllib and mod security enabled - Add missing screenshot - Rewrite README and use Markdown format + +0.6.0 +----- +- Add eating delay diff --git a/mods/PLAYER/mcl_hunger/hunger.lua b/mods/PLAYER/mcl_hunger/hunger.lua index d9a6fd5fe..de6369359 100644 --- a/mods/PLAYER/mcl_hunger/hunger.lua +++ b/mods/PLAYER/mcl_hunger/hunger.lua @@ -38,7 +38,26 @@ function minetest.do_item_eat(hp_change, replace_with_item, itemstack, user, poi local can_eat_when_full = creative or (mcl_hunger.active == false) or minetest.get_item_group(itemstack:get_name(), "can_eat_when_full") == 1 -- Don't allow eating when player has full hunger bar (some exceptional items apply) - if can_eat_when_full or (mcl_hunger.get_hunger(user) < 20) then + if not no_eat_delay and not mcl_hunger.eat_internal[name].is_eating and not mcl_hunger.eat_internal[name].do_item_eat and (can_eat_when_full or (mcl_hunger.get_hunger(user) < 20)) then + local itemname = itemstack:get_name() + table.update(mcl_hunger.eat_internal[name], { + is_eating = true, + is_eating_no_padding = true, + itemname = itemname, + item_definition = minetest.registered_items[itemname], + hp_change = hp_change, + replace_with_item = replace_with_item, + itemstack = itemstack, + user = user, + pointed_thing = pointed_thing + }) + elseif (mcl_hunger.eat_internal[name].do_item_eat or no_eat_delay) and (can_eat_when_full or (mcl_hunger.get_hunger(user) < 20)) then + if mcl_hunger.eat_internal[name]._custom_itemstack and + mcl_hunger.eat_internal[name]._custom_wrapper and + mcl_hunger.eat_internal[name]._custom_itemstack == itemstack then + + mcl_hunger.eat_internal[name]._custom_wrapper(name) + end itemstack = mcl_hunger.eat(hp_change, replace_with_item, itemstack, user, pointed_thing) for _, callback in pairs(minetest.registered_on_item_eats) do local result = callback(hp_change, replace_with_item, itemstack, user, pointed_thing, old_itemstack) @@ -47,6 +66,7 @@ function minetest.do_item_eat(hp_change, replace_with_item, itemstack, user, poi end end mcl_hunger.last_eat[name] = os.time() + user:get_inventory():set_stack("main", user:get_wield_index(), itemstack) end end @@ -129,49 +149,9 @@ function mcl_hunger.item_eat(hunger_change, replace_with_item, poisontime, poiso --local hp = user:get_hp() local pos = user:get_pos() - -- player height - pos.y = pos.y + 1.5 - local foodtype = minetest.get_item_group(itemname, "food") - if foodtype == 3 then - -- Item is a drink, only play drinking sound (no particle) - minetest.sound_play("survival_thirst_drink", { - max_hear_distance = 12, - gain = 1.0, - pitch = 1 + math.random(-10, 10)*0.005, - object = user, - }, true) - else - -- Assume the item is a food - -- Add eat particle effect and sound - local def = minetest.registered_items[itemname] - local texture = def.inventory_image - if not texture or texture == "" then - texture = def.wield_image - end - -- Special item definition field: _food_particles - -- If false, force item to not spawn any food partiles when eaten - if def._food_particles ~= false and texture and texture ~= "" then - local v = user:get_velocity() or user:get_player_velocity() - for i = 0, math.min(math.max(8, hunger_change*2), 25) do - minetest.add_particle({ - pos = { x = pos.x, y = pos.y, z = pos.z }, - velocity = vector.add(v, { x = math.random(-1, 1), y = math.random(1, 2), z = math.random(-1, 1) }), - acceleration = { x = 0, y = math.random(-9, -5), z = 0 }, - expirationtime = 1, - size = math.random(1, 2), - collisiondetection = true, - vertical = false, - texture = "[combine:3x3:" .. -i .. "," .. -i .. "=" .. texture, - }) - end - end - minetest.sound_play("mcl_hunger_bite", { - max_hear_distance = 12, - gain = 1.0, - pitch = 1 + math.random(-10, 10)*0.005, - object = user, - }, true) - end + local def = minetest.registered_items[itemname] + + mcl_hunger.eat_effects(user, itemname, pos, hunger_change, def) if mcl_hunger.active and hunger_change then -- Add saturation (must be defined in item table) @@ -226,6 +206,61 @@ function mcl_hunger.item_eat(hunger_change, replace_with_item, poisontime, poiso end end +function mcl_hunger.eat_effects(user, itemname, pos, hunger_change, item_def, pitch) + if user and itemname and pos and hunger_change and item_def then + local name = user:get_player_name() + if mcl_hunger.eat_internal[name] and mcl_hunger.eat_internal[name].do_item_eat then + pitch = 0.95 + end + local def = item_def + -- player height + pos.y = pos.y + 1.5 + local foodtype = minetest.get_item_group(itemname, "food") + if foodtype == 3 then + -- Item is a drink, only play drinking sound (no particle) + minetest.sound_play("survival_thirst_drink", { + max_hear_distance = 12, + gain = 1.0, + pitch = pitch or 1 + math.random(-10, 10)*0.005, + object = user, + }, true) + else + -- Assume the item is a food + -- Add eat particle effect and sound + --local def = minetest.registered_items[itemname] + local texture = def.inventory_image + if not texture or texture == "" then + texture = def.wield_image + end + -- Special item definition field: _food_particles + -- If false, force item to not spawn any food partiles when eaten + if def._food_particles ~= false and texture and texture ~= "" then + local v = user:get_velocity() or user:get_player_velocity() + for i = 0, math.min(math.max(8, hunger_change*2), 25) do + minetest.add_particle({ + pos = { x = pos.x, y = pos.y, z = pos.z }, + velocity = vector.add(v, { x = math.random(-1, 1), y = math.random(1, 2), z = math.random(-1, 1) }), + acceleration = { x = 0, y = math.random(-9, -5), z = 0 }, + expirationtime = 1, + size = math.random(1, 2), + collisiondetection = true, + vertical = false, + texture = "[combine:3x3:" .. -i .. "," .. -i .. "=" .. texture, + }) + end + end + minetest.sound_play("mcl_hunger_bite", { + max_hear_distance = 12, + gain = 1.0, + pitch = pitch or 1 + math.random(-10, 10)*0.005, + object = user, + }, true) + end + else + return false + end +end + if mcl_hunger.active then -- player-action based hunger changes minetest.register_on_dignode(function(pos, oldnode, player) diff --git a/mods/PLAYER/mcl_hunger/init.lua b/mods/PLAYER/mcl_hunger/init.lua index cc3965f57..61b6b72f2 100644 --- a/mods/PLAYER/mcl_hunger/init.lua +++ b/mods/PLAYER/mcl_hunger/init.lua @@ -30,6 +30,10 @@ mcl_hunger.EXHAUST_REGEN = 6000 -- Regenerate 1 HP mcl_hunger.EXHAUST_HUNGER = 5 -- Hunger status effect at base level. mcl_hunger.EXHAUST_LVL = 4000 -- at what exhaustion player saturation gets lowered +mcl_hunger.EATING_DELAY = tonumber(minetest.settings:get("mcl_eating_delay")) or 1.61 +mcl_hunger.EATING_WALK_SPEED = tonumber(minetest.settings:get("movement_speed_crouch")) / tonumber(minetest.settings:get("movement_speed_walk")) +mcl_hunger.EATING_TOUCHSCREEN_DELAY_PADDING = 0.75 + mcl_hunger.SATURATION_INIT = 5 -- Initial saturation for new/respawning players -- Debug Mode. If enabled, saturation and exhaustion are shown as well. @@ -39,6 +43,53 @@ mcl_hunger.debug = false -- Cooldown timers for each player, to force a short delay between consuming 2 food items mcl_hunger.last_eat = {} +-- Is player eating API +function mcl_hunger.is_eating(name) + local result + if name then + if type(name) ~= "string" then + name = name:get_player_name() + end + result = mcl_hunger.eat_internal[name].is_eating_no_padding + end + return result +end + +-- Variables for each player, to handle delayed eating +mcl_hunger.eat_internal = {} + +-- Set per player internal variables for delayed eating +minetest.register_on_joinplayer(function(player) + local name = player:get_player_name() + + mcl_hunger.eat_internal[name] = { + is_eating = false, + is_eating_no_padding = false, + itemname = nil, + item_definition = nil, + hp_change = nil, + replace_with_item = nil, + itemstack = nil, + user = nil, + pointed_thing = nil, + pitch = nil, + do_item_eat = false, + _custom_itemstack = nil, -- Used as comparison to make sure _custom_wrapper only executes when the same item is eaten + _custom_var = {}, -- Variables that can be used by _custom_var and _custom_wrapper + _custom_func = nil, -- Can be executed by _custom_wrapper + _custom_wrapper = nil, -- Will execute alongside minetest.do_item_eat if not empty and _custom_itemstack is equal to current player itemstack + _custom_do_delayed = false, -- If true, then will execute only _custom_wrapper after holding RMB or LMB within a delay specified by mcl_hunger.EATING_DELAY (Use to bypass minetest.do_item_eat entirely) + } + playerphysics.remove_physics_factor(player, "speed", "mcl_hunger:eating_speed") +end) + +-- Clear when player leaves +minetest.register_on_leaveplayer(function(player) + local name = player:get_player_name() + + mcl_hunger.eat_internal[name] = nil +end) + dofile(modpath.."/api.lua") dofile(modpath.."/hunger.lua") dofile(modpath.."/register_foods.lua") @@ -138,6 +189,35 @@ minetest.register_on_player_hpchange(function(player, hp_change) end) local food_tick_timers = {} -- one food_tick_timer per player, keys are the player-objects +local eat_start_timers = {} +local eat_tick_timers = {} +local eat_effects_cooldown = {} + +local function clear_eat_internal_and_timers(player, player_name) + playerphysics.remove_physics_factor(player, "speed", "mcl_hunger:eating_speed") + mcl_hunger.eat_internal[player_name] = { + is_eating = false, + is_eating_no_padding = false, + itemname = nil, + item_definition = nil, + hp_change = nil, + replace_with_item = nil, + itemstack = nil, + user = nil, + pointed_thing = nil, + pitch = nil, + do_item_eat = false, + _custom_itemstack = nil, + _custom_var = {}, + _custom_func = nil, + _custom_wrapper = nil, + _custom_do_delayed = false, + } + eat_start_timers[player] = 0 + eat_tick_timers[player] = 0 + eat_effects_cooldown[player] = 0 +end + minetest.register_globalstep(function(dtime) for _,player in pairs(minetest.get_connected_players()) do @@ -146,9 +226,9 @@ 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 + if food_tick_timer > 4 then food_tick_timer = 0 -- let hunger work always @@ -184,6 +264,109 @@ minetest.register_globalstep(function(dtime) end food_tick_timers[player] = food_tick_timer -- update food_tick_timer table + + -- Eating delay code + if mcl_hunger.eat_internal[player_name].is_eating or mcl_hunger.eat_internal[player_name]._custom_do_delayed then + mcl_hunger.eat_internal[player_name].is_eating = true + mcl_hunger.eat_internal[player_name].is_eating_no_padding = true + + local control = player:get_player_control() + local inv = player:get_inventory() + local current_itemstack = player:get_wielded_item() + + if not eat_start_timers[player] then + eat_start_timers[player] = 0 + end + + eat_start_timers[player] = eat_start_timers[player] + dtime + + if not eat_tick_timers[player] then + eat_tick_timers[player] = 0 + end + + if not eat_effects_cooldown[player] then + eat_effects_cooldown[player] = 0 + end + + if not mcl_hunger.eat_internal[player_name].pitch then + mcl_hunger.eat_internal[player_name].pitch = 1 + math.random(-10, 10)*0.005 + end + + -- check if holding RMB (or LMB as workaround for touchscreen) + if (current_itemstack == mcl_hunger.eat_internal[player_name].itemstack or current_itemstack == mcl_hunger.eat_internal[player_name]._custom_itemstack) and (control.RMB or control.LMB) then + eat_tick_timers[player] = eat_tick_timers[player] + dtime + eat_effects_cooldown[player] = eat_effects_cooldown[player] + dtime + + playerphysics.add_physics_factor(player, "speed", "mcl_hunger:eating_speed", mcl_hunger.EATING_WALK_SPEED) + + if eat_effects_cooldown[player] > 0.2 then + eat_effects_cooldown[player] = 0 + + if not mcl_hunger.eat_internal[player_name].user then + mcl_hunger.eat_internal[player_name].user = player + end + + if not mcl_hunger.eat_internal[player_name].itemname then + mcl_hunger.eat_internal[player_name].itemname = current_itemstack:get_name() + end + + if not mcl_hunger.eat_internal[player_name].hp_change then + mcl_hunger.eat_internal[player_name].hp_change = 0 + end + + local pos = player:get_pos() + local itemname = mcl_hunger.eat_internal[player_name].itemname + local def = minetest.registered_items[itemname] + + mcl_hunger.eat_effects( + mcl_hunger.eat_internal[player_name].user, + mcl_hunger.eat_internal[player_name].itemname, + pos, + mcl_hunger.eat_internal[player_name].hp_change, + def, + mcl_hunger.eat_internal[player_name].pitch + ) + end + + -- check if eating delay is over + if eat_tick_timers[player] >= mcl_hunger.EATING_DELAY then + + if not mcl_hunger.eat_internal[player_name]._custom_do_delayed then + mcl_hunger.eat_internal[player_name].do_item_eat = true + + minetest.do_item_eat( + mcl_hunger.eat_internal[player_name].hp_change, + mcl_hunger.eat_internal[player_name].replace_with_item, + mcl_hunger.eat_internal[player_name].itemstack, + mcl_hunger.eat_internal[player_name].user, + mcl_hunger.eat_internal[player_name].pointed_thing + ) + + -- bypass minetest.do_item_eat and only execute _custom_wrapper + elseif mcl_hunger.eat_internal[player_name]._custom_itemstack and + mcl_hunger.eat_internal[player_name]._custom_wrapper and + mcl_hunger.eat_internal[player_name]._custom_itemstack == current_itemstack then + + mcl_hunger.eat_internal[player_name]._custom_wrapper(player_name) + + player:get_inventory():set_stack("main", player:get_wield_index(), itemstack) + end + + clear_eat_internal_and_timers(player, player_name) + end + + elseif eat_start_timers[player] and eat_start_timers[player] > 0.2 then + playerphysics.remove_physics_factor(player, "speed", "mcl_hunger:eating_speed") + mcl_hunger.eat_internal[player_name].is_eating_no_padding = false + + elseif eat_start_timers[player] and eat_start_timers[player] > mcl_hunger.EATING_TOUCHSCREEN_DELAY_PADDING then + clear_eat_internal_and_timers(player, player_name) + end + end + + if eat_start_timers[player] and eat_start_timers[player] > mcl_hunger.EATING_DELAY + mcl_hunger.EATING_TOUCHSCREEN_DELAY_PADDING then + clear_eat_internal_and_timers(player, player_name) + end end end) 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. 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 diff --git a/mods/PLAYER/mcl_player/init.lua b/mods/PLAYER/mcl_player/init.lua index 288b697e1..d5e1df5a7 100644 --- a/mods/PLAYER/mcl_player/init.lua +++ b/mods/PLAYER/mcl_player/init.lua @@ -129,6 +129,11 @@ function mcl_player.player_set_skin(player, texture) update_player_textures(player) end +function mcl_player.player_get_skin(player) + local name = player:get_player_name() + return player_textures[name][1] +end + function mcl_player.player_set_armor(player, texture) local name = player:get_player_name() player_textures[name][2] = texture @@ -177,7 +182,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) @@ -228,8 +233,16 @@ 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) + local name = player:get_player_name() + minetest.after(0.5, function() + local player = minetest.get_player_by_name(name) + if not player then return end + 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 or walking and velocity.x < -0.35 or walking and velocity.z > 0.35 diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 99da0a01a..646030202 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -366,7 +366,7 @@ minetest.register_globalstep(function(dtime) set_properties(player, player_props_elytra) -- control body bone when flying - local body_rot = vector.new((75 - degrees(dir_to_pitch(player_velocity))), -player_vel_yaw + yaw, 0) + local body_rot = vector.new(degrees(dir_to_pitch(player_velocity)) + 110, -player_vel_yaw + yaw, 180) set_bone_pos(player, "Body_Control", nil, body_rot) elseif parent then set_properties(player, player_props_riding) @@ -657,11 +657,14 @@ 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, 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} @@ -671,6 +674,11 @@ 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() + minetest.log("warning", name .. " joined the game with 0 hp and has been forced to respawn") + end end) -- clear when player leaves @@ -721,6 +729,48 @@ mcl_damage.register_modifier(function(obj, damage, reason) end 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() + 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() + local player = minetest.get_player_by_name(name) + if not player then return end + player:get_meta():set_int("mcl_damage:invulnerable", 0) + end) + 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 + player:get_meta():set_int("mcl_damage:damage_animation", 1) + minetest.after(0.5, function() + local player = minetest.get_player_by_name(name) + if not player then return end + player:get_meta():set_int("mcl_damage:damage_animation", 0) + end) + end + end +end) + minetest.register_on_respawnplayer(function(player) local pos = player:get_pos() minetest.add_particlespawner({ diff --git a/mods/PLAYER/mcl_skins/edit_skin.lua b/mods/PLAYER/mcl_skins/edit_skin.lua index 706c08461..8531e4263 100644 --- a/mods/PLAYER/mcl_skins/edit_skin.lua +++ b/mods/PLAYER/mcl_skins/edit_skin.lua @@ -5,8 +5,8 @@ local EDIT_SKIN_KEY = -1 -- The key used for edit skin in the mcl_skins.simple_s mcl_skins = { simple_skins = {}, texture_to_simple_skin = {}, - item_names = {"base", "footwear", "eye", "mouth", "bottom", "top", "hair", "headwear"}, - tab_names = {"skin", "template", "base", "headwear", "hair", "eye", "mouth", "top", "arm", "bottom", "footwear"}, + item_names = {"base", "footwear", "eye", "mouth", "bottom", "top", "hair", "headwear", "cape"}, + tab_names = {"skin", "template", "base", "headwear", "hair", "eye", "mouth", "top", "arm", "bottom", "footwear", "cape"}, tab_descriptions = { template = S("Templates"), arm = S("Arm size"), @@ -19,11 +19,13 @@ mcl_skins = { hair = S("Hairs"), headwear = S("Headwears"), skin = S("Skins"), + cape = S("Capes") }, + cape = {}, template1 = {}, -- Stores edit skin values for template1 template2 = {}, -- Stores edit skin values for template2 base = {}, -- List of base textures - + -- Base color is separate to keep the number of junk nodes registered in check base_color = {0xffeeb592, 0xffb47a57, 0xff8d471d}, color = { @@ -59,15 +61,29 @@ mcl_skins = { function mcl_skins.register_item(item) assert(mcl_skins[item.type], "Skin item type " .. item.type .. " does not exist.") + + if item.type == "cape" then + local func = item.selector_func + + if type(func) == "string" then + func = loadstring(func)() + end + + table.insert(mcl_skins.cape, {name=item.name, selector_func=func, mask=item.mask}) + mcl_skins.masks[item.name] = item.mask + return + end + local texture = item.texture or "blank.png" + if item.template1 then mcl_skins.template1[item.type] = texture end - + if item.template2 then mcl_skins.template2[item.type] = texture end - + table.insert(mcl_skins[item.type], texture) mcl_skins.masks[texture] = item.mask mcl_skins.preview_rotations[texture] = item.preview_rotation @@ -143,11 +159,21 @@ function mcl_skins.update_player_skin(player) if not player then return end - - local skin = mcl_skins.player_skins[player] - mcl_player.player_set_skin(player, mcl_skins.compile_skin(skin)) - + local skin = mcl_skins.player_skins[player] + local skinval = mcl_skins.compile_skin(skin) + + if not skin.cape then skin.cape = "blank.png" end + + if player:get_inventory():get_stack("armor", 3):get_name() == "mcl_armor:elytra" then + skinval = skinval:gsub("%^" .. skin.cape, "") + -- don't render the "normal" cape on players while wearing the elytra. + -- this is NOT used when the player puts an elytra on, see register.lua in mcl_armor for that. + -- this is used when a player joins or changes something regarding their skin. + end + + mcl_player.player_set_skin(player, skinval) + local slim_arms if skin.simple_skins_id then slim_arms = mcl_skins.texture_to_simple_skin[skin.simple_skins_id].slim_arms @@ -200,9 +226,17 @@ minetest.register_on_leaveplayer(function(player) mcl_skins.player_formspecs[player] = nil end) -local function calculate_page_count(tab) +local function calculate_page_count(tab, player) if tab == "skin" then return math.ceil((#mcl_skins.simple_skins + 2) / 8) + elseif tab == "cape" then + local player_capes = 0 + for _, cape in pairs(mcl_skins.cape) do + if type(cape.selector_func) == "nil" or cape.selector_func(player) then + player_capes = player_capes + 1 + end + end + return math.ceil((player_capes + 1) / 5) -- add one so the player can select no cape as well elseif mcl_skins[tab] then return math.ceil(#mcl_skins[tab] / 16) end @@ -213,29 +247,29 @@ function mcl_skins.show_formspec(player, active_tab, page_num) local formspec_data = mcl_skins.player_formspecs[player] local skin = mcl_skins.player_skins[player] formspec_data.active_tab = active_tab - - local page_count = calculate_page_count(active_tab) + + local page_count = calculate_page_count(active_tab, player) if page_num < 1 then page_num = 1 end if page_num > page_count then page_num = page_count end formspec_data.page_num = page_num - + local formspec = "formspec_version[3]size[14.2,11]" - + for i, tab in pairs(mcl_skins.tab_names) do if tab == active_tab then formspec = formspec .. "style[" .. tab .. ";bgcolor=green]" end - + local y = 0.3 + (i - 1) * 0.8 formspec = formspec .. "style[" .. tab .. ";content_offset=16,0]" .. "button[0.3," .. y .. ";4,0.8;" .. tab .. ";" .. mcl_skins.tab_descriptions[tab] .. "]" .. - "image[0.4," .. y + 0.1 .. ";0.6,0.6;mcl_skins_icons.png^[verticalframe:11:" .. i - 1 .. "]" - + "image[0.4," .. y + 0.1 .. ";0.6,0.6;mcl_skins_icons.png^[verticalframe:12:" .. i - 1 .. "]" + if skin.simple_skins_id then break end end - + local slim_arms if skin.simple_skins_id then slim_arms = mcl_skins.texture_to_simple_skin[skin.simple_skins_id].slim_arms @@ -249,6 +283,9 @@ function mcl_skins.show_formspec(player, active_tab, page_num) mcl_skins.compile_skin(skin) .. ",blank.png,blank.png;0,180;false;true;0,0]" + + local cape_tab = active_tab == "cape" + if active_tab == "skin" then local page_start = (page_num - 1) * 8 - 1 local page_end = math.min(page_start + 8 - 1, #mcl_skins.simple_skins) @@ -264,21 +301,21 @@ function mcl_skins.show_formspec(player, active_tab, page_num) } simple_skins_id = simple_skins_id or mcl_skins.simple_skins[EDIT_SKIN_KEY].texture - + for i = page_start, page_end do local skin = mcl_skins.simple_skins[i] local j = i - page_start - 1 local mesh = skin.slim_arms and "mcl_armor_character_female.b3d" or "mcl_armor_character.b3d" - + local x = 4.5 + (j + 1) % 4 * 1.6 local y = 0.3 + math.floor((j + 1) / 4) * 3.1 - + formspec = formspec .. "model[" .. x .. "," .. y .. ";1.5,3;player_mesh;" .. mesh .. ";" .. skin.texture .. ",blank.png,blank.png;0,180;false;true;0,0]" - + if simple_skins_id == skin.texture then formspec = formspec .. "style[" .. i .. @@ -288,7 +325,7 @@ function mcl_skins.show_formspec(player, active_tab, page_num) formspec = formspec .. "button[" .. x .. "," .. y .. ";1.5,3;" .. i .. ";]" end - + if page_start == EDIT_SKIN_KEY then formspec = formspec .. "image[4.85,1;0.8,0.8;mcl_skins_button.png]" end @@ -303,16 +340,46 @@ function mcl_skins.show_formspec(player, active_tab, page_num) "model[7.5,2;2,3;player_mesh;mcl_armor_character_female.b3d;" .. mcl_skins.compile_skin(mcl_skins.template2) .. ",blank.png,blank.png;0,180;false;true;0,0]" .. - + "button[7.5,5.2;2,0.8;template2;" .. S("Select") .. "]" - + + elseif cape_tab then + local possize = {{"6,2;1,2", "5.5,4.2;2,0.8"}, {"9,2;1,2","8.5,4.2;2,0.8"}, {"6,7;1,2","5.5,9.2;2,0.8"}, {"9,7;1,2","8.5,9.2;2,0.8"},{"12,7;1,2","11.5,9.2;2,0.8"}} + local player_capes = {} -- contains all capes the player is allowed to wear + for _, cape in pairs (mcl_skins.cape) do + if type(cape.selector_func) == "nil" or cape.selector_func(player) then + table.insert(player_capes, cape) + end + end + + local slot_offset = 0 + + if page_num == 1 then + formspec = formspec .. + "label[6,3;" .. S("(None)") .. "]".. + "button[5.5,4.2;2,0.8;nocape;" .. S("Select") .. "]" + slot_offset = 1 + end + + local array_start = page_num * 5 - 4 + local index_offset = page_num == 1 and 1 or 2 + + for slot = 1 + slot_offset, page_num ~= page_count and 5 or (#player_capes % 5 == 0 and 1 or #player_capes % 5) + slot_offset do + local cape = player_capes[array_start + slot - slot_offset - index_offset] + local pos = possize[slot] + + formspec = formspec .. + "image[" .. possize[slot][1] .. ";" .. cape.name ..".png]".. + "button[" .. possize[slot][2] .. ";" .. cape.name ..";" .. S("Select") .. "]" + end + elseif mcl_skins[active_tab] then formspec = formspec .. "style_type[button;bgcolor=#00000000]" local textures = mcl_skins[active_tab] local page_start = (page_num - 1) * 16 + 1 local page_end = math.min(page_start + 16 - 1, #textures) - + for j = page_start, page_end do local i = j - page_start + 1 local texture = textures[j] @@ -323,21 +390,21 @@ function mcl_skins.show_formspec(player, active_tab, page_num) preview = preview .. "^(" .. mask .. "^[colorize:" .. color .. ":alpha)" end preview = preview .. "^" .. texture - + local mesh = "mcl_skins_head.obj" if active_tab == "top" then mesh = "mcl_skins_top.obj" elseif active_tab == "bottom" or active_tab == "footwear" then mesh = "mcl_skins_bottom.obj" end - + local rot_x = -10 local rot_y = 20 if mcl_skins.preview_rotations[texture] then rot_x = mcl_skins.preview_rotations[texture].x rot_y = mcl_skins.preview_rotations[texture].y end - + i = i - 1 local x = 4.5 + i % 4 * 1.6 local y = 0.3 + math.floor(i / 4) * 1.6 @@ -346,7 +413,7 @@ function mcl_skins.show_formspec(player, active_tab, page_num) ";1.5,1.5;" .. mesh .. ";" .. mesh .. ";" .. preview .. ";" .. rot_x .. "," .. rot_y .. ";false;false;0,0]" - + if skin[active_tab] == texture then formspec = formspec .. "style[" .. texture .. @@ -365,11 +432,11 @@ function mcl_skins.show_formspec(player, active_tab, page_num) "button[" .. x .. ",0.3;1,1;arm;]" end - + if skin[active_tab .. "_color"] then local colors = mcl_skins.color if active_tab == "base" then colors = mcl_skins.base_color end - + local tab_color = active_tab .. "_color" local selected_color = skin[tab_color] for i, colorspec in pairs(colors) do @@ -381,7 +448,7 @@ function mcl_skins.show_formspec(player, active_tab, page_num) "image_button[" .. x .. "," .. y .. ";0.8,0.8;blank.png^[noalpha^[colorize:" .. color .. ":alpha;" .. colorspec .. ";]" - + if selected_color == colorspec then formspec = formspec .. "style[" .. color .. @@ -389,9 +456,9 @@ function mcl_skins.show_formspec(player, active_tab, page_num) "bgimg_pressed=mcl_skins_select_overlay.png]" .. "button[" .. x .. "," .. y .. ";0.8,0.8;" .. color .. ";]" end - + end - + if not (active_tab == "base") then -- Bitwise Operations !?!?! local red = math.floor(selected_color / 0x10000) - 0xff00 @@ -400,39 +467,54 @@ function mcl_skins.show_formspec(player, active_tab, page_num) formspec = formspec .. "container[10.2,8]" .. "scrollbaroptions[min=0;max=255;smallstep=20]" .. - + "box[0.4,0;2.49,0.38;red]" .. "label[0.2,0.2;-]" .. "scrollbar[0.4,0;2.5,0.4;horizontal;red;" .. red .."]" .. "label[2.9,0.2;+]" .. - + "box[0.4,0.6;2.49,0.38;green]" .. "label[0.2,0.8;-]" .. "scrollbar[0.4,0.6;2.5,0.4;horizontal;green;" .. green .."]" .. "label[2.9,0.8;+]" .. - + "box[0.4,1.2;2.49,0.38;blue]" .. "label[0.2,1.4;-]" .. "scrollbar[0.4,1.2;2.5,0.4;horizontal;blue;" .. blue .. "]" .. "label[2.9,1.4;+]" .. - + "container_end[]" end end if page_num > 1 then - formspec = formspec .. - "image_button[4.5,6.7;1,1;mcl_skins_arrow.png^[transformFX;previous_page;]" + if cape_tab then + formspec = formspec .. + "image_button[4.5,0.7;1,1;mcl_skins_arrow.png^[transformFX;previous_page;]" + else + formspec = formspec .. + "image_button[4.5,6.7;1,1;mcl_skins_arrow.png^[transformFX;previous_page;]" + end end - + if page_num < page_count then - formspec = formspec .. - "image_button[9.8,6.7;1,1;mcl_skins_arrow.png;next_page;]" + if cape_tab then + formspec = formspec .. + "image_button[9.8,0.7;1,1;mcl_skins_arrow.png;next_page;]" + else + formspec = formspec .. + "image_button[9.8,6.7;1,1;mcl_skins_arrow.png;next_page;]" + end end - + if page_count > 1 then - formspec = formspec .. - "label[7.3,7.2;" .. page_num .. " / " .. page_count .. "]" + if cape_tab then + formspec = formspec .. + "label[7.3,1.2;" .. page_num .. " / " .. page_count .. "]" + else + formspec = formspec .. + "label[7.3,7.2;" .. page_num .. " / " .. page_count .. "]" + end end local player_name = player:get_player_name() @@ -456,7 +538,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) formspec_data.form_send_job:cancel() formspec_data.form_send_job = nil end - + if fields.quit then mcl_skins.save(player) return true @@ -472,18 +554,35 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) mcl_skins.update_player_skin(player) mcl_skins.show_formspec(player, active_tab, page_num) return true + elseif fields.nocape then + mcl_skins.player_skins[player].cape = "blank.png" + mcl_skins.update_player_skin(player) + mcl_armor.update(player) --update elytra cape + mcl_skins.show_formspec(player, active_tab, page_num) + return true + elseif active_tab == "cape" then + for cape_index = ((page_num - 1) * 5) + 1, math.min(#mcl_skins.cape, page_num * 5) do + local cape = mcl_skins.cape[cape_index] + if fields[cape.name] then + mcl_skins.player_skins[player].cape = cape.mask -- the actual overlay image + mcl_skins.update_player_skin(player) + mcl_armor.update(player) --update elytra cape + mcl_skins.show_formspec(player, active_tab, page_num) + return true + end + end end - + for i, tab in pairs(mcl_skins.tab_names) do if fields[tab] then mcl_skins.show_formspec(player, tab, 1) return true end end - + local skin = mcl_skins.player_skins[player] if not skin then return true end - + if fields.next_page then page_num = page_num + 1 mcl_skins.show_formspec(player, active_tab, page_num) @@ -493,7 +592,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) mcl_skins.show_formspec(player, active_tab, page_num) return true end - + if active_tab == "arm" then if fields.thick_arms then skin.slim_arms = false @@ -504,7 +603,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) mcl_skins.show_formspec(player, active_tab, page_num) return true end - + if skin[active_tab .. "_color"] and ( fields.red and fields.red:find("^CHG") or @@ -518,7 +617,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) red = tonumber(red) or 0 green = tonumber(green) or 0 blue = tonumber(blue) or 0 - + local color = 0xff000000 + red * 0x10000 + green * 0x100 + blue if color >= 0 and color <= 0xffffffff then -- We delay resedning the form because otherwise it will break dragging scrollbars @@ -533,7 +632,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) return true end end - + local field for f, value in pairs(fields) do if value == "" then @@ -541,7 +640,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) break end end - + if field and active_tab == "skin" then local index = tonumber(field) index = index and math.floor(index) or 0 @@ -556,7 +655,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end return true end - + -- See if field is a texture if field and mcl_skins[active_tab] and @@ -567,7 +666,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) mcl_skins.show_formspec(player, active_tab, page_num) return true end - + -- See if field is a color local number = tonumber(field) if number and skin[active_tab .. "_color"] then @@ -591,7 +690,7 @@ local function init() local json, error = minetest.parse_json(data) assert(json, error) f:close() - + for _, item in pairs(json) do mcl_skins.register_item(item) end @@ -600,12 +699,14 @@ local function init() mcl_skins.template1.top_color = 0xff993535 mcl_skins.template1.bottom_color = 0xff644939 mcl_skins.template1.slim_arms = false - + mcl_skins.template1.cape = "blank.png" + mcl_skins.template2.base_color = mcl_skins.base_color[1] mcl_skins.template2.hair_color = 0xff715d57 mcl_skins.template2.top_color = 0xff346840 mcl_skins.template2.bottom_color = 0xff383532 mcl_skins.template2.slim_arms = true + mcl_skins.template2.cape = "blank.png" mcl_skins.register_simple_skin({ index = 0, @@ -619,3 +720,9 @@ local function init() end init() + +if not minetest.settings:get_bool("mcl_keepInventory", false) then + minetest.register_on_respawnplayer(function(player) + mcl_skins.update_player_skin(player) -- ensures players have their cape again after dying with an elytra + end) +end diff --git a/mods/PLAYER/mcl_skins/list.json b/mods/PLAYER/mcl_skins/list.json index dc7afbfe1..1c0b106e9 100644 --- a/mods/PLAYER/mcl_skins/list.json +++ b/mods/PLAYER/mcl_skins/list.json @@ -263,5 +263,29 @@ "mask": "mcl_skins_base_1_mask.png", "template1": true, "template2": true + }, + { + "type": "cape", + "name": "mtcape", + "mask": "mtcape_body.png", + "selector_func" : null + }, + { + "type": "cape", + "name": "slimecape", + "mask": "slimecape_body.png", + "selector_func" : null + }, + { + "type": "cape", + "name": "ghastcape", + "mask": "ghastcape_body.png", + "selector_func" : null + }, + { + "type": "cape", + "name": "mclcape", + "mask": "mclcape_body.png", + "selector_func" : null } ] 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 diff --git a/mods/PLAYER/mcl_skins/locale/template.txt b/mods/PLAYER/mcl_skins/locale/template.txt index c39d4066d..96160e2d8 100644 --- a/mods/PLAYER/mcl_skins/locale/template.txt +++ b/mods/PLAYER/mcl_skins/locale/template.txt @@ -11,4 +11,5 @@ Tops= Hairs= Headwears= Open skin configuration screen.= -Select= \ No newline at end of file +Select= +Capes= 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. 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 diff --git a/mods/PLAYER/mcl_sprint/mod.conf b/mods/PLAYER/mcl_sprint/mod.conf index 0d20f80a3..b8bc02698 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 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..3e45fee4e --- /dev/null +++ b/releasenotes/0_85-the_fire_and_stone_release.md @@ -0,0 +1,108 @@ +## 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 +* 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. + +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 +* 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 + +### 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 + diff --git a/releasenotes/0_86-the_another_look_release.md b/releasenotes/0_86-the_another_look_release.md new file mode 100644 index 000000000..330fbf97c --- /dev/null +++ b/releasenotes/0_86-the_another_look_release.md @@ -0,0 +1,50 @@ +## 0.86 – The Another Look release + +### Contributors +#### New contributors +* JoseDouglas26 +* Zasco + +### FOV API +Field of Vision control now goes through a new API using a modifier system, made by Michieal and Herowl. With these changes, sprint, bow drawing and spyglass should alter the FOV properly, as well as take into account the FOV set in Minetest settings. This also paves the way to more mechanics changing FOV in future updates. + +### Mob improvements +Shulker received an update by Bakawun (pulling some of the Mineclonia changes by cora). Animation usage got some fixes, and bullets are now slower but homing. Also it's fire rate is now variable. + +With the shulker update, other mobs (including those from mods) can now have homing bullets added with ease, as well as do custom things after each attack (like change the fire rate, which shulker now does). + +Slimes and Magma Cubes got rebalanced by Herowl, to make them work better with the player attack reach changes from the previous update (0.85 – Fire and Stone). + +Vexes and Evokers got some changes and fixes by Herowl to make them more manageable to fight while still being formidable enemies. + +### Shepherd functionality +A shepherd staff was added by Herowl, which allows you to lead your sheep without the risk of them eating the item you're luring them with. It can also serve as a weak weapon (to defend your sheep, of course). You can now collect sheep easier while travelling. Remember to take care of your sheep, also at night, and especially during the Christmastide. Speaking of Christmas, I've heard something changed about the moon. If you have trouble noticing that, maybe use the dedicated tools to take a closer look up. + +### Sunflower update +Sunflower now has a custom mesh by JoseDouglas26 (with minor tweaks from Herowl), which means it looks better and is oriented towards East properly. Thanks to the changes, it is also easier to make more mesh-based tall flowers in the future. + +### Animation updates +Animations of Stonecutter and Campfires were made more dynamic by Wbjitscool. + +### Mapgen settings +The setting disabling deepslate generation now works properly thanks to Zasco. + +### Translation updates +* Spanish by megustanlosfrijoles +* Brazilian Portuguese by JoseDouglas26 +* Syntax fixes in various translation-related files by megustanlosfrijoles + +### Crash fixes +* Villager trading UI crash by JoseDouglas26 +* Piston related crash by cora + +## 0.86.1 hotfix +* Implemented a fix to a graphical glitch regression introduced in release 0.86, which had been fixed but wasn't loaded into the tag. +* Added a workaround to enable mobile players to use bows, crossbows and spyglasses by using zoom key (they can't *hold* `place`). +(both fixes by Herowl) + +## 0.86.2 hotfix +* Implemented refactorization of player-related combat code by Eliy21. This fixes a critical bug which can cause players to become invulnerable indefinitely. +* Optimized some textures for size. +* Fixed XP orbs breaking randomly (by Herowl). +* Fixed a cryptic error message (by Herowl). diff --git a/settingtypes.txt b/settingtypes.txt index a78b33e3b..ac3399498 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -98,9 +98,16 @@ mcl_creative_dig_speed (Creative mode dig speed) float 0.2 # If enabled the hunger mechanic will be active mcl_enable_hunger (Hunger mechanic) bool true +# Enables hunger debug +mcl_hunger_debug (Hunger debug) bool false + # 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 + +# Eating delay while holding right-click +# Default: 1.61 s +mcl_eating_delay (Eating delay) float 1.61 0 [Mobs] # If enabled, mobs will spawn naturally. This does not affect diff --git a/textures/awards_ui_icon.png b/textures/awards_ui_icon.png index c8163008f..dbc532121 100644 Binary files a/textures/awards_ui_icon.png and b/textures/awards_ui_icon.png differ diff --git a/textures/crafting_formspec_arrow.png b/textures/crafting_formspec_arrow.png index 12b9c1970..2663c091d 100644 Binary files a/textures/crafting_formspec_arrow.png and b/textures/crafting_formspec_arrow.png differ diff --git a/textures/credits_bg.png b/textures/credits_bg.png index 280f29def..9ca12390b 100644 Binary files a/textures/credits_bg.png and b/textures/credits_bg.png differ diff --git a/textures/doc_basics_craft_groups_1.png b/textures/doc_basics_craft_groups_1.png index 4093c50b1..d7fe37d0d 100644 Binary files a/textures/doc_basics_craft_groups_1.png and b/textures/doc_basics_craft_groups_1.png differ diff --git a/textures/doc_basics_craft_groups_2.png b/textures/doc_basics_craft_groups_2.png index a70bdde42..292eb8259 100644 Binary files a/textures/doc_basics_craft_groups_2.png and b/textures/doc_basics_craft_groups_2.png differ diff --git a/textures/doc_basics_craft_groups_3.png b/textures/doc_basics_craft_groups_3.png index 60a568be0..d912a344e 100644 Binary files a/textures/doc_basics_craft_groups_3.png and b/textures/doc_basics_craft_groups_3.png differ diff --git a/textures/doc_basics_gameplay_moontest.png b/textures/doc_basics_gameplay_moontest.png index 82350d8cc..bbface652 100644 Binary files a/textures/doc_basics_gameplay_moontest.png and b/textures/doc_basics_gameplay_moontest.png differ diff --git a/textures/doc_basics_gameplay_mtg_2.png b/textures/doc_basics_gameplay_mtg_2.png index 68c8a5063..803e66af3 100644 Binary files a/textures/doc_basics_gameplay_mtg_2.png and b/textures/doc_basics_gameplay_mtg_2.png differ diff --git a/textures/doc_basics_hotbar.png b/textures/doc_basics_hotbar.png index 6a8f82ffc..810b841f7 100644 Binary files a/textures/doc_basics_hotbar.png and b/textures/doc_basics_hotbar.png differ diff --git a/textures/doc_basics_hotbar_relations.png b/textures/doc_basics_hotbar_relations.png index b63943880..a5f0fb71a 100644 Binary files a/textures/doc_basics_hotbar_relations.png and b/textures/doc_basics_hotbar_relations.png differ diff --git a/textures/doc_basics_items_dropped.png b/textures/doc_basics_items_dropped.png index 2d4b92450..488f7c279 100644 Binary files a/textures/doc_basics_items_dropped.png and b/textures/doc_basics_items_dropped.png differ diff --git a/textures/doc_basics_light_test.png b/textures/doc_basics_light_test.png index 9b4a24f5a..8a8dd14a0 100644 Binary files a/textures/doc_basics_light_test.png and b/textures/doc_basics_light_test.png differ diff --git a/textures/doc_basics_light_torch.png b/textures/doc_basics_light_torch.png index 0fc840595..4296d97a9 100644 Binary files a/textures/doc_basics_light_torch.png and b/textures/doc_basics_light_torch.png differ diff --git a/textures/doc_basics_liquids_nonrenewable.png b/textures/doc_basics_liquids_nonrenewable.png index f38bbb316..c345b05b1 100644 Binary files a/textures/doc_basics_liquids_nonrenewable.png and b/textures/doc_basics_liquids_nonrenewable.png differ diff --git a/textures/doc_basics_liquids_renewable_1.png b/textures/doc_basics_liquids_renewable_1.png index 67691081e..99f99f914 100644 Binary files a/textures/doc_basics_liquids_renewable_1.png and b/textures/doc_basics_liquids_renewable_1.png differ diff --git a/textures/doc_basics_liquids_renewable_2.png b/textures/doc_basics_liquids_renewable_2.png index 63a5cea1b..d8c252bba 100644 Binary files a/textures/doc_basics_liquids_renewable_2.png and b/textures/doc_basics_liquids_renewable_2.png differ diff --git a/textures/doc_basics_minimap_map.png b/textures/doc_basics_minimap_map.png index 63f4a9bac..779211a06 100644 Binary files a/textures/doc_basics_minimap_map.png and b/textures/doc_basics_minimap_map.png differ diff --git a/textures/doc_basics_minimap_round.png b/textures/doc_basics_minimap_round.png index 4f6753dac..0e09ba1fb 100644 Binary files a/textures/doc_basics_minimap_round.png and b/textures/doc_basics_minimap_round.png differ diff --git a/textures/doc_basics_players_lott.png b/textures/doc_basics_players_lott.png index 13419b8e8..509c3f3ff 100644 Binary files a/textures/doc_basics_players_lott.png and b/textures/doc_basics_players_lott.png differ diff --git a/textures/doc_basics_players_sam.png b/textures/doc_basics_players_sam.png index 4281ca588..4a1350bcf 100644 Binary files a/textures/doc_basics_players_sam.png and b/textures/doc_basics_players_sam.png differ diff --git a/textures/doc_basics_pointing.png b/textures/doc_basics_pointing.png index dda1580f1..da30c11ff 100644 Binary files a/textures/doc_basics_pointing.png and b/textures/doc_basics_pointing.png differ diff --git a/textures/doc_basics_sneak.png b/textures/doc_basics_sneak.png index bcde6ce52..8f32a8297 100644 Binary files a/textures/doc_basics_sneak.png and b/textures/doc_basics_sneak.png differ diff --git a/textures/ghastcape.png b/textures/ghastcape.png new file mode 100644 index 000000000..6f6df86c3 Binary files /dev/null and b/textures/ghastcape.png differ diff --git a/textures/ghastcape_body.png b/textures/ghastcape_body.png new file mode 100644 index 000000000..51bb46478 Binary files /dev/null and b/textures/ghastcape_body.png differ diff --git a/textures/ghastcape_elytra.png b/textures/ghastcape_elytra.png new file mode 100644 index 000000000..d05fe46a5 Binary files /dev/null and b/textures/ghastcape_elytra.png differ diff --git a/textures/mcl_boats_cherry_boat.png b/textures/mcl_boats_cherry_boat.png index 0929c1455..bbece2201 100644 Binary files a/textures/mcl_boats_cherry_boat.png and b/textures/mcl_boats_cherry_boat.png differ diff --git a/textures/mcl_boats_cherry_chest_boat.png b/textures/mcl_boats_cherry_chest_boat.png index e45c2ac38..b38bb0af0 100644 Binary files a/textures/mcl_boats_cherry_chest_boat.png and b/textures/mcl_boats_cherry_chest_boat.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_cyan.png b/textures/mcl_colorblocks_glazed_terracotta_cyan.png index 6289015a6..e2c832bc0 100644 Binary files a/textures/mcl_colorblocks_glazed_terracotta_cyan.png and b/textures/mcl_colorblocks_glazed_terracotta_cyan.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_magenta.png b/textures/mcl_colorblocks_glazed_terracotta_magenta.png index 0673eab67..9f193f201 100644 Binary files a/textures/mcl_colorblocks_glazed_terracotta_magenta.png and b/textures/mcl_colorblocks_glazed_terracotta_magenta.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_side_black.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_black.png new file mode 100644 index 000000000..452bc39bd Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_black.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_side_blue.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_blue.png new file mode 100644 index 000000000..9de2e2200 Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_blue.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_side_brown.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_brown.png new file mode 100644 index 000000000..d4df11cf9 Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_brown.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_side_cyan.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_cyan.png new file mode 100644 index 000000000..47f8bb367 Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_cyan.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_side_green.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_green.png new file mode 100644 index 000000000..232a77416 Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_green.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_side_grey.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_grey.png new file mode 100644 index 000000000..8dcf1f987 Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_grey.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_side_light_blue.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_light_blue.png new file mode 100644 index 000000000..eff4344e0 Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_light_blue.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_side_lime.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_lime.png new file mode 100644 index 000000000..d4bab81c2 Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_lime.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_side_magenta.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_magenta.png new file mode 100644 index 000000000..4c9228120 Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_magenta.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_side_orange.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_orange.png new file mode 100644 index 000000000..4289f0856 Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_orange.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_side_pink.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_pink.png new file mode 100644 index 000000000..8e6f6cfa9 Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_pink.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_side_purple.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_purple.png new file mode 100644 index 000000000..3af4b4adc Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_purple.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_side_red.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_red.png new file mode 100644 index 000000000..b2b39aa0d Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_red.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_side_silver.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_silver.png new file mode 100644 index 000000000..c10b29a28 Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_silver.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_side_white.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_white.png new file mode 100644 index 000000000..92247711e Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_white.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_side_yellow.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_yellow.png new file mode 100644 index 000000000..a43acb01d Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_side_yellow.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_top_black.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_black.png new file mode 100644 index 000000000..9dbc97d5f Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_black.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_top_blue.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_blue.png new file mode 100644 index 000000000..230c1ab97 Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_blue.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_top_brown.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_brown.png new file mode 100644 index 000000000..586be7499 Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_brown.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_top_cyan.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_cyan.png new file mode 100644 index 000000000..1da77f75f Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_cyan.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_top_green.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_green.png new file mode 100644 index 000000000..bd88f8192 Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_green.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_top_grey.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_grey.png new file mode 100644 index 000000000..4a505edd8 Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_grey.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_top_light_blue.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_light_blue.png new file mode 100644 index 000000000..9fa80bc27 Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_light_blue.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_top_lime.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_lime.png new file mode 100644 index 000000000..fde7b2b79 Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_lime.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_top_magenta.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_magenta.png new file mode 100644 index 000000000..9e42f9169 Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_magenta.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_top_orange.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_orange.png new file mode 100644 index 000000000..12c78b38c Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_orange.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_top_pink.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_pink.png new file mode 100644 index 000000000..792f5c6b2 Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_pink.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_top_purple.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_purple.png new file mode 100644 index 000000000..be323dc85 Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_purple.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_top_red.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_red.png new file mode 100644 index 000000000..8ef07d159 Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_red.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_top_silver.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_silver.png new file mode 100644 index 000000000..24814be79 Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_silver.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_top_white.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_white.png new file mode 100644 index 000000000..e86c4cd99 Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_white.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_pillar_top_yellow.png b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_yellow.png new file mode 100644 index 000000000..f1311ef2b Binary files /dev/null and b/textures/mcl_colorblocks_glazed_terracotta_pillar_top_yellow.png differ diff --git a/textures/mcl_colorblocks_glazed_terracotta_silver.png b/textures/mcl_colorblocks_glazed_terracotta_silver.png index c634af477..4dabc5cfe 100644 Binary files a/textures/mcl_colorblocks_glazed_terracotta_silver.png and b/textures/mcl_colorblocks_glazed_terracotta_silver.png differ diff --git a/textures/mcl_hollow_logs_acacia.png b/textures/mcl_hollow_logs_acacia.png new file mode 100644 index 000000000..7b9a1f578 Binary files /dev/null and b/textures/mcl_hollow_logs_acacia.png differ diff --git a/textures/mcl_hollow_logs_birch.png b/textures/mcl_hollow_logs_birch.png new file mode 100644 index 000000000..f29047577 Binary files /dev/null and b/textures/mcl_hollow_logs_birch.png differ diff --git a/textures/mcl_hollow_logs_cherry.png b/textures/mcl_hollow_logs_cherry.png new file mode 100644 index 000000000..1a4328311 Binary files /dev/null and b/textures/mcl_hollow_logs_cherry.png differ diff --git a/textures/mcl_hollow_logs_dark_oak.png b/textures/mcl_hollow_logs_dark_oak.png new file mode 100644 index 000000000..b52bcce27 Binary files /dev/null and b/textures/mcl_hollow_logs_dark_oak.png differ diff --git a/textures/mcl_hollow_logs_jungle.png b/textures/mcl_hollow_logs_jungle.png new file mode 100644 index 000000000..51fb3dca7 Binary files /dev/null and b/textures/mcl_hollow_logs_jungle.png differ diff --git a/textures/mcl_hollow_logs_mangrove.png b/textures/mcl_hollow_logs_mangrove.png new file mode 100644 index 000000000..86c51b709 Binary files /dev/null and b/textures/mcl_hollow_logs_mangrove.png differ diff --git a/textures/mcl_hollow_logs_oak.png b/textures/mcl_hollow_logs_oak.png new file mode 100644 index 000000000..4dc0edf8d Binary files /dev/null and b/textures/mcl_hollow_logs_oak.png differ diff --git a/textures/mcl_hollow_logs_spruce.png b/textures/mcl_hollow_logs_spruce.png new file mode 100644 index 000000000..be18c3639 Binary files /dev/null and b/textures/mcl_hollow_logs_spruce.png differ diff --git a/textures/mcl_hollow_logs_stripped_acacia.png b/textures/mcl_hollow_logs_stripped_acacia.png new file mode 100644 index 000000000..f14372d5f Binary files /dev/null and b/textures/mcl_hollow_logs_stripped_acacia.png differ diff --git a/textures/mcl_hollow_logs_stripped_birch.png b/textures/mcl_hollow_logs_stripped_birch.png new file mode 100644 index 000000000..c0b8851d3 Binary files /dev/null and b/textures/mcl_hollow_logs_stripped_birch.png differ diff --git a/textures/mcl_hollow_logs_stripped_cherry.png b/textures/mcl_hollow_logs_stripped_cherry.png new file mode 100644 index 000000000..dc5be85b6 Binary files /dev/null and b/textures/mcl_hollow_logs_stripped_cherry.png differ diff --git a/textures/mcl_hollow_logs_stripped_dark_oak.png b/textures/mcl_hollow_logs_stripped_dark_oak.png new file mode 100644 index 000000000..99cd7ca97 Binary files /dev/null and b/textures/mcl_hollow_logs_stripped_dark_oak.png differ diff --git a/textures/mcl_hollow_logs_stripped_jungle.png b/textures/mcl_hollow_logs_stripped_jungle.png new file mode 100644 index 000000000..e8de34c5e Binary files /dev/null and b/textures/mcl_hollow_logs_stripped_jungle.png differ diff --git a/textures/mcl_hollow_logs_stripped_mangrove.png b/textures/mcl_hollow_logs_stripped_mangrove.png new file mode 100644 index 000000000..55929c957 Binary files /dev/null and b/textures/mcl_hollow_logs_stripped_mangrove.png differ diff --git a/textures/mcl_hollow_logs_stripped_oak.png b/textures/mcl_hollow_logs_stripped_oak.png new file mode 100644 index 000000000..6757e0e24 Binary files /dev/null and b/textures/mcl_hollow_logs_stripped_oak.png differ diff --git a/textures/mcl_hollow_logs_stripped_spruce.png b/textures/mcl_hollow_logs_stripped_spruce.png new file mode 100644 index 000000000..7502872f4 Binary files /dev/null and b/textures/mcl_hollow_logs_stripped_spruce.png differ diff --git a/textures/mcl_inventory_background9.png b/textures/mcl_inventory_background9.png index d774fd319..171b78575 100644 Binary files a/textures/mcl_inventory_background9.png and b/textures/mcl_inventory_background9.png differ diff --git a/textures/mcl_lightstone_mask.png b/textures/mcl_lightstone_mask.png new file mode 100644 index 000000000..caf35b44d Binary files /dev/null and b/textures/mcl_lightstone_mask.png differ diff --git a/textures/mcl_moon_special.png b/textures/mcl_moon_special.png new file mode 100644 index 000000000..2f742e966 Binary files /dev/null and b/textures/mcl_moon_special.png differ diff --git a/textures/mcl_skins_icons.png b/textures/mcl_skins_icons.png index f0e7e93d8..a67fc58c1 100644 Binary files a/textures/mcl_skins_icons.png and b/textures/mcl_skins_icons.png differ diff --git a/textures/mcl_smithing_table_inventory_trim_bg.png b/textures/mcl_smithing_table_inventory_trim_bg.png index 1b01c9a09..da1e8178e 100644 Binary files a/textures/mcl_smithing_table_inventory_trim_bg.png and b/textures/mcl_smithing_table_inventory_trim_bg.png differ diff --git a/textures/mcl_tool_shepherd_staff.png b/textures/mcl_tool_shepherd_staff.png new file mode 100644 index 000000000..1345a4c49 Binary files /dev/null and b/textures/mcl_tool_shepherd_staff.png differ diff --git a/textures/mclcape.png b/textures/mclcape.png new file mode 100644 index 000000000..0e8a4b9a5 Binary files /dev/null and b/textures/mclcape.png differ diff --git a/textures/mclcape_body.png b/textures/mclcape_body.png new file mode 100644 index 000000000..9332de221 Binary files /dev/null and b/textures/mclcape_body.png differ diff --git a/textures/mclcape_elytra.png b/textures/mclcape_elytra.png new file mode 100644 index 000000000..405501456 Binary files /dev/null and b/textures/mclcape_elytra.png differ diff --git a/textures/mobs_mc_llama_gray.png b/textures/mobs_mc_llama_gray.png index a4d2a7685..f590198f1 100644 Binary files a/textures/mobs_mc_llama_gray.png and b/textures/mobs_mc_llama_gray.png differ diff --git a/textures/mobs_mc_llama_white.png b/textures/mobs_mc_llama_white.png index 6eae4b41d..bab3a8cef 100644 Binary files a/textures/mobs_mc_llama_white.png and b/textures/mobs_mc_llama_white.png differ diff --git a/textures/mtcape.png b/textures/mtcape.png new file mode 100644 index 000000000..119e12f55 Binary files /dev/null and b/textures/mtcape.png differ diff --git a/textures/mtcape_body.png b/textures/mtcape_body.png new file mode 100644 index 000000000..3e36d3971 Binary files /dev/null and b/textures/mtcape_body.png differ diff --git a/textures/mtcape_elytra.png b/textures/mtcape_elytra.png new file mode 100644 index 000000000..441e22ec1 Binary files /dev/null and b/textures/mtcape_elytra.png differ diff --git a/textures/silence_armor_trim_smithing_template.png b/textures/silence_armor_trim_smithing_template.png index 77e72d074..f2e26bd5d 100644 Binary files a/textures/silence_armor_trim_smithing_template.png and b/textures/silence_armor_trim_smithing_template.png differ diff --git a/textures/silence_boots.png b/textures/silence_boots.png index 760203a4d..ce751e8db 100644 Binary files a/textures/silence_boots.png and b/textures/silence_boots.png differ diff --git a/textures/silence_chestplate.png b/textures/silence_chestplate.png index 7742dfe96..b10986e68 100644 Binary files a/textures/silence_chestplate.png and b/textures/silence_chestplate.png differ diff --git a/textures/silence_helmet.png b/textures/silence_helmet.png index ad2de6ab0..1adfb6aff 100644 Binary files a/textures/silence_helmet.png and b/textures/silence_helmet.png differ diff --git a/textures/slimecape.png b/textures/slimecape.png new file mode 100644 index 000000000..d6492723d Binary files /dev/null and b/textures/slimecape.png differ diff --git a/textures/slimecape_body.png b/textures/slimecape_body.png new file mode 100644 index 000000000..9b89d6a6c Binary files /dev/null and b/textures/slimecape_body.png differ diff --git a/textures/slimecape_elytra.png b/textures/slimecape_elytra.png new file mode 100644 index 000000000..f3b979a74 Binary files /dev/null and b/textures/slimecape_elytra.png differ diff --git a/textures/wayfinder_armor_trim_smithing_template.png b/textures/wayfinder_armor_trim_smithing_template.png index 23fd30a87..40cc6781e 100644 Binary files a/textures/wayfinder_armor_trim_smithing_template.png and b/textures/wayfinder_armor_trim_smithing_template.png differ diff --git a/textures/wayfinder_boots.png b/textures/wayfinder_boots.png index 5e8717ccb..219b88541 100644 Binary files a/textures/wayfinder_boots.png and b/textures/wayfinder_boots.png differ diff --git a/textures/wayfinder_chestplate.png b/textures/wayfinder_chestplate.png index 6f5f5f2ea..edc41ceb2 100644 Binary files a/textures/wayfinder_chestplate.png and b/textures/wayfinder_chestplate.png differ diff --git a/textures/wayfinder_helmet.png b/textures/wayfinder_helmet.png index d2e7fe765..273becbb2 100644 Binary files a/textures/wayfinder_helmet.png and b/textures/wayfinder_helmet.png differ diff --git a/textures/wayfinder_leggings.png b/textures/wayfinder_leggings.png index 48da69e7b..17ef46484 100644 Binary files a/textures/wayfinder_leggings.png and b/textures/wayfinder_leggings.png differ diff --git a/tools/Conversion_Table.csv b/tools/Conversion_Table.csv index 72e8ac433..f90519255 100644 --- a/tools/Conversion_Table.csv +++ b/tools/Conversion_Table.csv @@ -1,974 +1,1412 @@ -Source path,Source file,Target path,Target file,xs,ys,xl,yl,xt,yt,Blacklisted? -/assets/minecraft/textures/particle,particles.png,/mods/CORE/mcl_particles/textures,mcl_particles_bubble.png,0,16,8,8,0,0,y -/assets/minecraft/textures/gui,icons.png,/mods/HUD/mcl_hbarmor/textures,hbarmor_icon.png,34,9,9,9,0,0,y -/assets/minecraft/textures/gui,icons.png,/mods/HUD/mcl_hbarmor/textures,hbarmor_bgicon.png,16,9,9,9,0,0,y -/assets/minecraft/textures/gui,icons.png,/mods/HUD/hudbars/textures,hudbars_icon_health.png,52,0,9,9,0,0,y -/assets/minecraft/textures/gui,icons.png,/mods/HUD/hudbars/textures,hudbars_bgicon_health.png,16,0,9,9,0,0,y -/assets/minecraft/textures/gui,icons.png,/mods/HUD/hudbars/textures,hudbars_icon_breath.png,16,18,9,9,0,0,y -/assets/minecraft/textures/gui,icons.png,/mods/HUD/mcl_base_textures/textures,heart.png,52,0,9,9,0,0,y -/assets/minecraft/textures/gui,icons.png,/mods/HUD/mcl_base_textures/textures,bubble.png,16,18,9,9,0,0,y -/assets/minecraft/textures/items,bucket_empty.png,/mods/ITEMS/mcl_buckets/textures,mcl_buckets_bucket.png,,,,,,, -/assets/minecraft/textures/items,bucket_water.png,/mods/ITEMS/mcl_buckets/textures,mcl_buckets_water_bucket.png,,,,,,, -/assets/minecraft/textures/items,bucket_water.png,/mods/ITEMS/mcl_buckets/textures,mcl_buckets_river_water_bucket.png,,,,,,, -/assets/minecraft/textures/items,bucket_lava.png,/mods/ITEMS/mcl_buckets/textures,mcl_buckets_lava_bucket.png,,,,,,, -/assets/minecraft/textures/items,item_frame.png,/mods/ITEMS/mcl_itemframes/textures,mcl_itemframes_item_frame.png,,,,,,, -/assets/minecraft/textures/blocks,anvil_base.png,/mods/ITEMS/mcl_anvils/textures,mcl_anvils_anvil_base.png,,,,,,, -/assets/minecraft/textures/blocks,anvil_top_damaged_0.png,/mods/ITEMS/mcl_anvils/textures,mcl_anvils_anvil_top_damaged_0.png,,,,,,, -/assets/minecraft/textures/blocks,anvil_top_damaged_1.png,/mods/ITEMS/mcl_anvils/textures,mcl_anvils_anvil_top_damaged_1.png,,,,,,, -/assets/minecraft/textures/blocks,anvil_top_damaged_2.png,/mods/ITEMS/mcl_anvils/textures,mcl_anvils_anvil_top_damaged_2.png,,,,,,, -/assets/minecraft/textures/blocks,anvil_base.png,/mods/ITEMS/mcl_anvils/textures,mcl_anvils_anvil_side.png,,,,,,, -/assets/minecraft/textures/blocks,anvil_side.png,/mods/ITEMS/mcl_anvils/textures,mcl_anvils_anvil_side.png,,,,,,, -/assets/minecraft/textures/items,name_tag.png,/mods/ENTITIES/mcl_mobs/textures,mobs_nametag.png,,,,,,, -/assets/minecraft/textures/gui,icons.png,/mods/ENTITIES/mobs/textures,mobs_blood.png,16,0,9,9,0,0,y -/assets/minecraft/textures/blocks,itemframe_background.png,/mods/ITEMS/mcl_itemframes/textures,mcl_itemframes_itemframe_background.png,,,,,,, -/assets/minecraft/textures/items,bed.png,/mods/ITEMS/mcl_beds/textures,mcl_beds_bed_red.png,,,,,,, -/assets/minecraft/textures/items,acacia_boat.png,/mods/ENTITIES/mcl_boats/textures,mcl_boats_acacia_boat.png,,,,,,, -/assets/minecraft/textures/items,oak_boat.png,/mods/ENTITIES/mcl_boats/textures,mcl_boats_oak_boat.png,,,,,,, -/assets/minecraft/textures/items,spruce_boat.png,/mods/ENTITIES/mcl_boats/textures,mcl_boats_spruce_boat.png,,,,,,, -/assets/minecraft/textures/items,dark_oak_boat.png,/mods/ENTITIES/mcl_boats/textures,mcl_boats_dark_oak_boat.png,,,,,,, -/assets/minecraft/textures/items,jungle_boat.png,/mods/ENTITIES/mcl_boats/textures,mcl_boats_jungle_boat.png,,,,,,, -/assets/minecraft/textures/items,birch_boat.png,/mods/ENTITIES/mcl_boats/textures,mcl_boats_birch_boat.png,,,,,,, -/assets/minecraft/textures/entity/boat,boat_acacia.png,/mods/ENTITIES/mcl_boats/textures,mcl_boats_texture_acacia_boat.png,,,,,,, -/assets/minecraft/textures/entity/boat,boat_oak.png,/mods/ENTITIES/mcl_boats/textures,mcl_boats_texture_oak_boat.png,,,,,,, -/assets/minecraft/textures/entity/boat,boat_darkoak.png,/mods/ENTITIES/mcl_boats/textures,mcl_boats_texture_dark_oak_boat.png,,,,,,, -/assets/minecraft/textures/entity/boat,boat_spruce.png,/mods/ENTITIES/mcl_boats/textures,mcl_boats_texture_spruce_boat.png,,,,,,, -/assets/minecraft/textures/entity/boat,boat_birch.png,/mods/ENTITIES/mcl_boats/textures,mcl_boats_texture_birch_boat.png,,,,,,, -/assets/minecraft/textures/entity/boat,boat_jungle.png,/mods/ENTITIES/mcl_boats/textures,mcl_boats_texture_jungle_boat.png,,,,,,, -/assets/minecraft/textures/items,book_normal.png,/mods/ITEMS/mcl_books/textures,default_book.png,,,,,,, -/assets/minecraft/textures/blocks,bookshelf.png,/mods/ITEMS/mcl_books/textures,default_bookshelf.png,,,,,,, -/assets/minecraft/textures/blocks,planks_oak.png,/mods/ITEMS/mcl_books/textures,mcl_books_bookshelf_top.png,,,,,,, -/assets/minecraft/textures/blocks,bookshelf_top.png,/mods/ITEMS/mcl_books/textures,mcl_books_bookshelf_top.png,,,,,,, -/assets/minecraft/textures/items,book_writable.png,/mods/ITEMS/mcl_books/textures,mcl_books_book_writable.png,,,,,,, -/assets/minecraft/textures/items,book_written.png,/mods/ITEMS/mcl_books/textures,mcl_books_book_written.png,,,,,,, -/assets/minecraft/textures/items,cake.png,/mods/ITEMS/mcl_cake/textures,cake.png,,,,,,, -/assets/minecraft/textures/blocks,cake_bottom.png,/mods/ITEMS/mcl_cake/textures,cake_bottom.png,,,,,,, -/assets/minecraft/textures/blocks,cake_top.png,/mods/ITEMS/mcl_cake/textures,cake_top.png,,,,,,, -/assets/minecraft/textures/blocks,cake_side.png,/mods/ITEMS/mcl_cake/textures,cake_side.png,,,,,,, -/assets/minecraft/textures/blocks,cake_inner.png,/mods/ITEMS/mcl_cake/textures,cake_inner.png,,,,,,, -/assets/minecraft/textures/items,cauldron.png,/mods/ITEMS/mcl_cauldrons/textures,mcl_cauldrons_cauldron.png,,,,,,, -/assets/minecraft/textures/blocks,cauldron_bottom.png,/mods/ITEMS/mcl_cauldrons/textures,mcl_cauldrons_cauldron_bottom.png,,,,,,, -/assets/minecraft/textures/blocks,cauldron_top.png,/mods/ITEMS/mcl_cauldrons/textures,mcl_cauldrons_cauldron_top.png,,,,,,, -/assets/minecraft/textures/blocks,cauldron_side.png,/mods/ITEMS/mcl_cauldrons/textures,mcl_cauldrons_cauldron_side.png,,,,,,, -/assets/minecraft/textures/blocks,cauldron_inner.png,/mods/ITEMS/mcl_cauldrons/textures,mcl_cauldrons_cauldron_inner.png,,,,,,, -/assets/minecraft/textures/blocks,cocoa_stage_0.png,/mods/ITEMS/mcl_cocoas/textures,mcl_cocoas_cocoa_stage_0.png,,,,,,,y -/assets/minecraft/textures/blocks,cocoa_stage_1.png,/mods/ITEMS/mcl_cocoas/textures,mcl_cocoas_cocoa_stage_1.png,,,,,,,y -/assets/minecraft/textures/blocks,cocoa_stage_2.png,/mods/ITEMS/mcl_cocoas/textures,mcl_cocoas_cocoa_stage_2.png,,,,,,,y -/assets/minecraft/textures/blocks,hardened_clay.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay.png,,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_black.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_black.png,,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_blue.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_blue.png,,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_brown.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_brown.png,,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_cyan.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_cyan.png,,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_gray.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_grey.png,,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_green.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_green.png,,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_light_blue.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_light_blue.png,,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_lime.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_lime.png,,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_magenta.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_magenta.png,,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_orange.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_orange.png,,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_pink.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_pink.png,,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_purple.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_purple.png,,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_red.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_red.png,,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_silver.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_silver.png,,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_white.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_white.png,,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_yellow.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_yellow.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_black.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_black.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_blue.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_blue.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_brown.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_brown.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_cyan.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_cyan.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_gray.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_grey.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_green.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_green.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_light_blue.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_light_blue.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_lime.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_lime.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_magenta.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_magenta.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_orange.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_orange.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_pink.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_pink.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_purple.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_purple.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_red.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_red.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_silver.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_silver.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_white.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_white.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_yellow.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_yellow.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_black.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_black.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_blue.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_blue.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_brown.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_brown.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_cyan.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_cyan.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_gray.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_grey.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_green.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_green.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_light_blue.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_light_blue.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_lime.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_lime.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_magenta.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_magenta.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_orange.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_orange.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_pink.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_pink.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_purple.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_purple.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_red.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_red.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_silver.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_silver.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_white.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_white.png,,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_yellow.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_yellow.png,,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_black.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_black.png,,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_blue.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_blue.png,,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_brown.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_brown.png,,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_cyan.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_cyan.png,,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_gray.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_grey.png,,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_green.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_green.png,,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_light_blue.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_light_blue.png,,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_lime.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_lime.png,,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_magenta.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_magenta.png,,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_orange.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_orange.png,,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_pink.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_pink.png,,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_purple.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_purple.png,,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_red.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_red.png,,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_silver.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_silver.png,,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_white.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_white.png,,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_yellow.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_yellow.png,,,,,,, -/assets/minecraft/textures/blocks,sapling_oak.png,/mods/ITEMS/mcl_core/textures,default_sapling.png,,,,,,, -/assets/minecraft/textures/blocks,sapling_acacia.png,/mods/ITEMS/mcl_core/textures,default_acacia_sapling.png,,,,,,, -/assets/minecraft/textures/blocks,sapling_spruce.png,/mods/ITEMS/mcl_core/textures,mcl_core_sapling_spruce.png,,,,,,, -/assets/minecraft/textures/blocks,sapling_jungle.png,/mods/ITEMS/mcl_core/textures,default_junglesapling.png,,,,,,, -/assets/minecraft/textures/blocks,sapling_roofed_oak.png,/mods/ITEMS/mcl_core/textures,mcl_core_sapling_big_oak.png,,,,,,, -/assets/minecraft/textures/blocks,sapling_birch.png,/mods/ITEMS/mcl_core/textures,mcl_core_sapling_birch.png,,,,,,, -/assets/minecraft/textures/items,apple.png,/mods/ITEMS/mcl_core/textures,default_apple.png,,,,,,, -/assets/minecraft/textures/items,apple_golden.png,/mods/ITEMS/mcl_core/textures,mcl_core_apple_golden.png,,,,,,, -/assets/minecraft/textures/blocks,brick.png,/mods/ITEMS/mcl_core/textures,default_brick.png,,,,,,, -/assets/minecraft/textures/blocks,cactus_side.png,/mods/ITEMS/mcl_core/textures,mcl_core_cactus_side.png,,,,,,, -/assets/minecraft/textures/blocks,cactus_top.png,/mods/ITEMS/mcl_core/textures,mcl_core_cactus_top.png,,,,,,, -/assets/minecraft/textures/blocks,cactus_bottom.png,/mods/ITEMS/mcl_core/textures,mcl_core_cactus_bottom.png,,,,,,, -/assets/minecraft/textures/items,brick.png,/mods/ITEMS/mcl_core/textures,default_clay_brick.png,,,,,,, -/assets/minecraft/textures/items,clay_ball.png,/mods/ITEMS/mcl_core/textures,default_clay_lump.png,,,,,,, -/assets/minecraft/textures/blocks,clay.png,/mods/ITEMS/mcl_core/textures,default_clay.png,,,,,,, -/assets/minecraft/textures/blocks,coal_block.png,/mods/ITEMS/mcl_core/textures,default_coal_block.png,,,,,,, -/assets/minecraft/textures/items,coal.png,/mods/ITEMS/mcl_core/textures,default_coal_lump.png,,,,,,, -/assets/minecraft/textures/blocks,cobblestone.png,/mods/ITEMS/mcl_core/textures,default_cobble.png,,,,,,, -/assets/minecraft/textures/blocks,diamond_block.png,/mods/ITEMS/mcl_core/textures,default_diamond_block.png,,,,,,, -/assets/minecraft/textures/items,diamond.png,/mods/ITEMS/mcl_core/textures,default_diamond.png,,,,,,, -/assets/minecraft/textures/blocks,dirt.png,/mods/ITEMS/mcl_core/textures,default_dirt.png,,,,,,, -/assets/minecraft/textures/blocks,deadbush.png,/mods/ITEMS/mcl_core/textures,default_dry_shrub.png,,,,,,, -/assets/minecraft/textures/blocks,log_acacia.png,/mods/ITEMS/mcl_core/textures,default_acacia_tree.png,,,,,,, -/assets/minecraft/textures/blocks,log_acacia_top.png,/mods/ITEMS/mcl_core/textures,default_acacia_tree_top.png,,,,,,, -/assets/minecraft/textures/blocks,planks_acacia.png,/mods/ITEMS/mcl_core/textures,default_acacia_wood.png,,,,,,, -/assets/minecraft/textures/items,flint.png,/mods/ITEMS/mcl_core/textures,default_flint.png,,,,,,, -/assets/minecraft/textures/blocks,glass.png,/mods/ITEMS/mcl_core/textures,default_glass.png,,,,,,, -/assets/minecraft/textures/blocks,glass_black.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_black.png,,,,,,, -/assets/minecraft/textures/blocks,glass_blue.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_blue.png,,,,,,, -/assets/minecraft/textures/blocks,glass_brown.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_brown.png,,,,,,, -/assets/minecraft/textures/blocks,glass_cyan.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_cyan.png,,,,,,, -/assets/minecraft/textures/blocks,glass_gray.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_gray.png,,,,,,, -/assets/minecraft/textures/blocks,glass_green.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_green.png,,,,,,, -/assets/minecraft/textures/blocks,glass_light_blue.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_light_blue.png,,,,,,, -/assets/minecraft/textures/blocks,glass_lime.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_lime.png,,,,,,, -/assets/minecraft/textures/blocks,glass_magenta.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_magenta.png,,,,,,, -/assets/minecraft/textures/blocks,glass_orange.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_orange.png,,,,,,, -/assets/minecraft/textures/blocks,glass_pink.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_pink.png,,,,,,, -/assets/minecraft/textures/blocks,glass_purple.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_purple.png,,,,,,, -/assets/minecraft/textures/blocks,glass_red.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_red.png,,,,,,, -/assets/minecraft/textures/blocks,glass_silver.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_silver.png,,,,,,, -/assets/minecraft/textures/blocks,glass_white.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_white.png,,,,,,, -/assets/minecraft/textures/blocks,glass_yellow.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_yellow.png,,,,,,, -/assets/minecraft/textures/blocks,gold_block.png,/mods/ITEMS/mcl_core/textures,default_gold_block.png,,,,,,, -/assets/minecraft/textures/blocks,gold_block.png,/mods/ITEMS/mclx_stairs/textures,mcl_stairs_gold_block_slab.png,,,,,,, -/assets/minecraft/textures/items,gold_ingot.png,/mods/ITEMS/mcl_core/textures,default_gold_ingot.png,,,,,,, -/assets/minecraft/textures/blocks,grass_side.png,/mods/ITEMS/mcl_core/textures,default_grass_side.png,,,,,,, -/assets/minecraft/textures/blocks,gravel.png,/mods/ITEMS/mcl_core/textures,default_gravel.png,,,,,,, -/assets/minecraft/textures/blocks,ice.png,/mods/ITEMS/mcl_core/textures,default_ice.png,,,,,,, -/assets/minecraft/textures/blocks,log_jungle.png,/mods/ITEMS/mcl_core/textures,default_jungletree.png,,,,,,, -/assets/minecraft/textures/blocks,log_jungle_top.png,/mods/ITEMS/mcl_core/textures,default_jungletree_top.png,,,,,,, -/assets/minecraft/textures/blocks,planks_jungle.png,/mods/ITEMS/mcl_core/textures,default_junglewood.png,,,,,,, -/assets/minecraft/textures/blocks,ladder.png,/mods/ITEMS/mcl_core/textures,default_ladder.png,,,,,,, -/assets/minecraft/textures/blocks,lava_still.png,/mods/ITEMS/mcl_core/textures,mcl_core_lava_source_animation.png,,,,,,, -/assets/minecraft/textures/blocks,lava_flow.png,/mods/ITEMS/mcl_core/textures,mcl_core_lava_flow_animation.png,,,,,,, -/assets/minecraft/textures/blocks,cobblestone_mossy.png,/mods/ITEMS/mcl_core/textures,default_mossycobble.png,,,,,,, -/assets/minecraft/textures/blocks,obsidian.png,/mods/ITEMS/mcl_core/textures,default_obsidian.png,,,,,,, -/assets/minecraft/textures/items,paper.png,/mods/ITEMS/mcl_core/textures,default_paper.png,,,,,,, -/assets/minecraft/textures/blocks,reeds.png,/mods/ITEMS/mcl_core/textures,mcl_core_papyrus.png,,,,,,, -/assets/minecraft/textures/blocks,sand.png,/mods/ITEMS/mcl_core/textures,default_sand.png,,,,,,, -/assets/minecraft/textures/blocks,snow.png,/mods/ITEMS/mcl_core/textures,default_snow.png,,,,,,, -/assets/minecraft/textures/blocks,iron_block.png,/mods/ITEMS/mcl_core/textures,default_steel_block.png,,,,,,, -/assets/minecraft/textures/blocks,iron_block.png,/mods/ITEMS/mclx_stairs/textures,mcl_stairs_iron_block_slab.png,,,,,,, -/assets/minecraft/textures/items,iron_ingot.png,/mods/ITEMS/mcl_core/textures,default_steel_ingot.png,,,,,,, -/assets/minecraft/textures/items,stick.png,/mods/ITEMS/mcl_core/textures,default_stick.png,,,,,,, -/assets/minecraft/textures/blocks,stonebrick.png,/mods/ITEMS/mcl_core/textures,default_stone_brick.png,,,,,,, -/assets/minecraft/textures/blocks,stone.png,/mods/ITEMS/mcl_core/textures,default_stone.png,,,,,,, -/assets/minecraft/textures/blocks,log_oak.png,/mods/ITEMS/mcl_core/textures,default_tree.png,,,,,,, -/assets/minecraft/textures/blocks,log_oak_top.png,/mods/ITEMS/mcl_core/textures,default_tree_top.png,,,,,,, -/assets/minecraft/textures/blocks,water_still.png,/mods/ITEMS/mcl_core/textures,mcl_core_water_source_animation.png,,,,,,, -/assets/minecraft/textures/blocks,water_flow.png,/mods/ITEMS/mcl_core/textures,mcl_core_water_flow_animation.png,,,,,,, -/assets/minecraft/textures/blocks,planks_oak.png,/mods/ITEMS/mcl_core/textures,default_wood.png,,,,,,, -/assets/minecraft/textures/blocks,stone_andesite.png,/mods/ITEMS/mcl_core/textures,mcl_core_andesite.png,,,,,,, -/assets/minecraft/textures/blocks,stone_andesite_smooth.png,/mods/ITEMS/mcl_core/textures,mcl_core_andesite_smooth.png,,,,,,, -/assets/minecraft/textures/blocks,stone_andesite_smooth.png,/mods/ITEMS/mclx_stairs/textures,mcl_stairs_andesite_smooth_slab.png,,,,,,, -/assets/minecraft/textures/items,barrier.png,/mods/ITEMS/mcl_core/textures,mcl_core_barrier.png,,,,,,, -/assets/minecraft/textures/blocks,bedrock.png,/mods/ITEMS/mcl_core/textures,mcl_core_bedrock.png,,,,,,, -/assets/minecraft/textures/blocks,bone_block_side.png,/mods/ITEMS/mcl_core/textures,mcl_core_bone_block_side.png,,,,,,, -/assets/minecraft/textures/blocks,bone_block_top.png,/mods/ITEMS/mcl_core/textures,mcl_core_bone_block_top.png,,,,,,, -/assets/minecraft/textures/items,bowl.png,/mods/ITEMS/mcl_core/textures,mcl_core_bowl.png,,,,,,, -/assets/minecraft/textures/blocks,cactus_bottom.png,/mods/ITEMS/mcl_core/textures,mcl_core_cactus_bottom.png,,,,,,, -/assets/minecraft/textures/items,charcoal.png,/mods/ITEMS/mcl_core/textures,mcl_core_charcoal.png,,,,,,, -/assets/minecraft/textures/blocks,coal_ore.png,/mods/ITEMS/mcl_core/textures,mcl_core_coal_ore.png,,,,,,, -/assets/minecraft/textures/blocks,coarse_dirt.png,/mods/ITEMS/mcl_core/textures,mcl_core_coarse_dirt.png,,,,,,, -/assets/minecraft/textures/blocks,diamond_ore.png,/mods/ITEMS/mcl_core/textures,mcl_core_diamond_ore.png,,,,,,, -/assets/minecraft/textures/blocks,stone_diorite.png,/mods/ITEMS/mcl_core/textures,mcl_core_diorite.png,,,,,,, -/assets/minecraft/textures/blocks,stone_diorite_smooth.png,/mods/ITEMS/mcl_core/textures,mcl_core_diorite_smooth.png,,,,,,, -/assets/minecraft/textures/blocks,stone_diorite_smooth.png,/mods/ITEMS/mclx_stairs/textures,mcl_stairs_diorite_smooth_slab.png,,,,,,, -/assets/minecraft/textures/blocks,dirt_podzol_side.png,/mods/ITEMS/mcl_core/textures,mcl_core_dirt_podzol_side.png,,,,,,, -/assets/minecraft/textures/blocks,dirt_podzol_top.png,/mods/ITEMS/mcl_core/textures,mcl_core_dirt_podzol_top.png,,,,,,, -/assets/minecraft/textures/blocks,emerald_block.png,/mods/ITEMS/mcl_core/textures,mcl_core_emerald_block.png,,,,,,, -/assets/minecraft/textures/blocks,emerald_ore.png,/mods/ITEMS/mcl_core/textures,mcl_core_emerald_ore.png,,,,,,, -/assets/minecraft/textures/items,emerald.png,/mods/ITEMS/mcl_core/textures,mcl_core_emerald.png,,,,,,, -/assets/minecraft/textures/blocks,frosted_ice_0.png,/mods/ITEMS/mcl_core/textures,mcl_core_frosted_ice_0.png,,,,,,, -/assets/minecraft/textures/blocks,frosted_ice_1.png,/mods/ITEMS/mcl_core/textures,mcl_core_frosted_ice_1.png,,,,,,, -/assets/minecraft/textures/blocks,frosted_ice_2.png,/mods/ITEMS/mcl_core/textures,mcl_core_frosted_ice_2.png,,,,,,, -/assets/minecraft/textures/blocks,frosted_ice_3.png,/mods/ITEMS/mcl_core/textures,mcl_core_frosted_ice_3.png,,,,,,, -/assets/minecraft/textures/items,gold_nugget.png,/mods/ITEMS/mcl_core/textures,mcl_core_gold_nugget.png,,,,,,, -/assets/minecraft/textures/blocks,gold_ore.png,/mods/ITEMS/mcl_core/textures,mcl_core_gold_ore.png,,,,,,, -/assets/minecraft/textures/blocks,stone_granite.png,/mods/ITEMS/mcl_core/textures,mcl_core_granite.png,,,,,,, -/assets/minecraft/textures/blocks,stone_granite_smooth.png,/mods/ITEMS/mcl_core/textures,mcl_core_granite_smooth.png,,,,,,, -/assets/minecraft/textures/blocks,stone_granite_smooth.png,/mods/ITEMS/mclx_stairs/textures,mcl_stairs_granite_smooth_slab.png,,,,,,, -/assets/minecraft/textures/blocks,grass_path_side.png,/mods/ITEMS/mcl_core/textures,mcl_core_grass_path_side.png,,,,,,, -/assets/minecraft/textures/blocks,grass_path_top.png,/mods/ITEMS/mcl_core/textures,mcl_core_grass_path_top.png,,,,,,, -/assets/minecraft/textures/blocks,grass_side_snowed.png,/mods/ITEMS/mcl_core/textures,mcl_core_grass_side_snowed.png,,,,,,, -/assets/minecraft/textures/blocks,ice_packed.png,/mods/ITEMS/mcl_core/textures,mcl_core_ice_packed.png,,,,,,, -/assets/minecraft/textures/items,iron_nugget.png,/mods/ITEMS/mcl_core/textures,mcl_core_iron_nugget.png,,,,,,, -/assets/minecraft/textures/blocks,iron_ore.png,/mods/ITEMS/mcl_core/textures,mcl_core_iron_ore.png,,,,,,, -/assets/minecraft/textures/blocks,lapis_block.png,/mods/ITEMS/mcl_core/textures,mcl_core_lapis_block.png,,,,,,, -/assets/minecraft/textures/blocks,lapis_block.png,/mods/ITEMS/mclx_stairs/textures,mcl_stairs_lapis_block_slab.png,,,,,,, -/assets/minecraft/textures/blocks,lapis_ore.png,/mods/ITEMS/mcl_core/textures,mcl_core_lapis_ore.png,,,,,,, -/assets/minecraft/textures/blocks,log_big_oak.png,/mods/ITEMS/mcl_core/textures,mcl_core_log_big_oak.png,,,,,,, -/assets/minecraft/textures/blocks,log_big_oak_top.png,/mods/ITEMS/mcl_core/textures,mcl_core_log_big_oak_top.png,,,,,,, -/assets/minecraft/textures/blocks,log_birch.png,/mods/ITEMS/mcl_core/textures,mcl_core_log_birch.png,,,,,,, -/assets/minecraft/textures/blocks,log_birch_top.png,/mods/ITEMS/mcl_core/textures,mcl_core_log_birch_top.png,,,,,,, -/assets/minecraft/textures/blocks,log_spruce.png,/mods/ITEMS/mcl_core/textures,mcl_core_log_spruce.png,,,,,,, -/assets/minecraft/textures/blocks,log_spruce_top.png,/mods/ITEMS/mcl_core/textures,mcl_core_log_spruce_top.png,,,,,,, -/assets/minecraft/textures/blocks,mycelium_side.png,/mods/ITEMS/mcl_core/textures,mcl_core_mycelium_side.png,,,,,,, -/assets/minecraft/textures/blocks,mycelium_top.png,/mods/ITEMS/mcl_core/textures,mcl_core_mycelium_top.png,,,,,,, -/assets/minecraft/textures/blocks,planks_big_oak.png,/mods/ITEMS/mcl_core/textures,mcl_core_planks_big_oak.png,,,,,,, -/assets/minecraft/textures/blocks,planks_birch.png,/mods/ITEMS/mcl_core/textures,mcl_core_planks_birch.png,,,,,,, -/assets/minecraft/textures/blocks,planks_spruce.png,/mods/ITEMS/mcl_core/textures,mcl_core_planks_spruce.png,,,,,,, -/assets/minecraft/textures/blocks,red_sand.png,/mods/ITEMS/mcl_core/textures,mcl_core_red_sand.png,,,,,,, -/assets/minecraft/textures/blocks,red_sandstone_bottom.png,/mods/ITEMS/mcl_core/textures,mcl_core_red_sandstone_bottom.png,,,,,,, -/assets/minecraft/textures/blocks,red_sandstone_carved.png,/mods/ITEMS/mcl_core/textures,mcl_core_red_sandstone_carved.png,,,,,,, -/assets/minecraft/textures/blocks,red_sandstone_normal.png,/mods/ITEMS/mcl_core/textures,mcl_core_red_sandstone_normal.png,,,,,,, -/assets/minecraft/textures/blocks,red_sandstone_smooth.png,/mods/ITEMS/mcl_core/textures,mcl_core_red_sandstone_smooth.png,,,,,,, -/assets/minecraft/textures/blocks,red_sandstone_top.png,/mods/ITEMS/mcl_core/textures,mcl_core_red_sandstone_top.png,,,,,,, -/assets/minecraft/textures/blocks,redstone_ore.png,/mods/ITEMS/mcl_core/textures,mcl_core_redstone_ore.png,,,,,,, -/assets/minecraft/textures/items,reeds.png,/mods/ITEMS/mcl_core/textures,mcl_core_reeds.png,,,,,,, -/assets/minecraft/textures/blocks,sandstone_bottom.png,/mods/ITEMS/mcl_core/textures,mcl_core_sandstone_bottom.png,,,,,,, -/assets/minecraft/textures/blocks,sandstone_carved.png,/mods/ITEMS/mcl_core/textures,mcl_core_sandstone_carved.png,,,,,,, -/assets/minecraft/textures/blocks,sandstone_normal.png,/mods/ITEMS/mcl_core/textures,mcl_core_sandstone_normal.png,,,,,,, -/assets/minecraft/textures/blocks,sandstone_smooth.png,/mods/ITEMS/mcl_core/textures,mcl_core_sandstone_smooth.png,,,,,,, -/assets/minecraft/textures/blocks,sandstone_top.png,/mods/ITEMS/mcl_core/textures,mcl_core_sandstone_top.png,,,,,,, -/assets/minecraft/textures/blocks,slime.png,/mods/ITEMS/mcl_core/textures,mcl_core_slime.png,,,,,,, -/assets/minecraft/textures/blocks,stonebrick_carved.png,/mods/ITEMS/mcl_core/textures,mcl_core_stonebrick_carved.png,,,,,,, -/assets/minecraft/textures/blocks,stonebrick_cracked.png,/mods/ITEMS/mcl_core/textures,mcl_core_stonebrick_cracked.png,,,,,,, -/assets/minecraft/textures/blocks,stonebrick_mossy.png,/mods/ITEMS/mcl_core/textures,mcl_core_stonebrick_mossy.png,,,,,,, -/assets/minecraft/textures/items,sugar.png,/mods/ITEMS/mcl_core/textures,mcl_core_sugar.png,,,,,,, -/assets/minecraft/textures/blocks,web.png,/mods/ITEMS/mcl_core/textures,mcl_core_web.png,,,,,,, -/assets/minecraft/textures/blocks,crafting_table_front.png,/mods/ITEMS/mcl_crafting_table/textures,crafting_workbench_front.png,,,,,,, -/assets/minecraft/textures/blocks,crafting_table_side.png,/mods/ITEMS/mcl_crafting_table/textures,crafting_workbench_side.png,,,,,,, -/assets/minecraft/textures/blocks,crafting_table_top.png,/mods/ITEMS/mcl_crafting_table/textures,crafting_workbench_top.png,,,,,,, -/assets/minecraft/textures/blocks,door_acacia_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_acacia_lower.png,,,,,,, -/assets/minecraft/textures/blocks,door_acacia_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_acacia_side_lower.png,,,,,,, -/assets/minecraft/textures/blocks,door_acacia_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_acacia_upper.png,,,,,,, -/assets/minecraft/textures/blocks,door_acacia_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_acacia_side_upper.png,,,,,,, -/assets/minecraft/textures/blocks,door_birch_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_birch_lower.png,,,,,,, -/assets/minecraft/textures/blocks,door_birch_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_birch_side_lower.png,,,,,,, -/assets/minecraft/textures/blocks,door_birch_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_birch_upper.png,,,,,,, -/assets/minecraft/textures/blocks,door_birch_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_birch_side_upper.png,,,,,,, -/assets/minecraft/textures/blocks,door_dark_oak_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_dark_oak_lower.png,,,,,,, -/assets/minecraft/textures/blocks,door_dark_oak_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_dark_oak_side_lower.png,,,,,,, -/assets/minecraft/textures/blocks,door_dark_oak_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_dark_oak_upper.png,,,,,,, -/assets/minecraft/textures/blocks,door_dark_oak_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_dark_oak_side_upper.png,,,,,,, -/assets/minecraft/textures/blocks,door_iron_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_iron_lower.png,,,,,,, -/assets/minecraft/textures/blocks,door_iron_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_iron_side_lower.png,,,,,,, -/assets/minecraft/textures/blocks,door_iron_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_iron_upper.png,,,,,,, -/assets/minecraft/textures/blocks,door_iron_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_iron_side_upper.png,,,,,,, -/assets/minecraft/textures/blocks,door_jungle_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_jungle_lower.png,,,,,,, -/assets/minecraft/textures/blocks,door_jungle_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_jungle_side_lower.png,,,,,,, -/assets/minecraft/textures/blocks,door_jungle_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_jungle_upper.png,,,,,,, -/assets/minecraft/textures/blocks,door_jungle_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_jungle_side_upper.png,,,,,,, -/assets/minecraft/textures/blocks,door_spruce_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_spruce_lower.png,,,,,,, -/assets/minecraft/textures/blocks,door_spruce_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_spruce_side_lower.png,,,,,,, -/assets/minecraft/textures/blocks,door_spruce_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_spruce_upper.png,,,,,,, -/assets/minecraft/textures/blocks,door_spruce_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_spruce_side_upper.png,,,,,,, -/assets/minecraft/textures/blocks,door_wood_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_wood_lower.png,,,,,,, -/assets/minecraft/textures/blocks,door_wood_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_wood_side_lower.png,,,,,,, -/assets/minecraft/textures/blocks,door_wood_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_wood_upper.png,,,,,,, -/assets/minecraft/textures/blocks,door_wood_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_wood_side_upper.png,,,,,,, -/assets/minecraft/textures/blocks,trapdoor.png,/mods/ITEMS/mcl_doors/textures,doors_trapdoor.png,,,,,,, -/assets/minecraft/textures/blocks,trapdoor.png,/mods/ITEMS/mcl_doors/textures,doors_trapdoor_side.png,,,,,,, -/assets/minecraft/textures/blocks,iron_trapdoor.png,/mods/ITEMS/mcl_doors/textures,doors_trapdoor_steel.png,,,,,,, -/assets/minecraft/textures/blocks,iron_trapdoor.png,/mods/ITEMS/mcl_doors/textures,doors_trapdoor_steel_side.png,,,,,,, -/assets/minecraft/textures/items,door_acacia.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_acacia.png,,,,,,, -/assets/minecraft/textures/items,door_birch.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_birch.png,,,,,,, -/assets/minecraft/textures/items,door_dark_oak.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_dark_oak.png,,,,,,, -/assets/minecraft/textures/items,door_jungle.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_jungle.png,,,,,,, -/assets/minecraft/textures/items,door_spruce.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_spruce.png,,,,,,, -/assets/minecraft/textures/items,door_wood.png,/mods/ITEMS/mcl_doors/textures,doors_item_wood.png,,,,,,, -/assets/minecraft/textures/items,door_iron.png,/mods/ITEMS/mcl_doors/textures,doors_item_steel.png,,,,,,, -/assets/minecraft/textures/items,dye_powder_black.png,/mods/ITEMS/mcl_dye/textures,mcl_dye_black.png,,,,,,, -/assets/minecraft/textures/items,dye_powder_blue.png,/mods/ITEMS/mcl_dye/textures,mcl_dye_blue.png,,,,,,, -/assets/minecraft/textures/items,dye_powder_brown.png,/mods/ITEMS/mcl_dye/textures,mcl_dye_brown.png,,,,,,, -/assets/minecraft/textures/items,dye_powder_cyan.png,/mods/ITEMS/mcl_dye/textures,dye_cyan.png,,,,,,, -/assets/minecraft/textures/items,dye_powder_gray.png,/mods/ITEMS/mcl_dye/textures,dye_dark_grey.png,,,,,,, -/assets/minecraft/textures/items,dye_powder_green.png,/mods/ITEMS/mcl_dye/textures,dye_dark_green.png,,,,,,, -/assets/minecraft/textures/items,dye_powder_light_blue.png,/mods/ITEMS/mcl_dye/textures,mcl_dye_light_blue.png,,,,,,, -/assets/minecraft/textures/items,dye_powder_lime.png,/mods/ITEMS/mcl_dye/textures,mcl_dye_lime.png,,,,,,, -/assets/minecraft/textures/items,dye_powder_magenta.png,/mods/ITEMS/mcl_dye/textures,dye_magenta.png,,,,,,, -/assets/minecraft/textures/items,dye_powder_orange.png,/mods/ITEMS/mcl_dye/textures,dye_orange.png,,,,,,, -/assets/minecraft/textures/items,dye_powder_pink.png,/mods/ITEMS/mcl_dye/textures,dye_pink.png,,,,,,, -/assets/minecraft/textures/items,dye_powder_purple.png,/mods/ITEMS/mcl_dye/textures,dye_violet.png,,,,,,, -/assets/minecraft/textures/items,dye_powder_red.png,/mods/ITEMS/mcl_dye/textures,dye_red.png,,,,,,, -/assets/minecraft/textures/items,dye_powder_silver.png,/mods/ITEMS/mcl_dye/textures,dye_grey.png,,,,,,, -/assets/minecraft/textures/items,dye_powder_white.png,/mods/ITEMS/mcl_dye/textures,mcl_dye_white.png,,,,,,, -/assets/minecraft/textures/items,dye_powder_yellow.png,/mods/ITEMS/mcl_dye/textures,dye_yellow.png,,,,,,, -/assets/minecraft/textures/blocks,chorus_flower_dead.png,/mods/ITEMS/mcl_end/textures,mcl_end_chorus_flower_dead.png,,,,,,, -/assets/minecraft/textures/blocks,chorus_flower.png,/mods/ITEMS/mcl_end/textures,mcl_end_chorus_flower.png,,,,,,, -/assets/minecraft/textures/items,chorus_fruit.png,/mods/ITEMS/mcl_end/textures,mcl_end_chorus_fruit.png,,,,,,, -/assets/minecraft/textures/items,chorus_fruit_popped.png,/mods/ITEMS/mcl_end/textures,mcl_end_chorus_fruit_popped.png,,,,,,, -/assets/minecraft/textures/blocks,chorus_plant.png,/mods/ITEMS/mcl_end/textures,mcl_end_chorus_plant.png,,,,,,, -/assets/minecraft/textures/blocks,dragon_egg.png,/mods/ITEMS/mcl_end/textures,mcl_end_dragon_egg.png,,,,,,, -/assets/minecraft/textures/blocks,end_bricks.png,/mods/ITEMS/mcl_end/textures,mcl_end_end_bricks.png,,,,,,, -/assets/minecraft/textures/items,ender_eye.png,/mods/ITEMS/mcl_end/textures,mcl_end_ender_eye.png,,,,,,, -/assets/minecraft/textures/blocks,endframe_eye.png,/mods/ITEMS/mcl_end/textures,mcl_end_endframe_eye.png,,,,,,, -/assets/minecraft/textures/blocks,endframe_side.png,/mods/ITEMS/mcl_end/textures,mcl_end_endframe_side.png,,,,,,, -/assets/minecraft/textures/blocks,endframe_top.png,/mods/ITEMS/mcl_end/textures,mcl_end_endframe_top.png,,,,,,, -/assets/minecraft/textures/blocks,end_stone.png,/mods/ITEMS/mcl_end/textures,mcl_end_end_stone.png,,,,,,, -/assets/minecraft/textures/items,end_crystal.png,/mods/ITEMS/mcl_end/textures,mcl_end_crystal_item.png,,,,,,, -/assets/minecraft/textures/entity/endercrystal,endercrystal.png,/mods/ITEMS/mcl_end/textures,mcl_end_crystal.png,,,,,,, -/assets/minecraft/textures/blocks,purpur_block.png,/mods/ITEMS/mcl_end/textures,mcl_end_purpur_block.png,,,,,,, -/assets/minecraft/textures/blocks,purpur_pillar.png,/mods/ITEMS/mcl_end/textures,mcl_end_purpur_pillar.png,,,,,,, -/assets/minecraft/textures/blocks,purpur_pillar_top.png,/mods/ITEMS/mcl_end/textures,mcl_end_purpur_pillar_top.png,,,,,,, -/assets/minecraft/textures/blocks,potatoes_stage_0.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_potatoes_stage_0.png,,,,,,, -/assets/minecraft/textures/blocks,potatoes_stage_1.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_potatoes_stage_1.png,,,,,,, -/assets/minecraft/textures/blocks,potatoes_stage_2.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_potatoes_stage_2.png,,,,,,, -/assets/minecraft/textures/blocks,potatoes_stage_3.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_potatoes_stage_3.png,,,,,,, -/assets/minecraft/textures/items,pumpkin_pie.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_pumpkin_pie.png,,,,,,, -/assets/minecraft/textures/items,bread.png,/mods/ITEMS/mcl_farming/textures,farming_bread.png,,,,,,, -/assets/minecraft/textures/blocks,carrots_stage_0.png,/mods/ITEMS/mcl_farming/textures,farming_carrot_1.png,,,,,,, -/assets/minecraft/textures/blocks,carrots_stage_1.png,/mods/ITEMS/mcl_farming/textures,farming_carrot_2.png,,,,,,, -/assets/minecraft/textures/blocks,carrots_stage_2.png,/mods/ITEMS/mcl_farming/textures,farming_carrot_3.png,,,,,,, -/assets/minecraft/textures/blocks,carrots_stage_3.png,/mods/ITEMS/mcl_farming/textures,farming_carrot_4.png,,,,,,, -/assets/minecraft/textures/items,carrot_golden.png,/mods/ITEMS/mcl_farming/textures,farming_carrot_gold.png,,,,,,, -/assets/minecraft/textures/items,carrot.png,/mods/ITEMS/mcl_farming/textures,farming_carrot.png,,,,,,, -/assets/minecraft/textures/items,cookie.png,/mods/ITEMS/mcl_farming/textures,farming_cookie.png,,,,,,, -/assets/minecraft/textures/items,melon.png,/mods/ITEMS/mcl_farming/textures,farming_melon.png,,,,,,, -/assets/minecraft/textures/items,seeds_melon.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_melon_seeds.png,,,,,,, -/assets/minecraft/textures/blocks,melon_side.png,/mods/ITEMS/mcl_farming/textures,farming_melon_side.png,,,,,,, -/assets/minecraft/textures/blocks,melon_top.png,/mods/ITEMS/mcl_farming/textures,farming_melon_top.png,,,,,,, -/assets/minecraft/textures/items,potato_baked.png,/mods/ITEMS/mcl_farming/textures,farming_potato_baked.png,,,,,,, -/assets/minecraft/textures/items,potato.png,/mods/ITEMS/mcl_farming/textures,farming_potato.png,,,,,,, -/assets/minecraft/textures/items,potato_poisonous.png,/mods/ITEMS/mcl_farming/textures,farming_potato_poison.png,,,,,,, -/assets/minecraft/textures/blocks,pumpkin_face_on.png,/mods/ITEMS/mcl_farming/textures,farming_pumpkin_face_light.png,,,,,,, -/assets/minecraft/textures/blocks,pumpkin_face_off.png,/mods/ITEMS/mcl_farming/textures,farming_pumpkin_face.png,,,,,,, -/assets/minecraft/textures/items,seeds_pumpkin.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_pumpkin_seeds.png,,,,,,, -/assets/minecraft/textures/blocks,pumpkin_side.png,/mods/ITEMS/mcl_farming/textures,farming_pumpkin_side.png,,,,,,, -/assets/minecraft/textures/blocks,pumpkin_top.png,/mods/ITEMS/mcl_farming/textures,farming_pumpkin_top.png,,,,,,, -/assets/minecraft/textures/blocks,farmland_dry.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_farmland_dry.png,,,,,,, -/assets/minecraft/textures/blocks,farmland_wet.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_farmland_wet.png,,,,,,, -/assets/minecraft/textures/items,diamond_hoe.png,/mods/ITEMS/mcl_farming/textures,farming_tool_diamondhoe.png,,,,,,, -/assets/minecraft/textures/items,gold_hoe.png,/mods/ITEMS/mcl_farming/textures,farming_tool_goldhoe.png,,,,,,, -/assets/minecraft/textures/items,iron_hoe.png,/mods/ITEMS/mcl_farming/textures,farming_tool_steelhoe.png,,,,,,, -/assets/minecraft/textures/items,stone_hoe.png,/mods/ITEMS/mcl_farming/textures,farming_tool_stonehoe.png,,,,,,, -/assets/minecraft/textures/items,wood_hoe.png,/mods/ITEMS/mcl_farming/textures,farming_tool_woodhoe.png,,,,,,, -/assets/minecraft/textures/items,wheat.png,/mods/ITEMS/mcl_farming/textures,farming_wheat_harvested.png,,,,,,, -/assets/minecraft/textures/items,seeds_wheat.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_wheat_seeds.png,,,,,,, -/assets/minecraft/textures/blocks,beetroots_stage_0.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_beetroot_0.png,,,,,,, -/assets/minecraft/textures/blocks,beetroots_stage_1.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_beetroot_1.png,,,,,,, -/assets/minecraft/textures/blocks,beetroots_stage_2.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_beetroot_2.png,,,,,,, -/assets/minecraft/textures/blocks,beetroots_stage_3.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_beetroot_3.png,,,,,,, -/assets/minecraft/textures/items,beetroot.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_beetroot.png,,,,,,, -/assets/minecraft/textures/items,beetroot_seeds.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_beetroot_seeds.png,,,,,,, -/assets/minecraft/textures/items,beetroot_soup.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_beetroot_soup.png,,,,,,, -/assets/minecraft/textures/blocks,hay_block_side.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_hayblock_side.png,,,,,,, -/assets/minecraft/textures/blocks,hay_block_top.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_hayblock_top.png,,,,,,, -/assets/minecraft/textures/blocks,wheat_stage_0.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_wheat_stage_0.png,,,,,,, -/assets/minecraft/textures/blocks,wheat_stage_1.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_wheat_stage_1.png,,,,,,, -/assets/minecraft/textures/blocks,wheat_stage_2.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_wheat_stage_2.png,,,,,,, -/assets/minecraft/textures/blocks,wheat_stage_3.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_wheat_stage_3.png,,,,,,, -/assets/minecraft/textures/blocks,wheat_stage_4.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_wheat_stage_4.png,,,,,,, -/assets/minecraft/textures/blocks,wheat_stage_5.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_wheat_stage_5.png,,,,,,, -/assets/minecraft/textures/blocks,wheat_stage_6.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_wheat_stage_6.png,,,,,,, -/assets/minecraft/textures/blocks,wheat_stage_7.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_wheat_stage_7.png,,,,,,, -/assets/minecraft/textures/blocks,fire_layer_0.png,/mods/ITEMS/mcl_fire/textures,fire_basic_flame_animated.png,,,,,,, -/assets/minecraft/textures/blocks,fire_layer_0.png,/mods/ITEMS/mcl_fire/textures,mcl_burning_entity_flame_animated.png,,,,,,, -/assets/minecraft/textures/blocks,fire_layer_0.png,/mods/ITEMS/mcl_fire/textures,mcl_burning_hud_flame_animated.png,,,,,,, -/assets/minecraft/textures/blocks,fire_layer_0.png,/mods/ITEMS/mcl_fire/textures,fire_basic_flame.png,0,0,16,16,0,0,y -/assets/minecraft/textures/items,fireball.png,/mods/ITEMS/mcl_fire/textures,mcl_fire_fire_charge.png,,,,,,, -/assets/minecraft/textures/items,flint_and_steel.png,/mods/ITEMS/mcl_fire/textures,mcl_fire_flint_and_steel.png,,,,,,, -/assets/minecraft/textures/items,fish_clownfish_raw.png,/mods/ITEMS/mcl_fishing/textures,mcl_fishing_clownfish_raw.png,,,,,,, -/assets/minecraft/textures/items,fish_cod_cooked.png,/mods/ITEMS/mcl_fishing/textures,mcl_fishing_fish_cooked.png,,,,,,, -/assets/minecraft/textures/items,fishing_rod_uncast.png,/mods/ITEMS/mcl_fishing/textures,mcl_fishing_fishing_rod.png,,,,,,, -/assets/minecraft/textures/items,fish_cod_raw.png,/mods/ITEMS/mcl_fishing/textures,mcl_fishing_fish_raw.png,,,,,,, -/assets/minecraft/textures/items,fish_pufferfish_raw.png,/mods/ITEMS/mcl_fishing/textures,mcl_fishing_pufferfish_raw.png,,,,,,, -/assets/minecraft/textures/items,fish_salmon_cooked.png,/mods/ITEMS/mcl_fishing/textures,mcl_fishing_salmon_cooked.png,,,,,,, -/assets/minecraft/textures/items,fish_salmon_raw.png,/mods/ITEMS/mcl_fishing/textures,mcl_fishing_salmon_raw.png,,,,,,, -/assets/minecraft/textures/blocks,flower_allium.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_allium.png,,,,,,, -/assets/minecraft/textures/blocks,flower_houstonia.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_azure_bluet.png,,,,,,, -/assets/minecraft/textures/blocks,flower_blue_orchid.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_blue_orchid.png,,,,,,, -/assets/minecraft/textures/blocks,double_plant_paeonia_bottom.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_paeonia_bottom.png,,,,,,, -/assets/minecraft/textures/blocks,double_plant_paeonia_top.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_paeonia_top.png,,,,,,, -/assets/minecraft/textures/blocks,double_plant_rose_bottom.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_rose_bottom.png,,,,,,, -/assets/minecraft/textures/blocks,double_plant_rose_top.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_rose_top.png,,,,,,, -/assets/minecraft/textures/blocks,double_plant_sunflower_back.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_sunflower_back.png,,,,,,, -/assets/minecraft/textures/blocks,double_plant_sunflower_bottom.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_sunflower_bottom.png,,,,,,, -/assets/minecraft/textures/blocks,double_plant_sunflower_front.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_sunflower_front.png,,,,,,, -/assets/minecraft/textures/blocks,double_plant_sunflower_top.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_sunflower_top.png,,,,,,, -/assets/minecraft/textures/blocks,double_plant_syringa_bottom.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_syringa_bottom.png,,,,,,, -/assets/minecraft/textures/blocks,double_plant_syringa_top.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_syringa_top.png,,,,,,, -/assets/minecraft/textures/blocks,double_plant_grass_bottom.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_grass_bottom.png,,,,,,, -/assets/minecraft/textures/blocks,double_plant_grass_top.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_grass_top.png,,,,,,, -/assets/minecraft/textures/blocks,double_plant_fern_bottom.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_fern_bottom.png,,,,,,, -/assets/minecraft/textures/blocks,double_plant_fern_top.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_fern_top.png,,,,,,, -/assets/minecraft/textures/blocks,tallgrass.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_tallgrass.png,,,,,,, -/assets/minecraft/textures/blocks,fern.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_fern.png,,,,,,, -/assets/minecraft/textures/blocks,flower_oxeye_daisy.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_oxeye_daisy.png,,,,,,, -/assets/minecraft/textures/blocks,flower_rose.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_poppy.png,,,,,,, -/assets/minecraft/textures/blocks,flower_tulip_pink.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_tulip_pink.png,,,,,,, -/assets/minecraft/textures/blocks,flower_tulip_red.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_tulip_red.png,,,,,,, -/assets/minecraft/textures/blocks,flower_tulip_white.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_tulip_white.png,,,,,,, -/assets/minecraft/textures/blocks,flower_dandelion.png,/mods/ITEMS/mcl_flowers/textures,flowers_dandelion_yellow.png,,,,,,, -/assets/minecraft/textures/blocks,flower_tulip_orange.png,/mods/ITEMS/mcl_flowers/textures,flowers_tulip.png,,,,,,, -/assets/minecraft/textures/blocks,furnace_front_off.png,/mods/ITEMS/mcl_furnaces/textures,default_furnace_front.png,,,,,,, -/assets/minecraft/textures/blocks,furnace_front_on.png,/mods/ITEMS/mcl_furnaces/textures,default_furnace_front_active.png,,,,,,, -/assets/minecraft/textures/blocks,furnace_side.png,/mods/ITEMS/mcl_furnaces/textures,default_furnace_side.png,,,,,,, -/assets/minecraft/textures/blocks,furnace_top.png,/mods/ITEMS/mcl_furnaces/textures,default_furnace_top.png,,,,,,, -/assets/minecraft/textures/blocks,furnace_top.png,/mods/ITEMS/mcl_furnaces/textures,default_furnace_bottom.png,,,,,,, -/assets/minecraft/textures/blocks,hopper_inside.png,/mods/ITEMS/mcl_hoppers/textures,mcl_hoppers_hopper_inside.png,,,,,,, -/assets/minecraft/textures/blocks,hopper_outside.png,/mods/ITEMS/mcl_hoppers/textures,mcl_hoppers_hopper_outside.png,,,,,,, -/assets/minecraft/textures/blocks,hopper_top.png,/mods/ITEMS/mcl_hoppers/textures,mcl_hoppers_hopper_top.png,,,,,,, -/assets/minecraft/textures/items,hopper.png,/mods/ITEMS/mcl_hoppers/textures,mcl_hoppers_item.png,,,,,,, -/assets/minecraft/textures/items,record_11.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_11.png,,,,,,, -/assets/minecraft/textures/items,record_13.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_13.png,,,,,,, -/assets/minecraft/textures/items,record_blocks.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_blocks.png,,,,,,, -/assets/minecraft/textures/items,record_cat.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_cat.png,,,,,,, -/assets/minecraft/textures/items,record_chirp.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_chirp.png,,,,,,, -/assets/minecraft/textures/items,record_far.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_far.png,,,,,,, -/assets/minecraft/textures/items,record_mall.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_mall.png,,,,,,, -/assets/minecraft/textures/items,record_mellohi.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_mellohi.png,,,,,,, -/assets/minecraft/textures/items,record_stal.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_stal.png,,,,,,, -/assets/minecraft/textures/items,record_strad.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_strad.png,,,,,,, -/assets/minecraft/textures/items,record_wait.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_wait.png,,,,,,, -/assets/minecraft/textures/items,record_ward.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_ward.png,,,,,,, -/assets/minecraft/textures/blocks,jukebox_side.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_side.png,,,,,,, -/assets/minecraft/textures/blocks,jukebox_top.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_top.png,,,,,,, -/assets/minecraft/textures/items,map_empty.png,/mods/ITEMS/mcl_maps/textures,mcl_maps_map_empty.png,,,,,,, -/assets/minecraft/textures/items,map_filled_markings.png,/mods/ITEMS/mcl_maps/textures,mcl_maps_map_filled_markings.png,,,,,,, -/assets/minecraft/textures/items,map_filled.png,/mods/ITEMS/mcl_maps/textures,mcl_maps_map_filled.png,,,,,,, -/assets/minecraft/textures/blocks,rail_golden.png,/mods/ENTITIES/mcl_minecarts/textures,mcl_minecarts_rail_golden.png,,,,,,, -/assets/minecraft/textures/blocks,rail_golden_powered.png,/mods/ENTITIES/mcl_minecarts/textures,mcl_minecarts_rail_golden_powered.png,,,,,,, -/assets/minecraft/textures/blocks,rail_normal_turned.png,/mods/ENTITIES/mcl_minecarts/textures,default_rail_curved.png,,,,,,, -/assets/minecraft/textures/blocks,rail_normal.png,/mods/ENTITIES/mcl_minecarts/textures,default_rail.png,,,,,,, -/assets/minecraft/textures/blocks,rail_detector.png,/mods/ENTITIES/mcl_minecarts/textures,mcl_minecarts_rail_detector.png,,,,,,, -/assets/minecraft/textures/blocks,rail_detector_powered.png,/mods/ENTITIES/mcl_minecarts/textures,mcl_minecarts_rail_detector_powered.png,,,,,,, -/assets/minecraft/textures/blocks,rail_activator.png,/mods/ENTITIES/mcl_minecarts/textures,mcl_minecarts_rail_activator.png,,,,,,, -/assets/minecraft/textures/blocks,rail_activator_powered.png,/mods/ENTITIES/mcl_minecarts/textures,mcl_minecarts_rail_activator_powered.png,,,,,,, -/assets/minecraft/textures/items,minecart_normal.png,/mods/ENTITIES/mcl_minecarts/textures,mcl_minecarts_minecart_normal.png,,,,,,, -/assets/minecraft/textures/items,minecart_chest.png,/mods/ENTITIES/mcl_minecarts/textures,mcl_minecarts_minecart_chest.png,,,,,,, -/assets/minecraft/textures/items,minecart_tnt.png,/mods/ENTITIES/mcl_minecarts/textures,mcl_minecarts_minecart_tnt.png,,,,,,, -/assets/minecraft/textures/items,minecart_command_block.png,/mods/ENTITIES/mcl_minecarts/textures,mcl_minecarts_minecart_command_block.png,,,,,,, -/assets/minecraft/textures/items,minecart_furnace.png,/mods/ENTITIES/mcl_minecarts/textures,mcl_minecarts_minecart_furnace.png,,,,,,, -/assets/minecraft/textures/items,minecart_hopper.png,/mods/ENTITIES/mcl_minecarts/textures,mcl_minecarts_minecart_hopper.png,,,,,,, -/assets/minecraft/textures/items,gunpowder.png,/mods/ITEMS/mcl_mobitems/textures,default_gunpowder.png,,,,,,, -/assets/minecraft/textures/items,beef_cooked.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_beef_cooked.png,,,,,,, -/assets/minecraft/textures/items,beef_raw.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_beef_raw.png,,,,,,, -/assets/minecraft/textures/items,blaze_powder.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_blaze_powder.png,,,,,,, -/assets/minecraft/textures/items,blaze_rod.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_blaze_rod.png,,,,,,, -/assets/minecraft/textures/items,bone.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_bone.png,,,,,,, -/assets/minecraft/textures/items,bucket_milk.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_bucket_milk.png,,,,,,, -/assets/minecraft/textures/items,carrot_on_a_stick.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_carrot_on_a_stick.png,,,,,,, -/assets/minecraft/textures/items,chicken_cooked.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_chicken_cooked.png,,,,,,, -/assets/minecraft/textures/items,chicken_raw.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_chicken_raw.png,,,,,,, -/assets/minecraft/textures/items,feather.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_feather.png,,,,,,, -/assets/minecraft/textures/items,ghast_tear.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_ghast_tear.png,,,,,,, -/assets/minecraft/textures/items,leather.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_leather.png,,,,,,, -/assets/minecraft/textures/items,magma_cream.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_magma_cream.png,,,,,,, -/assets/minecraft/textures/items,mutton_cooked.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_mutton_cooked.png,,,,,,, -/assets/minecraft/textures/items,mutton_raw.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_mutton_raw.png,,,,,,, -/assets/minecraft/textures/items,nether_star.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_nether_star.png,,,,,,, -/assets/minecraft/textures/items,porkchop_cooked.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_porkchop_cooked.png,,,,,,, -/assets/minecraft/textures/items,porkchop_raw.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_porkchop_raw.png,,,,,,, -/assets/minecraft/textures/items,rabbit_cooked.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_rabbit_cooked.png,,,,,,, -/assets/minecraft/textures/items,rabbit_foot.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_rabbit_foot.png,,,,,,, -/assets/minecraft/textures/items,rabbit_hide.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_rabbit_hide.png,,,,,,, -/assets/minecraft/textures/items,rabbit_raw.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_rabbit_raw.png,,,,,,, -/assets/minecraft/textures/items,rabbit_stew.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_rabbit_stew.png,,,,,,, -/assets/minecraft/textures/items,rotten_flesh.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_rotten_flesh.png,,,,,,, -/assets/minecraft/textures/items,saddle.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_saddle.png,,,,,,, -/assets/minecraft/textures/items,shulker_shell.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_shulker_shell.png,,,,,,, -/assets/minecraft/textures/items,slimeball.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_slimeball.png,,,,,,, -/assets/minecraft/textures/items,spider_eye.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_spider_eye.png,,,,,,, -/assets/minecraft/textures/items,string.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_string.png,,,,,,, -/assets/minecraft/textures/blocks,mob_spawner.png,/mods/ITEMS/mcl_mobspawners/textures,mob_spawner.png,,,,,,, -/assets/minecraft/textures/blocks,mushroom_brown.png,/mods/ITEMS/mcl_mushrooms/textures,farming_mushroom_brown.png,,,,,,, -/assets/minecraft/textures/blocks,mushroom_red.png,/mods/ITEMS/mcl_mushrooms/textures,farming_mushroom_red.png,,,,,,, -/assets/minecraft/textures/items,mushroom_stew.png,/mods/ITEMS/mcl_mushrooms/textures,farming_mushroom_stew.png,,,,,,, -/assets/minecraft/textures/blocks,mushroom_block_inside.png,/mods/ITEMS/mcl_mushrooms/textures,mcl_mushrooms_mushroom_block_inside.png,,,,,,, -/assets/minecraft/textures/blocks,mushroom_block_skin_brown.png,/mods/ITEMS/mcl_mushrooms/textures,mcl_mushrooms_mushroom_block_skin_brown.png,,,,,,, -/assets/minecraft/textures/blocks,mushroom_block_skin_red.png,/mods/ITEMS/mcl_mushrooms/textures,mcl_mushrooms_mushroom_block_skin_red.png,,,,,,, -/assets/minecraft/textures/blocks,mushroom_block_skin_stem.png,/mods/ITEMS/mcl_mushrooms/textures,mcl_mushrooms_mushroom_block_skin_stem.png,,,,,,, -/assets/minecraft/textures/items,glowstone_dust.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_glowstone_dust.png,,,,,,, -/assets/minecraft/textures/blocks,glowstone.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_glowstone.png,,,,,,, -/assets/minecraft/textures/blocks,magma.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_magma.png,,,,,,, -/assets/minecraft/textures/blocks,nether_brick.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_nether_brick.png,,,,,,, -/assets/minecraft/textures/items,netherbrick.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_netherbrick.png,,,,,,, -/assets/minecraft/textures/blocks,netherrack.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_netherrack.png,,,,,,, -/assets/minecraft/textures/blocks,nether_wart_block.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_nether_wart_block.png,,,,,,, -/assets/minecraft/textures/items,nether_wart.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_nether_wart.png,,,,,,, -/assets/minecraft/textures/blocks,nether_wart_stage_0.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_nether_wart_stage_0.png,,,,,,, -/assets/minecraft/textures/blocks,nether_wart_stage_1.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_nether_wart_stage_1.png,,,,,,, -/assets/minecraft/textures/blocks,nether_wart_stage_2.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_nether_wart_stage_2.png,,,,,,, -/assets/minecraft/textures/blocks,quartz_block_bottom.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_quartz_block_bottom.png,,,,,,, -/assets/minecraft/textures/blocks,quartz_block_side.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_quartz_block_side.png,,,,,,, -/assets/minecraft/textures/blocks,quartz_block_top.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_quartz_block_top.png,,,,,,, -/assets/minecraft/textures/blocks,quartz_block_chiseled.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_quartz_chiseled_side.png,,,,,,, -/assets/minecraft/textures/blocks,quartz_block_chiseled_top.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_quartz_chiseled_top.png,,,,,,, -/assets/minecraft/textures/blocks,quartz_ore.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_quartz_ore.png,,,,,,, -/assets/minecraft/textures/blocks,quartz_block_lines.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_quartz_pillar_side.png,,,,,,, -/assets/minecraft/textures/blocks,quartz_block_lines_top.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_quartz_pillar_top.png,,,,,,, -/assets/minecraft/textures/items,quartz.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_quartz.png,,,,,,, -/assets/minecraft/textures/blocks,red_nether_brick.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_red_nether_brick.png,,,,,,, -/assets/minecraft/textures/blocks,soul_sand.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_soul_sand.png,,,,,,, -/assets/minecraft/textures/blocks,prismarine_rough.png,/mods/ITEMS/mcl_ocean/textures,mcl_ocean_prismarine_anim.png,,,,,,, -/assets/minecraft/textures/blocks,prismarine_bricks.png,/mods/ITEMS/mcl_ocean/textures,mcl_ocean_prismarine_bricks.png,,,,,,, -/assets/minecraft/textures/items,prismarine_crystals.png,/mods/ITEMS/mcl_ocean/textures,mcl_ocean_prismarine_crystals.png,,,,,,, -/assets/minecraft/textures/blocks,prismarine_dark.png,/mods/ITEMS/mcl_ocean/textures,mcl_ocean_prismarine_dark.png,,,,,,, -/assets/minecraft/textures/items,prismarine_shard.png,/mods/ITEMS/mcl_ocean/textures,mcl_ocean_prismarine_shard.png,,,,,,, -/assets/minecraft/textures/blocks,sea_lantern.png,/mods/ITEMS/mcl_ocean/textures,mcl_ocean_sea_lantern.png,,,,,,, -/assets/minecraft/textures/items,dragon_breath.png,/mods/ITEMS/mcl_potions/textures,mcl_potions_dragon_breath.png,,,,,,, -/assets/minecraft/textures/items,melon_speckled.png,/mods/ITEMS/mcl_potions/textures,mcl_potions_melon_speckled.png,,,,,,, -/assets/minecraft/textures/items,potion_bottle_empty.png,/mods/ITEMS/mcl_potions/textures,mcl_potions_potion_bottle.png,,,,,,, -/assets/minecraft/textures/items,potion_bottle_splash.png,/mods/ITEMS/mcl_potions/textures,mcl_potions_splash_bottle.png,,,,,,, -/assets/minecraft/textures/items,potion_bottle_lingering.png,/mods/ITEMS/mcl_potions/textures,mcl_potions_lingering_bottle.png,,,,,,, -/assets/minecraft/textures/items,potion_overlay.png,/mods/ITEMS/mcl_potions/textures,mcl_potions_potion_overlay.png,,,,,,, -/assets/minecraft/textures/items,potion_overlay.png,/mods/ITEMS/mcl_potions/textures,mcl_potions_splash_overlay.png,,,,,,, -/assets/minecraft/textures/items,spider_eye_fermented.png,/mods/ITEMS/mcl_potions/textures,mcl_potions_spider_eye_fermented.png,,,,,,, -/assets/minecraft/textures/blocks,sponge.png,/mods/ITEMS/mcl_sponges/textures,mcl_sponges_sponge.png,,,,,,, -/assets/minecraft/textures/blocks,sponge_wet.png,/mods/ITEMS/mcl_sponges/textures,mcl_sponges_sponge_wet.png,,,,,,, -/assets/minecraft/textures/blocks,sponge_wet.png,/mods/ITEMS/mcl_sponges/textures,mcl_sponges_sponge_wet_river_water.png,,,,,,, -/assets/minecraft/textures/blocks,stone_slab_side.png,/mods/ITEMS/mcl_stairs/textures,mcl_stairs_stone_slab_side.png,,,,,,, -/assets/minecraft/textures/blocks,stone_slab_top.png,/mods/ITEMS/mcl_stairs/textures,mcl_stairs_stone_slab_top.png,,,,,,, -/assets/minecraft/textures/items,arrow.png,/mods/ITEMS/mcl_bows/textures,mcl_bows_arrow_inv.png,,,,,,, -/assets/minecraft/textures/items,bow_pulling_0.png,/mods/ITEMS/mcl_bows/textures,mcl_bows_bow_0.png,,,,,,, -/assets/minecraft/textures/items,bow_pulling_1.png,/mods/ITEMS/mcl_bows/textures,mcl_bows_bow_1.png,,,,,,, -/assets/minecraft/textures/items,bow_pulling_2.png,/mods/ITEMS/mcl_bows/textures,mcl_bows_bow_2.png,,,,,,, -/assets/minecraft/textures/items,bow_standby.png,/mods/ITEMS/mcl_bows/textures,mcl_bows_bow.png,,,,,,, -/assets/minecraft/textures/items,egg.png,/mods/ITEMS/mcl_throwing/textures,mcl_throwing_egg.png,,,,,,, -/assets/minecraft/textures/items,ender_pearl.png,/mods/ITEMS/mcl_throwing/textures,mcl_throwing_ender_pearl.png,,,,,,, -/assets/minecraft/textures/items,snowball.png,/mods/ITEMS/mcl_throwing/textures,mcl_throwing_snowball.png,,,,,,, -/assets/minecraft/textures/blocks,tnt_bottom.png,/mods/ITEMS/mcl_tnt/textures,default_tnt_bottom.png,,,,,,, -/assets/minecraft/textures/blocks,tnt_side.png,/mods/ITEMS/mcl_tnt/textures,default_tnt_side.png,,,,,,, -/assets/minecraft/textures/blocks,tnt_top.png,/mods/ITEMS/mcl_tnt/textures,default_tnt_top.png,,,,,,, -/assets/minecraft/textures/items,diamond_axe.png,/mods/ITEMS/mcl_tools/textures,default_tool_diamondaxe.png,,,,,,, -/assets/minecraft/textures/items,diamond_pickaxe.png,/mods/ITEMS/mcl_tools/textures,default_tool_diamondpick.png,,,,,,, -/assets/minecraft/textures/items,diamond_shovel.png,/mods/ITEMS/mcl_tools/textures,default_tool_diamondshovel.png,,,,,,, -/assets/minecraft/textures/items,diamond_sword.png,/mods/ITEMS/mcl_tools/textures,default_tool_diamondsword.png,,,,,,, -/assets/minecraft/textures/items,gold_axe.png,/mods/ITEMS/mcl_tools/textures,default_tool_goldaxe.png,,,,,,, -/assets/minecraft/textures/items,gold_pickaxe.png,/mods/ITEMS/mcl_tools/textures,default_tool_goldpick.png,,,,,,, -/assets/minecraft/textures/items,gold_shovel.png,/mods/ITEMS/mcl_tools/textures,default_tool_goldshovel.png,,,,,,, -/assets/minecraft/textures/items,gold_sword.png,/mods/ITEMS/mcl_tools/textures,default_tool_goldsword.png,,,,,,, -/assets/minecraft/textures/items,shears.png,/mods/ITEMS/mcl_tools/textures,default_tool_shears.png,,,,,,, -/assets/minecraft/textures/items,iron_axe.png,/mods/ITEMS/mcl_tools/textures,default_tool_steelaxe.png,,,,,,, -/assets/minecraft/textures/items,iron_pickaxe.png,/mods/ITEMS/mcl_tools/textures,default_tool_steelpick.png,,,,,,, -/assets/minecraft/textures/items,iron_shovel.png,/mods/ITEMS/mcl_tools/textures,default_tool_steelshovel.png,,,,,,, -/assets/minecraft/textures/items,iron_sword.png,/mods/ITEMS/mcl_tools/textures,default_tool_steelsword.png,,,,,,, -/assets/minecraft/textures/items,stone_axe.png,/mods/ITEMS/mcl_tools/textures,default_tool_stoneaxe.png,,,,,,, -/assets/minecraft/textures/items,stone_pickaxe.png,/mods/ITEMS/mcl_tools/textures,default_tool_stonepick.png,,,,,,, -/assets/minecraft/textures/items,stone_shovel.png,/mods/ITEMS/mcl_tools/textures,default_tool_stoneshovel.png,,,,,,, -/assets/minecraft/textures/items,stone_sword.png,/mods/ITEMS/mcl_tools/textures,default_tool_stonesword.png,,,,,,, -/assets/minecraft/textures/items,wood_axe.png,/mods/ITEMS/mcl_tools/textures,default_tool_woodaxe.png,,,,,,, -/assets/minecraft/textures/items,wood_pickaxe.png,/mods/ITEMS/mcl_tools/textures,default_tool_woodpick.png,,,,,,, -/assets/minecraft/textures/items,wood_shovel.png,/mods/ITEMS/mcl_tools/textures,default_tool_woodshovel.png,,,,,,, -/assets/minecraft/textures/items,wood_sword.png,/mods/ITEMS/mcl_tools/textures,default_tool_woodsword.png,,,,,,, -/assets/minecraft/textures/blocks,torch_on.png,/mods/ITEMS/mcl_torches/textures,default_torch_on_floor_animated.png,,,,,,, -/assets/minecraft/textures/blocks,torch_on.png,/mods/ITEMS/mcl_torches/textures,default_torch_on_floor.png,,,,,,, -/assets/minecraft/textures/blocks,wool_colored_black.png,/mods/ITEMS/mcl_wool/textures,wool_black.png,,,,,,, -/assets/minecraft/textures/blocks,wool_colored_blue.png,/mods/ITEMS/mcl_wool/textures,wool_blue.png,,,,,,, -/assets/minecraft/textures/blocks,wool_colored_brown.png,/mods/ITEMS/mcl_wool/textures,wool_brown.png,,,,,,, -/assets/minecraft/textures/blocks,wool_colored_cyan.png,/mods/ITEMS/mcl_wool/textures,wool_cyan.png,,,,,,, -/assets/minecraft/textures/blocks,wool_colored_gray.png,/mods/ITEMS/mcl_wool/textures,wool_dark_grey.png,,,,,,, -/assets/minecraft/textures/blocks,wool_colored_green.png,/mods/ITEMS/mcl_wool/textures,wool_dark_green.png,,,,,,, -/assets/minecraft/textures/blocks,wool_colored_silver.png,/mods/ITEMS/mcl_wool/textures,wool_grey.png,,,,,,, -/assets/minecraft/textures/blocks,wool_colored_light_blue.png,/mods/ITEMS/mcl_wool/textures,mcl_wool_light_blue.png,,,,,,, -/assets/minecraft/textures/blocks,wool_colored_lime.png,/mods/ITEMS/mcl_wool/textures,mcl_wool_lime.png,,,,,,, -/assets/minecraft/textures/blocks,wool_colored_magenta.png,/mods/ITEMS/mcl_wool/textures,wool_magenta.png,,,,,,, -/assets/minecraft/textures/blocks,wool_colored_orange.png,/mods/ITEMS/mcl_wool/textures,wool_orange.png,,,,,,, -/assets/minecraft/textures/blocks,wool_colored_pink.png,/mods/ITEMS/mcl_wool/textures,wool_pink.png,,,,,,, -/assets/minecraft/textures/blocks,wool_colored_red.png,/mods/ITEMS/mcl_wool/textures,wool_red.png,,,,,,, -/assets/minecraft/textures/blocks,wool_colored_purple.png,/mods/ITEMS/mcl_wool/textures,wool_violet.png,,,,,,, -/assets/minecraft/textures/blocks,wool_colored_white.png,/mods/ITEMS/mcl_wool/textures,wool_white.png,,,,,,, -/assets/minecraft/textures/blocks,wool_colored_yellow.png,/mods/ITEMS/mcl_wool/textures,wool_yellow.png,,,,,,, -/assets/minecraft/textures/items,chainmail_boots.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_boots_chain.png,,,,,,, -/assets/minecraft/textures/items,diamond_boots.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_boots_diamond.png,,,,,,, -/assets/minecraft/textures/items,gold_boots.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_boots_gold.png,,,,,,, -/assets/minecraft/textures/items,iron_boots.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_boots_iron.png,,,,,,, -/assets/minecraft/textures/items,leather_boots.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_boots_leather.png,,,,,,, -/assets/minecraft/textures/items,chainmail_chestplate.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_chestplate_chain.png,,,,,,, -/assets/minecraft/textures/items,diamond_chestplate.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_chestplate_diamond.png,,,,,,, -/assets/minecraft/textures/items,gold_chestplate.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_chestplate_gold.png,,,,,,, -/assets/minecraft/textures/items,iron_chestplate.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_chestplate_iron.png,,,,,,, -/assets/minecraft/textures/items,leather_chestplate.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_chestplate_leather.png,,,,,,, -/assets/minecraft/textures/items,chainmail_helmet.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_helmet_chain.png,,,,,,, -/assets/minecraft/textures/items,diamond_helmet.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_helmet_diamond.png,,,,,,, -/assets/minecraft/textures/items,gold_helmet.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_helmet_gold.png,,,,,,, -/assets/minecraft/textures/items,iron_helmet.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_helmet_iron.png,,,,,,, -/assets/minecraft/textures/items,leather_helmet.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_helmet_leather.png,,,,,,, -/assets/minecraft/textures/items,chainmail_leggings.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_leggings_chain.png,,,,,,, -/assets/minecraft/textures/items,diamond_leggings.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_leggings_diamond.png,,,,,,, -/assets/minecraft/textures/items,gold_leggings.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_leggings_gold.png,,,,,,, -/assets/minecraft/textures/items,iron_leggings.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_leggings_iron.png,,,,,,, -/assets/minecraft/textures/items,leather_leggings.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_leggings_leather.png,,,,,,, -/assets/minecraft/textures/items,wooden_armorstand.png,/mods/ITEMS/mcl_armor_stand/textures,3d_armor_stand_item.png,,,,,,, -/assets/minecraft/textures/blocks,dispenser_front_horizontal.png,/mods/ITEMS/REDSTONE/mcl_dispensers/textures,mcl_dispensers_dispenser_front_horizontal.png,,,,,,, -/assets/minecraft/textures/blocks,dispenser_front_vertical.png,/mods/ITEMS/REDSTONE/mcl_dispensers/textures,mcl_dispensers_dispenser_front_vertical.png,,,,,,, -/assets/minecraft/textures/blocks,dropper_front_horizontal.png,/mods/ITEMS/REDSTONE/mcl_droppers/textures,mcl_droppers_dropper_front_horizontal.png,,,,,,, -/assets/minecraft/textures/blocks,dropper_front_vertical.png,/mods/ITEMS/REDSTONE/mcl_droppers/textures,mcl_droppers_dropper_front_vertical.png,,,,,,, -/assets/minecraft/textures/blocks,observer_back_lit.png,/mods/ITEMS/REDSTONE/mcl_observers/textures,mcl_observers_observer_back_lit.png,,,,,,, -/assets/minecraft/textures/blocks,observer_back.png,/mods/ITEMS/REDSTONE/mcl_observers/textures,mcl_observers_observer_back.png,,,,,,, -/assets/minecraft/textures/blocks,observer_front.png,/mods/ITEMS/REDSTONE/mcl_observers/textures,mcl_observers_observer_front.png,,,,,,, -/assets/minecraft/textures/blocks,observer_side.png,/mods/ITEMS/REDSTONE/mcl_observers/textures,mcl_observers_observer_side.png,,,,,,, -/assets/minecraft/textures/blocks,observer_top.png,/mods/ITEMS/REDSTONE/mcl_observers/textures,mcl_observers_observer_top.png,,,,,,, -/assets/minecraft/textures/items,redstone_dust.png,/mods/ITEMS/REDSTONE/mesecons_wires/textures,redstone_redstone_dust.png,,,,,,, -/assets/minecraft/textures/items,repeater.png,/mods/ITEMS/REDSTONE/mesecons_delayer/textures,mesecons_delayer_item.png,,,,,,, -/assets/minecraft/textures/items,comparator.png,/mods/ITEMS/REDSTONE/mcl_comparators/textures,mcl_comparators_item.png,,,,,,, -/assets/minecraft/textures/blocks,repeater_off.png,/mods/ITEMS/REDSTONE/mesecons_delayer/textures,mesecons_delayer_off.png,,,,,,, -/assets/minecraft/textures/blocks,repeater_on.png,/mods/ITEMS/REDSTONE/mesecons_delayer/textures,mesecons_delayer_on.png,,,,,,, -/assets/minecraft/textures/blocks,noteblock.png,/mods/ITEMS/REDSTONE/mesecons_noteblock/textures,mesecons_noteblock.png,,,,,,, -/assets/minecraft/textures/blocks,command_block_back.png,/mods/ITEMS/REDSTONE/mesecons_commandblock/textures,jeija_commandblock_off.png,,,,,,, -/assets/minecraft/textures/blocks,command_block_back.png,/mods/ITEMS/REDSTONE/mesecons_commandblock/textures,jeija_commandblock_on.png,,,,,,, -/assets/minecraft/textures/blocks,redstone_lamp_off.png,/mods/ITEMS/REDSTONE/mesecons_lightstone/textures,jeija_lightstone_gray_off.png,,,,,,, -/assets/minecraft/textures/blocks,redstone_lamp_on.png,/mods/ITEMS/REDSTONE/mesecons_lightstone/textures,jeija_lightstone_gray_on.png,,,,,,, -/assets/minecraft/textures/blocks,daylight_detector_inverted_top.png,/mods/ITEMS/REDSTONE/mesecons_solarpanel/textures,jeija_solar_panel_inverted.png,,,,,,, -/assets/minecraft/textures/blocks,daylight_detector_top.png,/mods/ITEMS/REDSTONE/mesecons_solarpanel/textures,jeija_solar_panel.png,,,,,,, -/assets/minecraft/textures/blocks,daylight_detector_side.png,/mods/ITEMS/REDSTONE/mesecons_solarpanel/textures,jeija_solar_panel_side.png,,,,,,, -/assets/minecraft/textures/blocks,redstone_torch_off.png,/mods/ITEMS/REDSTONE/mesecons_torch/textures,jeija_torches_off.png,,,,,,, -/assets/minecraft/textures/blocks,redstone_torch_on.png,/mods/ITEMS/REDSTONE/mesecons_torch/textures,jeija_torches_on.png,,,,,,, -/assets/minecraft/textures/blocks,lever.png,/mods/ITEMS/REDSTONE/mesecons_walllever/textures,jeija_wall_lever.png,,,,,,, -/assets/minecraft/textures/blocks,piston_bottom.png,/mods/ITEMS/REDSTONE/mesecons_pistons/textures,mesecons_piston_back.png,,,,,,, -/assets/minecraft/textures/blocks,piston_side.png,/mods/ITEMS/REDSTONE/mesecons_pistons/textures,mesecons_piston_bottom.png,,,,,,, -/assets/minecraft/textures/blocks,piston_inner.png,/mods/ITEMS/REDSTONE/mesecons_pistons/textures,mesecons_piston_on_front.png,,,,,,, -/assets/minecraft/textures/blocks,piston_top_normal.png,/mods/ITEMS/REDSTONE/mesecons_pistons/textures,mesecons_piston_pusher_back.png,,,,,,, -/assets/minecraft/textures/blocks,piston_top_normal.png,/mods/ITEMS/REDSTONE/mesecons_pistons/textures,mesecons_piston_pusher_bottom.png,,,,,,, -/assets/minecraft/textures/blocks,piston_top_normal.png,/mods/ITEMS/REDSTONE/mesecons_pistons/textures,mesecons_piston_pusher_front.png,,,,,,, -/assets/minecraft/textures/blocks,piston_top_sticky.png,/mods/ITEMS/REDSTONE/mesecons_pistons/textures,mesecons_piston_pusher_front_sticky.png,,,,,,, -/assets/minecraft/textures/blocks,piston_top_normal.png,/mods/ITEMS/REDSTONE/mesecons_pistons/textures,mesecons_piston_pusher_left.png,,,,,,, -/assets/minecraft/textures/blocks,piston_top_normal.png,/mods/ITEMS/REDSTONE/mesecons_pistons/textures,mesecons_piston_pusher_right.png,,,,,,, -/assets/minecraft/textures/blocks,piston_top_normal.png,/mods/ITEMS/REDSTONE/mesecons_pistons/textures,mesecons_piston_pusher_top.png,,,,,,, -/assets/minecraft/textures/blocks,redstone_block.png,/mods/ITEMS/REDSTONE/mesecons_torch/textures,redstone_redstone_block.png,,,,,,, -/assets/minecraft/textures/items,sign.png,/mods/ITEMS/mcl_signs/textures,default_sign.png,,,,,,, -/assets/minecraft/textures/blocks,iron_bars.png,/mods/ITEMS/xpanes/textures,xpanes_pane_iron.png,,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_black.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_black.png,,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_blue.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_blue.png,,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_brown.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_brown.png,,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_cyan.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_cyan.png,,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_gray.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_gray.png,,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_green.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_green.png,,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_light_blue.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_light_blue.png,,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_lime.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_lime.png,,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_magenta.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_magenta.png,,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_natural.png,,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_orange.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_orange.png,,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_pink.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_pink.png,,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_purple.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_purple.png,,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_red.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_red.png,,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_silver.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_silver.png,,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_white.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_white.png,,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_yellow.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_yellow.png,,,,,,, -/assets/minecraft/textures/items,totem.png,/mods/ENTITIES/mobs_mc/textures,mcl_totems_totem.png,,,,,,, -/assets/minecraft/textures/entity,bat.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_bat.png,,,,,,, -/assets/minecraft/textures/entity,blaze.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_blaze.png,,,,,,, -/assets/minecraft/textures/entity/cat,black.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_cat_black.png,,,,,,, -/assets/minecraft/textures/entity/cat,ocelot.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_cat_ocelot.png,,,,,,, -/assets/minecraft/textures/entity/cat,red.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_cat_red.png,,,,,,, -/assets/minecraft/textures/entity/cat,siamese.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_cat_siamese.png,,,,,,, -/assets/minecraft/textures/entity/spider,cave_spider.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_cave_spider.png,,,,,,, -/assets/minecraft/textures/entity,chicken.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_chicken.png,,,,,,, -/assets/minecraft/textures/entity/cow,cow.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_cow.png,,,,,,, -/assets/minecraft/textures/entity/creeper,creeper.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_creeper.png,,,,,,, -/assets/minecraft/textures/items,diamond_horse_armor.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_diamond_horse_armor.png,,,,,,, -/assets/minecraft/textures/entity/horse,donkey.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_donkey.png,,,,,,, -/assets/minecraft/textures/entity/enderdragon,dragon.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_dragon.png,,,,,,, -/assets/minecraft/textures/entity/shulker,endergolem.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_endergolem.png,,,,,,, -/assets/minecraft/textures/entity/enderman,enderman_eyes.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_enderman_eyes.png,,,,,,, -/assets/minecraft/textures/entity/enderman,enderman.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_enderman.png,,,,,,, -/assets/minecraft/textures/entity,endermite.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_endermite.png,,,,,,, -/assets/minecraft/textures/entity/ghast,ghast.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_ghast.png,,,,,,, -/assets/minecraft/textures/items,gold_horse_armor.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_gold_horse_armor.png,,,,,,, -/assets/minecraft/textures/entity,guardian_elder.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_guardian_elder.png,,,,,,, -/assets/minecraft/textures/entity,guardian.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_guardian.png,,,,,,, -/assets/minecraft/textures/entity/horse/armor,horse_armor_diamond.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_armor_diamond.png,,,,,,, -/assets/minecraft/textures/entity/horse/armor,horse_armor_gold.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_armor_gold.png,,,,,,, -/assets/minecraft/textures/entity/horse/armor,horse_armor_iron.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_armor_iron.png,,,,,,, -/assets/minecraft/textures/entity/horse,horse_black.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_black.png,,,,,,, -/assets/minecraft/textures/entity/horse,horse_brown.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_brown.png,,,,,,, -/assets/minecraft/textures/entity/horse,horse_chestnut.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_chestnut.png,,,,,,, -/assets/minecraft/textures/entity/horse,horse_darkbrown.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_darkbrown.png,,,,,,, -/assets/minecraft/textures/entity/horse,horse_gray.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_gray.png,,,,,,, -/assets/minecraft/textures/entity/horse,horse_creamy.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_creamy.png,,,,,,, -/assets/minecraft/textures/entity/horse,horse_markings_blackdots.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_markings_blackdots.png,,,,,,, -/assets/minecraft/textures/entity/horse,horse_markings_whitedots.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_markings_whitedots.png,,,,,,, -/assets/minecraft/textures/entity/horse,horse_markings_whitefield.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_markings_whitefield.png,,,,,,, -/assets/minecraft/textures/entity/horse,horse_markings_white.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_markings_white.png,,,,,,, -/assets/minecraft/textures/entity/horse,horse_white.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_white.png,,,,,,, -/assets/minecraft/textures/entity/horse,horse_zombie.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_zombie.png,,,,,,, -/assets/minecraft/textures/entity/zombie,husk.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_husk.png,,,,,,, -/assets/minecraft/textures/entity,iron_golem.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_iron_golem.png,,,,,,, -/assets/minecraft/textures/items,iron_horse_armor.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_iron_horse_armor.png,,,,,,, -/assets/minecraft/textures/entity/slime,magmacube.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_magmacube.png,,,,,,, -/assets/minecraft/textures/entity/cow,mooshroom.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_mooshroom.png,,,,,,, -/assets/minecraft/textures/entity/horse,mule.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_mule.png,,,,,,, -/assets/minecraft/textures/entity/pig,pig.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_pig.png,,,,,,, -/assets/minecraft/textures/entity/pig,pig_saddle.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_pig_saddle.png,,,,,,, -/assets/minecraft/textures/entity/bear,polarbear.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_polarbear.png,,,,,,, -/assets/minecraft/textures/entity/rabbit,black.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_rabbit_black.png,,,,,,, -/assets/minecraft/textures/entity/rabbit,brown.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_rabbit_brown.png,,,,,,, -/assets/minecraft/textures/entity/rabbit,caerbannog.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_rabbit_caerbannog.png,,,,,,, -/assets/minecraft/textures/entity/rabbit,gold.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_rabbit_gold.png,,,,,,, -/assets/minecraft/textures/entity/rabbit,salt.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_rabbit_salt.png,,,,,,, -/assets/minecraft/textures/entity/rabbit,toast.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_rabbit_toast.png,,,,,,, -/assets/minecraft/textures/entity/rabbit,white.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_rabbit_white.png,,,,,,, -/assets/minecraft/textures/entity/rabbit,white_splotched.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_rabbit_white_splotched.png,,,,,,, -/assets/minecraft/textures/entity/sheep,sheep_fur.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_sheep_fur.png,,,,,,, -/assets/minecraft/textures/entity/sheep,sheep.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_sheep.png,,,,,,, -/assets/minecraft/textures/entity/shulker,shulker_black.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_black.png,,,,,,,y -/assets/minecraft/textures/entity/shulker,shulker_blue.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_blue.png,,,,,,,y -/assets/minecraft/textures/entity/shulker,shulker_brown.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_brown.png,,,,,,,y -/assets/minecraft/textures/entity/shulker,shulker_cyan.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_cyan.png,,,,,,,y -/assets/minecraft/textures/entity/shulker,shulker_gray.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_gray.png,,,,,,,y -/assets/minecraft/textures/entity/shulker,shulker_green.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_green.png,,,,,,,y -/assets/minecraft/textures/entity/shulker,shulker_light_blue.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_light_blue.png,,,,,,,y -/assets/minecraft/textures/entity/shulker,shulker_lime.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_lime.png,,,,,,,y -/assets/minecraft/textures/entity/shulker,shulker_magenta.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_magenta.png,,,,,,,y -/assets/minecraft/textures/entity/shulker,shulker_orange.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_orange.png,,,,,,,y -/assets/minecraft/textures/entity/shulker,shulker_pink.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_pink.png,,,,,,,y -/assets/minecraft/textures/entity/shulker,shulker_purple.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_purple.png,,,,,,,y -/assets/minecraft/textures/entity/shulker,shulker_red.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_red.png,,,,,,,y -/assets/minecraft/textures/entity/shulker,shulker_silver.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_silver.png,,,,,,,y -/assets/minecraft/textures/entity/shulker,shulker_white.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_white.png,,,,,,,y -/assets/minecraft/textures/entity/shulker,shulker_yellow.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_yellow.png,,,,,,,y -/assets/minecraft/textures/entity,silverfish.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_silverfish.png,,,,,,, -/assets/minecraft/textures/entity/skeleton,skeleton.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_skeleton.png,,,,,,, -/assets/minecraft/textures/entity/slime,slime.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_slime.png,,,,,,, -/assets/minecraft/textures/entity,snowman.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_snowman.png,,,,,,, -/assets/minecraft/textures/entity,spider_eyes.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_spider_eyes.png,,,,,,, -/assets/minecraft/textures/entity/spider,spider.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_spider.png,,,,,,, -/assets/minecraft/textures/entity,squid.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_squid.png,,,,,,, -/assets/minecraft/textures/entity/skeleton,stray.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_stray.png,,,,,,, -/assets/minecraft/textures/entity/skeleton,stray_overlay.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_stray_overlay.png,,,,,,, -/assets/minecraft/textures/entity/villager,butcher.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_villager_butcher.png,,,,,,, -/assets/minecraft/textures/entity/villager,farmer.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_villager_farmer.png,,,,,,, -/assets/minecraft/textures/entity/villager,librarian.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_villager_librarian.png,,,,,,, -/assets/minecraft/textures/entity/villager,villager.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_villager.png,,,,,,, -/assets/minecraft/textures/entity/villager,priest.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_villager_priest.png,,,,,,, -/assets/minecraft/textures/entity/villager,smith.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_villager_smith.png,,,,,,, -/assets/minecraft/textures/entity/illager,vex.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_vex.png,,,,,,, -/assets/minecraft/textures/entity/illager,vex_charging.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_vex_charging.png,,,,,,, -/assets/minecraft/textures/entity/illager,vindicator.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_vindicator.png,,,,,,, -/assets/minecraft/textures/entity/illager,evoker.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_evoker.png,,,,,,, -/assets/minecraft/textures/entity/illager,illusionist.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_illusionist.png,,,,,,, -/assets/minecraft/textures/entity,witch.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_witch.png,,,,,,, -/assets/minecraft/textures/entity/wither,wither.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_wither.png,,,,,,, -/assets/minecraft/textures/entity/skeleton,wither_skeleton.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_wither_skeleton.png,,,,,,, -/assets/minecraft/textures/entity/wolf,wolf_angry.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_wolf_angry.png,,,,,,, -/assets/minecraft/textures/entity/wolf,wolf_collar.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_wolf_collar.png,,,,,,, -/assets/minecraft/textures/entity/wolf,wolf.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_wolf.png,,,,,,, -/assets/minecraft/textures/entity/wolf,wolf_tame.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_wolf_tame.png,,,,,,, -/assets/minecraft/textures/entity/zombie_villager,zombie_butcher.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_zombie_butcher.png,,,,,,, -/assets/minecraft/textures/entity/zombie_villager,zombie_farmer.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_zombie_farmer.png,,,,,,, -/assets/minecraft/textures/entity/zombie_villager,zombie_librarian.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_zombie_librarian.png,,,,,,, -/assets/minecraft/textures/entity/zombie_villager,zombie_priest.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_zombie_priest.png,,,,,,, -/assets/minecraft/textures/entity/zombie_villager,zombie_smith.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_zombie_smith.png,,,,,,, -/assets/minecraft/textures/entity/zombie_villager,zombie_villager.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_zombie_villager.png,,,,,,, -/assets/minecraft/textures/entity,zombie_pigman.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_zombie_pigman.png,,,,,,, -/assets/minecraft/textures/entity/zombie,zombie.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_zombie.png,,,,,,, -/assets/minecraft/textures/gui,icons.png,/mods/PLAYER/mcl_hunger/textures,hbhunger_bgicon.png,16,27,9,9,0,0,y -/assets/minecraft/textures/gui,icons.png,/mods/PLAYER/mcl_hunger/textures,hbhunger_icon_health_poison.png,88,0,9,9,0,0,y -/assets/minecraft/textures/gui,icons.png,/mods/PLAYER/mcl_hunger/textures,hbhunger_icon.png,52,27,9,9,0,0,y -/assets/minecraft/textures/gui,icons.png,/mods/PLAYER/mcl_hunger/textures,mcl_hunger_icon_foodpoison.png,88,27,9,9,0,0,y -/assets/minecraft/textures/particle,particles.png,/mods/CORE/mcl_particles/textures,mcl_particles_smoke.png,56,0,8,8,0,0,y -/assets/minecraft/textures/blocks,shulker_top_black.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_black_shulker_box_top.png,,,,,,,y -/assets/minecraft/textures/blocks,shulker_top_blue.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_blue_shulker_box_top.png,,,,,,,y -/assets/minecraft/textures/blocks,shulker_top_brown.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_brown_shulker_box_top.png,,,,,,,y -/assets/minecraft/textures/blocks,shulker_top_cyan.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_cyan_shulker_box_top.png,,,,,,,y -/assets/minecraft/textures/blocks,shulker_top_gray.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_dark_grey_shulker_box_top.png,,,,,,,y -/assets/minecraft/textures/blocks,shulker_top_green.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_dark_green_shulker_box_top.png,,,,,,,y -/assets/minecraft/textures/blocks,shulker_top_light_blue.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_lightblue_shulker_box_top.png,,,,,,,y -/assets/minecraft/textures/blocks,shulker_top_lime.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_green_shulker_box_top.png,,,,,,,y -/assets/minecraft/textures/blocks,shulker_top_magenta.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_magenta_shulker_box_top.png,,,,,,,y -/assets/minecraft/textures/blocks,shulker_top_orange.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_orange_shulker_box_top.png,,,,,,,y -/assets/minecraft/textures/blocks,shulker_top_pink.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_pink_shulker_box_top.png,,,,,,,y -/assets/minecraft/textures/blocks,shulker_top_purple.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_violet_shulker_box_top.png,,,,,,,y -/assets/minecraft/textures/blocks,shulker_top_red.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_red_shulker_box_top.png,,,,,,,y -/assets/minecraft/textures/blocks,shulker_top_silver.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_grey_shulker_box_top.png,,,,,,,y -/assets/minecraft/textures/blocks,shulker_top_white.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_white_shulker_box_top.png,,,,,,,y -/assets/minecraft/textures/blocks,shulker_top_yellow.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_yellow_shulker_box_top.png,,,,,,,y -/assets/minecraft/textures/items,flower_pot.png,/mods/ITEMS/mcl_flowerpots/textures,mcl_flowerpots_flowerpot_inventory.png,,,,,,, -/assets/minecraft/textures/blocks,flower_pot.png,/mods/ITEMS/mcl_flowerpots/textures,mcl_flowerpots_flowerpot.png,,,,,,,y -/assets/minecraft/textures/gui,widgets.png,/mods/HUD/mcl_inventory/textures,mcl_inventory_hotbar.png,0,0,182,22,0,0,y -/assets/minecraft/textures/gui,widgets.png,/mods/HUD/mcl_inventory/textures,mcl_inventory_hotbar_selected.png,0,22,24,24,0,0,y -/assets/minecraft/textures/blocks,bed_feet_end.png,/mods/ITEMS/mcl_beds/textures,mcl_beds_bed_side_bottom_red.png,,,,,,, -/assets/minecraft/textures/blocks,bed_feet_side.png,/mods/ITEMS/mcl_beds/textures,mcl_beds_bed_side_bottom_r_red.png,,,,,,, -/assets/minecraft/textures/blocks,bed_feet_top.png,/mods/ITEMS/mcl_beds/textures,mcl_beds_bed_top_bottom_red.png,,,,,,, -/assets/minecraft/textures/blocks,bed_head_end.png,/mods/ITEMS/mcl_beds/textures,mcl_beds_bed_side_bottom_red.png,,,,,,, -/assets/minecraft/textures/blocks,bed_head_side.png,/mods/ITEMS/mcl_beds/textures,mcl_beds_bed_side_top_r_red.png,,,,,,, -/assets/minecraft/textures/blocks,bed_head_top.png,/mods/ITEMS/mcl_beds/textures,mcl_beds_bed_top_top_red.png,,,,,,, -/assets/minecraft/textures/items,compass_00.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_00.png,,,,,,, -/assets/minecraft/textures/items,compass_01.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_01.png,,,,,,, -/assets/minecraft/textures/items,compass_02.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_02.png,,,,,,, -/assets/minecraft/textures/items,compass_03.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_03.png,,,,,,, -/assets/minecraft/textures/items,compass_04.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_04.png,,,,,,, -/assets/minecraft/textures/items,compass_05.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_05.png,,,,,,, -/assets/minecraft/textures/items,compass_06.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_06.png,,,,,,, -/assets/minecraft/textures/items,compass_07.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_07.png,,,,,,, -/assets/minecraft/textures/items,compass_08.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_08.png,,,,,,, -/assets/minecraft/textures/items,compass_09.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_09.png,,,,,,, -/assets/minecraft/textures/items,compass_10.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_10.png,,,,,,, -/assets/minecraft/textures/items,compass_11.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_11.png,,,,,,, -/assets/minecraft/textures/items,compass_12.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_12.png,,,,,,, -/assets/minecraft/textures/items,compass_13.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_13.png,,,,,,, -/assets/minecraft/textures/items,compass_14.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_14.png,,,,,,, -/assets/minecraft/textures/items,compass_15.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_15.png,,,,,,, -/assets/minecraft/textures/items,compass_16.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_16.png,,,,,,, -/assets/minecraft/textures/items,compass_17.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_17.png,,,,,,, -/assets/minecraft/textures/items,compass_18.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_18.png,,,,,,, -/assets/minecraft/textures/items,compass_19.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_19.png,,,,,,, -/assets/minecraft/textures/items,compass_20.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_20.png,,,,,,, -/assets/minecraft/textures/items,compass_21.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_21.png,,,,,,, -/assets/minecraft/textures/items,compass_22.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_22.png,,,,,,, -/assets/minecraft/textures/items,compass_23.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_23.png,,,,,,, -/assets/minecraft/textures/items,compass_24.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_24.png,,,,,,, -/assets/minecraft/textures/items,compass_25.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_25.png,,,,,,, -/assets/minecraft/textures/items,compass_26.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_26.png,,,,,,, -/assets/minecraft/textures/items,compass_27.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_27.png,,,,,,, -/assets/minecraft/textures/items,compass_28.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_28.png,,,,,,, -/assets/minecraft/textures/items,compass_29.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_29.png,,,,,,, -/assets/minecraft/textures/items,compass_30.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_30.png,,,,,,, -/assets/minecraft/textures/items,compass_31.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_31.png,,,,,,, -/assets/minecraft/textures/items,clock_00.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_00.png,,,,,,, -/assets/minecraft/textures/items,clock_01.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_01.png,,,,,,, -/assets/minecraft/textures/items,clock_02.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_02.png,,,,,,, -/assets/minecraft/textures/items,clock_03.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_03.png,,,,,,, -/assets/minecraft/textures/items,clock_04.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_04.png,,,,,,, -/assets/minecraft/textures/items,clock_05.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_05.png,,,,,,, -/assets/minecraft/textures/items,clock_06.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_06.png,,,,,,, -/assets/minecraft/textures/items,clock_07.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_07.png,,,,,,, -/assets/minecraft/textures/items,clock_08.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_08.png,,,,,,, -/assets/minecraft/textures/items,clock_09.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_09.png,,,,,,, -/assets/minecraft/textures/items,clock_10.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_10.png,,,,,,, -/assets/minecraft/textures/items,clock_11.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_11.png,,,,,,, -/assets/minecraft/textures/items,clock_12.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_12.png,,,,,,, -/assets/minecraft/textures/items,clock_13.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_13.png,,,,,,, -/assets/minecraft/textures/items,clock_14.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_14.png,,,,,,, -/assets/minecraft/textures/items,clock_15.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_15.png,,,,,,, -/assets/minecraft/textures/items,clock_16.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_16.png,,,,,,, -/assets/minecraft/textures/items,clock_17.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_17.png,,,,,,, -/assets/minecraft/textures/items,clock_18.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_18.png,,,,,,, -/assets/minecraft/textures/items,clock_19.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_19.png,,,,,,, -/assets/minecraft/textures/items,clock_20.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_20.png,,,,,,, -/assets/minecraft/textures/items,clock_21.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_21.png,,,,,,, -/assets/minecraft/textures/items,clock_22.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_22.png,,,,,,, -/assets/minecraft/textures/items,clock_23.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_23.png,,,,,,, -/assets/minecraft/textures/items,clock_24.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_24.png,,,,,,, -/assets/minecraft/textures/items,clock_25.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_25.png,,,,,,, -/assets/minecraft/textures/items,clock_26.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_26.png,,,,,,, -/assets/minecraft/textures/items,clock_27.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_27.png,,,,,,, -/assets/minecraft/textures/items,clock_28.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_28.png,,,,,,, -/assets/minecraft/textures/items,clock_29.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_29.png,,,,,,, -/assets/minecraft/textures/items,clock_30.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_30.png,,,,,,, -/assets/minecraft/textures/items,clock_31.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_31.png,,,,,,, -/assets/minecraft/textures/items,clock_32.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_32.png,,,,,,, -/assets/minecraft/textures/items,clock_33.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_33.png,,,,,,, -/assets/minecraft/textures/items,clock_34.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_34.png,,,,,,, -/assets/minecraft/textures/items,clock_35.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_35.png,,,,,,, -/assets/minecraft/textures/items,clock_36.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_36.png,,,,,,, -/assets/minecraft/textures/items,clock_37.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_37.png,,,,,,, -/assets/minecraft/textures/items,clock_38.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_38.png,,,,,,, -/assets/minecraft/textures/items,clock_39.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_39.png,,,,,,, -/assets/minecraft/textures/items,clock_40.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_40.png,,,,,,, -/assets/minecraft/textures/items,clock_41.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_41.png,,,,,,, -/assets/minecraft/textures/items,clock_42.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_42.png,,,,,,, -/assets/minecraft/textures/items,clock_43.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_43.png,,,,,,, -/assets/minecraft/textures/items,clock_44.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_44.png,,,,,,, -/assets/minecraft/textures/items,clock_45.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_45.png,,,,,,, -/assets/minecraft/textures/items,clock_46.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_46.png,,,,,,, -/assets/minecraft/textures/items,clock_47.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_47.png,,,,,,, -/assets/minecraft/textures/items,clock_48.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_48.png,,,,,,, -/assets/minecraft/textures/items,clock_49.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_49.png,,,,,,, -/assets/minecraft/textures/items,clock_50.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_50.png,,,,,,, -/assets/minecraft/textures/items,clock_51.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_51.png,,,,,,, -/assets/minecraft/textures/items,clock_52.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_52.png,,,,,,, -/assets/minecraft/textures/items,clock_53.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_53.png,,,,,,, -/assets/minecraft/textures/items,clock_54.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_54.png,,,,,,, -/assets/minecraft/textures/items,clock_55.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_55.png,,,,,,, -/assets/minecraft/textures/items,clock_56.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_56.png,,,,,,, -/assets/minecraft/textures/items,clock_57.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_57.png,,,,,,, -/assets/minecraft/textures/items,clock_58.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_58.png,,,,,,, -/assets/minecraft/textures/items,clock_59.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_59.png,,,,,,, -/assets/minecraft/textures/items,clock_60.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_60.png,,,,,,, -/assets/minecraft/textures/items,clock_61.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_61.png,,,,,,, -/assets/minecraft/textures/items,clock_62.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_62.png,,,,,,, -/assets/minecraft/textures/items,clock_63.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock_63.png,,,,,,, -/assets/minecraft/textures/items,empty_armor_slot_boots.png,/mods/HUD/mcl_inventory/textures,mcl_inventory_empty_armor_slot_boots.png,,,,,,, -/assets/minecraft/textures/items,empty_armor_slot_chestplate.png,/mods/HUD/mcl_inventory/textures,mcl_inventory_empty_armor_slot_chestplate.png,,,,,,, -/assets/minecraft/textures/items,empty_armor_slot_helmet.png,/mods/HUD/mcl_inventory/textures,mcl_inventory_empty_armor_slot_helmet.png,,,,,,, -/assets/minecraft/textures/items,empty_armor_slot_leggings.png,/mods/HUD/mcl_inventory/textures,mcl_inventory_empty_armor_slot_leggings.png,,,,,,, -/assets/minecraft/textures/items,empty_armor_slot_shield.png,/mods/HUD/mcl_inventory/textures,mcl_inventory_empty_armor_slot_shield.png,,,,,,, -/assets/minecraft/textures/items,knowledge_book.png,/mods/HELP/mcl_craftguide/textures,craftguide_book.png,,,,,,, -/assets/minecraft/textures/blocks,redstone_dust_dot.png,/mods/ITEMS/REDSTONE/mesecons_wires/textures,redstone_redstone_dust_dot.png,,,,,,, -/assets/minecraft/textures/blocks,redstone_dust_line0.png,/mods/ITEMS/REDSTONE/mesecons_wires/textures,redstone_redstone_dust_line0.png,,,,,,, -/assets/minecraft/textures/blocks,redstone_dust_line1.png,/mods/ITEMS/REDSTONE/mesecons_wires/textures,redstone_redstone_dust_line1.png,,,,,,, -/assets/minecraft/textures/blocks,pumpkin_stem_connected.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_pumpkin_stem_connected.png,,,,,,, -/assets/minecraft/textures/blocks,melon_stem_connected.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_melon_stem_connected.png,,,,,,, -/assets/minecraft/textures/blocks,pumpkin_stem_disconnected.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_pumpkin_stem_disconnected.png,,,,,,, -/assets/minecraft/textures/blocks,melon_stem_disconnected.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_melon_stem_disconnected.png,,,,,,, -/assets/minecraft/textures/blocks,planks_acacia.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_acacia.png,,,,,,, -/assets/minecraft/textures/blocks,planks_big_oak.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_big_oak.png,,,,,,, -/assets/minecraft/textures/blocks,planks_birch.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_birch.png,,,,,,, -/assets/minecraft/textures/blocks,planks_jungle.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_jungle.png,,,,,,, -/assets/minecraft/textures/blocks,planks_oak.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_oak.png,,,,,,, -/assets/minecraft/textures/blocks,planks_spruce.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_spruce.png,,,,,,, -/assets/minecraft/textures/blocks,planks_acacia.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_gate_acacia.png,,,,,,, -/assets/minecraft/textures/blocks,planks_big_oak.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_gate_big_oak.png,,,,,,, -/assets/minecraft/textures/blocks,planks_birch.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_gate_birch.png,,,,,,, -/assets/minecraft/textures/blocks,planks_jungle.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_gate_jungle.png,,,,,,, -/assets/minecraft/textures/blocks,planks_oak.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_gate_oak.png,,,,,,, -/assets/minecraft/textures/blocks,planks_spruce.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_gate_spruce.png,,,,,,, -/assets/minecraft/textures/blocks,nether_brick.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_nether_brick.png,,,,,,, -/assets/minecraft/textures/blocks,fence_acacia.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_acacia.png,,,,,,, -/assets/minecraft/textures/blocks,fence_big_oak.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_big_oak.png,,,,,,, -/assets/minecraft/textures/blocks,fence_birch.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_birch.png,,,,,,, -/assets/minecraft/textures/blocks,fence_jungle.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_jungle.png,,,,,,, -/assets/minecraft/textures/blocks,fence_nether_brick.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_nether_brick.png,,,,,,, -/assets/minecraft/textures/blocks,fence_oak.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_oak.png,,,,,,, -/assets/minecraft/textures/blocks,fence_spruce.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_spruce.png,,,,,,, -/assets/minecraft/textures/blocks,fence_gate_acacia.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_gate_acacia.png,,,,,,, -/assets/minecraft/textures/blocks,fence_gate_big_oak.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_gate_big_oak.png,,,,,,, -/assets/minecraft/textures/blocks,fence_gate_birch.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_gate_birch.png,,,,,,, -/assets/minecraft/textures/blocks,fence_gate_jungle.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_gate_jungle.png,,,,,,, -/assets/minecraft/textures/blocks,fence_gate_oak.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_gate_oak.png,,,,,,, -/assets/minecraft/textures/blocks,fence_gate_spruce.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_gate_spruce.png,,,,,,, -/assets/minecraft/textures/entity,sign.png,/mods/ITEMS/mcl_signs/textures,mcl_signs_sign.png,,,,,,, -/assets/minecraft/textures/entity,banner_base.png,/mods/ITEMS/mcl_banners/textures,mcl_banners_banner_base.png,,,,,,, -/assets/minecraft/textures/entity/banner,base.png,/mods/ITEMS/mcl_banners/textures,mcl_banners_base.png,,,,,,, -/assets/minecraft/textures/blocks,planks_oak.png,/mods/ITEMS/mcl_banners/textures,mcl_banners_fallback_wood.png,,,,,,, -/assets/minecraft/textures/items,banner_base.png,/mods/ITEMS/mcl_banners/textures,mcl_banners_item_base.png,,,,,,, -/assets/minecraft/textures/items,banner_overlay.png,/mods/ITEMS/mcl_banners/textures,mcl_banners_item_overlay.png,,,,,,, -/assets/minecraft/textures/blocks,portal.png,/mods/ITEMS/mcl_portals/textures,mcl_portals_portal.png,,,,,,, -/assets/minecraft/textures/entity,end_portal.png,/mods/ITEMS/mcl_portals/textures,mcl_portals_end_portal.png,,,,,,, -/assets/minecraft/textures/environment,end_sky.png,/mods/PLAYER/mcl_playerplus/textures,mcl_playerplus_end_sky.png,,,,,,, -/assets/minecraft/textures/entity/chest,normal.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_normal.png,,,,,,, -/assets/minecraft/textures/entity/chest,normal_double.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_normal_double.png,,,,,,, -/assets/minecraft/textures/entity/chest,trapped.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_trapped.png,,,,,,, -/assets/minecraft/textures/entity/chest,trapped_double.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_trapped_double.png,,,,,,, -/assets/minecraft/textures/entity/chest,ender.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_ender.png,,,,,,, -/assets/minecraft/textures/blocks,endframe_top.png,/mods/ITEMS/mcl_portals/textures,mcl_portals_endframe_top.png,,,,,,, -/assets/minecraft/textures/blocks,endframe_side.png,/mods/ITEMS/mcl_portals/textures,mcl_portals_endframe_side.png,,,,,,, -/assets/minecraft/textures/blocks,endframe_eye.png,/mods/ITEMS/mcl_portals/textures,mcl_portals_endframe_eye.png,,,,,,, -/assets/minecraft/textures/blocks,end_stone.png,/mods/ITEMS/mcl_portals/textures,mcl_portals_endframe_bottom.png,,,,,,, -/assets/minecraft/textures/blocks,red_nether_brick.png,,mcl_fences_fence_red_nether_brick.png,,,,,,, -/assets/minecraft/textures/blocks,red_nether_brick.png,,mcl_fences_fence_gate_red_nether_brick.png,,,,,,, -/assets/minecraft/textures/blocks,nether_brick.png,,mcl_fences_fence_gate_nether_brick.png,,,,,,, -/assets/minecraft/textures/blocks,stonebrick_carved.png,,mcl_supplemental_stonebrick_carved_slab.png,,,,,,, -/assets/minecraft/textures/blocks,cobblestone.png,/mods/ITEMS/mcl_walls/textures,mcl_walls_cobble_wall_top.png,,,,,,, -/assets/minecraft/textures/blocks,cobblestone.png,/mods/ITEMS/mcl_walls/textures,mcl_walls_cobble_wall_side.png,,,,,,, -/assets/minecraft/textures/blocks,cobblestone_mossy.png,/mods/ITEMS/mcl_walls/textures,mcl_walls_cobble_mossy_wall_top.png,,,,,,, -/assets/minecraft/textures/blocks,cobblestone_mossy.png,/mods/ITEMS/mcl_walls/textures,mcl_walls_cobble_mossy_wall_side.png,,,,,,, -/assets/minecraft/textures/blocks,grass_top.png,/mods/ITEMS/mcl_core/textures,mcl_core_grass_block_top.png,,,,,,, -/assets/minecraft/textures/blocks,grass_side_overlay.png,/mods/ITEMS/mcl_core/textures,mcl_core_grass_block_side_overlay.png,,,,,,, -/assets/minecraft/textures/items,book_enchanted.png,/mods/ITEMS/mcl_enchanting/textures,mcl_enchanting_book_enchanted.png,,,,,,, -/assets/minecraft/textures/items,experience_bottle.png,/mods/HUD/mcl_experience/textures,mcl_experience_bottle.png,,,,,,, +Source path,Source file,Target file,xs,ys,xl,yl,xt,yt,Blacklisted? +/assets/minecraft/textures/particle,particles.png,mcl_particles_bubble.png,0,16,8,8,0,0,y +/assets/minecraft/textures/gui,icons.png,hbarmor_icon.png,34,9,9,9,0,0,y +/assets/minecraft/textures/gui,icons.png,hbarmor_bgicon.png,16,9,9,9,0,0,y +/assets/minecraft/textures/gui,icons.png,hudbars_icon_health.png,52,0,9,9,0,0,y +/assets/minecraft/textures/gui,icons.png,hudbars_bgicon_health.png,16,0,9,9,0,0,y +/assets/minecraft/textures/gui,icons.png,hudbars_icon_breath.png,16,18,9,9,0,0,y +/assets/minecraft/textures/gui,icons.png,heart.png,52,0,9,9,0,0,y +/assets/minecraft/textures/gui,icons.png,bubble.png,16,18,9,9,0,0,y +/assets/minecraft/textures/item,bucket.png,mcl_buckets_bucket.png,,,,,,, +/assets/minecraft/textures/item,water_bucket.png,mcl_buckets_water_bucket.png,,,,,,, +/assets/minecraft/textures/item,water_bucket.png,mcl_buckets_river_water_bucket.png,,,,,,, +/assets/minecraft/textures/item,axolotl_bucket.png,mcl_buckets_axolotl_bucket.png,,,,,,, +/assets/minecraft/textures/item,cod_bucket.png,mcl_buckets_cod_bucket.png,,,,,,, +/assets/minecraft/textures/item,pufferfish_bucket.png,mcl_buckets_pufferfish_bucket.png,,,,,,, +/assets/minecraft/textures/item,salmon_bucket.png,mcl_buckets_salmon_bucket.png,,,,,,, +/assets/minecraft/textures/item,tropical_fish_bucket.png,mcl_buckets_tropical_fish_bucket.png,,,,,,, +/assets/minecraft/textures/item,lava_bucket.png,mcl_buckets_lava_bucket.png,,,,,,, +/assets/minecraft/textures/item,milk_bucket.png,mcl_mobitems_bucket_milk.png,,,,,,, +/assets/minecraft/textures/block,anvil.png,mcl_anvils_anvil_base.png,,,,,,, +/assets/minecraft/textures/block,anvil.png,mcl_anvils_anvil_side.png,,,,,,, +/assets/minecraft/textures/block,anvil_top.png,mcl_anvils_anvil_top_damaged_0.png,,,,,,, +/assets/minecraft/textures/block,chipped_anvil_top.png,mcl_anvils_anvil_top_damaged_1.png,,,,,,, +/assets/minecraft/textures/block,damaged_anvil_top.png,mcl_anvils_anvil_top_damaged_2.png,,,,,,, +/assets/minecraft/textures/item,name_tag.png,mobs_nametag.png,,,,,,, +/assets/minecraft/textures/gui,icons.png,mobs_blood.png,16,0,9,9,0,0,y +/assets/minecraft/textures/entity/bed,red.png,mcl_beds_bed_red.png,,,,,,, +/assets/minecraft/textures/item,acacia_boat.png,mcl_boats_acacia_boat.png,,,,,,, +/assets/minecraft/textures/item,oak_boat.png,mcl_boats_oak_boat.png,,,,,,, +/assets/minecraft/textures/item,spruce_boat.png,mcl_boats_spruce_boat.png,,,,,,, +/assets/minecraft/textures/item,dark_oak_boat.png,mcl_boats_dark_oak_boat.png,,,,,,, +/assets/minecraft/textures/item,jungle_boat.png,mcl_boats_jungle_boat.png,,,,,,, +/assets/minecraft/textures/item,birch_boat.png,mcl_boats_birch_boat.png,,,,,,, +/assets/minecraft/textures/item,cherry_boat.png,mcl_boats_cherry_boat.png,,,,,,, +/assets/minecraft/textures/item,mangrove_boat.png,mcl_boats_mangrove_boat.png,,,,,,, +/assets/minecraft/textures/item,acacia_chest_boat.png,mcl_boats_acacia_chest_boat.png,,,,,,, +/assets/minecraft/textures/item,birch_chest_boat.png,mcl_boats_birch_chest_boat.png,,,,,,, +/assets/minecraft/textures/item,cherry_chest_boat.png,mcl_boats_cherry_chest_boat.png,,,,,,, +/assets/minecraft/textures/item,dark_oak_chest_boat.png,mcl_boats_dark_oak_chest_boat.png,,,,,,, +/assets/minecraft/textures/item,jungle_chest_boat.png,mcl_boats_jungle_chest_boat.png,,,,,,, +/assets/minecraft/textures/item,mangrove_chest_boat.png,mcl_boats_mangrove_chest_boat.png,,,,,,, +/assets/minecraft/textures/item,oak_chest_boat.png,mcl_boats_oak_chest_boat.png,,,,,,, +/assets/minecraft/textures/item,spruce_chest_boat.png,mcl_boats_spruce_chest_boat.png,,,,,,, +/assets/minecraft/textures/entity/boat,acacia.png,mcl_boats_texture_acacia_boat.png,,,,,,, +/assets/minecraft/textures/entity/boat,oak.png,mcl_boats_texture_oak_boat.png,,,,,,, +/assets/minecraft/textures/entity/boat,dark_oak.png,mcl_boats_texture_dark_oak_boat.png,,,,,,, +/assets/minecraft/textures/entity/boat,spruce.png,mcl_boats_texture_spruce_boat.png,,,,,,, +/assets/minecraft/textures/entity/boat,birch.png,mcl_boats_texture_birch_boat.png,,,,,,, +/assets/minecraft/textures/entity/boat,jungle.png,mcl_boats_texture_jungle_boat.png,,,,,,, +/assets/minecraft/textures/entity/boat,mangrove.png,mcl_boats_texture_mangrove_boat.png,,,,,,, +/assets/minecraft/textures/entity/boat,cherry.png,mcl_boats_texture_cherry_boat.png,,,,,,, +/assets/minecraft/textures/block,enchanting_table_bottom.png,mcl_enchanting_table_bottom.png,,,,,,, +/assets/minecraft/textures/block,enchanting_table_side.png,mcl_enchanting_table_side.png,,,,,,, +/assets/minecraft/textures/block,enchanting_table_top.png,mcl_enchanting_table_top.png,,,,,,, +/assets/minecraft/textures/item,book.png,default_book.png,,,,,,, +/assets/minecraft/textures/block,bookshelf.png,default_bookshelf.png,,,,,,, +/assets/minecraft/textures/item,writable_book.png,mcl_books_book_writable.png,,,,,,, +/assets/minecraft/textures/item,written_book.png,mcl_books_book_written.png,,,,,,, +/assets/minecraft/textures/item,cake.png,cake.png,,,,,,, +/assets/minecraft/textures/block,cake_bottom.png,cake_bottom.png,,,,,,, +/assets/minecraft/textures/block,cake_top.png,cake_top.png,,,,,,, +/assets/minecraft/textures/block,cake_side.png,cake_side.png,,,,,,, +/assets/minecraft/textures/block,cake_inner.png,cake_inner.png,,,,,,, +/assets/minecraft/textures/item,cauldron.png,mcl_cauldrons_cauldron.png,,,,,,, +/assets/minecraft/textures/block,cauldron_bottom.png,mcl_cauldrons_cauldron_bottom.png,,,,,,, +/assets/minecraft/textures/block,cauldron_top.png,mcl_cauldrons_cauldron_top.png,,,,,,, +/assets/minecraft/textures/block,cauldron_side.png,mcl_cauldrons_cauldron_side.png,,,,,,, +/assets/minecraft/textures/block,cauldron_inner.png,mcl_cauldrons_cauldron_inner.png,,,,,,, +/assets/minecraft/textures/item,cocoa_beans.png,mcl_cocoas_cocoa_beans.png,,,,,,, +/assets/minecraft/textures/block,cocoa_stage0.png,mcl_cocoas_cocoa_stage_0.png,,,,,,, +/assets/minecraft/textures/block,cocoa_stage1.png,mcl_cocoas_cocoa_stage_1.png,,,,,,, +/assets/minecraft/textures/block,cocoa_stage2.png,mcl_cocoas_cocoa_stage_2.png,,,,,,, +/assets/minecraft/textures/block,terracotta.png,hardened_clay.png,,,,,,, +/assets/minecraft/textures/block,black_terracotta.png,hardened_clay_stained_black.png,,,,,,, +/assets/minecraft/textures/block,blue_terracotta.png,hardened_clay_stained_blue.png,,,,,,, +/assets/minecraft/textures/block,brown_terracotta.png,hardened_clay_stained_brown.png,,,,,,, +/assets/minecraft/textures/block,cyan_terracotta.png,hardened_clay_stained_cyan.png,,,,,,, +/assets/minecraft/textures/block,gray_terracotta.png,hardened_clay_stained_grey.png,,,,,,, +/assets/minecraft/textures/block,green_terracotta.png,hardened_clay_stained_green.png,,,,,,, +/assets/minecraft/textures/block,light_blue_terracotta.png,hardened_clay_stained_light_blue.png,,,,,,, +/assets/minecraft/textures/block,lime_terracotta.png,hardened_clay_stained_lime.png,,,,,,, +/assets/minecraft/textures/block,magenta_terracotta.png,hardened_clay_stained_magenta.png,,,,,,, +/assets/minecraft/textures/block,orange_terracotta.png,hardened_clay_stained_orange.png,,,,,,, +/assets/minecraft/textures/block,pink_terracotta.png,hardened_clay_stained_pink.png,,,,,,, +/assets/minecraft/textures/block,purple_terracotta.png,hardened_clay_stained_purple.png,,,,,,, +/assets/minecraft/textures/block,red_terracotta.png,hardened_clay_stained_red.png,,,,,,, +/assets/minecraft/textures/block,light_gray_terracotta.png,hardened_clay_stained_silver.png,,,,,,, +/assets/minecraft/textures/block,white_terracotta.png,hardened_clay_stained_white.png,,,,,,, +/assets/minecraft/textures/block,yellow_terracotta.png,hardened_clay_stained_yellow.png,,,,,,, +/assets/minecraft/textures/block,black_concrete.png,mcl_colorblocks_concrete_black.png,,,,,,, +/assets/minecraft/textures/block,blue_concrete.png,mcl_colorblocks_concrete_blue.png,,,,,,, +/assets/minecraft/textures/block,brown_concrete.png,mcl_colorblocks_concrete_brown.png,,,,,,, +/assets/minecraft/textures/block,cyan_concrete.png,mcl_colorblocks_concrete_cyan.png,,,,,,, +/assets/minecraft/textures/block,gray_concrete.png,mcl_colorblocks_concrete_grey.png,,,,,,, +/assets/minecraft/textures/block,green_concrete.png,mcl_colorblocks_concrete_green.png,,,,,,, +/assets/minecraft/textures/block,light_blue_concrete.png,mcl_colorblocks_concrete_light_blue.png,,,,,,, +/assets/minecraft/textures/block,lime_concrete.png,mcl_colorblocks_concrete_lime.png,,,,,,, +/assets/minecraft/textures/block,magenta_concrete.png,mcl_colorblocks_concrete_magenta.png,,,,,,, +/assets/minecraft/textures/block,orange_concrete.png,mcl_colorblocks_concrete_orange.png,,,,,,, +/assets/minecraft/textures/block,pink_concrete.png,mcl_colorblocks_concrete_pink.png,,,,,,, +/assets/minecraft/textures/block,purple_concrete.png,mcl_colorblocks_concrete_purple.png,,,,,,, +/assets/minecraft/textures/block,red_concrete.png,mcl_colorblocks_concrete_red.png,,,,,,, +/assets/minecraft/textures/block,light_gray_concrete.png,mcl_colorblocks_concrete_silver.png,,,,,,, +/assets/minecraft/textures/block,white_concrete.png,mcl_colorblocks_concrete_white.png,,,,,,, +/assets/minecraft/textures/block,yellow_concrete.png,mcl_colorblocks_concrete_yellow.png,,,,,,, +/assets/minecraft/textures/block,black_concrete_powder.png,mcl_colorblocks_concrete_powder_black.png,,,,,,, +/assets/minecraft/textures/block,blue_concrete_powder.png,mcl_colorblocks_concrete_powder_blue.png,,,,,,, +/assets/minecraft/textures/block,brown_concrete_powder.png,mcl_colorblocks_concrete_powder_brown.png,,,,,,, +/assets/minecraft/textures/block,cyan_concrete_powder.png,mcl_colorblocks_concrete_powder_cyan.png,,,,,,, +/assets/minecraft/textures/block,gray_concrete_powder.png,mcl_colorblocks_concrete_powder_grey.png,,,,,,, +/assets/minecraft/textures/block,green_concrete_powder.png,mcl_colorblocks_concrete_powder_green.png,,,,,,, +/assets/minecraft/textures/block,light_blue_concrete_powder.png,mcl_colorblocks_concrete_powder_light_blue.png,,,,,,, +/assets/minecraft/textures/block,lime_concrete_powder.png,mcl_colorblocks_concrete_powder_lime.png,,,,,,, +/assets/minecraft/textures/block,magenta_concrete_powder.png,mcl_colorblocks_concrete_powder_magenta.png,,,,,,, +/assets/minecraft/textures/block,orange_concrete_powder.png,mcl_colorblocks_concrete_powder_orange.png,,,,,,, +/assets/minecraft/textures/block,pink_concrete_powder.png,mcl_colorblocks_concrete_powder_pink.png,,,,,,, +/assets/minecraft/textures/block,purple_concrete_powder.png,mcl_colorblocks_concrete_powder_purple.png,,,,,,, +/assets/minecraft/textures/block,red_concrete_powder.png,mcl_colorblocks_concrete_powder_red.png,,,,,,, +/assets/minecraft/textures/block,light_gray_concrete_powder.png,mcl_colorblocks_concrete_powder_silver.png,,,,,,, +/assets/minecraft/textures/block,white_concrete_powder.png,mcl_colorblocks_concrete_powder_white.png,,,,,,, +/assets/minecraft/textures/block,yellow_concrete_powder.png,mcl_colorblocks_concrete_powder_yellow.png,,,,,,, +/assets/minecraft/textures/block,black_glazed_terracotta.png,mcl_colorblocks_glazed_terracotta_black.png,,,,,,, +/assets/minecraft/textures/block,blue_glazed_terracotta.png,mcl_colorblocks_glazed_terracotta_blue.png,,,,,,, +/assets/minecraft/textures/block,brown_glazed_terracotta.png,mcl_colorblocks_glazed_terracotta_brown.png,,,,,,, +/assets/minecraft/textures/block,cyan_glazed_terracotta.png,mcl_colorblocks_glazed_terracotta_cyan.png,,,,,,, +/assets/minecraft/textures/block,gray_glazed_terracotta.png,mcl_colorblocks_glazed_terracotta_grey.png,,,,,,, +/assets/minecraft/textures/block,green_glazed_terracotta.png,mcl_colorblocks_glazed_terracotta_green.png,,,,,,, +/assets/minecraft/textures/block,light_blue_glazed_terracotta.png,mcl_colorblocks_glazed_terracotta_light_blue.png,,,,,,, +/assets/minecraft/textures/block,lime_glazed_terracotta.png,mcl_colorblocks_glazed_terracotta_lime.png,,,,,,, +/assets/minecraft/textures/block,magenta_glazed_terracotta.png,mcl_colorblocks_glazed_terracotta_magenta.png,,,,,,, +/assets/minecraft/textures/block,orange_glazed_terracotta.png,mcl_colorblocks_glazed_terracotta_orange.png,,,,,,, +/assets/minecraft/textures/block,pink_glazed_terracotta.png,mcl_colorblocks_glazed_terracotta_pink.png,,,,,,, +/assets/minecraft/textures/block,purple_glazed_terracotta.png,mcl_colorblocks_glazed_terracotta_purple.png,,,,,,, +/assets/minecraft/textures/block,red_glazed_terracotta.png,mcl_colorblocks_glazed_terracotta_red.png,,,,,,, +/assets/minecraft/textures/block,light_gray_glazed_terracotta.png,mcl_colorblocks_glazed_terracotta_silver.png,,,,,,, +/assets/minecraft/textures/block,white_glazed_terracotta.png,mcl_colorblocks_glazed_terracotta_white.png,,,,,,, +/assets/minecraft/textures/block,yellow_glazed_terracotta.png,mcl_colorblocks_glazed_terracotta_yellow.png,,,,,,, +/assets/minecraft/textures/block,cherry_sapling.png,mcl_cherry_blossom_sapling.png,,,,,,, +/assets/minecraft/textures/block,oak_sapling.png,default_sapling.png,,,,,,, +/assets/minecraft/textures/block,acacia_sapling.png,default_acacia_sapling.png,,,,,,, +/assets/minecraft/textures/block,spruce_sapling.png,mcl_core_sapling_spruce.png,,,,,,, +/assets/minecraft/textures/block,jungle_sapling.png,default_junglesapling.png,,,,,,, +/assets/minecraft/textures/block,dark_oak_sapling.png,mcl_core_sapling_big_oak.png,,,,,,, +/assets/minecraft/textures/block,birch_sapling.png,mcl_core_sapling_birch.png,,,,,,, +/assets/minecraft/textures/block,mangrove_propagule.png,mcl_mangrove_propagule.png,,,,,,, +/assets/minecraft/textures/block,mangrove_propagule_hanging.png,mcl_mangrove_propagule_hanging.png,,,,,,, +/assets/minecraft/textures/item,mangrove_propagule.png,mcl_mangrove_propagule_item.png,,,,,,, +/assets/minecraft/textures/block,crimson_fungus.png,mcl_crimson_crimson_fungus.png,,,,,,, +/assets/minecraft/textures/block,warped_fungus.png,mcl_crimson_warped_fungus.png,,,,,,, +/assets/minecraft/textures/item,bamboo.png,mcl_bamboo_bamboo_shoot.png,,,,,,, +/assets/minecraft/textures/item,apple.png,default_apple.png,,,,,,, +/assets/minecraft/textures/item,golden_apple.png,mcl_core_apple_golden.png,,,,,,, +/assets/minecraft/textures/block,bricks.png,default_brick.png,,,,,,, +/assets/minecraft/textures/block,cactus_side.png,mcl_core_cactus_side.png,,,,,,, +/assets/minecraft/textures/block,cactus_top.png,mcl_core_cactus_top.png,,,,,,, +/assets/minecraft/textures/block,cactus_bottom.png,mcl_core_cactus_bottom.png,,,,,,, +/assets/minecraft/textures/item,brick.png,default_clay_brick.png,,,,,,, +/assets/minecraft/textures/item,clay_ball.png,default_clay_lump.png,,,,,,, +/assets/minecraft/textures/block,clay.png,default_clay.png,,,,,,, +/assets/minecraft/textures/block,coal_block.png,default_coal_block.png,,,,,,, +/assets/minecraft/textures/item,coal.png,default_coal_lump.png,,,,,,, +/assets/minecraft/textures/block,cobblestone.png,default_cobble.png,,,,,,, +/assets/minecraft/textures/block,diamond_block.png,default_diamond_block.png,,,,,,, +/assets/minecraft/textures/item,diamond.png,default_diamond.png,,,,,,, +/assets/minecraft/textures/block,dirt.png,default_dirt.png,,,,,,, +/assets/minecraft/textures/block,dead_bush.png,default_dry_shrub.png,,,,,,, +/assets/minecraft/textures/item,flint.png,default_flint.png,,,,,,, +/assets/minecraft/textures/block,glass.png,default_glass.png,,,,,,, +/assets/minecraft/textures/block,black_stained_glass.png,mcl_core_glass_black.png,,,,,,, +/assets/minecraft/textures/block,blue_stained_glass.png,mcl_core_glass_blue.png,,,,,,, +/assets/minecraft/textures/block,brown_stained_glass.png,mcl_core_glass_brown.png,,,,,,, +/assets/minecraft/textures/block,cyan_stained_glass.png,mcl_core_glass_cyan.png,,,,,,, +/assets/minecraft/textures/block,gray_stained_glass.png,mcl_core_glass_gray.png,,,,,,, +/assets/minecraft/textures/block,green_stained_glass.png,mcl_core_glass_green.png,,,,,,, +/assets/minecraft/textures/block,light_blue_stained_glass.png,mcl_core_glass_light_blue.png,,,,,,, +/assets/minecraft/textures/block,lime_stained_glass.png,mcl_core_glass_lime.png,,,,,,, +/assets/minecraft/textures/block,magenta_stained_glass.png,mcl_core_glass_magenta.png,,,,,,, +/assets/minecraft/textures/block,orange_stained_glass.png,mcl_core_glass_orange.png,,,,,,, +/assets/minecraft/textures/block,pink_stained_glass.png,mcl_core_glass_pink.png,,,,,,, +/assets/minecraft/textures/block,purple_stained_glass.png,mcl_core_glass_purple.png,,,,,,, +/assets/minecraft/textures/block,red_stained_glass.png,mcl_core_glass_red.png,,,,,,, +/assets/minecraft/textures/block,light_gray_stained_glass.png,mcl_core_glass_silver.png,,,,,,, +/assets/minecraft/textures/block,white_stained_glass.png,mcl_core_glass_white.png,,,,,,, +/assets/minecraft/textures/block,yellow_stained_glass.png,mcl_core_glass_yellow.png,,,,,,, +/assets/minecraft/textures/block,gold_block.png,default_gold_block.png,,,,,,, +/assets/minecraft/textures/block,gold_block.png,mcl_stairs_gold_block_slab.png,,,,,,, +/assets/minecraft/textures/item,gold_ingot.png,default_gold_ingot.png,,,,,,, +/assets/minecraft/textures/item,gold_nugget.png,mcl_core_gold_nugget.png,,,,,,, +/assets/minecraft/textures/block,netherite_block.png,mcl_nether_netheriteblock.png,,,,,,, +/assets/minecraft/textures/item,netherite_ingot.png,mcl_nether_netherite_ingot.png,,,,,,, +/assets/minecraft/textures/item,netherite_scrap.png,mcl_nether_netherite_scrap.png,,,,,,, +/assets/minecraft/textures/block,gravel.png,default_gravel.png,,,,,,, +/assets/minecraft/textures/block,ice.png,default_ice.png,,,,,,, +/assets/minecraft/textures/block,ladder.png,default_ladder.png,,,,,,, +/assets/minecraft/textures/block,lava_still.png,mcl_core_lava_source_animation.png,,,,,,, +/assets/minecraft/textures/block,lava_flow.png,mcl_core_lava_flow_animation.png,,,,,,, +/assets/minecraft/textures/block,mossy_cobblestone.png,default_mossycobble.png,,,,,,, +/assets/minecraft/textures/block,obsidian.png,default_obsidian.png,,,,,,, +/assets/minecraft/textures/block,crying_obsidian.png,mcl_core_crying_obsidian.png,,,,,,, +/assets/minecraft/textures/item,paper.png,default_paper.png,,,,,,, +/assets/minecraft/textures/block,sugar_cane.png,mcl_core_papyrus.png,,,,,,, +/assets/minecraft/textures/block,sand.png,default_sand.png,,,,,,, +/assets/minecraft/textures/block,snow.png,default_snow.png,,,,,,, +/assets/minecraft/textures/block,iron_block.png,default_steel_block.png,,,,,,, +/assets/minecraft/textures/block,iron_block.png,mcl_stairs_iron_block_slab.png,,,,,,, +/assets/minecraft/textures/item,iron_ingot.png,default_steel_ingot.png,,,,,,, +/assets/minecraft/textures/item,stick.png,default_stick.png,,,,,,, +/assets/minecraft/textures/block,copper_block.png,mcl_copper_block.png,,,,,,, +/assets/minecraft/textures/block,cut_copper.png,mcl_copper_block_cut.png,,,,,,, +/assets/minecraft/textures/block,raw_copper_block.png,mcl_copper_block_raw.png,,,,,,, +/assets/minecraft/textures/block,exposed_copper.png,mcl_copper_exposed.png,,,,,,, +/assets/minecraft/textures/block,exposed_cut_copper.png,mcl_copper_exposed_cut.png,,,,,,, +/assets/minecraft/textures/item,copper_ingot.png,mcl_copper_ingot.png,,,,,,, +/assets/minecraft/textures/block,copper_ore.png,mcl_copper_ore.png,,,,,,, +/assets/minecraft/textures/block,oxidized_copper.png,mcl_copper_oxidized.png,,,,,,, +/assets/minecraft/textures/block,oxidized_cut_copper.png,mcl_copper_oxidized_cut.png,,,,,,, +/assets/minecraft/textures/item,raw_copper.png,mcl_copper_raw.png,,,,,,, +/assets/minecraft/textures/block,weathered_copper.png,mcl_copper_weathered.png,,,,,,, +/assets/minecraft/textures/block,weathered_cut_copper.png,mcl_copper_weathered_cut.png,,,,,,, +/assets/minecraft/textures/block,deepslate_copper_ore.png,mcl_deepslate_copper_ore.png,,,,,,, +/assets/minecraft/textures/block,stone_bricks.png,default_stone_brick.png,,,,,,, +/assets/minecraft/textures/block,stone.png,default_stone.png,,,,,,, +/assets/minecraft/textures/block,water_still.png,mcl_core_water_source_animation.png,,,,,,, +/assets/minecraft/textures/block,water_flow.png,mcl_core_water_flow_animation.png,,,,,,, +/assets/minecraft/textures/block,andesite.png,mcl_core_andesite.png,,,,,,, +/assets/minecraft/textures/block,polished_andesite.png,mcl_core_andesite_smooth.png,,,,,,, +/assets/minecraft/textures/block,polished_andesite.png,mcl_stairs_andesite_smooth_slab.png,,,,,,, +/assets/minecraft/textures/item,barrier.png,mcl_core_barrier.png,,,,,,, +/assets/minecraft/textures/block,bedrock.png,mcl_core_bedrock.png,,,,,,, +/assets/minecraft/textures/item,bone_meal.png,mcl_bone_meal_bone_meal.png,,,,,,, +/assets/minecraft/textures/item,bone.png,mcl_mobitems_bone.png,,,,,,, +/assets/minecraft/textures/block,bone_block_side.png,mcl_core_bone_block_side.png,,,,,,, +/assets/minecraft/textures/block,bone_block_top.png,mcl_core_bone_block_top.png,,,,,,, +/assets/minecraft/textures/item,bowl.png,mcl_core_bowl.png,,,,,,, +/assets/minecraft/textures/item,charcoal.png,mcl_core_charcoal.png,,,,,,, +/assets/minecraft/textures/block,coal_ore.png,mcl_core_coal_ore.png,,,,,,, +/assets/minecraft/textures/block,coarse_dirt.png,mcl_core_coarse_dirt.png,,,,,,, +/assets/minecraft/textures/block,diamond_ore.png,mcl_core_diamond_ore.png,,,,,,, +/assets/minecraft/textures/block,ancient_debris_side.png,mcl_nether_ancient_debris_side.png,,,,,,, +/assets/minecraft/textures/block,ancient_debris_top.png,mcl_nether_ancient_debris_top.png,,,,,,, +/assets/minecraft/textures/block,diorite.png,mcl_core_diorite.png,,,,,,, +/assets/minecraft/textures/block,polished_diorite.png,mcl_core_diorite_smooth.png,,,,,,, +/assets/minecraft/textures/block,polished_diorite.png,mcl_stairs_diorite_smooth_slab.png,,,,,,, +/assets/minecraft/textures/block,podzol_side.png,mcl_core_dirt_podzol_side.png,,,,,,, +/assets/minecraft/textures/block,podzol_top.png,mcl_core_dirt_podzol_top.png,,,,,,, +/assets/minecraft/textures/block,crimson_nylium.png,mcl_crimson_crimson_nylium.png,,,,,,, +/assets/minecraft/textures/block,crimson_nylium_side.png,mcl_crimson_crimson_nylium_side.png,,,,,,, +/assets/minecraft/textures/block,warped_nylium.png,mcl_crimson_warped_nylium.png,,,,,,, +/assets/minecraft/textures/block,warped_nylium_side.png,mcl_crimson_warped_nylium_side.png,,,,,,, +/assets/minecraft/textures/block,emerald_block.png,mcl_core_emerald_block.png,,,,,,, +/assets/minecraft/textures/block,emerald_ore.png,mcl_core_emerald_ore.png,,,,,,, +/assets/minecraft/textures/item,emerald.png,mcl_core_emerald.png,,,,,,, +/assets/minecraft/textures/block,frosted_ice_0.png,mcl_core_frosted_ice_0.png,,,,,,, +/assets/minecraft/textures/block,frosted_ice_1.png,mcl_core_frosted_ice_1.png,,,,,,, +/assets/minecraft/textures/block,frosted_ice_2.png,mcl_core_frosted_ice_2.png,,,,,,, +/assets/minecraft/textures/block,frosted_ice_3.png,mcl_core_frosted_ice_3.png,,,,,,, +/assets/minecraft/textures/item,raw_gold.png,mcl_raw_ores_raw_gold.png,,,,,,, +/assets/minecraft/textures/block,raw_gold_block.png,mcl_raw_ores_raw_gold_block.png,,,,,,, +/assets/minecraft/textures/block,gold_ore.png,mcl_core_gold_ore.png,,,,,,, +/assets/minecraft/textures/block,nether_gold_ore.png,mcl_nether_gold_ore.png,,,,,,, +/assets/minecraft/textures/block,granite.png,mcl_core_granite.png,,,,,,, +/assets/minecraft/textures/block,polished_granite.png,mcl_core_granite_smooth.png,,,,,,, +/assets/minecraft/textures/block,polished_granite.png,mcl_stairs_granite_smooth_slab.png,,,,,,, +/assets/minecraft/textures/block,dirt_path_side.png,mcl_core_grass_path_side.png,,,,,,, +/assets/minecraft/textures/block,dirt_path_top.png,mcl_core_grass_path_top.png,,,,,,, +/assets/minecraft/textures/block,grass_block_snow.png,mcl_core_grass_side_snowed.png,,,,,,, +/assets/minecraft/textures/block,grass_block_side.png,mcl_dirt_grass_shadow.png,,,,,,, +/assets/minecraft/textures/block,packed_ice.png,mcl_core_ice_packed.png,,,,,,, +/assets/minecraft/textures/block,raw_iron_block.png,mcl_raw_ores_raw_iron_block.png,,,,,,, +/assets/minecraft/textures/item,raw_iron.png,mcl_raw_ores_raw_iron.png,,,,,,, +/assets/minecraft/textures/item,iron_nugget.png,mcl_core_iron_nugget.png,,,,,,, +/assets/minecraft/textures/block,iron_ore.png,mcl_core_iron_ore.png,,,,,,, +/assets/minecraft/textures/block,lapis_block.png,mcl_core_lapis_block.png,,,,,,, +/assets/minecraft/textures/block,lapis_block.png,mcl_stairs_lapis_block_slab.png,,,,,,, +/assets/minecraft/textures/block,lapis_ore.png,mcl_core_lapis_ore.png,,,,,,, +/assets/minecraft/textures/item,lapis_lazuli.png,mcl_core_lapis.png,,,,,,, +/assets/minecraft/textures/block,bamboo_planks.png,mcl_bamboo_bamboo_plank.png,,,,,,, +/assets/minecraft/textures/block,bamboo_mosaic.png,mcl_bamboo_bamboo_plank_mosaic.png,,,,,,, +/assets/minecraft/textures/block,cherry_planks.png,mcl_cherry_blossom_planks.png,,,,,,, +/assets/minecraft/textures/block,acacia_planks.png,default_acacia_wood.png,,,,,,, +/assets/minecraft/textures/block,birch_planks.png,mcl_core_planks_birch.png,,,,,,, +/assets/minecraft/textures/block,dark_oak_planks.png,mcl_core_planks_big_oak.png,,,,,,, +/assets/minecraft/textures/block,jungle_planks.png,default_junglewood.png,,,,,,, +/assets/minecraft/textures/block,oak_planks.png,default_wood.png,,,,,,, +/assets/minecraft/textures/block,spruce_planks.png,mcl_core_planks_spruce.png,,,,,,, +/assets/minecraft/textures/block,mangrove_planks.png,mcl_mangrove_planks.png,,,,,,, +/assets/minecraft/textures/block,crimson_planks.png,mcl_crimson_crimson_hyphae_wood.png,,,,,,, +/assets/minecraft/textures/block,warped_planks.png,mcl_crimson_warped_hyphae_wood.png,,,,,,, +/assets/minecraft/textures/block,bamboo_block.png,mcl_bamboo_bamboo_block.png,,,,,,, +/assets/minecraft/textures/block,bamboo_block_top.png,mcl_bamboo_bamboo_bottom.png,,,,,,, +/assets/minecraft/textures/block,cherry_log.png,mcl_cherry_blossom_log.png,,,,,,, +/assets/minecraft/textures/block,cherry_log_top.png,mcl_cherry_blossom_log_top.png,,,,,,, +/assets/minecraft/textures/block,acacia_log.png,default_acacia_tree.png,,,,,,, +/assets/minecraft/textures/block,acacia_log_top.png,default_acacia_tree_top.png,,,,,,, +/assets/minecraft/textures/block,birch_log.png,mcl_core_log_birch.png,,,,,,, +/assets/minecraft/textures/block,birch_log_top.png,mcl_core_log_birch_top.png,,,,,,, +/assets/minecraft/textures/block,dark_oak_log.png,mcl_core_log_big_oak.png,,,,,,, +/assets/minecraft/textures/block,dark_oak_log_top.png,mcl_core_log_big_oak_top.png,,,,,,, +/assets/minecraft/textures/block,jungle_log.png,default_jungletree.png,,,,,,, +/assets/minecraft/textures/block,jungle_log_top.png,default_jungletree_top.png,,,,,,, +/assets/minecraft/textures/block,oak_log.png,default_tree.png,,,,,,, +/assets/minecraft/textures/block,oak_log_top.png,default_tree_top.png,,,,,,, +/assets/minecraft/textures/block,spruce_log.png,mcl_core_log_spruce.png,,,,,,, +/assets/minecraft/textures/block,spruce_log_top.png,mcl_core_log_spruce_top.png,,,,,,, +/assets/minecraft/textures/block,mangrove_log.png,mcl_mangrove_log.png,,,,,,, +/assets/minecraft/textures/block,mangrove_log_top.png,mcl_mangrove_log_top.png,,,,,,, +/assets/minecraft/textures/block,crimson_stem_top.png,mcl_crimson_crimson_hyphae.png,,,,,,, +/assets/minecraft/textures/block,warped_stem_top.png,mcl_crimson_warped_hyphae.png,,,,,,, +/assets/minecraft/textures/block,stripped_bamboo_block.png,mcl_bamboo_bamboo_block_stripped.png,,,,,,, +/assets/minecraft/textures/block,stripped_bamboo_block_top.png,mcl_bamboo_bamboo_bottom_stripped.png,,,,,,, +/assets/minecraft/textures/block,stripped_cherry_log.png,mcl_cherry_blossom_log_stripped.png,,,,,,, +/assets/minecraft/textures/block,stripped_cherry_log_top.png,mcl_cherry_blossom_log_top_stripped.png,,,,,,, +/assets/minecraft/textures/block,stripped_acacia_log.png,mcl_core_stripped_acacia_side.png,,,,,,, +/assets/minecraft/textures/block,stripped_acacia_log_top.png,mcl_core_stripped_acacia_top.png,,,,,,, +/assets/minecraft/textures/block,stripped_birch_log.png,mcl_core_stripped_birch_side.png,,,,,,, +/assets/minecraft/textures/block,stripped_birch_log_top.png,mcl_core_stripped_birch_top.png,,,,,,, +/assets/minecraft/textures/block,stripped_dark_oak_log.png,mcl_core_stripped_dark_oak_side.png,,,,,,, +/assets/minecraft/textures/block,stripped_dark_oak_log_top.png,mcl_core_stripped_dark_oak_top.png,,,,,,, +/assets/minecraft/textures/block,stripped_jungle_log.png,mcl_core_stripped_jungle_side.png,,,,,,, +/assets/minecraft/textures/block,stripped_jungle_log_top.png,mcl_core_stripped_jungle_top.png,,,,,,, +/assets/minecraft/textures/block,stripped_oak_log.png,mcl_core_stripped_oak_side.png,,,,,,, +/assets/minecraft/textures/block,stripped_oak_log_top.png,mcl_core_stripped_oak_top.png,,,,,,, +/assets/minecraft/textures/block,stripped_spruce_log.png,mcl_core_stripped_spruce_side.png,,,,,,, +/assets/minecraft/textures/block,stripped_spruce_log_top.png,mcl_core_stripped_spruce_top.png,,,,,,, +/assets/minecraft/textures/block,stripped_mangrove_log.png,mcl_stripped_mangrove_log_side.png,,,,,,, +/assets/minecraft/textures/block,stripped_mangrove_log_top.png,mcl_stripped_mangrove_log_top.png,,,,,,, +/assets/minecraft/textures/block,stripped_crimson_stem.png,mcl_crimson_crimson_stem_stripped_side.png,,,,,,, +/assets/minecraft/textures/block,stripped_crimson_stem_top.png,mcl_crimson_crimson_stem_stripped_top.png,,,,,,, +/assets/minecraft/textures/block,stripped_crimson_stem.png,mcl_crimson_stripped_crimson_stem.png,,,,,,, +/assets/minecraft/textures/block,stripped_crimson_stem.png,mcl_crimson_stripped_crimson_stem_side.png,,,,,,, +/assets/minecraft/textures/block,stripped_crimson_stem_top.png,mcl_crimson_stripped_crimson_stem_top.png,,,,,,, +/assets/minecraft/textures/block,stripped_warped_stem.png,mcl_crimson_stripped_warped_stem.png,,,,,,, +/assets/minecraft/textures/block,stripped_warped_stem.png,mcl_crimson_stripped_warped_stem_side.png,,,,,,, +/assets/minecraft/textures/block,stripped_warped_stem_top.png,mcl_crimson_stripped_warped_stem_top.png,,,,,,, +/assets/minecraft/textures/block,stripped_warped_stem.png,mcl_crimson_warped_stem_stripped_side.png,,,,,,, +/assets/minecraft/textures/block,stripped_warped_stem_top.png,mcl_crimson_warped_stem_stripped_top.png,,,,,,, +/assets/minecraft/textures/block,mycelium_side.png,mcl_core_mycelium_side.png,,,,,,, +/assets/minecraft/textures/block,mycelium_top.png,mcl_core_mycelium_top.png,,,,,,, +/assets/minecraft/textures/block,red_sand.png,mcl_core_red_sand.png,,,,,,, +/assets/minecraft/textures/block,red_sandstone_bottom.png,mcl_core_red_sandstone_bottom.png,,,,,,, +/assets/minecraft/textures/block,cut_red_sandstone.png,mcl_core_red_sandstone_carved.png,,,,,,, +/assets/minecraft/textures/block,red_sandstone.png,mcl_core_red_sandstone_normal.png,,,,,,, +/assets/minecraft/textures/block,chiseled_red_sandstone.png,mcl_core_red_sandstone_smooth.png,,,,,,, +/assets/minecraft/textures/block,red_sandstone_top.png,mcl_core_red_sandstone_top.png,,,,,,, +/assets/minecraft/textures/block,redstone_ore.png,mcl_core_redstone_ore.png,,,,,,, +/assets/minecraft/textures/item,sugar_cane.png,mcl_core_reeds.png,,,,,,, +/assets/minecraft/textures/block,sandstone_bottom.png,mcl_core_sandstone_bottom.png,,,,,,, +/assets/minecraft/textures/block,cut_sandstone.png,mcl_core_sandstone_carved.png,,,,,,, +/assets/minecraft/textures/block,chiseled_sandstone.png,mcl_core_sandstone_normal.png,,,,,,, +/assets/minecraft/textures/block,cut_sandstone.png,mcl_core_sandstone_smooth.png,,,,,,, +/assets/minecraft/textures/block,sandstone.png,mcl_core_sandstone_top.png,,,,,,, +/assets/minecraft/textures/block,slime_block.png,mcl_core_slime.png,,,,,,, +/assets/minecraft/textures/block,smooth_stone.png,mcl_core_stonebrick_carved.png,,,,,,, +/assets/minecraft/textures/block,cracked_stone_bricks.png,mcl_core_stonebrick_cracked.png,,,,,,, +/assets/minecraft/textures/block,mossy_stone_bricks.png,mcl_core_stonebrick_mossy.png,,,,,,, +/assets/minecraft/textures/item,sugar.png,mcl_core_sugar.png,,,,,,, +/assets/minecraft/textures/block,cobweb.png,mcl_core_web.png,,,,,,, +/assets/minecraft/textures/block,crafting_table_front.png,crafting_workbench_front.png,,,,,,, +/assets/minecraft/textures/block,crafting_table_side.png,crafting_workbench_side.png,,,,,,, +/assets/minecraft/textures/block,crafting_table_top.png,crafting_workbench_top.png,,,,,,, +/assets/minecraft/textures/block,fletching_table_front.png,fletching_table_front.png,,,,,,, +/assets/minecraft/textures/block,fletching_table_side.png,fletching_table_side.png,,,,,,, +/assets/minecraft/textures/block,fletching_table_top.png,fletching_table_top.png,,,,,,, +/assets/minecraft/textures/block,cartography_table_side1.png,mcl_cartography_table_side1.png,,,,,,, +/assets/minecraft/textures/block,cartography_table_side2.png,mcl_cartography_table_side2.png,,,,,,, +/assets/minecraft/textures/block,cartography_table_side3.png,mcl_cartography_table_side3.png,,,,,,, +/assets/minecraft/textures/block,cartography_table_top.png,mcl_cartography_table_top.png,,,,,,, +/assets/minecraft/textures/block,composter_bottom.png,mcl_composter_bottom.png,,,,,,, +/assets/minecraft/textures/block,composter_compost.png,mcl_composter_compost.png,,,,,,, +/assets/minecraft/textures/block,composter_ready.png,mcl_composter_ready.png,,,,,,, +/assets/minecraft/textures/block,composter_side.png,mcl_composter_side.png,,,,,,, +/assets/minecraft/textures/block,composter_top.png,mcl_composter_top.png,,,,,,, +/assets/minecraft/textures/block,smithing_table_bottom.png,mcl_smithing_table_bottom.png,,,,,,, +/assets/minecraft/textures/block,smithing_table_front.png,mcl_smithing_table_front.png,,,,,,, +/assets/minecraft/textures/block,smithing_table_side.png,mcl_smithing_table_side.png,,,,,,, +/assets/minecraft/textures/block,smithing_table_top.png,mcl_smithing_table_top.png,,,,,,, +/assets/minecraft/textures/block,loom_bottom.png,loom_bottom.png,,,,,,, +/assets/minecraft/textures/block,loom_front.png,loom_front.png,,,,,,, +/assets/minecraft/textures/block,loom_side.png,loom_side.png,,,,,,, +/assets/minecraft/textures/block,loom_top.png,loom_top.png,,,,,,, +/assets/minecraft/textures/block,acacia_door_bottom.png,mcl_doors_door_acacia_lower.png,,,,,,, +/assets/minecraft/textures/block,acacia_door_top.png,mcl_doors_door_acacia_upper.png,,,,,,, +/assets/minecraft/textures/block,birch_door_bottom.png,mcl_doors_door_birch_lower.png,,,,,,, +/assets/minecraft/textures/block,birch_door_top.png,mcl_doors_door_birch_upper.png,,,,,,, +/assets/minecraft/textures/block,dark_oak_door_bottom.png,mcl_doors_door_dark_oak_lower.png,,,,,,, +/assets/minecraft/textures/block,dark_oak_door_top.png,mcl_doors_door_dark_oak_upper.png,,,,,,, +/assets/minecraft/textures/block,iron_door_bottom.png,mcl_doors_door_iron_lower.png,,,,,,, +/assets/minecraft/textures/block,iron_door_top.png,mcl_doors_door_iron_upper.png,,,,,,, +/assets/minecraft/textures/block,jungle_door_bottom.png,mcl_doors_door_jungle_lower.png,,,,,,, +/assets/minecraft/textures/block,jungle_door_top.png,mcl_doors_door_jungle_upper.png,,,,,,, +/assets/minecraft/textures/block,spruce_door_bottom.png,mcl_doors_door_spruce_lower.png,,,,,,, +/assets/minecraft/textures/block,spruce_door_top.png,mcl_doors_door_spruce_upper.png,,,,,,, +/assets/minecraft/textures/block,oak_door_bottom.png,mcl_doors_door_wood_lower.png,,,,,,, +/assets/minecraft/textures/block,oak_door_top.png,mcl_doors_door_wood_upper.png,,,,,,, +/assets/minecraft/textures/block,bamboo_door_bottom.png,mcl_bamboo_door_bottom.png,,,,,,, +/assets/minecraft/textures/block,bamboo_door_top.png,mcl_bamboo_door_top.png,,,,,,, +/assets/minecraft/textures/block,warped_door_bottom.png,mcl_crimson_warped_door_bottom.png,,,,,,, +/assets/minecraft/textures/block,warped_door_top.png,mcl_crimson_warped_door_top.png,,,,,,, +/assets/minecraft/textures/block,crimson_door_bottom.png,mcl_crimson_crimson_door_bottom.png,,,,,,, +/assets/minecraft/textures/block,crimson_door_top.png,mcl_crimson_crimson_door_top.png,,,,,,, +/assets/minecraft/textures/block,mangrove_door_bottom.png,mcl_mangrove_door_bottom.png,,,,,,, +/assets/minecraft/textures/block,mangrove_door_top.png,mcl_mangrove_door_top.png,,,,,,, +/assets/minecraft/textures/block,oak_trapdoor.png,doors_trapdoor.png,,,,,,, +/assets/minecraft/textures/block,cherry_trapdoor.png,mcl_cherry_blossom_trapdoor.png,,,,,,, +/assets/minecraft/textures/block,acacia_trapdoor.png,mcl_doors_trapdoor_acacia.png,,,,,,, +/assets/minecraft/textures/block,bamboo_trapdoor.png,mcl_bamboo_trapdoor_side.png,,,,,,, +/assets/minecraft/textures/block,birch_trapdoor.png,mcl_doors_trapdoor_birch.png,,,,,,, +/assets/minecraft/textures/block,dark_oak_trapdoor.png,mcl_doors_trapdoor_dark_oak.png,,,,,,, +/assets/minecraft/textures/block,jungle_trapdoor.png,mcl_doors_trapdoor_jungle.png,,,,,,, +/assets/minecraft/textures/block,mangrove_trapdoor.png,mcl_mangrove_trapdoor.png,,,,,,, +/assets/minecraft/textures/block,spruce_trapdoor.png,mcl_doors_trapdoor_spruce.png,,,,,,, +/assets/minecraft/textures/block,crimson_trapdoor.png,mcl_crimson_crimson_trapdoor.png,,,,,,, +/assets/minecraft/textures/block,warped_trapdoor.png,mcl_crimson_warped_trapdoor.png,,,,,,, +/assets/minecraft/textures/block,iron_trapdoor.png,doors_trapdoor_steel.png,,,,,,, +/assets/minecraft/textures/item,acacia_door.png,mcl_doors_door_acacia.png,,,,,,, +/assets/minecraft/textures/item,birch_door.png,mcl_doors_door_birch.png,,,,,,, +/assets/minecraft/textures/item,dark_oak_door.png,mcl_doors_door_dark_oak.png,,,,,,, +/assets/minecraft/textures/item,jungle_door.png,mcl_doors_door_jungle.png,,,,,,, +/assets/minecraft/textures/item,spruce_door.png,mcl_doors_door_spruce.png,,,,,,, +/assets/minecraft/textures/item,oak_door.png,doors_item_wood.png,,,,,,, +/assets/minecraft/textures/item,mangrove_door.png,mcl_mangrove_doors.png,,,,,,, +/assets/minecraft/textures/item,crimson_door.png,mcl_crimson_crimson_door.png,,,,,,, +/assets/minecraft/textures/item,warped_door.png,mcl_crimson_warped_door.png,,,,,,, +/assets/minecraft/textures/item,iron_door.png,doors_item_steel.png,,,,,,, +/assets/minecraft/textures/item,bamboo_door.png,mcl_bamboo_door_wield.png,,,,,,, +/assets/minecraft/textures/item,black_dye.png,mcl_dye_black.png,,,,,,, +/assets/minecraft/textures/item,blue_dye.png,mcl_dye_blue.png,,,,,,, +/assets/minecraft/textures/item,brown_dye.png,mcl_dye_brown.png,,,,,,, +/assets/minecraft/textures/item,cyan_dye.png,mcl_dye_cyan.png,,,,,,, +/assets/minecraft/textures/item,gray_dye.png,mcl_dye_dark_grey.png,,,,,,, +/assets/minecraft/textures/item,green_dye.png,mcl_dye_dark_green.png,,,,,,, +/assets/minecraft/textures/item,light_blue_dye.png,mcl_dye_lightblue.png,,,,,,, +/assets/minecraft/textures/item,lime_dye.png,mcl_dye_lime.png,,,,,,, +/assets/minecraft/textures/item,magenta_dye.png,mcl_dye_magenta.png,,,,,,, +/assets/minecraft/textures/item,orange_dye.png,mcl_dye_orange.png,,,,,,, +/assets/minecraft/textures/item,pink_dye.png,mcl_dye_pink.png,,,,,,, +/assets/minecraft/textures/item,purple_dye.png,mcl_dye_violet.png,,,,,,, +/assets/minecraft/textures/item,red_dye.png,mcl_dye_red.png,,,,,,, +/assets/minecraft/textures/item,light_gray_dye.png,mcl_dye_grey.png,,,,,,, +/assets/minecraft/textures/item,white_dye.png,mcl_dye_white.png,,,,,,, +/assets/minecraft/textures/item,yellow_dye.png,mcl_dye_yellow.png,,,,,,, +/assets/minecraft/textures/block,chorus_flower_dead.png,mcl_end_chorus_flower_dead.png,,,,,,, +/assets/minecraft/textures/block,chorus_flower.png,mcl_end_chorus_flower.png,,,,,,, +/assets/minecraft/textures/item,chorus_fruit.png,mcl_end_chorus_fruit.png,,,,,,, +/assets/minecraft/textures/item,popped_chorus_fruit.png,mcl_end_chorus_fruit_popped.png,,,,,,, +/assets/minecraft/textures/block,chorus_plant.png,mcl_end_chorus_plant.png,,,,,,, +/assets/minecraft/textures/block,dragon_egg.png,mcl_end_dragon_egg.png,,,,,,, +/assets/minecraft/textures/block,end_stone_bricks.png,mcl_end_end_bricks.png,,,,,,, +/assets/minecraft/textures/item,ender_eye.png,mcl_end_ender_eye.png,,,,,,, +/assets/minecraft/textures/block,end_stone.png,mcl_end_end_stone.png,,,,,,, +/assets/minecraft/textures/item,end_crystal.png,mcl_end_crystal_item.png,,,,,,, +/assets/minecraft/textures/entity/end_crystal,end_crystal.png,mcl_end_crystal.png,,,,,,, +/assets/minecraft/textures/entity/end_crystal,end_crystal_beam.png,mcl_end_crystal_beam.png,,,,,,, +/assets/minecraft/textures/block,purpur_block.png,mcl_end_purpur_block.png,,,,,,, +/assets/minecraft/textures/block,purpur_pillar.png,mcl_end_purpur_pillar.png,,,,,,, +/assets/minecraft/textures/block,purpur_pillar_top.png,mcl_end_purpur_pillar_top.png,,,,,,, +/assets/minecraft/textures/block,potatoes_stage0.png,mcl_farming_potatoes_stage_0.png,,,,,,, +/assets/minecraft/textures/block,potatoes_stage1.png,mcl_farming_potatoes_stage_1.png,,,,,,, +/assets/minecraft/textures/block,potatoes_stage2.png,mcl_farming_potatoes_stage_2.png,,,,,,, +/assets/minecraft/textures/block,potatoes_stage3.png,mcl_farming_potatoes_stage_3.png,,,,,,, +/assets/minecraft/textures/item,bread.png,farming_bread.png,,,,,,, +/assets/minecraft/textures/block,carrots_stage0.png,farming_carrot_1.png,,,,,,, +/assets/minecraft/textures/block,carrots_stage1.png,farming_carrot_2.png,,,,,,, +/assets/minecraft/textures/block,carrots_stage2.png,farming_carrot_3.png,,,,,,, +/assets/minecraft/textures/block,carrots_stage3.png,farming_carrot_4.png,,,,,,, +/assets/minecraft/textures/item,golden_carrot.png,farming_carrot_gold.png,,,,,,, +/assets/minecraft/textures/item,carrot.png,farming_carrot.png,,,,,,, +/assets/minecraft/textures/item,cookie.png,farming_cookie.png,,,,,,, +/assets/minecraft/textures/item,melon_slice.png,farming_melon.png,,,,,,, +/assets/minecraft/textures/item,melon_seeds.png,mcl_farming_melon_seeds.png,,,,,,, +/assets/minecraft/textures/block,melon_side.png,farming_melon_side.png,,,,,,, +/assets/minecraft/textures/block,melon_top.png,farming_melon_top.png,,,,,,, +/assets/minecraft/textures/item,baked_potato.png,farming_potato_baked.png,,,,,,, +/assets/minecraft/textures/item,potato.png,farming_potato.png,,,,,,, +/assets/minecraft/textures/item,poisonous_potato.png,farming_potato_poison.png,,,,,,, +/assets/minecraft/textures/block,jack_o_lantern.png,farming_pumpkin_face_light.png,,,,,,, +/assets/minecraft/textures/block,carved_pumpkin.png,farming_pumpkin_face.png,,,,,,, +/assets/minecraft/textures/item,pumpkin_seeds.png,mcl_farming_pumpkin_seeds.png,,,,,,, +/assets/minecraft/textures/block,pumpkin_side.png,farming_pumpkin_side.png,,,,,,, +/assets/minecraft/textures/block,pumpkin_top.png,farming_pumpkin_top.png,,,,,,, +/assets/minecraft/textures/item,pumpkin_pie.png,mcl_farming_pumpkin_pie.png,,,,,,, +/assets/minecraft/textures/block,attached_pumpkin_stem.png,mcl_farming_pumpkin_stem_connected.png,,,,,,, +/assets/minecraft/textures/block,pumpkin_stem.png,mcl_farming_pumpkin_stem_disconnected.png,,,,,,, +/assets/minecraft/textures/misc,pumpkinblur.png,mcl_farming_pumpkin_hud.png,,,,,,, +/assets/minecraft/textures/block,sweet_berry_bush_stage0.png,mcl_farming_sweet_berry_bush_0.png,,,,,,, +/assets/minecraft/textures/block,sweet_berry_bush_stage1.png,mcl_farming_sweet_berry_bush_1.png,,,,,,, +/assets/minecraft/textures/block,sweet_berry_bush_stage2.png,mcl_farming_sweet_berry_bush_2.png,,,,,,, +/assets/minecraft/textures/block,sweet_berry_bush_stage3.png,mcl_farming_sweet_berry_bush_3.png,,,,,,, +/assets/minecraft/textures/item,sweet_berries.png,mcl_farming_sweet_berry.png,,,,,,, +/assets/minecraft/textures/block,farmland.png,mcl_farming_farmland_dry.png,,,,,,, +/assets/minecraft/textures/block,farmland_moist.png,mcl_farming_farmland_wet.png,,,,,,, +/assets/minecraft/textures/item,netherite_hoe.png,farming_tool_netheritehoe.png,,,,,,, +/assets/minecraft/textures/item,diamond_hoe.png,farming_tool_diamondhoe.png,,,,,,, +/assets/minecraft/textures/item,golden_hoe.png,farming_tool_goldhoe.png,,,,,,, +/assets/minecraft/textures/item,iron_hoe.png,farming_tool_steelhoe.png,,,,,,, +/assets/minecraft/textures/item,stone_hoe.png,farming_tool_stonehoe.png,,,,,,, +/assets/minecraft/textures/item,wooden_hoe.png,farming_tool_woodhoe.png,,,,,,, +/assets/minecraft/textures/item,wheat.png,farming_wheat_harvested.png,,,,,,, +/assets/minecraft/textures/item,wheat_seeds.png,mcl_farming_wheat_seeds.png,,,,,,, +/assets/minecraft/textures/block,beetroots_stage0.png,mcl_farming_beetroot_0.png,,,,,,, +/assets/minecraft/textures/block,beetroots_stage1.png,mcl_farming_beetroot_1.png,,,,,,, +/assets/minecraft/textures/block,beetroots_stage2.png,mcl_farming_beetroot_2.png,,,,,,, +/assets/minecraft/textures/block,beetroots_stage3.png,mcl_farming_beetroot_3.png,,,,,,, +/assets/minecraft/textures/item,beetroot.png,mcl_farming_beetroot.png,,,,,,, +/assets/minecraft/textures/item,beetroot_seeds.png,mcl_farming_beetroot_seeds.png,,,,,,, +/assets/minecraft/textures/item,beetroot_soup.png,mcl_farming_beetroot_soup.png,,,,,,, +/assets/minecraft/textures/block,hay_block_side.png,mcl_farming_hayblock_side.png,,,,,,, +/assets/minecraft/textures/block,hay_block_top.png,mcl_farming_hayblock_top.png,,,,,,, +/assets/minecraft/textures/block,wheat_stage0.png,mcl_farming_wheat_stage_0.png,,,,,,, +/assets/minecraft/textures/block,wheat_stage1.png,mcl_farming_wheat_stage_1.png,,,,,,, +/assets/minecraft/textures/block,wheat_stage2.png,mcl_farming_wheat_stage_2.png,,,,,,, +/assets/minecraft/textures/block,wheat_stage3.png,mcl_farming_wheat_stage_3.png,,,,,,, +/assets/minecraft/textures/block,wheat_stage4.png,mcl_farming_wheat_stage_4.png,,,,,,, +/assets/minecraft/textures/block,wheat_stage5.png,mcl_farming_wheat_stage_5.png,,,,,,, +/assets/minecraft/textures/block,wheat_stage6.png,mcl_farming_wheat_stage_6.png,,,,,,, +/assets/minecraft/textures/block,wheat_stage7.png,mcl_farming_wheat_stage_7.png,,,,,,, +/assets/minecraft/textures/block,fire_0.png,fire_basic_flame_animated.png,,,,,,, +/assets/minecraft/textures/block,fire_0.png,fire_basic_flame.png,0,0,16,16,0,0,y +/assets/minecraft/textures/item,campfire.png,mcl_campfires_campfire_inv.png,,,,,,, +/assets/minecraft/textures/item,soul_campfire.png,mcl_campfires_soul_campfire_inv.png,,,,,,, +/assets/minecraft/textures/item,fire_charge.png,mcl_fire_fire_charge.png,,,,,,, +/assets/minecraft/textures/entity/enderdragon,dragon_fireball.png,mobs_mc_dragon_fireball.png,,,,,,, +/assets/minecraft/textures/item,flint_and_steel.png,mcl_fire_flint_and_steel.png,,,,,,, +/assets/minecraft/textures/item,tropical_fish.png,mcl_fishing_clownfish_raw.png,,,,,,, +/assets/minecraft/textures/entity/fish,tropical_a.png,extra_mobs_tropical_fish_a.png,,,,,,, +/assets/minecraft/textures/entity/fish,tropical_b.png,extra_mobs_tropical_fish_b.png,,,,,,, +/assets/minecraft/textures/entity/fish,tropical_a_pattern_1.png,extra_mobs_tropical_fish_pattern_a_1.png,,,,,,, +/assets/minecraft/textures/entity/fish,tropical_a_pattern_2.png,extra_mobs_tropical_fish_pattern_a_2.png,,,,,,, +/assets/minecraft/textures/entity/fish,tropical_a_pattern_3.png,extra_mobs_tropical_fish_pattern_a_3.png,,,,,,, +/assets/minecraft/textures/entity/fish,tropical_a_pattern_4.png,extra_mobs_tropical_fish_pattern_a_4.png,,,,,,, +/assets/minecraft/textures/entity/fish,tropical_a_pattern_5.png,extra_mobs_tropical_fish_pattern_a_5.png,,,,,,, +/assets/minecraft/textures/entity/fish,tropical_a_pattern_6.png,extra_mobs_tropical_fish_pattern_a_6.png,,,,,,, +/assets/minecraft/textures/entity/fish,tropical_b_pattern_1.png,extra_mobs_tropical_fish_pattern_b_1.png,,,,,,, +/assets/minecraft/textures/entity/fish,tropical_b_pattern_2.png,extra_mobs_tropical_fish_pattern_b_2.png,,,,,,, +/assets/minecraft/textures/entity/fish,tropical_b_pattern_3.png,extra_mobs_tropical_fish_pattern_b_3.png,,,,,,, +/assets/minecraft/textures/entity/fish,tropical_b_pattern_4.png,extra_mobs_tropical_fish_pattern_b_4.png,,,,,,, +/assets/minecraft/textures/entity/fish,tropical_b_pattern_5.png,extra_mobs_tropical_fish_pattern_b_5.png,,,,,,, +/assets/minecraft/textures/entity/fish,tropical_b_pattern_6.png,extra_mobs_tropical_fish_pattern_b_6.png,,,,,,, +/assets/minecraft/textures/entity/axolotl,axolotl_blue.png,mobs_mc_axolotl_purple.png,,,,,,, +/assets/minecraft/textures/entity/axolotl,axolotl_cyan.png,mobs_mc_axolotl_white.png,,,,,,, +/assets/minecraft/textures/entity/axolotl,axolotl_gold.png,mobs_mc_axolotl_yellow.png,,,,,,, +/assets/minecraft/textures/entity/axolotl,axolotl_lucy.png,mobs_mc_axolotl_pink.png,,,,,,, +/assets/minecraft/textures/entity/axolotl,axolotl_wild.png,mobs_mc_axolotl_brown.png,,,,,,, +/assets/minecraft/textures/item,cooked_cod.png,mcl_fishing_fish_cooked.png,,,,,,, +/assets/minecraft/textures/item,fishing_rod.png,mcl_fishing_fishing_rod.png,,,,,,, +/assets/minecraft/textures/entity,fishing_hook.png,mcl_fishing_bobber.png,,,,,,, +/assets/minecraft/textures/item,cod.png,mcl_fishing_fish_raw.png,,,,,,, +/assets/minecraft/textures/item,pufferfish.png,mcl_fishing_pufferfish_raw.png,,,,,,, +/assets/minecraft/textures/item,cooked_salmon.png,mcl_fishing_salmon_cooked.png,,,,,,, +/assets/minecraft/textures/item,salmon.png,mcl_fishing_salmon_raw.png,,,,,,, +/assets/minecraft/textures/block,allium.png,mcl_flowers_allium.png,,,,,,, +/assets/minecraft/textures/block,azure_bluet.png,mcl_flowers_azure_bluet.png,,,,,,, +/assets/minecraft/textures/block,blue_orchid.png,mcl_flowers_blue_orchid.png,,,,,,, +/assets/minecraft/textures/block,peony_bottom.png,mcl_flowers_double_plant_paeonia_bottom.png,,,,,,, +/assets/minecraft/textures/block,peony_top.png,mcl_flowers_double_plant_paeonia_top.png,,,,,,, +/assets/minecraft/textures/block,rose_bush_bottom.png,mcl_flowers_double_plant_rose_bottom.png,,,,,,, +/assets/minecraft/textures/block,rose_bush_top.png,mcl_flowers_double_plant_rose_top.png,,,,,,, +/assets/minecraft/textures/block,sunflower_back.png,mcl_flowers_double_plant_sunflower_back.png,,,,,,, +/assets/minecraft/textures/block,sunflower_bottom.png,mcl_flowers_double_plant_sunflower_bottom.png,,,,,,, +/assets/minecraft/textures/block,sunflower_front.png,mcl_flowers_double_plant_sunflower_front.png,,,,,,, +/assets/minecraft/textures/block,sunflower_top.png,mcl_flowers_double_plant_sunflower_top.png,,,,,,, +/assets/minecraft/textures/block,lilac_bottom.png,mcl_flowers_double_plant_syringa_bottom.png,,,,,,, +/assets/minecraft/textures/block,lilac_top.png,mcl_flowers_double_plant_syringa_top.png,,,,,,, +/assets/minecraft/textures/block,cornflower.png,mcl_flowers_cornflower.png,,,,,,, +/assets/minecraft/textures/block,lily_of_the_valley.png,mcl_flowers_lily_of_the_valley.png,,,,,,, +/assets/minecraft/textures/block,wither_rose.png,mcl_flowers_wither_rose.png,,,,,,, +/assets/minecraft/textures/block,tall_grass_bottom.png,mcl_flowers_double_plant_grass_bottom.png,,,,,,, +/assets/minecraft/textures/block,tall_grass_top.png,mcl_flowers_double_plant_grass_top.png,,,,,,, +/assets/minecraft/textures/block,large_fern_bottom.png,mcl_flowers_double_plant_fern_bottom.png,,,,,,, +/assets/minecraft/textures/block,large_fern_top.png,mcl_flowers_double_plant_fern_top.png,,,,,,, +/assets/minecraft/textures/block,grass.png,mcl_flowers_tallgrass.png,,,,,,, +/assets/minecraft/textures/block,fern.png,mcl_flowers_fern.png,,,,,,, +/assets/minecraft/textures/block,oxeye_daisy.png,mcl_flowers_oxeye_daisy.png,,,,,,, +/assets/minecraft/textures/block,poppy.png,mcl_flowers_poppy.png,,,,,,, +/assets/minecraft/textures/block,pink_tulip.png,mcl_flowers_tulip_pink.png,,,,,,, +/assets/minecraft/textures/block,red_tulip.png,mcl_flowers_tulip_red.png,,,,,,, +/assets/minecraft/textures/block,white_tulip.png,mcl_flowers_tulip_white.png,,,,,,, +/assets/minecraft/textures/block,dandelion.png,flowers_dandelion_yellow.png,,,,,,, +/assets/minecraft/textures/block,orange_tulip.png,flowers_tulip.png,,,,,,, +/assets/minecraft/textures/block,furnace_front.png,default_furnace_front.png,,,,,,, +/assets/minecraft/textures/block,crimson_roots.png,mcl_crimson_crimson_roots.png,,,,,,, +/assets/minecraft/textures/block,warped_roots.png,mcl_crimson_warped_roots.png,,,,,,, +/assets/minecraft/textures/block,nether_sprouts.png,mcl_crimson_nether_sprouts.png,,,,,,, +/assets/minecraft/textures/block,weeping_vines_plant.png,mcl_crimson_weeping_vines.png,,,,,,, +/assets/minecraft/textures/block,twisting_vines.png,mcl_crimson_twisting_vines.png,,,,,,, +/assets/minecraft/textures/block,twisting_vines_plant.png,mcl_crimson_twisting_vines_plant.png,,,,,,, +/assets/minecraft/textures/block,shroomlight.png,mcl_crimson_shroomlight.png,,,,,,, +/assets/minecraft/textures/block,furnace_front_on.png,default_furnace_front_active.png,,,,,,, +/assets/minecraft/textures/block,furnace_side.png,default_furnace_side.png,,,,,,, +/assets/minecraft/textures/block,furnace_top.png,default_furnace_top.png,,,,,,, +/assets/minecraft/textures/block,furnace_top.png,default_furnace_bottom.png,,,,,,, +/assets/minecraft/textures/block,blast_furnace_front.png,blast_furnace_front.png,,,,,,, +/assets/minecraft/textures/block,blast_furnace_front_on.png,blast_furnace_front_on.png,,,,,,, +/assets/minecraft/textures/block,blast_furnace_side.png,blast_furnace_side.png,,,,,,, +/assets/minecraft/textures/block,blast_furnace_top.png,blast_furnace_top.png,,,,,,, +/assets/minecraft/textures/block,smoker_bottom.png,smoker_bottom.png,,,,,,, +/assets/minecraft/textures/block,smoker_front.png,smoker_front.png,,,,,,, +/assets/minecraft/textures/block,smoker_front_on.png,smoker_front_on.png,,,,,,, +/assets/minecraft/textures/block,smoker_side.png,smoker_side.png,,,,,,, +/assets/minecraft/textures/block,smoker_top.png,smoker_top.png,,,,,,, +/assets/minecraft/textures/block,hopper_inside.png,mcl_hoppers_hopper_inside.png,,,,,,, +/assets/minecraft/textures/block,hopper_outside.png,mcl_hoppers_hopper_outside.png,,,,,,, +/assets/minecraft/textures/block,hopper_top.png,mcl_hoppers_hopper_top.png,,,,,,, +/assets/minecraft/textures/item,hopper.png,mcl_hoppers_item.png,,,,,,, +/assets/minecraft/textures/item,music_disc_11.png,mcl_jukebox_record_11.png,,,,,,, +/assets/minecraft/textures/item,music_disc_13.png,mcl_jukebox_record_13.png,,,,,,, +/assets/minecraft/textures/item,music_disc_blocks.png,mcl_jukebox_record_blocks.png,,,,,,, +/assets/minecraft/textures/item,music_disc_cat.png,mcl_jukebox_record_cat.png,,,,,,, +/assets/minecraft/textures/item,music_disc_chirp.png,mcl_jukebox_record_chirp.png,,,,,,, +/assets/minecraft/textures/item,music_disc_far.png,mcl_jukebox_record_far.png,,,,,,, +/assets/minecraft/textures/item,music_disc_mall.png,mcl_jukebox_record_mall.png,,,,,,, +/assets/minecraft/textures/item,music_disc_mellohi.png,mcl_jukebox_record_mellohi.png,,,,,,, +/assets/minecraft/textures/item,music_disc_stal.png,mcl_jukebox_record_stal.png,,,,,,, +/assets/minecraft/textures/item,music_disc_strad.png,mcl_jukebox_record_strad.png,,,,,,, +/assets/minecraft/textures/item,music_disc_wait.png,mcl_jukebox_record_wait.png,,,,,,, +/assets/minecraft/textures/item,music_disc_ward.png,mcl_jukebox_record_ward.png,,,,,,, +/assets/minecraft/textures/block,jukebox_side.png,mcl_jukebox_side.png,,,,,,, +/assets/minecraft/textures/block,jukebox_top.png,mcl_jukebox_top.png,,,,,,, +/assets/minecraft/textures/item,map.png,mcl_maps_map_empty.png,,,,,,, +/assets/minecraft/textures/item,filled_map_markings.png,mcl_maps_map_filled_markings.png,,,,,,, +/assets/minecraft/textures/item,filled_map.png,mcl_maps_map_filled.png,,,,,,, +/assets/minecraft/textures/block,powered_rail.png,mcl_minecarts_rail_golden.png,,,,,,, +/assets/minecraft/textures/block,powered_rail_on.png,mcl_minecarts_rail_golden_powered.png,,,,,,, +/assets/minecraft/textures/block,rail_corner.png,default_rail_curved.png,,,,,,, +/assets/minecraft/textures/block,rail.png,default_rail.png,,,,,,, +/assets/minecraft/textures/block,detector_rail.png,mcl_minecarts_rail_detector.png,,,,,,, +/assets/minecraft/textures/block,detector_rail_on.png,mcl_minecarts_rail_detector_powered.png,,,,,,, +/assets/minecraft/textures/block,activator_rail.png,mcl_minecarts_rail_activator.png,,,,,,, +/assets/minecraft/textures/block,activator_rail_on.png,mcl_minecarts_rail_activator_powered.png,,,,,,, +/assets/minecraft/textures/item,minecart.png,mcl_minecarts_minecart_normal.png,,,,,,, +/assets/minecraft/textures/entity,minecart.png,mcl_minecarts_minecart.png,,,,,,, +/assets/minecraft/textures/item,chest_minecart.png,mcl_minecarts_minecart_chest.png,,,,,,, +/assets/minecraft/textures/item,tnt_minecart.png,mcl_minecarts_minecart_tnt.png,,,,,,, +/assets/minecraft/textures/item,command_block_minecart.png,mcl_minecarts_minecart_command_block.png,,,,,,, +/assets/minecraft/textures/item,furnace_minecart.png,mcl_minecarts_minecart_furnace.png,,,,,,, +/assets/minecraft/textures/item,hopper_minecart.png,mcl_minecarts_minecart_hopper.png,,,,,,, +/assets/minecraft/textures/item,gunpowder.png,default_gunpowder.png,,,,,,, +/assets/minecraft/textures/item,cooked_beef.png,mcl_mobitems_beef_cooked.png,,,,,,, +/assets/minecraft/textures/item,beef.png,mcl_mobitems_beef_raw.png,,,,,,, +/assets/minecraft/textures/item,blaze_powder.png,mcl_mobitems_blaze_powder.png,,,,,,, +/assets/minecraft/textures/item,blaze_rod.png,mcl_mobitems_blaze_rod.png,,,,,,, +/assets/minecraft/textures/item,carrot_on_a_stick.png,mcl_mobitems_carrot_on_a_stick.png,,,,,,, +/assets/minecraft/textures/item,cooked_chicken.png,mcl_mobitems_chicken_cooked.png,,,,,,, +/assets/minecraft/textures/item,chicken.png,mcl_mobitems_chicken_raw.png,,,,,,, +/assets/minecraft/textures/item,feather.png,mcl_mobitems_feather.png,,,,,,, +/assets/minecraft/textures/item,ghast_tear.png,mcl_mobitems_ghast_tear.png,,,,,,, +/assets/minecraft/textures/item,leather.png,mcl_mobitems_leather.png,,,,,,, +/assets/minecraft/textures/item,magma_cream.png,mcl_mobitems_magma_cream.png,,,,,,, +/assets/minecraft/textures/item,cooked_mutton.png,mcl_mobitems_mutton_cooked.png,,,,,,, +/assets/minecraft/textures/item,mutton.png,mcl_mobitems_mutton_raw.png,,,,,,, +/assets/minecraft/textures/item,nether_star.png,mcl_mobitems_nether_star.png,,,,,,, +/assets/minecraft/textures/item,cooked_porkchop.png,mcl_mobitems_porkchop_cooked.png,,,,,,, +/assets/minecraft/textures/item,porkchop.png,mcl_mobitems_porkchop_raw.png,,,,,,, +/assets/minecraft/textures/item,cooked_rabbit.png,mcl_mobitems_rabbit_cooked.png,,,,,,, +/assets/minecraft/textures/item,rabbit_foot.png,mcl_mobitems_rabbit_foot.png,,,,,,, +/assets/minecraft/textures/item,rabbit_hide.png,mcl_mobitems_rabbit_hide.png,,,,,,, +/assets/minecraft/textures/item,rabbit.png,mcl_mobitems_rabbit_raw.png,,,,,,, +/assets/minecraft/textures/item,rabbit_stew.png,mcl_mobitems_rabbit_stew.png,,,,,,, +/assets/minecraft/textures/item,suspicious_stew.png,sus_stew.png,,,,,,, +/assets/minecraft/textures/item,rotten_flesh.png,mcl_mobitems_rotten_flesh.png,,,,,,, +/assets/minecraft/textures/item,saddle.png,mcl_mobitems_saddle.png,,,,,,, +/assets/minecraft/textures/item,shulker_shell.png,mcl_mobitems_shulker_shell.png,,,,,,, +/assets/minecraft/textures/item,slime_ball.png,mcl_mobitems_slimeball.png,,,,,,, +/assets/minecraft/textures/item,spider_eye.png,mcl_mobitems_spider_eye.png,,,,,,, +/assets/minecraft/textures/item,string.png,mcl_mobitems_string.png,,,,,,, +/assets/minecraft/textures/item,glow_ink_sac.png,mcl_mobitems_glow_ink_sac.png,,,,,,, +/assets/minecraft/textures/item,heart_of_the_sea.png,mcl_mobitems_heart_of_the_sea.png,,,,,,, +/assets/minecraft/textures/item,ink_sac.png,mcl_mobitems_ink_sac.png,,,,,,, +/assets/minecraft/textures/item,iron_horse_armor.png,mcl_mobitems_iron_horse_armor.png,,,,,,, +/assets/minecraft/textures/item,nautilus_shell.png,mcl_mobitems_nautilus_shell.png,,,,,,, +/assets/minecraft/textures/item,warped_fungus_on_a_stick.png,mcl_mobitems_warped_fungus_on_a_stick.png,,,,,,, +/assets/minecraft/textures/item,golden_horse_armor.png,mcl_mobitems_gold_horse_armor.png,,,,,,, +/assets/minecraft/textures/item,diamond_horse_armor.png,mcl_mobitems_diamond_horse_armor.png,,,,,,, +/assets/minecraft/textures/item,diamond_horse_armor.png,mobs_mc_diamond_horse_armor.png,,,,,,, +/assets/minecraft/textures/block,spawner.png,mob_spawner.png,,,,,,, +/assets/minecraft/textures/block,brown_mushroom.png,farming_mushroom_brown.png,,,,,,, +/assets/minecraft/textures/block,red_mushroom.png,farming_mushroom_red.png,,,,,,, +/assets/minecraft/textures/item,mushroom_stew.png,farming_mushroom_stew.png,,,,,,, +/assets/minecraft/textures/block,mushroom_block_inside.png,mcl_mushrooms_mushroom_block_inside.png,,,,,,, +/assets/minecraft/textures/block,brown_mushroom_block.png,mcl_mushrooms_mushroom_block_skin_brown.png,,,,,,, +/assets/minecraft/textures/block,red_mushroom_block.png,mcl_mushrooms_mushroom_block_skin_red.png,,,,,,, +/assets/minecraft/textures/block,mushroom_stem.png,mcl_mushrooms_mushroom_block_skin_stem.png,,,,,,, +/assets/minecraft/textures/item,glowstone_dust.png,mcl_nether_glowstone_dust.png,,,,,,, +/assets/minecraft/textures/block,glowstone.png,mcl_nether_glowstone.png,,,,,,, +/assets/minecraft/textures/block,magma.png,mcl_nether_magma.png,,,,,,, +/assets/minecraft/textures/block,nether_bricks.png,mcl_nether_nether_brick.png,,,,,,, +/assets/minecraft/textures/item,nether_brick.png,mcl_nether_netherbrick.png,,,,,,, +/assets/minecraft/textures/block,netherrack.png,mcl_nether_netherrack.png,,,,,,, +/assets/minecraft/textures/block,warped_wart_block.png,mcl_crimson_warped_wart_block.png,,,,,,, +/assets/minecraft/textures/block,nether_wart_block.png,mcl_nether_nether_wart_block.png,,,,,,, +/assets/minecraft/textures/item,nether_wart.png,mcl_nether_nether_wart.png,,,,,,, +/assets/minecraft/textures/block,nether_wart_stage0.png,mcl_nether_nether_wart_stage_0.png,,,,,,, +/assets/minecraft/textures/block,nether_wart_stage1.png,mcl_nether_nether_wart_stage_1.png,,,,,,, +/assets/minecraft/textures/block,nether_wart_stage2.png,mcl_nether_nether_wart_stage_2.png,,,,,,, +/assets/minecraft/textures/block,quartz_bricks.png,mcl_backstone_quartz_bricks.png,,,,,,, +/assets/minecraft/textures/block,quartz_block_bottom.png,mcl_nether_quartz_block_bottom.png,,,,,,, +/assets/minecraft/textures/block,quartz_block_side.png,mcl_nether_quartz_block_side.png,,,,,,, +/assets/minecraft/textures/block,quartz_block_top.png,mcl_nether_quartz_block_top.png,,,,,,, +/assets/minecraft/textures/block,chiseled_quartz_block.png,mcl_nether_quartz_chiseled_side.png,,,,,,, +/assets/minecraft/textures/block,chiseled_quartz_block_top.png,mcl_nether_quartz_chiseled_top.png,,,,,,, +/assets/minecraft/textures/block,nether_quartz_ore.png,mcl_nether_quartz_ore.png,,,,,,, +/assets/minecraft/textures/block,quartz_pillar.png,mcl_nether_quartz_pillar_side.png,,,,,,, +/assets/minecraft/textures/block,quartz_pillar_top.png,mcl_nether_quartz_pillar_top.png,,,,,,, +/assets/minecraft/textures/item,quartz.png,mcl_nether_quartz.png,,,,,,, +/assets/minecraft/textures/block,red_nether_bricks.png,mcl_nether_red_nether_brick.png,,,,,,, +/assets/minecraft/textures/block,soul_sand.png,mcl_nether_soul_sand.png,,,,,,, +/assets/minecraft/textures/block,prismarine.png,mcl_ocean_prismarine_anim.png,,,,,,, +/assets/minecraft/textures/block,prismarine_bricks.png,mcl_ocean_prismarine_bricks.png,,,,,,, +/assets/minecraft/textures/item,prismarine_crystals.png,mcl_ocean_prismarine_crystals.png,,,,,,, +/assets/minecraft/textures/block,dark_prismarine.png,mcl_ocean_prismarine_dark.png,,,,,,, +/assets/minecraft/textures/item,prismarine_shard.png,mcl_ocean_prismarine_shard.png,,,,,,, +/assets/minecraft/textures/block,sea_lantern.png,mcl_ocean_sea_lantern.png,,,,,,, +/assets/minecraft/textures/block,brain_coral.png,mcl_ocean_brain_coral.png,,,,,,, +/assets/minecraft/textures/block,brain_coral_block.png,mcl_ocean_brain_coral_block.png,,,,,,, +/assets/minecraft/textures/block,brain_coral_fan.png,mcl_ocean_brain_coral_fan.png,,,,,,, +/assets/minecraft/textures/block,bubble_coral.png,mcl_ocean_bubble_coral.png,,,,,,, +/assets/minecraft/textures/block,bubble_coral_block.png,mcl_ocean_bubble_coral_block.png,,,,,,, +/assets/minecraft/textures/block,bubble_coral_fan.png,mcl_ocean_bubble_coral_fan.png,,,,,,, +/assets/minecraft/textures/block,dead_brain_coral.png,mcl_ocean_dead_brain_coral.png,,,,,,, +/assets/minecraft/textures/block,dead_brain_coral_block.png,mcl_ocean_dead_brain_coral_block.png,,,,,,, +/assets/minecraft/textures/block,dead_brain_coral_fan.png,mcl_ocean_dead_brain_coral_fan.png,,,,,,, +/assets/minecraft/textures/block,dead_bubble_coral.png,mcl_ocean_dead_bubble_coral.png,,,,,,, +/assets/minecraft/textures/block,dead_bubble_coral_block.png,mcl_ocean_dead_bubble_coral_block.png,,,,,,, +/assets/minecraft/textures/block,dead_bubble_coral_fan.png,mcl_ocean_dead_bubble_coral_fan.png,,,,,,, +/assets/minecraft/textures/block,dead_fire_coral.png,mcl_ocean_dead_fire_coral.png,,,,,,, +/assets/minecraft/textures/block,dead_fire_coral_block.png,mcl_ocean_dead_fire_coral_block.png,,,,,,, +/assets/minecraft/textures/block,dead_fire_coral_fan.png,mcl_ocean_dead_fire_coral_fan.png,,,,,,, +/assets/minecraft/textures/block,dead_horn_coral.png,mcl_ocean_dead_horn_coral.png,,,,,,, +/assets/minecraft/textures/block,dead_horn_coral_block.png,mcl_ocean_dead_horn_coral_block.png,,,,,,, +/assets/minecraft/textures/block,dead_horn_coral_fan.png,mcl_ocean_dead_horn_coral_fan.png,,,,,,, +/assets/minecraft/textures/block,dead_tube_coral.png,mcl_ocean_dead_tube_coral.png,,,,,,, +/assets/minecraft/textures/block,dead_tube_coral_block.png,mcl_ocean_dead_tube_coral_block.png,,,,,,, +/assets/minecraft/textures/block,dead_tube_coral_fan.png,mcl_ocean_dead_tube_coral_fan.png,,,,,,, +/assets/minecraft/textures/item,dried_kelp.png,mcl_ocean_dried_kelp.png,,,,,,, +/assets/minecraft/textures/block,dried_kelp_bottom.png,mcl_ocean_dried_kelp_bottom.png,,,,,,, +/assets/minecraft/textures/block,dried_kelp_side.png,mcl_ocean_dried_kelp_side.png,,,,,,, +/assets/minecraft/textures/block,dried_kelp_top.png,mcl_ocean_dried_kelp_top.png,,,,,,, +/assets/minecraft/textures/block,fire_coral.png,mcl_ocean_fire_coral.png,,,,,,, +/assets/minecraft/textures/block,fire_coral_block.png,mcl_ocean_fire_coral_block.png,,,,,,, +/assets/minecraft/textures/block,fire_coral_fan.png,mcl_ocean_fire_coral_fan.png,,,,,,, +/assets/minecraft/textures/block,horn_coral.png,mcl_ocean_horn_coral.png,,,,,,, +/assets/minecraft/textures/block,horn_coral_block.png,mcl_ocean_horn_coral_block.png,,,,,,, +/assets/minecraft/textures/block,horn_coral_fan.png,mcl_ocean_horn_coral_fan.png,,,,,,, +/assets/minecraft/textures/item,kelp.png,mcl_ocean_kelp_item.png,,,,,,, +/assets/minecraft/textures/block,kelp_plant.png,mcl_ocean_kelp_plant.png,,,,,,, +/assets/minecraft/textures/block,seagrass.png,mcl_ocean_seagrass.png,,,,,,, +/assets/minecraft/textures/item,seagrass.png,mcl_ocean_seagrass_item.png,,,,,,, +/assets/minecraft/textures/block,tube_coral.png,mcl_ocean_tube_coral.png,,,,,,, +/assets/minecraft/textures/block,tube_coral_block.png,mcl_ocean_tube_coral_block.png,,,,,,, +/assets/minecraft/textures/block,tube_coral_fan.png,mcl_ocean_tube_coral_fan.png,,,,,,, +/assets/minecraft/textures/item,dragon_breath.png,mcl_potions_dragon_breath.png,,,,,,, +/assets/minecraft/textures/item,glistering_melon_slice.png,mcl_potions_melon_speckled.png,,,,,,, +/assets/minecraft/textures/item,potion.png,mcl_potions_potion_bottle.png,,,,,,, +/assets/minecraft/textures/item,splash_potion.png,mcl_potions_splash_bottle.png,,,,,,, +/assets/minecraft/textures/item,lingering_potion.png,mcl_potions_lingering_bottle.png,,,,,,, +/assets/minecraft/textures/item,potion_overlay.png,mcl_potions_potion_overlay.png,,,,,,, +/assets/minecraft/textures/item,potion_overlay.png,mcl_potions_splash_overlay.png,,,,,,, +/assets/minecraft/textures/item,fermented_spider_eye.png,mcl_potions_spider_eye_fermented.png,,,,,,, +/assets/minecraft/textures/block,sponge.png,mcl_sponges_sponge.png,,,,,,, +/assets/minecraft/textures/block,wet_sponge.png,mcl_sponges_sponge_wet.png,,,,,,, +/assets/minecraft/textures/block,wet_sponge.png,mcl_sponges_sponge_wet_river_water.png,,,,,,, +/assets/minecraft/textures/block,smooth_stone_slab_side.png,mcl_stairs_stone_slab_side.png,,,,,,, +/assets/minecraft/textures/block,smooth_stone.png,mcl_stairs_stone_slab_top.png,,,,,,, +/assets/minecraft/textures/item,arrow.png,mcl_bows_arrow_inv.png,,,,,,, +/assets/minecraft/textures/item,bow_pulling_0.png,mcl_bows_bow_0.png,,,,,,, +/assets/minecraft/textures/item,bow_pulling_1.png,mcl_bows_bow_1.png,,,,,,, +/assets/minecraft/textures/item,bow_pulling_2.png,mcl_bows_bow_2.png,,,,,,, +/assets/minecraft/textures/item,bow.png,mcl_bows_bow.png,,,,,,, +/assets/minecraft/textures/item,crossbow_standby.png,mcl_bows_crossbow.png,,,,,,, +/assets/minecraft/textures/item,crossbow_pulling_0.png,mcl_bows_crossbow_0.png,,,,,,, +/assets/minecraft/textures/item,crossbow_pulling_1.png,mcl_bows_crossbow_1.png,,,,,,, +/assets/minecraft/textures/item,crossbow_pulling_2.png,mcl_bows_crossbow_2.png,,,,,,, +/assets/minecraft/textures/item,crossbow_arrow.png,mcl_bows_crossbow_3.png,,,,,,, +/assets/minecraft/textures/item,egg.png,mcl_throwing_egg.png,,,,,,, +/assets/minecraft/textures/item,egg.png,mobs_chicken_egg.png,,,,,,, +/assets/minecraft/textures/item,ender_pearl.png,mcl_throwing_ender_pearl.png,,,,,,, +/assets/minecraft/textures/item,snowball.png,mcl_throwing_snowball.png,,,,,,, +/assets/minecraft/textures/block,tnt_bottom.png,default_tnt_bottom.png,,,,,,, +/assets/minecraft/textures/block,tnt_side.png,default_tnt_side.png,,,,,,, +/assets/minecraft/textures/block,tnt_top.png,default_tnt_top.png,,,,,,, +/assets/minecraft/textures/item,netherite_axe.png,default_tool_netheriteaxe.png,,,,,,, +/assets/minecraft/textures/item,netherite_pickaxe.png,default_tool_netheritepick.png,,,,,,, +/assets/minecraft/textures/item,netherite_shovel.png,default_tool_netheriteshovel.png,,,,,,, +/assets/minecraft/textures/item,netherite_sword.png,default_tool_netheritesword.png,,,,,,, +/assets/minecraft/textures/item,diamond_axe.png,default_tool_diamondaxe.png,,,,,,, +/assets/minecraft/textures/item,diamond_pickaxe.png,default_tool_diamondpick.png,,,,,,, +/assets/minecraft/textures/item,diamond_shovel.png,default_tool_diamondshovel.png,,,,,,, +/assets/minecraft/textures/item,diamond_sword.png,default_tool_diamondsword.png,,,,,,, +/assets/minecraft/textures/item,golden_axe.png,default_tool_goldaxe.png,,,,,,, +/assets/minecraft/textures/item,golden_pickaxe.png,default_tool_goldpick.png,,,,,,, +/assets/minecraft/textures/item,golden_shovel.png,default_tool_goldshovel.png,,,,,,, +/assets/minecraft/textures/item,golden_sword.png,default_tool_goldsword.png,,,,,,, +/assets/minecraft/textures/item,shears.png,default_tool_shears.png,,,,,,, +/assets/minecraft/textures/item,iron_axe.png,default_tool_steelaxe.png,,,,,,, +/assets/minecraft/textures/item,iron_pickaxe.png,default_tool_steelpick.png,,,,,,, +/assets/minecraft/textures/item,iron_shovel.png,default_tool_steelshovel.png,,,,,,, +/assets/minecraft/textures/item,iron_sword.png,default_tool_steelsword.png,,,,,,, +/assets/minecraft/textures/item,stone_axe.png,default_tool_stoneaxe.png,,,,,,, +/assets/minecraft/textures/item,stone_pickaxe.png,default_tool_stonepick.png,,,,,,, +/assets/minecraft/textures/item,stone_shovel.png,default_tool_stoneshovel.png,,,,,,, +/assets/minecraft/textures/item,stone_sword.png,default_tool_stonesword.png,,,,,,, +/assets/minecraft/textures/item,wooden_axe.png,default_tool_woodaxe.png,,,,,,, +/assets/minecraft/textures/item,wooden_pickaxe.png,default_tool_woodpick.png,,,,,,, +/assets/minecraft/textures/item,wooden_shovel.png,default_tool_woodshovel.png,,,,,,, +/assets/minecraft/textures/item,wooden_sword.png,default_tool_woodsword.png,,,,,,, +/assets/minecraft/textures/block,torch.png,default_torch_on_floor_animated.png,,,,,,, +/assets/minecraft/textures/block,torch.png,default_torch_on_floor.png,,,,,,, +/assets/minecraft/textures/block,black_wool.png,wool_black.png,,,,,,, +/assets/minecraft/textures/block,blue_wool.png,wool_blue.png,,,,,,, +/assets/minecraft/textures/block,brown_wool.png,wool_brown.png,,,,,,, +/assets/minecraft/textures/block,cyan_wool.png,wool_cyan.png,,,,,,, +/assets/minecraft/textures/block,gray_wool.png,wool_dark_grey.png,,,,,,, +/assets/minecraft/textures/block,green_wool.png,wool_dark_green.png,,,,,,, +/assets/minecraft/textures/block,light_gray_wool.png,wool_grey.png,,,,,,, +/assets/minecraft/textures/block,light_blue_wool.png,mcl_wool_light_blue.png,,,,,,, +/assets/minecraft/textures/block,lime_wool.png,mcl_wool_lime.png,,,,,,, +/assets/minecraft/textures/block,magenta_wool.png,wool_magenta.png,,,,,,, +/assets/minecraft/textures/block,orange_wool.png,wool_orange.png,,,,,,, +/assets/minecraft/textures/block,pink_wool.png,wool_pink.png,,,,,,, +/assets/minecraft/textures/block,red_wool.png,wool_red.png,,,,,,, +/assets/minecraft/textures/block,purple_wool.png,wool_violet.png,,,,,,, +/assets/minecraft/textures/block,white_wool.png,wool_white.png,,,,,,, +/assets/minecraft/textures/block,yellow_wool.png,wool_yellow.png,,,,,,, +/assets/minecraft/textures/item,chainmail_boots.png,mcl_armor_inv_boots_chain.png,,,,,,, +/assets/minecraft/textures/item,netherite_boots.png,mcl_armor_inv_boots_netherite.png,,,,,,, +/assets/minecraft/textures/item,diamond_boots.png,mcl_armor_inv_boots_diamond.png,,,,,,, +/assets/minecraft/textures/item,golden_boots.png,mcl_armor_inv_boots_gold.png,,,,,,, +/assets/minecraft/textures/item,iron_boots.png,mcl_armor_inv_boots_iron.png,,,,,,, +/assets/minecraft/textures/item,elytra.png,mcl_armor_inv_elytra.png,,,,,,, +/assets/minecraft/textures/item,chainmail_chestplate.png,mcl_armor_inv_chestplate_chain.png,,,,,,, +/assets/minecraft/textures/item,netherite_chestplate.png,mcl_armor_inv_chestplate_netherite.png,,,,,,, +/assets/minecraft/textures/item,diamond_chestplate.png,mcl_armor_inv_chestplate_diamond.png,,,,,,, +/assets/minecraft/textures/item,golden_chestplate.png,mcl_armor_inv_chestplate_gold.png,,,,,,, +/assets/minecraft/textures/item,iron_chestplate.png,mcl_armor_inv_chestplate_iron.png,,,,,,, +/assets/minecraft/textures/item,netherite_helmet.png,mcl_armor_inv_helmet_netherite.png,,,,,,, +/assets/minecraft/textures/item,chainmail_helmet.png,mcl_armor_inv_helmet_chain.png,,,,,,, +/assets/minecraft/textures/item,diamond_helmet.png,mcl_armor_inv_helmet_diamond.png,,,,,,, +/assets/minecraft/textures/item,golden_helmet.png,mcl_armor_inv_helmet_gold.png,,,,,,, +/assets/minecraft/textures/item,iron_helmet.png,mcl_armor_inv_helmet_iron.png,,,,,,, +/assets/minecraft/textures/item,chainmail_leggings.png,mcl_armor_inv_leggings_chain.png,,,,,,, +/assets/minecraft/textures/item,netherite_leggings.png,mcl_armor_inv_leggings_netherite.png,,,,,,, +/assets/minecraft/textures/item,diamond_leggings.png,mcl_armor_inv_leggings_diamond.png,,,,,,, +/assets/minecraft/textures/item,golden_leggings.png,mcl_armor_inv_leggings_gold.png,,,,,,, +/assets/minecraft/textures/item,iron_leggings.png,mcl_armor_inv_leggings_iron.png,,,,,,, +/assets/minecraft/textures/item,armor_stand.png,mcl_armor_stand_item.png,,,,,,, +/assets/minecraft/textures/block,dispenser_front.png,mcl_dispensers_dispenser_front_horizontal.png,,,,,,, +/assets/minecraft/textures/block,dispenser_front_vertical.png,mcl_dispensers_dispenser_front_vertical.png,,,,,,, +/assets/minecraft/textures/block,dropper_front.png,mcl_droppers_dropper_front_horizontal.png,,,,,,, +/assets/minecraft/textures/block,dropper_front_vertical.png,mcl_droppers_dropper_front_vertical.png,,,,,,, +/assets/minecraft/textures/block,observer_back_on.png,mcl_observers_observer_back_lit.png,,,,,,, +/assets/minecraft/textures/block,observer_back.png,mcl_observers_observer_back.png,,,,,,, +/assets/minecraft/textures/block,observer_front.png,mcl_observers_observer_front.png,,,,,,, +/assets/minecraft/textures/block,observer_side.png,mcl_observers_observer_side.png,,,,,,, +/assets/minecraft/textures/block,observer_top.png,mcl_observers_observer_top.png,,,,,,, +/assets/minecraft/textures/item,redstone.png,redstone_redstone_dust.png,,,,,,, +/assets/minecraft/textures/item,repeater.png,mesecons_delayer_item.png,,,,,,, +/assets/minecraft/textures/item,comparator.png,mcl_comparators_item.png,,,,,,, +/assets/minecraft/textures/block,repeater.png,mesecons_delayer_off.png,,,,,,, +/assets/minecraft/textures/block,repeater_on.png,mesecons_delayer_on.png,,,,,,, +/assets/minecraft/textures/block,comparator.png,mcl_comparators_off.png,,,,,,, +/assets/minecraft/textures/block,comparator_on.png,mcl_comparators_on.png,,,,,,, +/assets/minecraft/textures/block,note_block.png,mesecons_noteblock.png,,,,,,, +/assets/minecraft/textures/block,command_block_back.png,jeija_commandblock_off.png,,,,,,, +/assets/minecraft/textures/block,command_block_back.png,jeija_commandblock_on.png,,,,,,, +/assets/minecraft/textures/block,redstone_lamp.png,jeija_lightstone_gray_off.png,,,,,,, +/assets/minecraft/textures/block,redstone_lamp_on.png,jeija_lightstone_gray_on.png,,,,,,, +/assets/minecraft/textures/block,daylight_detector_inverted_top.png,jeija_solar_panel_inverted.png,,,,,,, +/assets/minecraft/textures/block,daylight_detector_top.png,jeija_solar_panel.png,,,,,,, +/assets/minecraft/textures/block,daylight_detector_side.png,jeija_solar_panel_side.png,,,,,,, +/assets/minecraft/textures/block,redstone_torch_off.png,jeija_torches_off.png,,,,,,, +/assets/minecraft/textures/block,redstone_torch.png,jeija_torches_on.png,,,,,,, +/assets/minecraft/textures/block,lever.png,jeija_wall_lever.png,,,,,,, +/assets/minecraft/textures/block,piston_bottom.png,mesecons_piston_back.png,,,,,,, +/assets/minecraft/textures/block,piston_side.png,mesecons_piston_bottom.png,,,,,,, +/assets/minecraft/textures/block,piston_inner.png,mesecons_piston_on_front.png,,,,,,, +/assets/minecraft/textures/block,piston_top.png,mesecons_piston_pusher_back.png,,,,,,, +/assets/minecraft/textures/block,piston_top.png,mesecons_piston_pusher_bottom.png,,,,,,, +/assets/minecraft/textures/block,piston_top.png,mesecons_piston_pusher_front.png,,,,,,, +/assets/minecraft/textures/block,piston_top_sticky.png,mesecons_piston_pusher_front_sticky.png,,,,,,, +/assets/minecraft/textures/block,piston_top.png,mesecons_piston_pusher_left.png,,,,,,, +/assets/minecraft/textures/block,piston_top.png,mesecons_piston_pusher_right.png,,,,,,, +/assets/minecraft/textures/block,piston_top.png,mesecons_piston_pusher_top.png,,,,,,, +/assets/minecraft/textures/block,redstone_block.png,redstone_redstone_block.png,,,,,,, +/assets/minecraft/textures/block,iron_bars.png,xpanes_pane_iron.png,,,,,,, +/assets/minecraft/textures/item,totem_of_undying.png,mcl_totems_totem.png,,,,,,, +/assets/minecraft/textures/entity,bat.png,mobs_mc_bat.png,,,,,,, +/assets/minecraft/textures/entity,blaze.png,mobs_mc_blaze.png,,,,,,, +/assets/minecraft/textures/entity/cat,all_black.png,mobs_mc_cat_black.png,,,,,,, +/assets/minecraft/textures/entity/cat,ocelot.png,mobs_mc_cat_ocelot.png,,,,,,, +/assets/minecraft/textures/entity/cat,red.png,mobs_mc_cat_red.png,,,,,,, +/assets/minecraft/textures/entity/cat,siamese.png,mobs_mc_cat_siamese.png,,,,,,, +/assets/minecraft/textures/entity/spider,cave_spider.png,mobs_mc_cave_spider.png,,,,,,, +/assets/minecraft/textures/entity,chicken.png,mobs_mc_chicken.png,,,,,,, +/assets/minecraft/textures/entity/cow,cow.png,mobs_mc_cow.png,,,,,,, +/assets/minecraft/textures/entity/creeper,creeper.png,mobs_mc_creeper.png,,,,,,, +/assets/minecraft/textures/entity/enderdragon,dragon.png,mobs_mc_dragon.png,,,,,,, +/assets/minecraft/textures/entity/shulker,shulker.png,mobs_mc_endergolem.png,,,,,,, +/assets/minecraft/textures/entity/enderman,enderman_eyes.png,mobs_mc_enderman_eyes.png,,,,,,, +/assets/minecraft/textures/entity/enderman,enderman.png,mobs_mc_enderman.png,,,,,,, +/assets/minecraft/textures/entity,endermite.png,mobs_mc_endermite.png,,,,,,, +/assets/minecraft/textures/entity/ghast,ghast.png,mobs_mc_ghast.png,,,,,,, +/assets/minecraft/textures/entity/ghast,ghast_shooting.png,mobs_mc_ghast_firing.png,,,,,,, +/assets/minecraft/textures/item,golden_horse_armor.png,mobs_mc_gold_horse_armor.png,,,,,,, +/assets/minecraft/textures/entity,guardian_elder.png,mobs_mc_guardian_elder.png,,,,,,, +/assets/minecraft/textures/entity,guardian.png,mobs_mc_guardian.png,,,,,,, +/assets/minecraft/textures/entity/zombie,husk.png,mobs_mc_husk.png,,,,,,, +/assets/minecraft/textures/entity/iron_golem,iron_golem.png,mobs_mc_iron_golem.png,,,,,,, +/assets/minecraft/textures/item,iron_horse_armor.png,mobs_mc_iron_horse_armor.png,,,,,,, +/assets/minecraft/textures/entity/slime,magmacube.png,mobs_mc_magmacube.png,,,,,,, +/assets/minecraft/textures/entity/slime,slime.png,mobs_mc_slime.png,,,,,,, +/assets/minecraft/textures/entity/cow,red_mooshroom.png,mobs_mc_mooshroom.png,,,,,,, +/assets/minecraft/textures/entity/cow,brown_mooshroom.png,mobs_mc_mooshroom_brown.png,,,,,,, +/assets/minecraft/textures/entity/pig,pig.png,mobs_mc_pig.png,,,,,,, +/assets/minecraft/textures/entity/pig,pig_saddle.png,mobs_mc_pig_saddle.png,,,,,,, +/assets/minecraft/textures/entity/bear,polarbear.png,mobs_mc_polarbear.png,,,,,,, +/assets/minecraft/textures/entity/rabbit,black.png,mobs_mc_rabbit_black.png,,,,,,, +/assets/minecraft/textures/entity/rabbit,brown.png,mobs_mc_rabbit_brown.png,,,,,,, +/assets/minecraft/textures/entity/rabbit,caerbannog.png,mobs_mc_rabbit_caerbannog.png,,,,,,, +/assets/minecraft/textures/entity/rabbit,gold.png,mobs_mc_rabbit_gold.png,,,,,,, +/assets/minecraft/textures/entity/rabbit,salt.png,mobs_mc_rabbit_salt.png,,,,,,, +/assets/minecraft/textures/entity/rabbit,toast.png,mobs_mc_rabbit_toast.png,,,,,,, +/assets/minecraft/textures/entity/rabbit,white.png,mobs_mc_rabbit_white.png,,,,,,, +/assets/minecraft/textures/entity/rabbit,white_splotched.png,mobs_mc_rabbit_white_splotched.png,,,,,,, +/assets/minecraft/textures/entity/sheep,sheep_fur.png,mobs_mc_sheep_fur.png,,,,,,, +/assets/minecraft/textures/entity/sheep,sheep.png,mobs_mc_sheep.png,,,,,,, +/assets/minecraft/textures/entity/shulker,shulker.png,mobs_mc_shulker_pink.png,,,,,,, +/assets/minecraft/textures/entity/shulker,shulker_black.png,mobs_mc_shulker_black.png,,,,,,, +/assets/minecraft/textures/entity/shulker,shulker_blue.png,mobs_mc_shulker_blue.png,,,,,,, +/assets/minecraft/textures/entity/shulker,shulker_brown.png,mobs_mc_shulker_brown.png,,,,,,, +/assets/minecraft/textures/entity/shulker,shulker_cyan.png,mobs_mc_shulker_cyan.png,,,,,,, +/assets/minecraft/textures/entity/shulker,shulker_gray.png,mobs_mc_shulker_gray.png,,,,,,, +/assets/minecraft/textures/entity/shulker,shulker_green.png,mobs_mc_shulker_green.png,,,,,,, +/assets/minecraft/textures/entity/shulker,shulker_light_blue.png,mobs_mc_shulker_light_blue.png,,,,,,, +/assets/minecraft/textures/entity/shulker,shulker_lime.png,mobs_mc_shulker_lime.png,,,,,,, +/assets/minecraft/textures/entity/shulker,shulker_magenta.png,mobs_mc_shulker_magenta.png,,,,,,, +/assets/minecraft/textures/entity/shulker,shulker_orange.png,mobs_mc_shulker_orange.png,,,,,,, +/assets/minecraft/textures/entity/shulker,shulker_pink.png,mobs_mc_shulker_pink.png,,,,,,, +/assets/minecraft/textures/entity/shulker,shulker_purple.png,mobs_mc_shulker_purple.png,,,,,,, +/assets/minecraft/textures/entity/shulker,shulker_red.png,mobs_mc_shulker_red.png,,,,,,, +/assets/minecraft/textures/entity/shulker,shulker_light_gray.png,mobs_mc_shulker_silver.png,,,,,,, +/assets/minecraft/textures/entity/shulker,shulker_white.png,mobs_mc_shulker_white.png,,,,,,, +/assets/minecraft/textures/entity/shulker,shulker_yellow.png,mobs_mc_shulker_yellow.png,,,,,,, +/assets/minecraft/textures/entity,silverfish.png,mobs_mc_silverfish.png,,,,,,, +/assets/minecraft/textures/entity/skeleton,skeleton.png,mobs_mc_skeleton.png,,,,,,, +/assets/minecraft/textures/entity,snow_golem.png,mobs_mc_snowman.png,,,,,,, +/assets/minecraft/textures/entity,spider_eyes.png,mobs_mc_spider_eyes.png,,,,,,, +/assets/minecraft/textures/entity/spider,spider.png,mobs_mc_spider.png,,,,,,, +/assets/minecraft/textures/entity/squid,squid.png,mobs_mc_squid.png,,,,,,, +/assets/minecraft/textures/entity/squid,glow_squid.png,mobs_mc_glow_squid.png,,,,,,, +/assets/minecraft/textures/entity/skeleton,stray.png,mobs_mc_stray.png,,,,,,, +/assets/minecraft/textures/entity/skeleton,stray_overlay.png,mobs_mc_stray_overlay.png,,,,,,, +/assets/minecraft/textures/entity/illager,vindicator.png,mobs_mc_vindicator.png,,,,,,, +/assets/minecraft/textures/entity/illager,evoker.png,mobs_mc_evoker.png,,,,,,, +/assets/minecraft/textures/entity/illager,illusioner.png,mobs_mc_illusionist.png,,,,,,, +/assets/minecraft/textures/entity/illager,pillager.png,mobs_mc_pillager.png,,,,,,, +/assets/minecraft/textures/entity,witch.png,mobs_mc_witch.png,,,,,,, +/assets/minecraft/textures/entity/wither,wither.png,mobs_mc_wither.png,,,,,,, +/assets/minecraft/textures/entity/skeleton,wither_skeleton.png,mobs_mc_wither_skeleton.png,,,,,,, +/assets/minecraft/textures/entity/wolf,wolf_angry.png,mobs_mc_wolf_angry.png,,,,,,, +/assets/minecraft/textures/entity/wolf,wolf_collar.png,mobs_mc_wolf_collar.png,,,,,,, +/assets/minecraft/textures/entity/wolf,wolf.png,mobs_mc_wolf.png,,,,,,, +/assets/minecraft/textures/entity/wolf,wolf_tame.png,mobs_mc_wolf_tame.png,,,,,,, +/assets/minecraft/textures/entity/piglin,piglin.png,extra_mobs_piglin.png,,,,,,, +/assets/minecraft/textures/entity/piglin,zombified_piglin.png,mobs_mc_zombie_pigman.png,,,,,,, +/assets/minecraft/textures/entity/zombie,zombie.png,mobs_mc_zombie.png,,,,,,, +/assets/minecraft/textures/gui,icons.png,hbhunger_bgicon.png,16,27,9,9,0,0,y +/assets/minecraft/textures/gui,icons.png,hbhunger_icon_health_poison.png,88,0,9,9,0,0,y +/assets/minecraft/textures/gui,icons.png,hbhunger_icon.png,52,27,9,9,0,0,y +/assets/minecraft/textures/gui,icons.png,mcl_hunger_icon_foodpoison.png,88,27,9,9,0,0,y +/assets/minecraft/textures/particle,particles.png,mcl_particles_smoke.png,56,0,8,8,0,0,y +/assets/minecraft/textures/item,flower_pot.png,mcl_flowerpots_flowerpot_inventory.png,,,,,,, +/assets/minecraft/textures/block,flower_pot.png,mcl_flowerpots_flowerpot.png,,,,,,,y +/assets/minecraft/textures/gui,widgets.png,mcl_inventory_hotbar.png,0,0,182,22,0,0,y +/assets/minecraft/textures/gui,widgets.png,mcl_inventory_hotbar_selected.png,0,22,24,24,0,0,y +/assets/minecraft/textures/item,compass_00.png,mcl_compass_compass_00.png,,,,,,, +/assets/minecraft/textures/item,compass_01.png,mcl_compass_compass_01.png,,,,,,, +/assets/minecraft/textures/item,compass_02.png,mcl_compass_compass_02.png,,,,,,, +/assets/minecraft/textures/item,compass_03.png,mcl_compass_compass_03.png,,,,,,, +/assets/minecraft/textures/item,compass_04.png,mcl_compass_compass_04.png,,,,,,, +/assets/minecraft/textures/item,compass_05.png,mcl_compass_compass_05.png,,,,,,, +/assets/minecraft/textures/item,compass_06.png,mcl_compass_compass_06.png,,,,,,, +/assets/minecraft/textures/item,compass_07.png,mcl_compass_compass_07.png,,,,,,, +/assets/minecraft/textures/item,compass_08.png,mcl_compass_compass_08.png,,,,,,, +/assets/minecraft/textures/item,compass_09.png,mcl_compass_compass_09.png,,,,,,, +/assets/minecraft/textures/item,compass_10.png,mcl_compass_compass_10.png,,,,,,, +/assets/minecraft/textures/item,compass_11.png,mcl_compass_compass_11.png,,,,,,, +/assets/minecraft/textures/item,compass_12.png,mcl_compass_compass_12.png,,,,,,, +/assets/minecraft/textures/item,compass_13.png,mcl_compass_compass_13.png,,,,,,, +/assets/minecraft/textures/item,compass_14.png,mcl_compass_compass_14.png,,,,,,, +/assets/minecraft/textures/item,compass_15.png,mcl_compass_compass_15.png,,,,,,, +/assets/minecraft/textures/item,compass_16.png,mcl_compass_compass_16.png,,,,,,, +/assets/minecraft/textures/item,compass_17.png,mcl_compass_compass_17.png,,,,,,, +/assets/minecraft/textures/item,compass_18.png,mcl_compass_compass_18.png,,,,,,, +/assets/minecraft/textures/item,compass_19.png,mcl_compass_compass_19.png,,,,,,, +/assets/minecraft/textures/item,compass_20.png,mcl_compass_compass_20.png,,,,,,, +/assets/minecraft/textures/item,compass_21.png,mcl_compass_compass_21.png,,,,,,, +/assets/minecraft/textures/item,compass_22.png,mcl_compass_compass_22.png,,,,,,, +/assets/minecraft/textures/item,compass_23.png,mcl_compass_compass_23.png,,,,,,, +/assets/minecraft/textures/item,compass_24.png,mcl_compass_compass_24.png,,,,,,, +/assets/minecraft/textures/item,compass_25.png,mcl_compass_compass_25.png,,,,,,, +/assets/minecraft/textures/item,compass_26.png,mcl_compass_compass_26.png,,,,,,, +/assets/minecraft/textures/item,compass_27.png,mcl_compass_compass_27.png,,,,,,, +/assets/minecraft/textures/item,compass_28.png,mcl_compass_compass_28.png,,,,,,, +/assets/minecraft/textures/item,compass_29.png,mcl_compass_compass_29.png,,,,,,, +/assets/minecraft/textures/item,compass_30.png,mcl_compass_compass_30.png,,,,,,, +/assets/minecraft/textures/item,compass_31.png,mcl_compass_compass_31.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_00.png,mcl_compass_recovery_compass_00.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_01.png,mcl_compass_recovery_compass_01.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_02.png,mcl_compass_recovery_compass_02.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_03.png,mcl_compass_recovery_compass_03.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_04.png,mcl_compass_recovery_compass_04.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_05.png,mcl_compass_recovery_compass_05.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_06.png,mcl_compass_recovery_compass_06.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_07.png,mcl_compass_recovery_compass_07.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_08.png,mcl_compass_recovery_compass_08.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_09.png,mcl_compass_recovery_compass_09.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_10.png,mcl_compass_recovery_compass_10.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_11.png,mcl_compass_recovery_compass_11.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_12.png,mcl_compass_recovery_compass_12.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_13.png,mcl_compass_recovery_compass_13.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_14.png,mcl_compass_recovery_compass_14.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_15.png,mcl_compass_recovery_compass_15.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_16.png,mcl_compass_recovery_compass_16.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_17.png,mcl_compass_recovery_compass_17.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_18.png,mcl_compass_recovery_compass_18.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_19.png,mcl_compass_recovery_compass_19.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_20.png,mcl_compass_recovery_compass_20.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_21.png,mcl_compass_recovery_compass_21.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_22.png,mcl_compass_recovery_compass_22.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_23.png,mcl_compass_recovery_compass_23.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_24.png,mcl_compass_recovery_compass_24.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_25.png,mcl_compass_recovery_compass_25.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_26.png,mcl_compass_recovery_compass_26.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_27.png,mcl_compass_recovery_compass_27.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_28.png,mcl_compass_recovery_compass_28.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_29.png,mcl_compass_recovery_compass_29.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_30.png,mcl_compass_recovery_compass_30.png,,,,,,, +/assets/minecraft/textures/item,recovery_compass_31.png,mcl_compass_recovery_compass_31.png,,,,,,, +/assets/minecraft/textures/item,clock_00.png,mcl_clock_clock_00.png,,,,,,, +/assets/minecraft/textures/item,clock_01.png,mcl_clock_clock_01.png,,,,,,, +/assets/minecraft/textures/item,clock_02.png,mcl_clock_clock_02.png,,,,,,, +/assets/minecraft/textures/item,clock_03.png,mcl_clock_clock_03.png,,,,,,, +/assets/minecraft/textures/item,clock_04.png,mcl_clock_clock_04.png,,,,,,, +/assets/minecraft/textures/item,clock_05.png,mcl_clock_clock_05.png,,,,,,, +/assets/minecraft/textures/item,clock_06.png,mcl_clock_clock_06.png,,,,,,, +/assets/minecraft/textures/item,clock_07.png,mcl_clock_clock_07.png,,,,,,, +/assets/minecraft/textures/item,clock_08.png,mcl_clock_clock_08.png,,,,,,, +/assets/minecraft/textures/item,clock_09.png,mcl_clock_clock_09.png,,,,,,, +/assets/minecraft/textures/item,clock_10.png,mcl_clock_clock_10.png,,,,,,, +/assets/minecraft/textures/item,clock_11.png,mcl_clock_clock_11.png,,,,,,, +/assets/minecraft/textures/item,clock_12.png,mcl_clock_clock_12.png,,,,,,, +/assets/minecraft/textures/item,clock_13.png,mcl_clock_clock_13.png,,,,,,, +/assets/minecraft/textures/item,clock_14.png,mcl_clock_clock_14.png,,,,,,, +/assets/minecraft/textures/item,clock_15.png,mcl_clock_clock_15.png,,,,,,, +/assets/minecraft/textures/item,clock_16.png,mcl_clock_clock_16.png,,,,,,, +/assets/minecraft/textures/item,clock_17.png,mcl_clock_clock_17.png,,,,,,, +/assets/minecraft/textures/item,clock_18.png,mcl_clock_clock_18.png,,,,,,, +/assets/minecraft/textures/item,clock_19.png,mcl_clock_clock_19.png,,,,,,, +/assets/minecraft/textures/item,clock_20.png,mcl_clock_clock_20.png,,,,,,, +/assets/minecraft/textures/item,clock_21.png,mcl_clock_clock_21.png,,,,,,, +/assets/minecraft/textures/item,clock_22.png,mcl_clock_clock_22.png,,,,,,, +/assets/minecraft/textures/item,clock_23.png,mcl_clock_clock_23.png,,,,,,, +/assets/minecraft/textures/item,clock_24.png,mcl_clock_clock_24.png,,,,,,, +/assets/minecraft/textures/item,clock_25.png,mcl_clock_clock_25.png,,,,,,, +/assets/minecraft/textures/item,clock_26.png,mcl_clock_clock_26.png,,,,,,, +/assets/minecraft/textures/item,clock_27.png,mcl_clock_clock_27.png,,,,,,, +/assets/minecraft/textures/item,clock_28.png,mcl_clock_clock_28.png,,,,,,, +/assets/minecraft/textures/item,clock_29.png,mcl_clock_clock_29.png,,,,,,, +/assets/minecraft/textures/item,clock_30.png,mcl_clock_clock_30.png,,,,,,, +/assets/minecraft/textures/item,clock_31.png,mcl_clock_clock_31.png,,,,,,, +/assets/minecraft/textures/item,clock_32.png,mcl_clock_clock_32.png,,,,,,, +/assets/minecraft/textures/item,clock_33.png,mcl_clock_clock_33.png,,,,,,, +/assets/minecraft/textures/item,clock_34.png,mcl_clock_clock_34.png,,,,,,, +/assets/minecraft/textures/item,clock_35.png,mcl_clock_clock_35.png,,,,,,, +/assets/minecraft/textures/item,clock_36.png,mcl_clock_clock_36.png,,,,,,, +/assets/minecraft/textures/item,clock_37.png,mcl_clock_clock_37.png,,,,,,, +/assets/minecraft/textures/item,clock_38.png,mcl_clock_clock_38.png,,,,,,, +/assets/minecraft/textures/item,clock_39.png,mcl_clock_clock_39.png,,,,,,, +/assets/minecraft/textures/item,clock_40.png,mcl_clock_clock_40.png,,,,,,, +/assets/minecraft/textures/item,clock_41.png,mcl_clock_clock_41.png,,,,,,, +/assets/minecraft/textures/item,clock_42.png,mcl_clock_clock_42.png,,,,,,, +/assets/minecraft/textures/item,clock_43.png,mcl_clock_clock_43.png,,,,,,, +/assets/minecraft/textures/item,clock_44.png,mcl_clock_clock_44.png,,,,,,, +/assets/minecraft/textures/item,clock_45.png,mcl_clock_clock_45.png,,,,,,, +/assets/minecraft/textures/item,clock_46.png,mcl_clock_clock_46.png,,,,,,, +/assets/minecraft/textures/item,clock_47.png,mcl_clock_clock_47.png,,,,,,, +/assets/minecraft/textures/item,clock_48.png,mcl_clock_clock_48.png,,,,,,, +/assets/minecraft/textures/item,clock_49.png,mcl_clock_clock_49.png,,,,,,, +/assets/minecraft/textures/item,clock_50.png,mcl_clock_clock_50.png,,,,,,, +/assets/minecraft/textures/item,clock_51.png,mcl_clock_clock_51.png,,,,,,, +/assets/minecraft/textures/item,clock_52.png,mcl_clock_clock_52.png,,,,,,, +/assets/minecraft/textures/item,clock_53.png,mcl_clock_clock_53.png,,,,,,, +/assets/minecraft/textures/item,clock_54.png,mcl_clock_clock_54.png,,,,,,, +/assets/minecraft/textures/item,clock_55.png,mcl_clock_clock_55.png,,,,,,, +/assets/minecraft/textures/item,clock_56.png,mcl_clock_clock_56.png,,,,,,, +/assets/minecraft/textures/item,clock_57.png,mcl_clock_clock_57.png,,,,,,, +/assets/minecraft/textures/item,clock_58.png,mcl_clock_clock_58.png,,,,,,, +/assets/minecraft/textures/item,clock_59.png,mcl_clock_clock_59.png,,,,,,, +/assets/minecraft/textures/item,clock_60.png,mcl_clock_clock_60.png,,,,,,, +/assets/minecraft/textures/item,clock_61.png,mcl_clock_clock_61.png,,,,,,, +/assets/minecraft/textures/item,clock_62.png,mcl_clock_clock_62.png,,,,,,, +/assets/minecraft/textures/item,clock_63.png,mcl_clock_clock_63.png,,,,,,, +/assets/minecraft/textures/item,empty_armor_slot_boots.png,mcl_inventory_empty_armor_slot_boots.png,,,,,,, +/assets/minecraft/textures/item,empty_armor_slot_chestplate.png,mcl_inventory_empty_armor_slot_chestplate.png,,,,,,, +/assets/minecraft/textures/item,empty_armor_slot_helmet.png,mcl_inventory_empty_armor_slot_helmet.png,,,,,,, +/assets/minecraft/textures/item,empty_armor_slot_leggings.png,mcl_inventory_empty_armor_slot_leggings.png,,,,,,, +/assets/minecraft/textures/item,empty_armor_slot_shield.png,mcl_inventory_empty_armor_slot_shield.png,,,,,,, +/assets/minecraft/textures/entity,shield_base.png,mcl_shield_base_nopattern.png,,,,,,, +/assets/minecraft/textures/entity/shield,base.png,mcl_shield_pattern_base.png,,,,,,, +/assets/minecraft/textures/entity/shield,border.png,mcl_shield_pattern_border.png,,,,,,, +/assets/minecraft/textures/entity/shield,bricks.png,mcl_shield_pattern_bricks.png,,,,,,, +/assets/minecraft/textures/entity/shield,circle.png,mcl_shield_pattern_circle.png,,,,,,, +/assets/minecraft/textures/entity/shield,creeper.png,mcl_shield_pattern_creeper.png,,,,,,, +/assets/minecraft/textures/entity/shield,cross.png,mcl_shield_pattern_cross.png,,,,,,, +/assets/minecraft/textures/entity/shield,curly_border.png,mcl_shield_pattern_curly_border.png,,,,,,, +/assets/minecraft/textures/entity/shield,diagonal_left.png,mcl_shield_pattern_diagonal_left.png,,,,,,, +/assets/minecraft/textures/entity/shield,diagonal_right.png,mcl_shield_pattern_diagonal_right.png,,,,,,, +/assets/minecraft/textures/entity/shield,diagonal_up_left.png,mcl_shield_pattern_diagonal_up_left.png,,,,,,, +/assets/minecraft/textures/entity/shield,diagonal_up_right.png,mcl_shield_pattern_diagonal_up_right.png,,,,,,, +/assets/minecraft/textures/entity/shield,flower.png,mcl_shield_pattern_flower.png,,,,,,, +/assets/minecraft/textures/entity/shield,gradient.png,mcl_shield_pattern_gradient.png,,,,,,, +/assets/minecraft/textures/entity/shield,gradient_up.png,mcl_shield_pattern_gradient_up.png,,,,,,, +/assets/minecraft/textures/entity/shield,half_horizontal.png,mcl_shield_pattern_half_horizontal.png,,,,,,, +/assets/minecraft/textures/entity/shield,half_horizontal_bottom.png,mcl_shield_pattern_half_horizontal_bottom.png,,,,,,, +/assets/minecraft/textures/entity/shield,half_vertical.png,mcl_shield_pattern_half_vertical.png,,,,,,, +/assets/minecraft/textures/entity/shield,half_vertical_right.png,mcl_shield_pattern_half_vertical_right.png,,,,,,, +/assets/minecraft/textures/entity/shield,rhombus.png,mcl_shield_pattern_rhombus.png,,,,,,, +/assets/minecraft/textures/entity/shield,skull.png,mcl_shield_pattern_skull.png,,,,,,, +/assets/minecraft/textures/entity/shield,small_stripes.png,mcl_shield_pattern_small_stripes.png,,,,,,, +/assets/minecraft/textures/entity/shield,square_bottom_left.png,mcl_shield_pattern_square_bottom_left.png,,,,,,, +/assets/minecraft/textures/entity/shield,square_bottom_right.png,mcl_shield_pattern_square_bottom_right.png,,,,,,, +/assets/minecraft/textures/entity/shield,square_top_left.png,mcl_shield_pattern_square_top_left.png,,,,,,, +/assets/minecraft/textures/entity/shield,square_top_right.png,mcl_shield_pattern_square_top_right.png,,,,,,, +/assets/minecraft/textures/entity/shield,straight_cross.png,mcl_shield_pattern_straight_cross.png,,,,,,, +/assets/minecraft/textures/entity/shield,stripe_bottom.png,mcl_shield_pattern_stripe_bottom.png,,,,,,, +/assets/minecraft/textures/entity/shield,stripe_center.png,mcl_shield_pattern_stripe_center.png,,,,,,, +/assets/minecraft/textures/entity/shield,stripe_downleft.png,mcl_shield_pattern_stripe_downleft.png,,,,,,, +/assets/minecraft/textures/entity/shield,stripe_downright.png,mcl_shield_pattern_stripe_downright.png,,,,,,, +/assets/minecraft/textures/entity/shield,stripe_left.png,mcl_shield_pattern_stripe_left.png,,,,,,, +/assets/minecraft/textures/entity/shield,stripe_middle.png,mcl_shield_pattern_stripe_middle.png,,,,,,, +/assets/minecraft/textures/entity/shield,stripe_right.png,mcl_shield_pattern_stripe_right.png,,,,,,, +/assets/minecraft/textures/entity/shield,stripe_top.png,mcl_shield_pattern_stripe_top.png,,,,,,, +/assets/minecraft/textures/entity/shield,triangle_bottom.png,mcl_shield_pattern_triangle_bottom.png,,,,,,, +/assets/minecraft/textures/entity/shield,triangles_bottom.png,mcl_shield_pattern_triangles_bottom.png,,,,,,, +/assets/minecraft/textures/entity/shield,triangles_top.png,mcl_shield_pattern_triangles_top.png,,,,,,, +/assets/minecraft/textures/entity/shield,triangle_top.png,mcl_banners_triangle_top.png,,,,,,, +/assets/minecraft/textures/item,knowledge_book.png,craftguide_book.png,,,,,,, +/assets/minecraft/textures/gui/sprites/icon,search.png,craftguide_search_icon.png,,,,,,, +/assets/minecraft/textures/block,redstone_dust_dot.png,redstone_redstone_dust_dot.png,,,,,,, +/assets/minecraft/textures/block,redstone_dust_line0.png,redstone_redstone_dust_line0.png,,,,,,, +/assets/minecraft/textures/block,redstone_dust_line1.png,redstone_redstone_dust_line1.png,,,,,,, +/assets/minecraft/textures/block,attached_melon_stem.png,mcl_farming_melon_stem_connected.png,,,,,,, +/assets/minecraft/textures/block,melon_stem.png,mcl_farming_melon_stem_disconnected.png,,,,,,, +/assets/minecraft/textures/entity/signs,acacia.png,mcl_signs_sign_acacia.png,,,,,,, +/assets/minecraft/textures/entity/signs,bamboo.png,mcl_bamboo_bamboo_sign.png,,,,,,, +/assets/minecraft/textures/entity/signs,cherry.png,mcl_cherry_blossom_sign.png,,,,,,, +/assets/minecraft/textures/entity/signs,dark_oak.png,mcl_signs_sign_dark.png,,,,,,, +/assets/minecraft/textures/entity/signs,oak.png,mcl_signs_sign.png,,,,,,, +/assets/minecraft/textures/item,bamboo_sign.png,mcl_bamboo_bamboo_sign_wield.png,,,,,,, +/assets/minecraft/textures/item,cherry_sign.png,mcl_cherry_blossom_sign_inv.png,,,,,,, +/assets/minecraft/textures/item,dark_oak_sign.png,mcl_signs_default_sign_dark.png,,,,,,, +/assets/minecraft/textures/item,oak_sign.png,mcl_signs_default_sign.png,,,,,,, +/assets/minecraft/textures/entity,banner_base.png,mcl_banners_banner_base.png,,,,,,, +/assets/minecraft/textures/entity/banner,base.png,mcl_banners_base.png,,,,,,, +/assets/minecraft/textures/block,nether_portal.png,mcl_portals_portal.png,,,,,,, +/assets/minecraft/textures/entity,end_portal.png,mcl_portals_end_portal.png,,,,,,, +/assets/minecraft/textures/entity/chest,normal.png,mcl_chests_normal.png,,,,,,, +/assets/minecraft/textures/entity/chest,trapped.png,mcl_chests_trapped.png,,,,,,, +/assets/minecraft/textures/entity/chest,ender.png,mcl_chests_ender.png,,,,,,, +/assets/minecraft/textures/block,end_portal_frame_top.png,mcl_portals_endframe_top.png,,,,,,, +/assets/minecraft/textures/block,end_portal_frame_side.png,mcl_portals_endframe_side.png,,,,,,, +/assets/minecraft/textures/block,end_portal_frame_eye.png,mcl_portals_endframe_eye.png,,,,,,, +/assets/minecraft/textures/block,end_stone.png,mcl_portals_endframe_bottom.png,,,,,,, +/assets/minecraft/textures/block,cobblestone.png,mcl_walls_cobble_wall_top.png,,,,,,, +/assets/minecraft/textures/block,cobblestone.png,mcl_walls_cobble_wall_side.png,,,,,,, +/assets/minecraft/textures/block,mossy_cobblestone.png,mcl_walls_cobble_mossy_wall_top.png,,,,,,, +/assets/minecraft/textures/block,mossy_cobblestone.png,mcl_walls_cobble_mossy_wall_side.png,,,,,,, +/assets/minecraft/textures/block,chiseled_deepslate.png,mcl_chiseled_deepslate.png,,,,,,, +/assets/minecraft/textures/block,cobbled_deepslate.png,mcl_cobbled_deepslate.png,,,,,,, +/assets/minecraft/textures/block,cracked_deepslate_bricks.png,mcl_cracked_deepslate_bricks.png,,,,,,, +/assets/minecraft/textures/block,cracked_deepslate_tiles.png,mcl_cracked_deepslate_tiles.png,,,,,,, +/assets/minecraft/textures/block,deepslate.png,mcl_deepslate.png,,,,,,, +/assets/minecraft/textures/block,deepslate_bricks.png,mcl_deepslate_bricks.png,,,,,,, +/assets/minecraft/textures/block,deepslate_coal_ore.png,mcl_deepslate_coal_ore.png,,,,,,, +/assets/minecraft/textures/block,deepslate_diamond_ore.png,mcl_deepslate_diamond_ore.png,,,,,,, +/assets/minecraft/textures/block,deepslate_emerald_ore.png,mcl_deepslate_emerald_ore.png,,,,,,, +/assets/minecraft/textures/block,deepslate_gold_ore.png,mcl_deepslate_gold_ore.png,,,,,,, +/assets/minecraft/textures/block,deepslate_iron_ore.png,mcl_deepslate_iron_ore.png,,,,,,, +/assets/minecraft/textures/block,deepslate_lapis_ore.png,mcl_deepslate_lapis_ore.png,,,,,,, +/assets/minecraft/textures/block,deepslate_redstone_ore.png,mcl_deepslate_redstone_ore.png,,,,,,, +/assets/minecraft/textures/block,deepslate_tiles.png,mcl_deepslate_tiles.png,,,,,,, +/assets/minecraft/textures/block,deepslate_top.png,mcl_deepslate_top.png,,,,,,, +/assets/minecraft/textures/block,polished_deepslate.png,mcl_polished_deepslate.png,,,,,,, +/assets/minecraft/textures/block,tuff.png,mcl_deepslate_tuff.png,,,,,,, +/assets/minecraft/textures/block,grass_block_top.png,mcl_core_grass_block_top.png,,,,,,, +/assets/minecraft/textures/block,grass_block_side_overlay.png,mcl_core_grass_block_side_overlay.png,,,,,,, +/assets/minecraft/textures/item,enchanted_book.png,mcl_enchanting_book_enchanted.png,,,,,,, +/assets/minecraft/textures/item,experience_bottle.png,mcl_experience_bottle.png,,,,,,, +/assets/minecraft/textures/entity/bed,black.png,mcl_beds_bed_black.png,,,,,,, +/assets/minecraft/textures/entity/bed,blue.png,mcl_beds_bed_blue.png,,,,,,, +/assets/minecraft/textures/entity/bed,brown.png,mcl_beds_bed_brown.png,,,,,,, +/assets/minecraft/textures/entity/bed,cyan.png,mcl_beds_bed_cyan.png,,,,,,, +/assets/minecraft/textures/entity/bed,gray.png,mcl_beds_bed_grey.png,,,,,,, +/assets/minecraft/textures/entity/bed,green.png,mcl_beds_bed_green.png,,,,,,, +/assets/minecraft/textures/entity/bed,light_blue.png,mcl_beds_bed_light_blue.png,,,,,,, +/assets/minecraft/textures/entity/bed,light_gray.png,mcl_beds_bed_silver.png,,,,,,, +/assets/minecraft/textures/entity/bed,lime.png,mcl_beds_bed_lime.png,,,,,,, +/assets/minecraft/textures/entity/bed,magenta.png,mcl_beds_bed_magenta.png,,,,,,, +/assets/minecraft/textures/entity/bed,orange.png,mcl_beds_bed_orange.png,,,,,,, +/assets/minecraft/textures/entity/bed,pink.png,mcl_beds_bed_pink.png,,,,,,, +/assets/minecraft/textures/entity/bed,purple.png,mcl_beds_bed_purple.png,,,,,,, +/assets/minecraft/textures/entity/bed,white.png,mcl_beds_bed_white.png,,,,,,, +/assets/minecraft/textures/entity/bed,yellow.png,mcl_beds_bed_yellow.png,,,,,,, +/assets/minecraft/textures/block,cherry_door_top.png,mcl_cherry_blossom_door_top.png,,,,,,, +/assets/minecraft/textures/block,cherry_leaves.png,mcl_cherry_blossom_leaves.png,,,,,,, +/assets/minecraft/textures/block,jungle_leaves.png,mcl_mangrove_leaves.png,,,,,,, +/assets/minecraft/textures/block,cherry_door_bottom.png,mcl_cherry_blossom_door_bottom.png,,,,,,, +/assets/minecraft/textures/item,cherry_sign.png,mcl_cherry_blossom_sign_inv.png,,,,,,, +/assets/minecraft/textures/item,cherry_door.png,mcl_cherry_blossom_door_inv.png,,,,,,, +/assets/minecraft/textures/entity,dolphin.png,extra_mobs_dolphin.png,,,,,,, +/assets/minecraft/textures/entity/hoglin,hoglin.png,extra_mobs_hoglin.png,,,,,,, +/assets/minecraft/textures/entity/hoglin,zoglin.png,extra_mobs_zoglin.png,,,,,,, +/assets/minecraft/textures/entity/strider,strider.png,extra_mobs_strider.png,,,,,,, +/assets/minecraft/textures/entity/strider,strider_cold.png,extra_mobs_strider_cold.png,,,,,,, +/assets/minecraft/textures/item,coast_armor_trim_smithing_template.png,coast_armor_trim_smithing_template.png,,,,,,, +/assets/minecraft/textures/item,dune_armor_trim_smithing_template.png,dune_armor_trim_smithing_template.png,,,,,,, +/assets/minecraft/textures/item,eye_armor_trim_smithing_template.png,eye_armor_trim_smithing_template.png,,,,,,, +/assets/minecraft/textures/item,empty_slot_smithing_template_armor_trim.png,mcl_smithing_table_inventory_trim_bg.png,,,,,,, +/assets/minecraft/textures/item,rib_armor_trim_smithing_template.png,rib_armor_trim_smithing_template.png,,,,,,, +/assets/minecraft/textures/item,sentry_armor_trim_smithing_template.png,sentry_armor_trim_smithing_template.png,,,,,,, +/assets/minecraft/textures/item,silence_armor_trim_smithing_template.png,silence_armor_trim_smithing_template.png,,,,,,, +/assets/minecraft/textures/item,snout_armor_trim_smithing_template.png,snout_armor_trim_smithing_template.png,,,,,,, +/assets/minecraft/textures/item,spire_armor_trim_smithing_template.png,spire_armor_trim_smithing_template.png,,,,,,, +/assets/minecraft/textures/item,tide_armor_trim_smithing_template.png,tide_armor_trim_smithing_template.png,,,,,,, +/assets/minecraft/textures/item,vex_armor_trim_smithing_template.png,vex_armor_trim_smithing_template.png,,,,,,, +/assets/minecraft/textures/item,ward_armor_trim_smithing_template.png,ward_armor_trim_smithing_template.png,,,,,,, +/assets/minecraft/textures/item,wayfinder_armor_trim_smithing_template.png,wayfinder_armor_trim_smithing_template.png,,,,,,, +/assets/minecraft/textures/item,wild_armor_trim_smithing_template.png,wild_armor_trim_smithing_template.png,,,,,,, +/assets/minecraft/textures/trims/items,boots_trim.png,boots_trim.png,,,,,,, +/assets/minecraft/textures/trims/items,chestplate_trim.png,chestplate_trim.png,,,,,,, +/assets/minecraft/textures/trims/items,helmet_trim.png,helmet_trim.png,,,,,,, +/assets/minecraft/textures/trims/items,leggings_trim.png,leggings_trim.png,,,,,,, +/assets/minecraft/textures/block,lodestone_side.png,lodestone_bottom.png,,,,,,, +/assets/minecraft/textures/block,lodestone_side.png,lodestone_side1.png,,,,,,, +/assets/minecraft/textures/block,lodestone_side.png,lodestone_side2.png,,,,,,, +/assets/minecraft/textures/block,lodestone_side.png,lodestone_side3.png,,,,,,, +/assets/minecraft/textures/block,lodestone_side.png,lodestone_side4.png,,,,,,, +/assets/minecraft/textures/block,lodestone_top.png,lodestone_top.png,,,,,,, +/assets/minecraft/textures/block,respawn_anchor_bottom.png,respawn_anchor_bottom.png,,,,,,, +/assets/minecraft/textures/block,respawn_anchor_side0.png,respawn_anchor_side0.png,,,,,,, +/assets/minecraft/textures/block,respawn_anchor_side1.png,respawn_anchor_side1.png,,,,,,, +/assets/minecraft/textures/block,respawn_anchor_side2.png,respawn_anchor_side2.png,,,,,,, +/assets/minecraft/textures/block,respawn_anchor_side3.png,respawn_anchor_side3.png,,,,,,, +/assets/minecraft/textures/block,respawn_anchor_side4.png,respawn_anchor_side4.png,,,,,,, +/assets/minecraft/textures/block,respawn_anchor_top_off.png,respawn_anchor_top_off.png,,,,,,, +/assets/minecraft/textures/block,amethyst_block.png,mcl_amethyst_amethyst_block.png,,,,,,, +/assets/minecraft/textures/block,large_amethyst_bud.png,mcl_amethyst_amethyst_bud_large.png,,,,,,, +/assets/minecraft/textures/block,medium_amethyst_bud.png,mcl_amethyst_amethyst_bud_medium.png,,,,,,, +/assets/minecraft/textures/block,small_amethyst_bud.png,mcl_amethyst_amethyst_bud_small.png,,,,,,, +/assets/minecraft/textures/block,amethyst_cluster.png,mcl_amethyst_amethyst_cluster.png,,,,,,, +/assets/minecraft/textures/item,amethyst_shard.png,mcl_amethyst_amethyst_shard.png,,,,,,, +/assets/minecraft/textures/block,budding_amethyst.png,mcl_amethyst_budding_amethyst.png,,,,,,, +/assets/minecraft/textures/block,calcite.png,mcl_amethyst_calcite_block.png,,,,,,, +/assets/minecraft/textures/block,bamboo_planks.png,mcl_bamboo_fence_bamboo.png,,,,,,, +/assets/minecraft/textures/block,bamboo_planks.png,mcl_bamboo_fence_gate_bamboo.png,,,,,,, +/assets/minecraft/textures/block,crimson_planks.png,mcl_crimson_crimson_fence.png,,,,,,, +/assets/minecraft/textures/block,crimson_planks.png,mcl_crimson_crimson_fence_side.png,,,,,,, +/assets/minecraft/textures/block,crimson_planks.png,mcl_crimson_crimson_fence_top.png,,,,,,, +/assets/minecraft/textures/block,warped_planks.png,mcl_crimson_warped_fence.png,,,,,,, +/assets/minecraft/textures/block,warped_planks.png,mcl_crimson_warped_fence_side.png,,,,,,, +/assets/minecraft/textures/block,warped_planks.png,mcl_crimson_warped_fence_top.png,,,,,,, +/assets/minecraft/textures/block,acacia_planks.png,mcl_fences_fence_acacia.png,,,,,,, +/assets/minecraft/textures/block,acacia_planks.png,mcl_fences_fence_gate_acacia.png,,,,,,, +/assets/minecraft/textures/block,dark_oak_planks.png,mcl_fences_fence_big_oak.png,,,,,,, +/assets/minecraft/textures/block,dark_oak_planks.png,mcl_fences_fence_gate_big_oak.png,,,,,,, +/assets/minecraft/textures/block,birch_planks.png,mcl_fences_fence_birch.png,,,,,,, +/assets/minecraft/textures/block,birch_planks.png,mcl_fences_fence_gate_birch.png,,,,,,, +/assets/minecraft/textures/block,jungle_planks.png,mcl_fences_fence_gate_jungle.png,,,,,,, +/assets/minecraft/textures/block,jungle_planks.png,mcl_fences_fence_jungle.png,,,,,,, +/assets/minecraft/textures/block,oak_planks.png,mcl_fences_fence_gate_oak.png,,,,,,, +/assets/minecraft/textures/block,oak_planks.png,mcl_fences_fence_oak.png,,,,,,, +/assets/minecraft/textures/block,spruce_planks.png,mcl_fences_fence_gate_spruce.png,,,,,,, +/assets/minecraft/textures/block,spruce_planks.png,mcl_fences_fence_spruce.png,,,,,,, +/assets/minecraft/textures/block,mangrove_planks.png,mcl_mangrove_fence.png,,,,,,, +/assets/minecraft/textures/block,mangrove_planks.png,mcl_mangrove_fence_gate.png,,,,,,, +/assets/minecraft/textures/block,red_nether_bricks.png,mcl_fences_fence_red_nether_brick.png,,,,,,, +/assets/minecraft/textures/block,red_nether_bricks.png,mcl_fences_fence_gate_red_nether_brick.png,,,,,,, +/assets/minecraft/textures/block,nether_bricks.png,mcl_fences_fence_gate_nether_brick.png,,,,,,, +/assets/minecraft/textures/block,nether_bricks.png,mcl_fences_fence_nether_brick.png,,,,,,, +/assets/minecraft/textures/block,scaffolding_bottom.png,mcl_bamboo_scaffolding_bottom.png,,,,,,, +/assets/minecraft/textures/block,scaffolding_top.png,mcl_bamboo_scaffolding_top.png,,,,,,, +/assets/minecraft/textures/block,oak_planks.png,mcl_banners_fallback_wood.png,,,,,,, +/assets/minecraft/textures/block,barrel_bottom.png,mcl_barrels_barrel_bottom.png,,,,,,, +/assets/minecraft/textures/block,barrel_side.png,mcl_barrels_barrel_side.png,,,,,,, +/assets/minecraft/textures/block,barrel_top.png,mcl_barrels_barrel_top.png,,,,,,, +/assets/minecraft/textures/block,barrel_top_open.png,mcl_barrels_barrel_top_open.png,,,,,,, +/assets/minecraft/textures/block,beehive_end.png,mcl_beehives_beehive_end.png,,,,,,, +/assets/minecraft/textures/block,beehive_front.png,mcl_beehives_beehive_front.png,,,,,,, +/assets/minecraft/textures/block,beehive_front_honey.png,mcl_beehives_beehive_front_honey.png,,,,,,, +/assets/minecraft/textures/block,beehive_side.png,mcl_beehives_beehive_side.png,,,,,,, +/assets/minecraft/textures/block,bee_nest_bottom.png,mcl_beehives_bee_nest_bottom.png,,,,,,, +/assets/minecraft/textures/block,bee_nest_front.png,mcl_beehives_bee_nest_front.png,,,,,,, +/assets/minecraft/textures/block,bee_nest_front_honey.png,mcl_beehives_bee_nest_front_honey.png,,,,,,, +/assets/minecraft/textures/block,bee_nest_side.png,mcl_beehives_bee_nest_side.png,,,,,,, +/assets/minecraft/textures/block,bee_nest_top.png,mcl_beehives_bee_nest_top.png,,,,,,, +/assets/minecraft/textures/item,bell.png,mcl_bells_bell.png,,,,,,, +/assets/minecraft/textures/block,basalt_side.png,mcl_blackstone_basalt_side.png,,,,,,, +/assets/minecraft/textures/block,basalt_top.png,mcl_blackstone_basalt_top.png,,,,,,, +/assets/minecraft/textures/block,polished_basalt_side.png,mcl_blackstone_basalt_side_polished.png,,,,,,, +/assets/minecraft/textures/block,polished_basalt_top.png,mcl_blackstone_basalt_top_polished.png,,,,,,, +/assets/minecraft/textures/block,smooth_basalt.png,mcl_blackstone_basalt_smooth.png,,,,,,, +/assets/minecraft/textures/block,chiseled_polished_blackstone.png,mcl_blackstone_chiseled_polished.png,,,,,,, +/assets/minecraft/textures/block,gilded_blackstone.png,mcl_blackstone_gilded.png,,,,,,, +/assets/minecraft/textures/block,polished_blackstone.png,mcl_blackstone_polished.png,,,,,,, +/assets/minecraft/textures/block,polished_blackstone_bricks.png,mcl_blackstone_polished_bricks.png,,,,,,, +/assets/minecraft/textures/block,blackstone.png,mcl_blackstone_side.png,,,,,,, +/assets/minecraft/textures/block,blackstone_top.png,mcl_blackstone_top.png,,,,,,, +/assets/minecraft/textures/block,soul_soil.png,mcl_blackstone_soul_soil.png,,,,,,, +/assets/minecraft/textures/item,light_00.png,mcl_core_light_0.png,,,,,,, +/assets/minecraft/textures/item,light_01.png,mcl_core_light_1.png,,,,,,, +/assets/minecraft/textures/item,light_02.png,mcl_core_light_2.png,,,,,,, +/assets/minecraft/textures/item,light_03.png,mcl_core_light_3.png,,,,,,, +/assets/minecraft/textures/item,light_04.png,mcl_core_light_4.png,,,,,,, +/assets/minecraft/textures/item,light_05.png,mcl_core_light_5.png,,,,,,, +/assets/minecraft/textures/item,light_06.png,mcl_core_light_6.png,,,,,,, +/assets/minecraft/textures/item,light_07.png,mcl_core_light_7.png,,,,,,, +/assets/minecraft/textures/item,light_08.png,mcl_core_light_8.png,,,,,,, +/assets/minecraft/textures/item,light_09.png,mcl_core_light_9.png,,,,,,, +/assets/minecraft/textures/item,light_10.png,mcl_core_light_10.png,,,,,,, +/assets/minecraft/textures/item,light_11.png,mcl_core_light_11.png,,,,,,, +/assets/minecraft/textures/item,light_12.png,mcl_core_light_12.png,,,,,,, +/assets/minecraft/textures/item,light_13.png,mcl_core_light_13.png,,,,,,, +/assets/minecraft/textures/item,light_14.png,mcl_core_light_14.png,,,,,,, +/assets/minecraft/textures/block,honey_block_bottom.png,mcl_honey_block_bottom.png,,,,,,, +/assets/minecraft/textures/block,honey_block_side.png,mcl_honey_block_side.png,,,,,,, +/assets/minecraft/textures/block,honey_block_top.png,mcl_honey_block_top.png,,,,,,, +/assets/minecraft/textures/item,honey_bottle.png,mcl_honey_honey_bottle.png,,,,,,, +/assets/minecraft/textures/item,honeycomb.png,mcl_honey_honeycomb.png,,,,,,, +/assets/minecraft/textures/block,honeycomb_block.png,mcl_honey_honeycomb_block.png,,,,,,, +/assets/minecraft/textures/mob_effect,bad_omen.png,mcl_potions_effect_bad_omen.png,,,,,,, +/assets/minecraft/textures/mob_effect,fire_resistance.png,mcl_potions_effect_fire_proof.png,,,,,,, +/assets/minecraft/textures/mob_effect,invisibility.png,mcl_potions_effect_invisible.png,,,,,,, +/assets/minecraft/textures/mob_effect,jump_boost.png,mcl_potions_effect_leaping.png,,,,,,, +/assets/minecraft/textures/mob_effect,night_vision.png,mcl_potions_effect_night_vision.png,,,,,,, +/assets/minecraft/textures/mob_effect,poison.png,mcl_potions_effect_poisoned.png,,,,,,, +/assets/minecraft/textures/mob_effect,regeneration.png,mcl_potions_effect_regenerating.png,,,,,,, +/assets/minecraft/textures/mob_effect,slowness.png,mcl_potions_effect_slow.png,,,,,,, +/assets/minecraft/textures/mob_effect,speed.png,mcl_potions_effect_swift.png,,,,,,, +/assets/minecraft/textures/mob_effect,strength.png,mcl_potions_effect_strong.png,,,,,,, +/assets/minecraft/textures/mob_effect,water_breathing.png,mcl_potions_effect_water_breathing.png,,,,,,, +/assets/minecraft/textures/mob_effect,weakness.png,mcl_potions_effect_weak.png,,,,,,, +/assets/minecraft/textures/mob_effect,wither.png,mcl_potions_effect_withering.png,,,,,,, +/assets/minecraft/textures/mob_effect,hero_of_the_village.png,mcl_raids_hero_of_the_village_icon.png,,,,,,, +/assets/minecraft/textures/gui/sprites/hud/heart,withered_full.png,mcl_potions_icon_regen_wither.png,,,,,,, +/assets/minecraft/textures/gui/sprites/hud/heart,withered_full.png,mcl_potions_icon_wither.png,,,,,,, +/assets/minecraft/textures/particle,effect_5.png,mcl_particles_effect.png,,,,,,, +/assets/minecraft/textures/particle,lava.png,mcl_particles_lava.png,,,,,,, +/assets/minecraft/textures/particle,note.png,mcl_particles_note.png,,,,,,, +/assets/minecraft/textures/particle,flame.png,mcl_particles_flame.png,,,,,,, +/assets/minecraft/textures/particle,soul_fire_flame.png,mcl_particles_soul_fire_flame.png,,,,,,, +/assets/minecraft/textures/item,firework_rocket.png,mcl_fireworks_rocket.png,,,,,,, +/assets/minecraft/textures/block,chain.png,mcl_lanterns_chain.png,,,,,,, +/assets/minecraft/textures/item,chain.png,mcl_lanterns_chain_inv.png,,,,,,, +/assets/minecraft/textures/block,lantern.png,mcl_lanterns_lantern.png,,,,,,, +/assets/minecraft/textures/item,lantern.png,mcl_lanterns_lantern_inv.png,,,,,,, +/assets/minecraft/textures/block,soul_lantern.png,mcl_lanterns_soul_lantern.png,,,,,,, +/assets/minecraft/textures/item,soul_lantern.png,mcl_lanterns_soul_lantern_inv.png,,,,,,, +/assets/minecraft/textures/block,soul_torch.png,soul_torch_on_floor.png,,,,,,, +/assets/minecraft/textures/block,soul_torch.png,soul_torch_on_floor_animated.png,,,,,,, +/assets/minecraft/textures/block,lightning_rod.png,mcl_lightning_rods_rod.png,,,,,,, +/assets/minecraft/textures/block,mangrove_roots_side.png,mcl_mangrove_roots_side.png,,,,,,, +/assets/minecraft/textures/block,mangrove_roots_top.png,mcl_mangrove_roots_top.png,,,,,,, +/assets/minecraft/textures/block,mud.png,mcl_mud.png,,,,,,, +/assets/minecraft/textures/block,packed_mud.png,mcl_mud_packed_mud.png,,,,,,, +/assets/minecraft/textures/block,mud_bricks.png,mcl_mud_bricks.png,,,,,,, +/assets/minecraft/textures/item,painting.png,mcl_paintings_painting.png,,,,,,, +/assets/minecraft/textures/block,sculk_catalyst_bottom.png,mcl_sculk_catalyst_bottom.png,,,,,,, +/assets/minecraft/textures/block,sculk_catalyst_side.png,mcl_sculk_catalyst_side.png,,,,,,, +/assets/minecraft/textures/block,sculk_catalyst_top.png,mcl_sculk_catalyst_top.png,,,,,,, +/assets/minecraft/textures/block,sculk.png,mcl_sculk_sculk.png,,,,,,, +/assets/minecraft/textures/block,sculk_sensor_bottom.png,mcl_sculk_sensor_bottom.png,,,,,,, +/assets/minecraft/textures/block,sculk_sensor_side.png,mcl_sculk_sensor_side.png,,,,,,, +/assets/minecraft/textures/block,sculk_sensor_top.png,mcl_sculk_sensor_top.png,,,,,,, +/assets/minecraft/textures/block,sculk_shrieker_bottom.png,mcl_sculk_shrieker_bottom.png,,,,,,, +/assets/minecraft/textures/block,sculk_shrieker_side.png,mcl_sculk_shrieker_side.png,,,,,,, +/assets/minecraft/textures/block,sculk_shrieker_top.png,mcl_sculk_shrieker_top.png,,,,,,, +/assets/minecraft/textures/item,spyglass.png,mcl_spyglass.png,,,,,,, +/assets/minecraft/textures/misc,spyglass_scope.png,mcl_spyglass_scope.png,,,,,,, +/assets/minecraft/textures/block,stonecutter_bottom.png,mcl_stonecutter_bottom.png,,,,,,, +/assets/minecraft/textures/block,stonecutter_side.png,mcl_stonecutter_side.png,,,,,,, +/assets/minecraft/textures/block,stonecutter_top.png,mcl_stonecutter_top.png,,,,,,, +/assets/minecraft/textures/entity/llama,creamy.png,mobs_mc_llama.png,,,,,,, +/assets/minecraft/textures/entity/llama,brown.png,mobs_mc_llama_brown.png,,,,,,, +/assets/minecraft/textures/entity/llama,creamy.png,mobs_mc_llama_creamy.png,,,,,,, +/assets/minecraft/textures/entity/llama/decor,black.png,mobs_mc_llama_decor_black.png,,,,,,, +/assets/minecraft/textures/entity/llama/decor,blue.png,mobs_mc_llama_decor_blue.png,,,,,,, +/assets/minecraft/textures/entity/llama/decor,brown.png,mobs_mc_llama_decor_brown.png,,,,,,, +/assets/minecraft/textures/entity/llama/decor,cyan.png,mobs_mc_llama_decor_cyan.png,,,,,,, +/assets/minecraft/textures/entity/llama/decor,gray.png,mobs_mc_llama_decor_gray.png,,,,,,, +/assets/minecraft/textures/entity/llama/decor,green.png,mobs_mc_llama_decor_green.png,,,,,,, +/assets/minecraft/textures/entity/llama/decor,light_blue.png,mobs_mc_llama_decor_light_blue.png,,,,,,, +/assets/minecraft/textures/entity/llama/decor,light_gray.png,mobs_mc_llama_decor_light_gray.png,,,,,,, +/assets/minecraft/textures/entity/llama/decor,lime.png,mobs_mc_llama_decor_lime.png,,,,,,, +/assets/minecraft/textures/entity/llama/decor,magenta.png,mobs_mc_llama_decor_magenta.png,,,,,,, +/assets/minecraft/textures/entity/llama/decor,orange.png,mobs_mc_llama_decor_orange.png,,,,,,, +/assets/minecraft/textures/entity/llama/decor,pink.png,mobs_mc_llama_decor_pink.png,,,,,,, +/assets/minecraft/textures/entity/llama/decor,purple.png,mobs_mc_llama_decor_purple.png,,,,,,, +/assets/minecraft/textures/entity/llama/decor,red.png,mobs_mc_llama_decor_red.png,,,,,,, +/assets/minecraft/textures/entity/llama/decor,white.png,mobs_mc_llama_decor_white.png,,,,,,, +/assets/minecraft/textures/entity/llama/decor,yellow.png,mobs_mc_llama_decor_yellow.png,,,,,,, +/assets/minecraft/textures/entity/llama,gray.png,mobs_mc_llama_gray.png,,,,,,, +/assets/minecraft/textures/entity/llama,white.png,mobs_mc_llama_white.png,,,,,,, diff --git a/tools/Texture_Converter.py b/tools/Texture_Converter.py index 67800ccfc..a0eef8565 100755 --- a/tools/Texture_Converter.py +++ b/tools/Texture_Converter.py @@ -1,474 +1,42 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Texture Converter. -# Converts Minecraft resource packs to Minetest texture packs. -# See README.md. +# cli.py -__author__ = "Wuzzy" -__license__ = "MIT License" -__status__ = "Development" +import argparse +import sys +from libtextureconverter.gui import main as launch_gui +from libtextureconverter.config import SUPPORTED_MINECRAFT_VERSION, working_dir, appname, home +from libtextureconverter.utils import handle_default_minecraft_texture, find_all_minecraft_resourcepacks +from libtextureconverter.common import convert_resource_packs -import shutil, csv, os, tempfile, sys, getopt +def main(): + make_texture_pack = True + parser = argparse.ArgumentParser(description=f"This is the official MineClone 2 Texture Converter. This will convert textures from Minecraft resource packs to a Minetest texture pack. Supported Minecraft version: {SUPPORTED_MINECRAFT_VERSION} (Java Edition)") + parser.add_argument("-i", "--input", help="Directory of Minecraft resource pack to convert") + parser.add_argument("-o", "--output", default=working_dir, help="Directory in which to put the resulting Minetest texture pack") + parser.add_argument("-p", "--pixel-size", type=int, help="Size (in pixels) of the original textures") + parser.add_argument("-d", "--dry-run", action="store_true", help="Pretend to convert textures without changing any files") + parser.add_argument("-v", "--verbose", action="store_true", help="Print out all copying actions") + parser.add_argument("-def", "--default", action="store_true", help="Use the default Minecraft texture pack") + parser.add_argument("-a", "--all", action="store_true", help="Convert all known Minecraft texturepacks") + args = parser.parse_args() -# Helper vars -home = os.environ["HOME"] -mineclone2_path = home + "/.minetest/games/mineclone2" -working_dir = os.getcwd() -appname = "Texture_Converter.py" + if len(sys.argv) == 1: + launch_gui() + else: + resource_packs = [] + if args.default: + resource_packs.append(handle_default_minecraft_texture(home, args.output)) + elif args.all: + resource_packs.extend(find_all_minecraft_resourcepacks()) + elif args.input: + resource_packs.append(args.input) -### SETTINGS ### -output_dir = working_dir + if not resource_packs: + print(f"ERROR: No valid resource packs specified. Use '{appname} -h' for help.") + sys.exit(2) -base_dir = None + convert_resource_packs(resource_packs, args.output, args.pixel_size, args.dry_run, args.verbose, make_texture_pack) -# If True, will only make console output but not convert anything. -dry_run = False - -# If True, textures will be put into a texture pack directory structure. -# If False, textures will be put into MineClone 2 directories. -make_texture_pack = True - -# If True, prints all copying actions -verbose = False - -PXSIZE = 16 - -syntax_help = appname+""" -i [-o ] [-d] [-v|-q] [-h] -Mandatory argument: --i - Directory of Minecraft resource pack to convert - -Optional arguments: --p - Specify the size (in pixels) of the original textures (default: 16) --o - Directory in which to put the resulting Minetest texture pack - (default: working directory) --d - Just pretend to convert textures and just print output, but do not actually - change any files. --v - Print out all copying actions --h - Show this help and exit""" -try: - opts, args = getopt.getopt(sys.argv[1:],"hi:o:p:dv") -except getopt.GetoptError: - print( -"""ERROR! The options you gave me make no sense! - -Here's the syntax reference:""") - print(syntax_help) - sys.exit(2) -for opt, arg in opts: - if opt == "-h": - print( -"""This is the official MineClone 2 Texture Converter. -This will convert textures from Minecraft resource packs to -a Minetest texture pack. - -Supported Minecraft version: 1.12 (Java Edition) - -Syntax:""") - print(syntax_help) - sys.exit() - elif opt == "-d": - dry_run = True - elif opt == "-v": - verbose = True - elif opt == "-i": - base_dir = arg - elif opt == "-o": - output_dir = arg - elif opt == "-p": - PXSIZE = int(arg) - -if base_dir == None: - print( -"""ERROR: You didn't tell me the path to the Minecraft resource pack. -Mind-reading has not been implemented yet. - -Try this: - """+appname+""" -i -p - -For the full help, use: - """+appname+""" -h""") - sys.exit(2); - -### END OF SETTINGS ### - -tex_dir = base_dir + "/assets/minecraft/textures" - -# Get texture pack name (from directory name) -bdir_split = base_dir.split("/") -output_dir_name = bdir_split[-1] -if len(output_dir_name) == 0: - if len(bdir_split) >= 2: - output_dir_name = base_dir.split("/")[-2] - else: - # Fallback - output_dir_name = "New_MineClone_2_Texture_Pack" - -# FUNCTION DEFINITIONS -def colorize(colormap, source, colormap_pixel, texture_size, destination): - os.system("convert "+colormap+" -crop 1x1+"+colormap_pixel+" -depth 8 -resize "+texture_size+"x"+texture_size+" "+tempfile1.name) - os.system("composite -compose Multiply "+tempfile1.name+" "+source+" "+destination) - -def colorize_alpha(colormap, source, colormap_pixel, texture_size, destination): - colorize(colormap, source, colormap_pixel, texture_size, tempfile2.name) - os.system("composite -compose Dst_In "+source+" "+tempfile2.name+" -alpha Set "+destination) - -def target_dir(directory): - if make_texture_pack: - return output_dir + "/" + output_dir_name - else: - return mineclone2_path + directory - -# Copy texture files -def convert_textures(): - failed_conversions = 0 - print("Texture conversion BEGINS NOW!") - with open("Conversion_Table.csv", newline="") as csvfile: - reader = csv.reader(csvfile, delimiter=",", quotechar='"') - first_row = True - for row in reader: - # Skip first row - if first_row: - first_row = False - continue - - src_dir = row[0] - src_filename = row[1] - dst_dir = row[2] - dst_filename = row[3] - if row[4] != "": - xs = int(row[4]) - ys = int(row[5]) - xl = int(row[6]) - yl = int(row[7]) - xt = int(row[8]) - yt = int(row[9]) - else: - xs = None - blacklisted = row[10] - - if blacklisted == "y": - # Skip blacklisted files - continue - - if make_texture_pack == False and dst_dir == "": - # If destination dir is empty, this texture is not supposed to be used in MCL2 - # (but maybe an external mod). It should only be used in texture packs. - # Otherwise, it must be ignored. - # Example: textures for mcl_supplemental - continue - - src_file = base_dir + src_dir + "/" + src_filename # source file - src_file_exists = os.path.isfile(src_file) - dst_file = target_dir(dst_dir) + "/" + dst_filename # destination file - - if src_file_exists == False: - print("WARNING: Source file does not exist: "+src_file) - failed_conversions = failed_conversions + 1 - continue - - if xs != None: - # Crop and copy images - if not dry_run: - os.system("convert "+src_file+" -crop "+xl+"x"+yl+"+"+xs+"+"+ys+" "+dst_file) - if verbose: - print(src_file + " → " + dst_file) - else: - # Copy image verbatim - if not dry_run: - shutil.copy2(src_file, dst_file) - if verbose: - print(src_file + " → " + dst_file) - - # Convert map background - map_background_file = tex_dir + "/map/map_background.png" - if os.path.isfile(map_background_file): - os.system("convert " + map_background_file + " -interpolate Integer -filter point -resize \"140x140\" " + target_dir("/mods/ITEMS/mcl_maps/textures") + "/mcl_maps_map_background.png") - - # Convert armor textures (requires ImageMagick) - armor_files = [ - [ tex_dir + "/models/armor/leather_layer_1.png", tex_dir + "/models/armor/leather_layer_2.png", target_dir("/mods/ITEMS/mcl_armor/textures"), "mcl_armor_helmet_leather.png", "mcl_armor_chestplate_leather.png", "mcl_armor_leggings_leather.png", "mcl_armor_boots_leather.png" ], - [ tex_dir + "/models/armor/chainmail_layer_1.png", tex_dir + "/models/armor/chainmail_layer_2.png", target_dir("/mods/ITEMS/mcl_armor/textures"), "mcl_armor_helmet_chain.png", "mcl_armor_chestplate_chain.png", "mcl_armor_leggings_chain.png", "mcl_armor_boots_chain.png" ], - [ tex_dir + "/models/armor/gold_layer_1.png", tex_dir + "/models/armor/gold_layer_2.png", target_dir("/mods/ITEMS/mcl_armor/textures"), "mcl_armor_helmet_gold.png", "mcl_armor_chestplate_gold.png", "mcl_armor_leggings_gold.png", "mcl_armor_boots_gold.png" ], - [ tex_dir + "/models/armor/iron_layer_1.png", tex_dir + "/models/armor/iron_layer_2.png", target_dir("/mods/ITEMS/mcl_armor/textures"), "mcl_armor_helmet_iron.png", "mcl_armor_chestplate_iron.png", "mcl_armor_leggings_iron.png", "mcl_armor_boots_iron.png" ], - [ tex_dir + "/models/armor/diamond_layer_1.png", tex_dir + "/models/armor/diamond_layer_2.png", target_dir("/mods/ITEMS/mcl_armor/textures"), "mcl_armor_helmet_diamond.png", "mcl_armor_chestplate_diamond.png", "mcl_armor_leggings_diamond.png", "mcl_armor_boots_diamond.png" ], - [ tex_dir + "/models/armor/netherite_layer_1.png", tex_dir + "/models/armor/netherite_layer_2.png", target_dir("/mods/ITEMS/mcl_armor/textures"), "mcl_armor_helmet_netherite.png", "mcl_armor_chestplate_netherite.png", "mcl_armor_leggings_netherite.png", "mcl_armor_boots_netherite.png" ] - ] - for a in armor_files: - APXSIZE = 16 # for some reason MineClone2 requires this - layer_1 = a[0] - layer_2 = a[1] - adir = a[2] - if os.path.isfile(layer_1): - helmet = adir + "/" + a[3] - chestplate = adir + "/" + a[4] - boots = adir + "/" + a[6] - os.system("convert -size "+str(APXSIZE * 4)+"x"+str(APXSIZE * 2)+" xc:none \\( "+layer_1+" -scale "+str(APXSIZE * 4)+"x"+str(APXSIZE * 2)+" -geometry +"+str(APXSIZE * 2)+"+0 -crop "+str(APXSIZE * 2)+"x"+str(APXSIZE)+"+0+0 \) -composite -channel A -fx \"(a > 0.0) ? 1.0 : 0.0\" "+helmet) - os.system("convert -size "+str(APXSIZE * 4)+"x"+str(APXSIZE * 2)+" xc:none \\( "+layer_1+" -scale "+str(APXSIZE * 4)+"x"+str(APXSIZE * 2)+" -geometry +"+str(APXSIZE)+"+"+str(APXSIZE)+" -crop "+str(APXSIZE * 2.5)+"x"+str(APXSIZE)+"+"+str(APXSIZE)+"+"+str(APXSIZE)+" \) -composite -channel A -fx \"(a > 0.0) ? 1.0 : 0.0\" "+chestplate) - os.system("convert -size "+str(APXSIZE * 4)+"x"+str(APXSIZE * 2)+" xc:none \\( "+layer_1+" -scale "+str(APXSIZE * 4)+"x"+str(APXSIZE * 2)+" -geometry +0+"+str(APXSIZE)+" -crop "+str(APXSIZE)+"x"+str(APXSIZE)+"+0+"+str(APXSIZE)+" \) -composite -channel A -fx \"(a > 0.0) ? 1.0 : 0.0\" "+boots) - if os.path.isfile(layer_2): - leggings = adir + "/" + a[5] - os.system("convert -size "+str(APXSIZE * 4)+"x"+str(APXSIZE * 2)+" xc:none \\( "+layer_2+" -scale "+str(APXSIZE * 4)+"x"+str(APXSIZE * 2)+" -geometry +0+"+str(APXSIZE)+" -crop "+str(APXSIZE * 2.5)+"x"+str(APXSIZE)+"+0+"+str(APXSIZE)+" \) -composite -channel A -fx \"(a > 0.0) ? 1.0 : 0.0\" "+leggings) - - # Convert chest textures (requires ImageMagick) - chest_files = [ - [ tex_dir + "/entity/chest/normal.png", target_dir("/mods/ITEMS/mcl_chests/textures"), "default_chest_top.png", "mcl_chests_chest_bottom.png", "default_chest_front.png", "mcl_chests_chest_left.png", "mcl_chests_chest_right.png", "mcl_chests_chest_back.png" ], - [ tex_dir + "/entity/chest/trapped.png", target_dir("/mods/ITEMS/mcl_chests/textures"), "mcl_chests_chest_trapped_top.png", "mcl_chests_chest_trapped_bottom.png", "mcl_chests_chest_trapped_front.png", "mcl_chests_chest_trapped_left.png", "mcl_chests_chest_trapped_right.png", "mcl_chests_chest_trapped_back.png" ], - [ tex_dir + "/entity/chest/ender.png", target_dir("/mods/ITEMS/mcl_chests/textures"), "mcl_chests_ender_chest_top.png", "mcl_chests_ender_chest_bottom.png", "mcl_chests_ender_chest_front.png", "mcl_chests_ender_chest_left.png", "mcl_chests_ender_chest_right.png", "mcl_chests_ender_chest_back.png" ] - ] - - for c in chest_files: - chest_file = c[0] - if os.path.isfile(chest_file): - PPX = (PXSIZE/16) - CHPX = (PPX * 14) # Chest width - LIDPX = (PPX * 5) # Lid height - LIDLOW = (PPX * 10) # Lower lid section height - LOCKW = (PPX * 6) # Lock width - LOCKH = (PPX * 5) # Lock height - - cdir = c[1] - top = cdir + "/" + c[2] - bottom = cdir + "/" + c[3] - front = cdir + "/" + c[4] - left = cdir + "/" + c[5] - right = cdir + "/" + c[6] - back = cdir + "/" + c[7] - # Top - os.system("convert " + chest_file + " \ -\( -clone 0 -crop "+str(CHPX)+"x"+str(CHPX)+"+"+str(CHPX)+"+0 \) -geometry +0+0 -composite -extent "+str(CHPX)+"x"+str(CHPX)+" "+top) - # Bottom - os.system("convert " + chest_file + " \ -\( -clone 0 -crop "+str(CHPX)+"x"+str(CHPX)+"+"+str(CHPX*2)+"+"+str(CHPX+LIDPX)+" \) -geometry +0+0 -composite -extent "+str(CHPX)+"x"+str(CHPX)+" "+bottom) - # Front - os.system("convert " + chest_file + " \ -\( -clone 0 -crop "+str(CHPX)+"x"+str(LIDPX)+"+"+str(CHPX)+"+"+str(CHPX)+" \) -geometry +0+0 -composite \ -\( -clone 0 -crop "+str(CHPX)+"x"+str(LIDLOW)+"+"+str(CHPX)+"+"+str(CHPX*2+LIDPX)+" \) -geometry +0+"+str(LIDPX-PPX)+" -composite \ --extent "+str(CHPX)+"x"+str(CHPX)+" "+front) - # TODO: Add lock - - # Left, right back (use same texture, we're lazy - files = [ left, right, back ] - for f in files: - os.system("convert " + chest_file + " \ -\( -clone 0 -crop "+str(CHPX)+"x"+str(LIDPX)+"+"+str(0)+"+"+str(CHPX)+" \) -geometry +0+0 -composite \ -\( -clone 0 -crop "+str(CHPX)+"x"+str(LIDLOW)+"+"+str(0)+"+"+str(CHPX*2+LIDPX)+" \) -geometry +0+"+str(LIDPX-PPX)+" -composite \ --extent "+str(CHPX)+"x"+str(CHPX)+" "+f) - - # Double chests - - chest_files = [ - [ tex_dir + "/entity/chest/normal_double.png", target_dir("/mods/ITEMS/mcl_chests/textures"), "default_chest_front_big.png", "default_chest_top_big.png", "default_chest_side_big.png" ], - [ tex_dir + "/entity/chest/trapped_double.png", target_dir("/mods/ITEMS/mcl_chests/textures"), "mcl_chests_chest_trapped_front_big.png", "mcl_chests_chest_trapped_top_big.png", "mcl_chests_chest_trapped_side_big.png" ] - ] - for c in chest_files: - chest_file = c[0] - if os.path.isfile(chest_file): - PPX = (PXSIZE/16) - CHPX = (PPX * 14) # Chest width (short side) - CHPX2 = (PPX * 15) # Chest width (long side) - LIDPX = (PPX * 5) # Lid height - LIDLOW = (PPX * 10) # Lower lid section height - LOCKW = (PPX * 6) # Lock width - LOCKH = (PPX * 5) # Lock height - - cdir = c[1] - front = cdir + "/" + c[2] - top = cdir + "/" + c[3] - side = cdir + "/" + c[4] - # Top - os.system("convert " + chest_file + " \ -\( -clone 0 -crop "+str(CHPX2)+"x"+str(CHPX)+"+"+str(CHPX)+"+0 \) -geometry +0+0 -composite -extent "+str(CHPX2)+"x"+str(CHPX)+" "+top) - # Front - # TODO: Add lock - os.system("convert " + chest_file + " \ -\( -clone 0 -crop "+str(CHPX2)+"x"+str(LIDPX)+"+"+str(CHPX)+"+"+str(CHPX)+" \) -geometry +0+0 -composite \ -\( -clone 0 -crop "+str(CHPX2)+"x"+str(LIDLOW)+"+"+str(CHPX)+"+"+str(CHPX*2+LIDPX)+" \) -geometry +0+"+str(LIDPX-PPX)+" -composite \ --extent "+str(CHPX2)+"x"+str(CHPX)+" "+front) - # Side - os.system("convert " + chest_file + " \ -\( -clone 0 -crop "+str(CHPX)+"x"+str(LIDPX)+"+"+str(0)+"+"+str(CHPX)+" \) -geometry +0+0 -composite \ -\( -clone 0 -crop "+str(CHPX)+"x"+str(LIDLOW)+"+"+str(0)+"+"+str(CHPX*2+LIDPX)+" \) -geometry +0+"+str(LIDPX-PPX)+" -composite \ --extent "+str(CHPX)+"x"+str(CHPX)+" "+side) - - - # Generate railway crossings and t-junctions. Note: They may look strange. - # Note: these may be only a temporary solution, as crossings and t-junctions do not occour in MC. - # TODO: Curves - rails = [ - # (Straigt src, curved src, t-junction dest, crossing dest) - ("rail_normal.png", "rail_normal_turned.png", "default_rail_t_junction.png", "default_rail_crossing.png"), - ("rail_golden.png", "rail_normal_turned.png", "carts_rail_t_junction_pwr.png", "carts_rail_crossing_pwr.png"), - ("rail_golden_powered.png", "rail_normal_turned.png", "mcl_minecarts_rail_golden_t_junction_powered.png", "mcl_minecarts_rail_golden_crossing_powered.png"), - ("rail_detector.png", "rail_normal_turned.png", "mcl_minecarts_rail_detector_t_junction.png", "mcl_minecarts_rail_detector_crossing.png"), - ("rail_detector_powered.png", "rail_normal_turned.png", "mcl_minecarts_rail_detector_t_junction_powered.png", "mcl_minecarts_rail_detector_crossing_powered.png"), - ("rail_activator.png", "rail_normal_turned.png", "mcl_minecarts_rail_activator_t_junction.png", "mcl_minecarts_rail_activator_crossing.png"), - ("rail_activator_powered.png", "rail_normal_turned.png", "mcl_minecarts_rail_activator_d_t_junction.png", "mcl_minecarts_rail_activator_powered_crossing.png"), - ] - for r in rails: - os.system("composite -compose Dst_Over "+tex_dir+"/blocks/"+r[0]+" "+tex_dir+"/blocks/"+r[1]+" "+target_dir("/mods/ENTITIES/mcl_minecarts/textures")+"/"+r[2]) - os.system("convert "+tex_dir+"/blocks/"+r[0]+" -rotate 90 "+tempfile1.name) - os.system("composite -compose Dst_Over "+tempfile1.name+" "+tex_dir+"/blocks/"+r[0]+" "+target_dir("/mods/ENTITIES/mcl_minecarts/textures")+"/"+r[3]) - - # Convert banner overlays - overlays = [ - "base", - "border", - "bricks", - "circle", - "creeper", - "cross", - "curly_border", - "diagonal_left", - "diagonal_right", - "diagonal_up_left", - "diagonal_up_right", - "flower", - "gradient", - "gradient_up", - "half_horizontal_bottom", - "half_horizontal", - "half_vertical", - "half_vertical_right", - "rhombus", - "mojang", - "skull", - "small_stripes", - "straight_cross", - "stripe_bottom", - "stripe_center", - "stripe_downleft", - "stripe_downright", - "stripe_left", - "stripe_middle", - "stripe_right", - "stripe_top", - "square_bottom_left", - "square_bottom_right", - "square_top_left", - "square_top_right", - "triangle_bottom", - "triangles_bottom", - "triangle_top", - "triangles_top", - ] - for o in overlays: - orig = tex_dir + "/entity/banner/" + o + ".png" - if os.path.isfile(orig): - if o == "mojang": - o = "thing" - dest = target_dir("/mods/ITEMS/mcl_banners/textures")+"/"+"mcl_banners_"+o+".png" - os.system("convert "+orig+" -transparent-color white -background black -alpha remove -alpha copy -channel RGB -white-threshold 0 "+dest) - - # Convert grass - grass_file = tex_dir + "/blocks/grass_top.png" - if os.path.isfile(grass_file): - FOLIAG = tex_dir+"/colormap/foliage.png" - GRASS = tex_dir+"/colormap/grass.png" - - - # Leaves - colorize_alpha(FOLIAG, tex_dir+"/blocks/leaves_oak.png", "116+143", str(PXSIZE), target_dir("/mods/ITEMS/mcl_core/textures")+"/default_leaves.png") - colorize_alpha(FOLIAG, tex_dir+"/blocks/leaves_big_oak.png", "158+177", str(PXSIZE), target_dir("/mods/ITEMS/mcl_core/textures")+"/mcl_core_leaves_big_oak.png") - colorize_alpha(FOLIAG, tex_dir+"/blocks/leaves_acacia.png", "40+255", str(PXSIZE), target_dir("/mods/ITEMS/mcl_core/textures")+"/default_acacia_leaves.png") - colorize_alpha(FOLIAG, tex_dir+"/blocks/leaves_spruce.png", "226+230", str(PXSIZE), target_dir("/mods/ITEMS/mcl_core/textures")+"/mcl_core_leaves_spruce.png") - colorize_alpha(FOLIAG, tex_dir+"/blocks/leaves_birch.png", "141+186", str(PXSIZE), target_dir("/mods/ITEMS/mcl_core/textures")+"/mcl_core_leaves_birch.png") - colorize_alpha(FOLIAG, tex_dir+"/blocks/leaves_jungle.png", "16+39", str(PXSIZE), target_dir("/mods/ITEMS/mcl_core/textures")+"/default_jungleleaves.png") - - # Waterlily - colorize_alpha(FOLIAG, tex_dir+"/blocks/waterlily.png", "16+39", str(PXSIZE), target_dir("/mods/ITEMS/mcl_flowers/textures")+"/flowers_waterlily.png") - - # Vines - colorize_alpha(FOLIAG, tex_dir+"/blocks/vine.png", "16+39", str(PXSIZE), target_dir("/mods/ITEMS/mcl_core/textures")+"/mcl_core_vine.png") - - # Tall grass, fern (inventory images) - pcol = "50+173" # Plains grass color - colorize_alpha(GRASS, tex_dir+"/blocks/tallgrass.png", pcol, str(PXSIZE), target_dir("/mods/ITEMS/mcl_flowers/textures")+"/mcl_flowers_tallgrass_inv.png") - colorize_alpha(GRASS, tex_dir+"/blocks/fern.png", pcol, str(PXSIZE), target_dir("/mods/ITEMS/mcl_flowers/textures")+"/mcl_flowers_fern_inv.png") - colorize_alpha(GRASS, tex_dir+"/blocks/double_plant_fern_top.png", pcol, str(PXSIZE), target_dir("/mods/ITEMS/mcl_flowers/textures")+"/mcl_flowers_double_plant_fern_inv.png") - colorize_alpha(GRASS, tex_dir+"/blocks/double_plant_grass_top.png", pcol, str(PXSIZE), target_dir("/mods/ITEMS/mcl_flowers/textures")+"/mcl_flowers_double_plant_grass_inv.png") - - # Convert grass palette: https://minecraft.fandom.com/wiki/Tint - grass_colors = [ - # [Coords or #Color, AdditionalTint], # Index - Minecraft biome name (MineClone2 biome names) - ["50+173"], # 0 - Plains (flat, Plains, Plains_beach, Plains_ocean, End) - ["0+255"], # 1 - Savanna (Savanna, Savanna_beach, Savanna_ocean) - ["255+255"], # 2 - Ice Spikes (IcePlainsSpikes, IcePlainsSpikes_ocean) - ["255+255"], # 3 - Snowy Taiga (ColdTaiga, ColdTaiga_beach, ColdTaiga_beach_water, ColdTaiga_ocean) - ["178+193"], # 4 - Giant Tree Taiga (MegaTaiga, MegaTaiga_ocean) - ["178+193"], # 5 - Giant Tree Taiga (MegaSpruceTaiga, MegaSpruceTaiga_ocean) - ["203+239"], # 6 - Montains (ExtremeHills, ExtremeHills_beach, ExtremeHills_ocean) - ["203+239"], # 7 - Montains (ExtremeHillsM, ExtremeHillsM_ocean) - ["203+239"], # 8 - Montains (ExtremeHills+, ExtremeHills+_snowtop, ExtremeHills+_ocean) - ["50+173"], # 9 - Beach (StoneBeach, StoneBeach_ocean) - ["255+255"], # 10 - Snowy Tundra (IcePlains, IcePlains_ocean) - ["50+173"], # 11 - Sunflower Plains (SunflowerPlains, SunflowerPlains_ocean) - ["191+203"], # 12 - Taiga (Taiga, Taiga_beach, Taiga_ocean) - ["76+112"], # 13 - Forest (Forest, Forest_beach, Forest_ocean) - ["76+112"], # 14 - Flower Forest (FlowerForest, FlowerForest_beach, FlowerForest_ocean) - ["101+163"], # 15 - Birch Forest (BirchForest, BirchForest_ocean) - ["101+163"], # 16 - Birch Forest Hills (BirchForestM, BirchForestM_ocean) - ["0+255"], # 17 - Desert and Nether (Desert, Desert_ocean, Nether) - ["76+112", "#28340A"], # 18 - Dark Forest (RoofedForest, RoofedForest_ocean) - ["#90814d"], # 19 - Mesa (Mesa, Mesa_sandlevel, Mesa_ocean, ) - ["#90814d"], # 20 - Mesa (MesaBryce, MesaBryce_sandlevel, MesaBryce_ocean) - ["#90814d"], # 21 - Mesa (MesaPlateauF, MesaPlateauF_grasstop, MesaPlateauF_sandlevel, MesaPlateauF_ocean) - ["#90814d"], # 22 - Mesa (MesaPlateauFM, MesaPlateauFM_grasstop, MesaPlateauFM_sandlevel, MesaPlateauFM_ocean) - ["0+255"], # 23 - Shattered Savanna (or Savanna Plateau ?) (SavannaM, SavannaM_ocean) - ["12+36"], # 24 - Jungle (Jungle, Jungle_shore, Jungle_ocean) - ["12+36"], # 25 - Modified Jungle (JungleM, JungleM_shore, JungleM_ocean) - ["12+61"], # 26 - Jungle Edge (JungleEdge, JungleEdge_ocean) - ["12+61"], # 27 - Modified Jungle Edge (JungleEdgeM, JungleEdgeM_ocean) - ["#6A7039"], # 28 - Swamp (Swampland, Swampland_shore, Swampland_ocean) - ["25+25"], # 29 - Mushroom Fields and Mushroom Field Shore (MushroomIsland, MushroomIslandShore, MushroomIsland_ocean) - ] - - grass_palette_file = target_dir("/mods/ITEMS/mcl_core/textures") + "/mcl_core_palette_grass.png" - os.system("convert -size 16x16 canvas:transparent " + grass_palette_file) - - for i, color in enumerate(grass_colors): - if color[0][0] == "#": - os.system("convert -size 1x1 xc:\"" + color[0] + "\" " + tempfile1.name + ".png") - else: - os.system("convert " + GRASS + " -crop 1x1+" + color[0] + " " + tempfile1.name + ".png") - - if len(color) > 1: - os.system("convert " + tempfile1.name + ".png \\( -size 1x1 xc:\"" + color[1] + "\" \\) -compose blend -define compose:args=50,50 -composite " + tempfile1.name + ".png") - - os.system("convert " + grass_palette_file + " \\( " + tempfile1.name + ".png -geometry +" + str(i % 16) + "+" + str(int(i / 16)) + " \\) -composite " + grass_palette_file) - - # Metadata - if make_texture_pack: - # Create description file - description = "Texture pack for MineClone 2. Automatically converted from a Minecraft resource pack by the MineClone 2 Texture Converter. Size: "+str(PXSIZE)+"×"+str(PXSIZE) - description_file = open(target_dir("/") + "/description.txt", "w") - description_file.write(description) - description_file.close() - - # Create preview image (screenshot.png) - os.system("convert -size 300x200 canvas:transparent "+target_dir("/") + "/screenshot.png") - os.system("composite "+base_dir+"/pack.png "+target_dir("/") + "/screenshot.png -gravity center "+target_dir("/") + "/screenshot.png") - - print("Textures conversion COMPLETE!") - if failed_conversions > 0: - print("WARNING: Number of missing files in original resource pack: "+str(failed_conversions)) - print("NOTE: Please keep in mind this script does not reliably convert all the textures yet.") - if make_texture_pack: - print("You can now retrieve the texture pack in "+output_dir+"/"+output_dir_name+"/") - -# ENTRY POINT -if make_texture_pack and not os.path.isdir(output_dir+"/"+output_dir_name): - os.mkdir(output_dir+"/"+output_dir_name) - -tempfile1 = tempfile.NamedTemporaryFile() -tempfile2 = tempfile.NamedTemporaryFile() - -convert_textures() - -tempfile1.close() -tempfile2.close() +if __name__ == "__main__": + main() diff --git a/tools/libtextureconverter/__init__.py b/tools/libtextureconverter/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tools/libtextureconverter/common.py b/tools/libtextureconverter/common.py new file mode 100644 index 000000000..1c28efdda --- /dev/null +++ b/tools/libtextureconverter/common.py @@ -0,0 +1,68 @@ +import shutil +import csv +import os +import tempfile +import sys +import argparse +import glob +from PIL import Image +from collections import Counter + +from libtextureconverter.utils import detect_pixel_size, target_dir, colorize, colorize_alpha, handle_default_minecraft_texture, find_all_minecraft_resourcepacks +from libtextureconverter.convert import convert_textures +from libtextureconverter.config import SUPPORTED_MINECRAFT_VERSION, working_dir, mineclone2_path, appname, home + + +def convert_resource_packs( + resource_packs, + output_dir, + PXSIZE, + dry_run, + verbose, + make_texture_pack): + for base_dir in resource_packs: + print(f"Converting resource pack: {base_dir}") + + # Autodetect pixel size if not provided + if not PXSIZE: + pixel_size = detect_pixel_size(base_dir) + else: + pixel_size = PXSIZE + # Construct the path to the textures within the resource pack + tex_dir = os.path.join(base_dir, "assets", "minecraft", "textures") + + # Determine the name of the output directory for the converted texture + # pack + output_dir_name = os.path.basename(os.path.normpath(base_dir)) + + # Create the output directory if it doesn't exist + output_path = os.path.join(output_dir, output_dir_name) + if not os.path.isdir(output_path): + os.makedirs(output_path, exist_ok=True) + + # Temporary files for conversion (if needed by your conversion process) + tempfile1 = tempfile.NamedTemporaryFile(delete=False) + tempfile2 = tempfile.NamedTemporaryFile(delete=False) + + try: + # Perform the actual conversion + convert_textures( + make_texture_pack, + dry_run, + verbose, + base_dir, + tex_dir, + tempfile1, + tempfile2, + output_dir, + output_dir_name, + mineclone2_path, + pixel_size) + finally: + # Clean up temporary files + tempfile1.close() + os.unlink(tempfile1.name) + tempfile2.close() + os.unlink(tempfile2.name) + + print(f"Finished converting resource pack: {base_dir}") diff --git a/tools/libtextureconverter/config.py b/tools/libtextureconverter/config.py new file mode 100644 index 000000000..dbba6b3df --- /dev/null +++ b/tools/libtextureconverter/config.py @@ -0,0 +1,30 @@ +import os +import platform + +def get_minetest_directory(): + system = platform.system() + + # Windows + if system == 'Windows': + return os.environ.get('MINETEST_USER_PATH', os.path.expandvars('%APPDATA%\\Minetest')) + + # Linux + elif system == 'Linux': + return os.environ.get('MINETEST_USER_PATH', os.path.expanduser('~/.minetest')) + + # macOS + elif system == 'Darwin': # Darwin is the system name for macOS + return os.environ.get('MINETEST_USER_PATH', os.path.expanduser('~/Library/Application Support/minetest')) + + # Unsupported system + else: + return None + +# Constants +SUPPORTED_MINECRAFT_VERSION = "1.20" + +# Helper vars +home = os.environ["HOME"] +mineclone2_path = os.path.join(get_minetest_directory(),"games","mineclone2") +working_dir = os.getcwd() +appname = "Texture_Converter.py" diff --git a/tools/libtextureconverter/convert.py b/tools/libtextureconverter/convert.py new file mode 100644 index 000000000..289cb6d56 --- /dev/null +++ b/tools/libtextureconverter/convert.py @@ -0,0 +1,134 @@ +from .special_convert_cases import convert_map_textures, convert_armor_textures, convert_chest_textures, convert_rail_textures, convert_banner_overlays, convert_grass_textures +from .utils import target_dir, colorize, colorize_alpha +import shutil +import csv +import os +import tempfile +import sys +import argparse +import glob + + +def convert_standard_textures( + make_texture_pack, + dry_run, + verbose, + base_dir, + tex_dir, + tempfile1, + tempfile2, + output_dir, + output_dir_name, + mineclone2_path, + PXSIZE): + failed_conversions = 0 + with open("Conversion_Table.csv", newline="") as csvfile: + reader = csv.reader(csvfile, delimiter=",", quotechar='"') + first_row = True + for row in reader: + # Skip first row + if first_row: + first_row = False + continue + src_dir = row[0] + src_filename = row[1] + dst_dir = './textures' + dst_filename = row[2] + if row[4] != "": + xs = int(row[3]) + ys = int(row[4]) + xl = int(row[5]) + yl = int(row[6]) + xt = int(row[7]) + yt = int(row[8]) + else: + xs = None + blacklisted = row[9] + + if blacklisted == "y": + # Skip blacklisted files + continue + + if make_texture_pack == False and dst_dir == "": + # If destination dir is empty, this texture is not supposed to be used in MCL2 + # (but maybe an external mod). It should only be used in texture packs. + # Otherwise, it must be ignored. + # Example: textures for mcl_supplemental + continue + + src_file = base_dir + src_dir + "/" + src_filename # source file + src_file_exists = os.path.isfile(src_file) + dst_file = target_dir(dst_dir, make_texture_pack, output_dir, output_dir_name, + mineclone2_path) + "/" + dst_filename # destination file + + if src_file_exists == False: + print("WARNING: Source file does not exist: " + src_file) + failed_conversions = failed_conversions + 1 + continue + if xs != None: + # Crop and copy images + if not dry_run: + crop_width = int(xl) + crop_height = int(yl) + offset_x = int(xs) + offset_y = int(ys) + with Image(filename=src_file) as img: + # Crop the image + img.crop(left=offset_x, top=offset_y, width=crop_width, height=crop_height) + # Save the result + img.save(filename=dst_file) + if verbose: + print(src_file + " → " + dst_file) + else: + # Copy image verbatim + if not dry_run: + shutil.copy2(src_file, dst_file) + if verbose: + print(src_file + " → " + dst_file) + return failed_conversions + + +def convert_textures(make_texture_pack, dry_run, verbose, base_dir, tex_dir, tempfile1, tempfile2, output_dir, output_dir_name, mineclone2_path, PXSIZE): + print("Texture conversion BEGINS NOW!") + + # Convert textures listed in the Conversion_Table.csv + failed_conversions = convert_standard_textures(make_texture_pack, dry_run, verbose, base_dir, tex_dir, + tempfile1, tempfile2, output_dir, output_dir_name, mineclone2_path, PXSIZE) + + # Conversion of map backgrounds + convert_map_textures(make_texture_pack, dry_run, verbose, base_dir, tex_dir, + tempfile1, tempfile2, output_dir, output_dir_name, mineclone2_path, PXSIZE) + + # Convert armor textures + convert_armor_textures(make_texture_pack, dry_run, verbose, base_dir, tex_dir, tempfile1, tempfile2,output_dir, output_dir_name, mineclone2_path, PXSIZE) + + # Convert chest textures + convert_chest_textures(make_texture_pack, dry_run, verbose, base_dir, tex_dir, tempfile1, tempfile2,output_dir, output_dir_name, mineclone2_path, PXSIZE) + + # Generate railway crossings and t-junctions + convert_rail_textures(make_texture_pack, dry_run, verbose, base_dir, tex_dir, tempfile1, tempfile2,output_dir, output_dir_name, mineclone2_path, PXSIZE) + + # Convert banner overlays + convert_banner_overlays(make_texture_pack, dry_run, verbose, base_dir, tex_dir, tempfile1, tempfile2,output_dir, output_dir_name, mineclone2_path, PXSIZE) + + # Convert grass and related textures + convert_grass_textures(make_texture_pack, dry_run, verbose, base_dir, tex_dir, tempfile1, tempfile2,output_dir, output_dir_name, mineclone2_path, PXSIZE) + + # Metadata + if make_texture_pack: + # Create description file + description = "Texture pack for MineClone 2. Automatically converted from a Minecraft resource pack by the MineClone 2 Texture Converter. Size: "+str(PXSIZE)+"×"+str(PXSIZE) + description_file = open(target_dir("/", make_texture_pack, output_dir, output_dir_name, mineclone2_path) + "/description.txt", "w") + description_file.write(description) + description_file.close() + + # Create preview image (screenshot.png) + os.system("convert -size 300x200 canvas:transparent "+target_dir("/", make_texture_pack, output_dir, output_dir_name, mineclone2_path) + "/screenshot.png") + os.system("composite "+base_dir+"/pack.png "+target_dir("/", make_texture_pack, output_dir, output_dir_name, mineclone2_path) + "/screenshot.png -gravity center "+target_dir("/", make_texture_pack, output_dir, output_dir_name, mineclone2_path) + "/screenshot.png") + + print("Textures conversion COMPLETE!") + if failed_conversions > 0: + print("WARNING: Number of missing files in original resource pack: " + str(failed_conversions)) + print("NOTE: Please keep in mind this script does not reliably convert all the textures yet.") + if make_texture_pack: + print("You can now retrieve the texture pack in " + output_dir + "/" + output_dir_name + "/") diff --git a/tools/libtextureconverter/gui.py b/tools/libtextureconverter/gui.py new file mode 100644 index 000000000..4ee8b431c --- /dev/null +++ b/tools/libtextureconverter/gui.py @@ -0,0 +1,198 @@ +import tkinter as tk +from tkinter import filedialog, messagebox, ttk, font +from libtextureconverter.utils import handle_default_minecraft_texture, find_all_minecraft_resourcepacks +from libtextureconverter.config import home, get_minetest_directory +from libtextureconverter.common import convert_resource_packs + +import time +import os +import threading + + +class TextureConverterGUI: + def __init__(self, root): + self.root = root + self.root.title("Choose resource packs to convert") + + self.create_widgets() + + def create_widgets(self): + + # Frame for instructions + self.instruction_frame = tk.Frame(self.root) + self.instruction_frame.pack(fill='x', padx=10, pady=10) + tk.Label( + self.instruction_frame, + text="Do you want to convert installed resource packs, or convert a single folder?").pack( + side='left', + fill='x', + expand=True) + + # Table-like structure using Treeview + self.tree = ttk.Treeview(self.root, columns=( + 'Convert', 'Description'), show='headings') + self.tree.heading('Convert', text='Convert') + self.tree.heading('Description', text='Description') + + # Inserting options into the table + entries = [ + ('all', 'Find Minecraft resource packs installed in your minecraft folders and convert those automatically'), + ('default', 'Convert the default resource pack'), + ('other', 'Choose a folder to convert manually') + ] + + for entry in entries: + self.tree.insert('', 'end', values=entry) + + # Button Frame + self.button_frame = tk.Frame(self.root) + # Ensure the buttons are at the bottom + self.button_frame.pack(fill='x', padx=10, pady=10, side='bottom') + # Create and pack the buttons separately + self.ok_button = tk.Button( + self.button_frame, text="OK", command=self.confirm_selection) + self.ok_button.pack(side=tk.RIGHT, padx=5) + self.cancel_button = tk.Button( + self.button_frame, text="Cancel", command=self.cancel_conversion) + self.cancel_button.pack(side=tk.RIGHT) + + self.tree.pack(fill='both', expand=True, padx=10, pady=10) + + self.root.after(1, self.adjust_column_widths) + + def adjust_column_widths(self): + self.root.update_idletasks() # Update the geometry of the widgets + + # Measure and set the column widths + convert_width = tk.font.Font().measure('Convert') + 20 + description_width = max( + tk.font.Font().measure( + self.tree.set( + item, + 'Description')) for item in self.tree.get_children()) + 20 + + # Apply the column widths + self.tree.column('Convert', width=convert_width, anchor='center') + self.tree.column('Description', width=description_width, anchor='w') + + # Calculate the height for each row + row_height = tk.font.Font().metrics('linespace') + 2 + + # Adjust the Treeview height + num_items = len(self.tree.get_children()) + tree_height = (row_height * num_items) * 1.8 + self.tree.config(height=num_items) + + # Calculate the total height needed + total_height = self.instruction_frame.winfo_height( + ) + self.button_frame.winfo_height() + tree_height + 20 + + # Calculate the total width needed + total_width = convert_width + description_width + 20 + + # Set the size of the window based on content + self.root.geometry(f"{int(total_width)}x{int(total_height)}") + + # Prevent the window from resizing smaller than it should + self.root.minsize(int(total_width), int(total_height)) + + # Update the idle tasks to recalculate sizes, may help to remove extra + # space + self.root.update_idletasks() + + def confirm_selection(self): + self.cancel_button.config(state=tk.NORMAL) + selected_item = self.tree.focus() + selection = self.tree.item(selected_item) + option = selection['values'][0] + self.show_loading_screen(option) + + def set_min_window_size(self): + self.root.update_idletasks() # Update the geometry of the widgets + self.root.minsize(self.root.winfo_width(), self.root.winfo_height()) + + def show_loading_screen(self, option): + # Display a non-blocking loading message + self.loading_label = tk.Label( + self.root, text="Converting textures, please wait...", fg="blue") + self.loading_label.pack() + + # Start the conversion process in a separate thread + conversion_thread = threading.Thread( + target=self.perform_conversion, args=(option,), daemon=True) + conversion_thread.start() + + # Disable the OK button while the conversion is in progress + self.ok_button.config(state=tk.DISABLED) + self.cancel_button.config(state=tk.NORMAL) + + def perform_conversion(self, option): + # Set default values for pixelsize, dry_run, and verbose + pixelsize = None + dry_run = False + verbose = False + output_dir = os.path.join(get_minetest_directory(), "textures") + make_texture_pack = True + + # Determine the resource packs to convert based on the option + if option == 'all': + resource_packs = find_all_minecraft_resourcepacks() + elif option == 'default': + resource_packs = [ + handle_default_minecraft_texture(home, output_dir)] + elif option == 'other': + folder_selected = filedialog.askdirectory() + if folder_selected: + resource_packs = [folder_selected] + else: + # User canceled the folder selection + self.loading_label.pack_forget() + self.ok_button.config(state=tk.NORMAL) + return + + # Convert resource packs + convert_resource_packs(resource_packs, output_dir, + pixelsize, dry_run, verbose, make_texture_pack) + + # Update the GUI after conversion + self.loading_label.pack_forget() + self.ok_button.config(state=tk.NORMAL) + messagebox.showinfo( + "Conversion Complete", + f"Resource Packs '{', '.join(resource_packs)}' converted.") + + def convert_all(self): + # Simulate a conversion process + print("Converting all resource packs") + time.sleep(2) # Simulate some time for conversion + + def convert_default(self): + # Simulate a conversion process + print("Converting default resource pack") + time.sleep(2) # Simulate some time for conversion + + def open_folder_dialog(self): + folder_selected = filedialog.askdirectory() + if folder_selected: + # Simulate a conversion process + print(f"Folder selected for conversion: {folder_selected}") + time.sleep(2) # Simulate some time for conversion + + def cancel_conversion(self): + # Placeholder for cancel action, you may need to implement actual + # cancellation logic + print("Conversion cancelled by user.") + self.loading_label.pack_forget() + self.ok_button.config(state=tk.NORMAL) + self.cancel_button.config(state=tk.DISABLED) + + +def main(): + root = tk.Tk() + app = TextureConverterGUI(root) + app.adjust_column_widths() + root.mainloop() + + +if __name__ == "__main__": + main() diff --git a/tools/libtextureconverter/special_convert_cases.py b/tools/libtextureconverter/special_convert_cases.py new file mode 100644 index 000000000..762cb7b6b --- /dev/null +++ b/tools/libtextureconverter/special_convert_cases.py @@ -0,0 +1,809 @@ +import os +from .utils import target_dir, colorize, colorize_alpha +import shutil +import csv +import tempfile +import sys +import argparse +import glob +from wand.image import Image +from wand.color import Color +from wand.display import display +from wand.drawing import Drawing +import warnings + +# Conversion of map backgrounds +def convert_map_textures( + make_texture_pack, + dry_run, + verbose, + base_dir, + tex_dir, + tempfile1, + tempfile2, + output_dir, + output_dir_name, + mineclone2_path, + PXSIZE): + # Convert map background + map_background_file = tex_dir + "/map/map_background.png" + if os.path.isfile(map_background_file): + destination_path = target_dir("/mods/ITEMS/mcl_maps/textures", make_texture_pack, output_dir, output_dir_name, mineclone2_path) + "/mcl_maps_map_background.png" + + with Image(filename=map_background_file) as img: + # Resize the image with 'point' filter + img.resize(140, 140, filter='point') + + # Save the result + img.save(filename=destination_path) + + +# Convert armor textures + +def convert_armor_textures( + make_texture_pack, + dry_run, + verbose, + base_dir, + tex_dir, + tempfile1, + tempfile2, + output_dir, + output_dir_name, + mineclone2_path, + PXSIZE): + # Convert armor textures (requires ImageMagick) + armor_files = [[tex_dir + "/models/armor/leather_layer_1.png", + tex_dir + "/models/armor/leather_layer_2.png", + target_dir("/mods/ITEMS/mcl_armor/textures", + make_texture_pack, + output_dir, + output_dir_name, + mineclone2_path), + "mcl_armor_helmet_leather.png", + "mcl_armor_chestplate_leather.png", + "mcl_armor_leggings_leather.png", + "mcl_armor_boots_leather.png"], + [tex_dir + "/models/armor/chainmail_layer_1.png", + tex_dir + "/models/armor/chainmail_layer_2.png", + target_dir("/mods/ITEMS/mcl_armor/textures", + make_texture_pack, + output_dir, + output_dir_name, + mineclone2_path), + "mcl_armor_helmet_chain.png", + "mcl_armor_chestplate_chain.png", + "mcl_armor_leggings_chain.png", + "mcl_armor_boots_chain.png"], + [tex_dir + "/models/armor/gold_layer_1.png", + tex_dir + "/models/armor/gold_layer_2.png", + target_dir("/mods/ITEMS/mcl_armor/textures", + make_texture_pack, + output_dir, + output_dir_name, + mineclone2_path), + "mcl_armor_helmet_gold.png", + "mcl_armor_chestplate_gold.png", + "mcl_armor_leggings_gold.png", + "mcl_armor_boots_gold.png"], + [tex_dir + "/models/armor/iron_layer_1.png", + tex_dir + "/models/armor/iron_layer_2.png", + target_dir("/mods/ITEMS/mcl_armor/textures", + make_texture_pack, + output_dir, + output_dir_name, + mineclone2_path), + "mcl_armor_helmet_iron.png", + "mcl_armor_chestplate_iron.png", + "mcl_armor_leggings_iron.png", + "mcl_armor_boots_iron.png"], + [tex_dir + "/models/armor/diamond_layer_1.png", + tex_dir + "/models/armor/diamond_layer_2.png", + target_dir("/mods/ITEMS/mcl_armor/textures", + make_texture_pack, + output_dir, + output_dir_name, + mineclone2_path), + "mcl_armor_helmet_diamond.png", + "mcl_armor_chestplate_diamond.png", + "mcl_armor_leggings_diamond.png", + "mcl_armor_boots_diamond.png"], + [tex_dir + "/models/armor/netherite_layer_1.png", + tex_dir + "/models/armor/netherite_layer_2.png", + target_dir("/mods/ITEMS/mcl_armor/textures", + make_texture_pack, + output_dir, + output_dir_name, + mineclone2_path), + "mcl_armor_helmet_netherite.png", + "mcl_armor_chestplate_netherite.png", + "mcl_armor_leggings_netherite.png", + "mcl_armor_boots_netherite.png"]] + for a in armor_files: + APXSIZE = 16 # for some reason MineClone2 requires this + layer_1 = a[0] + layer_2 = a[1] + adir = a[2] + if os.path.isfile(layer_1): + helmet = adir + "/" + a[3] + chestplate = adir + "/" + a[4] + boots = adir + "/" + a[6] + # helmet + os.system("convert -size " + + str(APXSIZE * + 4) + + "x" + + str(APXSIZE * + 2) + + " xc:none \\( " + + layer_1 + + " -scale " + + str(APXSIZE * + 4) + + "x" + + str(APXSIZE * + 2) + + " -geometry +" + + str(APXSIZE * + 2) + + "+0 -crop " + + str(APXSIZE * + 2) + + "x" + + str(APXSIZE) + + "+0+0 \\) -composite -channel A -fx \"(a > 0.0) ? 1.0 : 0.0\" " + + helmet) + + + + # chestplate + with Image(width=APXSIZE * 4, height=APXSIZE * 2, background=Color('none')) as img: + # Load layer_1 and scale + with Image(filename=layer_1) as layer1: + layer1.resize(APXSIZE * 4, APXSIZE * 2) + + # Define the crop geometry + crop_width = int(APXSIZE * 2.5) + crop_height = APXSIZE + crop_x = APXSIZE + crop_y = APXSIZE + + # Crop the image + layer1.crop(crop_x, crop_y, width=crop_width, height=crop_height) + + # Composite layer1 over the transparent image + img.composite(layer1, APXSIZE, APXSIZE) + + # Apply channel operation + img.fx("a > 0.0 ? 1.0 : 0.0", channel='alpha') + + # Save the result + img.save(filename=chestplate) + with Image(width=APXSIZE * 4, height=APXSIZE * 2, background=Color('none')) as img: + with Image(filename=layer_1) as layer1: + # Scale the image + layer1.resize(APXSIZE * 4, APXSIZE * 2) + + # Crop the image + crop_x = 0 + crop_y = APXSIZE + crop_width = APXSIZE + crop_height = APXSIZE + layer1.crop(crop_x, crop_y, width=crop_width, height=crop_height) + + # Composite the cropped image over the transparent image + img.composite(layer1, 0, APXSIZE) + + # Apply the channel operation + img.fx("a > 0.0 ? 1.0 : 0.0", channel='alpha') + + # Save the result + img.save(filename=boots) + + if os.path.isfile(layer_2): + leggings = adir + "/" + a[5] + with Image(width=APXSIZE * 4, height=APXSIZE * 2, background=Color('none')) as img: + with Image(filename=layer_2) as layer2: + # Scale the image + layer2.resize(APXSIZE * 4, APXSIZE * 2) + + # Apply geometry and crop + crop_width = int(APXSIZE * 2.5) + crop_height = APXSIZE + crop_x = 0 + crop_y = APXSIZE + layer2.crop(left=crop_x, top=crop_y, width=crop_width, height=crop_height) + + # Composite the cropped image over the transparent image + img.composite(layer2, 0, APXSIZE) + + # Apply channel operation + img.fx("a > 0.0 ? 1.0 : 0.0", channel='alpha') + + # Save the result + img.save(filename=leggings) + +# Convert chest textures + + +def convert_chest_textures( + make_texture_pack, + dry_run, + verbose, + base_dir, + tex_dir, + tempfile1, + tempfile2, + output_dir, + output_dir_name, + mineclone2_path, + PXSIZE): + # Convert chest textures (requires ImageMagick) + chest_files = [[tex_dir + "/entity/chest/normal.png", + target_dir("/mods/ITEMS/mcl_chests/textures", + make_texture_pack, + output_dir, + output_dir_name, + mineclone2_path), + "default_chest_top.png", + "mcl_chests_chest_bottom.png", + "default_chest_front.png", + "mcl_chests_chest_left.png", + "mcl_chests_chest_right.png", + "mcl_chests_chest_back.png"], + [tex_dir + "/entity/chest/trapped.png", + target_dir("/mods/ITEMS/mcl_chests/textures", + make_texture_pack, + output_dir, + output_dir_name, + mineclone2_path), + "mcl_chests_chest_trapped_top.png", + "mcl_chests_chest_trapped_bottom.png", + "mcl_chests_chest_trapped_front.png", + "mcl_chests_chest_trapped_left.png", + "mcl_chests_chest_trapped_right.png", + "mcl_chests_chest_trapped_back.png"], + [tex_dir + "/entity/chest/ender.png", + target_dir("/mods/ITEMS/mcl_chests/textures", + make_texture_pack, + output_dir, + output_dir_name, + mineclone2_path), + "mcl_chests_ender_chest_top.png", + "mcl_chests_ender_chest_bottom.png", + "mcl_chests_ender_chest_front.png", + "mcl_chests_ender_chest_left.png", + "mcl_chests_ender_chest_right.png", + "mcl_chests_ender_chest_back.png"]] + + for c in chest_files: + chest_file = c[0] + if os.path.isfile(chest_file): + PPX = (PXSIZE / 16) + CHPX = (PPX * 14) # Chest width + LIDPX = (PPX * 5) # Lid height + LIDLOW = (PPX * 10) # Lower lid section height + LOCKW = (PPX * 6) # Lock width + LOCKH = (PPX * 5) # Lock height + + cdir = c[1] + top = cdir + "/" + c[2] + bottom = cdir + "/" + c[3] + front = cdir + "/" + c[4] + left = cdir + "/" + c[5] + right = cdir + "/" + c[6] + back = cdir + "/" + c[7] + # Top + os.system("convert " + chest_file + " \ +\\( -clone 0 -crop " + str(CHPX) + "x" + str(CHPX) + "+" + str(CHPX) + "+0 \\) -geometry +0+0 -composite -extent " + str(CHPX) + "x" + str(CHPX) + " " + top) + # Bottom + os.system("convert " + chest_file + " \ +\\( -clone 0 -crop " + str(CHPX) + "x" + str(CHPX) + "+" + str(CHPX * 2) + "+" + str(CHPX + LIDPX) + " \\) -geometry +0+0 -composite -extent " + str(CHPX) + "x" + str(CHPX) + " " + bottom) + # Front + os.system("convert " + chest_file + " \ +\\( -clone 0 -crop " + str(CHPX) + "x" + str(LIDPX) + "+" + str(CHPX) + "+" + str(CHPX) + " \\) -geometry +0+0 -composite \ +\\( -clone 0 -crop " + str(CHPX) + "x" + str(LIDLOW) + "+" + str(CHPX) + "+" + str(CHPX * 2 + LIDPX) + " \\) -geometry +0+" + str(LIDPX - PPX) + " -composite \ +-extent " + str(CHPX) + "x" + str(CHPX) + " " + front) + # TODO: Add lock + + # Left, right back (use same texture, we're lazy + files = [left, right, back] + for f in files: + os.system("convert " + chest_file + " \ +\\( -clone 0 -crop " + str(CHPX) + "x" + str(LIDPX) + "+" + str(0) + "+" + str(CHPX) + " \\) -geometry +0+0 -composite \ +\\( -clone 0 -crop " + str(CHPX) + "x" + str(LIDLOW) + "+" + str(0) + "+" + str(CHPX * 2 + LIDPX) + " \\) -geometry +0+" + str(LIDPX - PPX) + " -composite \ +-extent " + str(CHPX) + "x" + str(CHPX) + " " + f) + + # Double chests + + chest_files = [[tex_dir + "/entity/chest/normal_double.png", + target_dir("/mods/ITEMS/mcl_chests/textures", + make_texture_pack, + output_dir, + output_dir_name, + mineclone2_path), + "default_chest_front_big.png", + "default_chest_top_big.png", + "default_chest_side_big.png"], + [tex_dir + "/entity/chest/trapped_double.png", + target_dir("/mods/ITEMS/mcl_chests/textures", + make_texture_pack, + output_dir, + output_dir_name, + mineclone2_path), + "mcl_chests_chest_trapped_front_big.png", + "mcl_chests_chest_trapped_top_big.png", + "mcl_chests_chest_trapped_side_big.png"]] + for c in chest_files: + chest_file = c[0] + if os.path.isfile(chest_file): + PPX = (PXSIZE / 16) + CHPX = (PPX * 14) # Chest width (short side) + CHPX2 = (PPX * 15) # Chest width (long side) + LIDPX = (PPX * 5) # Lid height + LIDLOW = (PPX * 10) # Lower lid section height + LOCKW = (PPX * 6) # Lock width + LOCKH = (PPX * 5) # Lock height + + cdir = c[1] + front = cdir + "/" + c[2] + top = cdir + "/" + c[3] + side = cdir + "/" + c[4] + # Top + os.system("convert " + chest_file + " \ +\\( -clone 0 -crop " + str(CHPX2) + "x" + str(CHPX) + "+" + str(CHPX) + "+0 \\) -geometry +0+0 -composite -extent " + str(CHPX2) + "x" + str(CHPX) + " " + top) + # Front + # TODO: Add lock + os.system("convert " + chest_file + " \ +\\( -clone 0 -crop " + str(CHPX2) + "x" + str(LIDPX) + "+" + str(CHPX) + "+" + str(CHPX) + " \\) -geometry +0+0 -composite \ +\\( -clone 0 -crop " + str(CHPX2) + "x" + str(LIDLOW) + "+" + str(CHPX) + "+" + str(CHPX * 2 + LIDPX) + " \\) -geometry +0+" + str(LIDPX - PPX) + " -composite \ +-extent " + str(CHPX2) + "x" + str(CHPX) + " " + front) + # Side + os.system("convert " + chest_file + " \ +\\( -clone 0 -crop " + str(CHPX) + "x" + str(LIDPX) + "+" + str(0) + "+" + str(CHPX) + " \\) -geometry +0+0 -composite \ +\\( -clone 0 -crop " + str(CHPX) + "x" + str(LIDLOW) + "+" + str(0) + "+" + str(CHPX * 2 + LIDPX) + " \\) -geometry +0+" + str(LIDPX - PPX) + " -composite \ +-extent " + str(CHPX) + "x" + str(CHPX) + " " + side) + +# Generate railway crossings and t-junctions + + +def convert_rail_textures( + make_texture_pack, + dry_run, + verbose, + base_dir, + tex_dir, + tempfile1, + tempfile2, + output_dir, + output_dir_name, + mineclone2_path, + PXSIZE): + # Generate railway crossings and t-junctions. Note: They may look strange. + # Note: these may be only a temporary solution, as crossings and t-junctions do not occour in MC. + # TODO: Curves + rails = [ + # (Straigt src, curved src, t-junction dest, crossing dest) + ("rail.png", "rail_corner.png", + "default_rail_t_junction.png", "default_rail_crossing.png"), + ("powered_rail.png", "rail_corner.png", + "carts_rail_t_junction_pwr.png", "carts_rail_crossing_pwr.png"), + ("powered_rail_on.png", "rail_corner.png", "mcl_minecarts_rail_golden_t_junction_powered.png", + "mcl_minecarts_rail_golden_crossing_powered.png"), + ("detector_rail.png", "rail_corner.png", "mcl_minecarts_rail_detector_t_junction.png", + "mcl_minecarts_rail_detector_crossing.png"), + ("detector_rail_on.png", "rail_corner.png", "mcl_minecarts_rail_detector_t_junction_powered.png", + "mcl_minecarts_rail_detector_crossing_powered.png"), + ("activator_rail.png", "rail_corner.png", "mcl_minecarts_rail_activator_t_junction.png", + "mcl_minecarts_rail_activator_crossing.png"), + ("activator_rail_on.png", "rail_corner.png", "mcl_minecarts_rail_activator_d_t_junction.png", + "mcl_minecarts_rail_activator_powered_crossing.png"), + ] + for r in rails: + os.system( + "composite -compose Dst_Over " + + tex_dir + + "/block/" + + r[0] + + " " + + tex_dir + + "/block/" + + r[1] + + " " + + target_dir( + "/mods/ENTITIES/mcl_minecarts/textures", + make_texture_pack, + output_dir, + output_dir_name, + mineclone2_path) + + "/" + + r[2]) + os.system("convert " + tex_dir + "/block/" + + r[0] + " -rotate 90 " + tempfile1.name) + os.system( + "composite -compose Dst_Over " + + tempfile1.name + + " " + + tex_dir + + "/block/" + + r[0] + + " " + + target_dir( + "/mods/ENTITIES/mcl_minecarts/textures", + make_texture_pack, + output_dir, + output_dir_name, + mineclone2_path) + + "/" + + r[3]) + +# Convert banner overlays + + +def convert_banner_overlays( + make_texture_pack, + dry_run, + verbose, + base_dir, + tex_dir, + tempfile1, + tempfile2, + output_dir, + output_dir_name, + mineclone2_path, + PXSIZE): + # Convert banner overlays + overlays = [ + "base", + "border", + "bricks", + "circle", + "creeper", + "cross", + "curly_border", + "diagonal_left", + "diagonal_right", + "diagonal_up_left", + "diagonal_up_right", + "flower", + "gradient", + "gradient_up", + "half_horizontal_bottom", + "half_horizontal", + "half_vertical", + "half_vertical_right", + "rhombus", + "mojang", + "skull", + "small_stripes", + "straight_cross", + "stripe_bottom", + "stripe_center", + "stripe_downleft", + "stripe_downright", + "stripe_left", + "stripe_middle", + "stripe_right", + "stripe_top", + "square_bottom_left", + "square_bottom_right", + "square_top_left", + "square_top_right", + "triangle_bottom", + "triangles_bottom", + "triangle_top", + "triangles_top", + ] + for o in overlays: + orig = tex_dir + "/entity/banner/" + o + ".png" + if os.path.isfile(orig): + if o == "mojang": + o = "thing" + dest = target_dir( + "/mods/ITEMS/mcl_banners/textures", + make_texture_pack, + output_dir, + output_dir_name, + mineclone2_path) + "/" + "mcl_banners_" + o + ".png" + os.system( + "convert " + + orig + + " -transparent-color white -background black -alpha remove -alpha copy -channel RGB -white-threshold 0 " + + dest) + +# Convert grass and related textures + + +def convert_grass_textures( + make_texture_pack, + dry_run, + verbose, + base_dir, + tex_dir, + tempfile1, + tempfile2, + output_dir, + output_dir_name, + mineclone2_path, + PXSIZE): + # Convert grass + grass_file = tex_dir + "/block/grass_block_top.png" + if os.path.isfile(grass_file): + FOLIAG = tex_dir + "/colormap/foliage.png" + GRASS = tex_dir + "/colormap/grass.png" + + # Leaves + colorize_alpha( + FOLIAG, + tex_dir + + "/block/oak_leaves.png", + "116+143", + str(PXSIZE), + target_dir( + "/textures", + make_texture_pack, + output_dir, + output_dir_name, + mineclone2_path) + + "/default_leaves.png", + tempfile2.name) + colorize_alpha( + FOLIAG, + tex_dir + + "/block/dark_oak_leaves.png", + "158+177", + str(PXSIZE), + target_dir( + "/textures", + make_texture_pack, + output_dir, + output_dir_name, + mineclone2_path) + + "/mcl_core_leaves_big_oak.png", + tempfile2.name) + colorize_alpha( + FOLIAG, + tex_dir + + "/block/acacia_leaves.png", + "40+255", + str(PXSIZE), + target_dir( + "/textures", + make_texture_pack, + output_dir, + output_dir_name, + mineclone2_path) + + "/default_acacia_leaves.png", + tempfile2.name) + colorize_alpha( + FOLIAG, + tex_dir + + "/block/spruce_leaves.png", + "226+230", + str(PXSIZE), + target_dir( + "/textures", + make_texture_pack, + output_dir, + output_dir_name, + mineclone2_path) + + "/mcl_core_leaves_spruce.png", + tempfile2.name) + colorize_alpha( + FOLIAG, + tex_dir + + "/block/birch_leaves.png", + "141+186", + str(PXSIZE), + target_dir( + "/textures", + make_texture_pack, + output_dir, + output_dir_name, + mineclone2_path) + + "/mcl_core_leaves_birch.png", + tempfile2.name) + colorize_alpha( + FOLIAG, + tex_dir + + "/block/jungle_leaves.png", + "16+39", + str(PXSIZE), + target_dir( + "/textures", + make_texture_pack, + output_dir, + output_dir_name, + mineclone2_path) + + "/default_jungleleaves.png", + tempfile2.name) + + # Waterlily + colorize_alpha( + FOLIAG, + tex_dir + + "/block/lily_pad.png", + "16+39", + str(PXSIZE), + target_dir( + "/textures", + make_texture_pack, + output_dir, + output_dir_name, + mineclone2_path) + + "/flowers_waterlily.png", + tempfile2.name) + + # Vines + colorize_alpha( + FOLIAG, + tex_dir + + "/block/vine.png", + "16+39", + str(PXSIZE), + target_dir( + "/textures", + make_texture_pack, + output_dir, + output_dir_name, + mineclone2_path) + + "/mcl_core_vine.png", + tempfile2.name) + + # Tall grass, fern (inventory images) + pcol = "50+173" # Plains grass color + # TODO: TALLGRASS.png does no longer exist + colorize_alpha( + GRASS, + tex_dir + + "/block/tallgrass.png", + pcol, + str(PXSIZE), + target_dir( + "/textures", + make_texture_pack, + output_dir, + output_dir_name, + mineclone2_path) + + "/mcl_flowers_tallgrass_inv.png", + tempfile2.name) + colorize_alpha( + GRASS, + tex_dir + + "/block/fern.png", + pcol, + str(PXSIZE), + target_dir( + "/textures", + make_texture_pack, + output_dir, + output_dir_name, + mineclone2_path) + + "/mcl_flowers_fern_inv.png", + tempfile2.name) + colorize_alpha( + GRASS, + tex_dir + + "/block/large_fern_top.png", + pcol, + str(PXSIZE), + target_dir( + "/textures", + make_texture_pack, + output_dir, + output_dir_name, + mineclone2_path) + + "/mcl_flowers_double_plant_fern_inv.png", + tempfile2.name) + colorize_alpha( + GRASS, + tex_dir + + "/block/tall_grass_top.png", + pcol, + str(PXSIZE), + target_dir( + "/textures", + make_texture_pack, + output_dir, + output_dir_name, + mineclone2_path) + + "/mcl_flowers_double_plant_grass_inv.png", + tempfile2.name) + + # Convert grass palette: https://minecraft.fandom.com/wiki/Tint + grass_colors = [ + # [Coords or #Color, AdditionalTint], # Index - Minecraft biome name (MineClone2 biome names) + # 0 - Plains (flat, Plains, Plains_beach, Plains_ocean, End) + ["50+173"], + # 1 - Savanna (Savanna, Savanna_beach, Savanna_ocean) + ["0+255"], + # 2 - Ice Spikes (IcePlainsSpikes, IcePlainsSpikes_ocean) + ["255+255"], + # 3 - Snowy Taiga (ColdTaiga, ColdTaiga_beach, ColdTaiga_beach_water, ColdTaiga_ocean) + ["255+255"], + # 4 - Giant Tree Taiga (MegaTaiga, MegaTaiga_ocean) + ["178+193"], + # 5 - Giant Tree Taiga (MegaSpruceTaiga, MegaSpruceTaiga_ocean) + ["178+193"], + # 6 - Montains (ExtremeHills, ExtremeHills_beach, ExtremeHills_ocean) + ["203+239"], + # 7 - Montains (ExtremeHillsM, ExtremeHillsM_ocean) + ["203+239"], + # 8 - Montains (ExtremeHills+, ExtremeHills+_snowtop, ExtremeHills+_ocean) + ["203+239"], + ["50+173"], # 9 - Beach (StoneBeach, StoneBeach_ocean) + ["255+255"], # 10 - Snowy Tundra (IcePlains, IcePlains_ocean) + # 11 - Sunflower Plains (SunflowerPlains, SunflowerPlains_ocean) + ["50+173"], + ["191+203"], # 12 - Taiga (Taiga, Taiga_beach, Taiga_ocean) + ["76+112"], # 13 - Forest (Forest, Forest_beach, Forest_ocean) + # 14 - Flower Forest (FlowerForest, FlowerForest_beach, FlowerForest_ocean) + ["76+112"], + # 15 - Birch Forest (BirchForest, BirchForest_ocean) + ["101+163"], + # 16 - Birch Forest Hills (BirchForestM, BirchForestM_ocean) + ["101+163"], + # 17 - Desert and Nether (Desert, Desert_ocean, Nether) + ["0+255"], + # 18 - Dark Forest (RoofedForest, RoofedForest_ocean) + ["76+112", "#28340A"], + ["#90814d"], # 19 - Mesa (Mesa, Mesa_sandlevel, Mesa_ocean, ) + # 20 - Mesa (MesaBryce, MesaBryce_sandlevel, MesaBryce_ocean) + ["#90814d"], + # 21 - Mesa (MesaPlateauF, MesaPlateauF_grasstop, MesaPlateauF_sandlevel, MesaPlateauF_ocean) + ["#90814d"], + # 22 - Mesa (MesaPlateauFM, MesaPlateauFM_grasstop, MesaPlateauFM_sandlevel, MesaPlateauFM_ocean) + ["#90814d"], + # 23 - Shattered Savanna (or Savanna Plateau ?) (SavannaM, SavannaM_ocean) + ["0+255"], + ["12+36"], # 24 - Jungle (Jungle, Jungle_shore, Jungle_ocean) + # 25 - Modified Jungle (JungleM, JungleM_shore, JungleM_ocean) + ["12+36"], + ["12+61"], # 26 - Jungle Edge (JungleEdge, JungleEdge_ocean) + # 27 - Modified Jungle Edge (JungleEdgeM, JungleEdgeM_ocean) + ["12+61"], + # 28 - Swamp (Swampland, Swampland_shore, Swampland_ocean) + ["#6A7039"], + # 29 - Mushroom Fields and Mushroom Field Shore (MushroomIsland, MushroomIslandShore, MushroomIsland_ocean) + ["25+25"], + ] + + grass_palette_file = target_dir( + "/textures", + make_texture_pack, + output_dir, + output_dir_name, + mineclone2_path) + "/mcl_core_palette_grass.png" + os.system("convert -size 16x16 canvas:transparent " + + grass_palette_file) + + for i, color in enumerate(grass_colors): + if color[0][0] == "#": + os.system("convert -size 1x1 xc:\"" + + color[0] + "\" " + tempfile1.name + ".png") + else: + os.system("convert " + GRASS + " -crop 1x1+" + + color[0] + " " + tempfile1.name + ".png") + + if len(color) > 1: + os.system( + "convert " + + tempfile1.name + + ".png \\( -size 1x1 xc:\"" + + color[1] + + "\" \\) -compose blend -define compose:args=50,50 -composite " + + tempfile1.name + + ".png") + + os.system("convert " + + grass_palette_file + + " \\( " + + tempfile1.name + + ".png -geometry +" + + str(i % + 16) + + "+" + + str(int(i / + 16)) + + " \\) -composite " + + grass_palette_file) diff --git a/tools/libtextureconverter/utils.py b/tools/libtextureconverter/utils.py new file mode 100644 index 000000000..3756574f6 --- /dev/null +++ b/tools/libtextureconverter/utils.py @@ -0,0 +1,211 @@ +import shutil +import csv +import os +import tempfile +import sys +import argparse +import glob +import re +import zipfile +from .config import SUPPORTED_MINECRAFT_VERSION, home +from collections import Counter +import platform +from wand.image import Image +from wand.color import Color +from wand.display import display +import warnings + +def detect_pixel_size(directory): + from PIL import Image + sizes = [] + for filename in glob.glob(directory + '/**/*.png', recursive=True): + with Image.open(filename) as img: + sizes.append(img.size) + if not sizes: + return 16 # Default to 16x16 if no PNG files are found + most_common_size = Counter(sizes).most_common(1)[0][0] + print( + f"Autodetected pixel size: {most_common_size[0]}x{most_common_size[1]}") + return most_common_size[0] + +def target_dir( + directory, + make_texture_pack, + output_dir, + output_dir_name, + mineclone2_path): + if make_texture_pack: + return output_dir + "/" + output_dir_name + else: + return mineclone2_path + directory + + +def colorize(colormap, source, colormap_pixel, texture_size, destination, tempfile1_name): + try: + # Convert the colormap_pixel to integer coordinates + x, y = map(int, colormap_pixel.split('+')) + + # Define texture size as integer + texture_size = int(texture_size) + + with Image(filename=colormap) as img: + # Crop the image + img.crop(x, y, width=1, height=1) + + # Set depth (This might be ignored by Wand as it manages depth automatically) + img.depth = 8 + + # Resize the image + img.resize(texture_size, texture_size) + + # Save the result + img.save(filename=tempfile1_name) + + except Exception as e: + warnings.warn(f"An error occurred during the first image processing operation: {e}") + + try: + # Load the images + with Image(filename=tempfile1_name) as top_image: + with Image(filename=source) as bottom_image: + # Perform composite operation with Multiply blend mode + bottom_image.composite(top_image, 0, 0, operator='multiply') + + # Save the result + bottom_image.save(filename=destination) + + except Exception as e: + warnings.warn(f"An error occurred during the second image processing operation: {e}") + + +def colorize_alpha( + colormap, + source, + colormap_pixel, + texture_size, + destination, + tempfile2_name): + colorize(colormap, source, colormap_pixel, + texture_size, destination, tempfile2_name) + try: + with Image(filename=source) as source_image: + with Image(filename=tempfile2_name) as tempfile2_image: + # Perform composite operation with Dst_In blend mode + tempfile2_image.composite(source_image, 0, 0, operator='dst_in') + + # Set alpha channel + tempfile2_image.alpha_channel = 'set' + + # Save the result + tempfile2_image.save(filename=destination) + except Exception as e: + warnings.warn(f"An error occurred during the second image processing operation: {e}") + + +def find_highest_minecraft_version(home, supported_version): + version_pattern = re.compile(re.escape(supported_version) + r"\.\d+") + versions_dir = os.path.join(home, ".minecraft", "versions") + highest_version = None + if os.path.isdir(versions_dir): + for folder in os.listdir(versions_dir): + if version_pattern.match(folder): + if not highest_version or folder > highest_version: + highest_version = folder + return highest_version + + +def find_all_minecraft_resourcepacks(): + resourcepacks_dir = os.path.join(home, '.minecraft', 'resourcepacks') + + if not os.path.isdir(resourcepacks_dir): + print(f"Resource packs directory not found: {resourcepacks_dir}") + return + + resourcepacks = [] + for folder in os.listdir(resourcepacks_dir): + folder_path = os.path.join(resourcepacks_dir, folder) + if os.path.isdir(folder_path): + pack_png_path = os.path.join(folder_path, 'pack.png') + if os.path.isfile(pack_png_path): + print(f"Adding resourcepack '{folder}'") + resourcepacks.append(folder_path) + else: + print( + f"pack.png not found in resourcepack '{folder}', not converting") + + return resourcepacks + + +def handle_default_minecraft_texture(home, output_dir): + version = find_highest_minecraft_version(home, SUPPORTED_MINECRAFT_VERSION) + if not version: + print("No suitable Minecraft version found.") + sys.exit(1) + + jar_file = os.path.join( + home, ".minecraft", "versions", version, f"{version}.jar") + if not os.path.isfile(jar_file): + print("Minecraft JAR file not found.") + sys.exit(1) + + temp_zip = f"/tmp/mc-default-{version.replace('.', '')}.zip" + shutil.copy2(jar_file, temp_zip) + + extract_folder = temp_zip.replace(".zip", "") + with zipfile.ZipFile(temp_zip, 'r') as zip_ref: + zip_ref.extractall(extract_folder) + + if not os.path.exists(extract_folder): + print(f"Extraction failed, folder not found: {extract_folder}") + sys.exit(1) + + # Normalize the extract folder path + extract_folder = os.path.normpath(extract_folder) + + # Define the textures directory and normalize it + textures_directory = os.path.normpath( + f"{extract_folder}/assets/minecraft/textures") + + # Using glob to find all files + all_files = glob.glob(f"{extract_folder}/**/*.*", recursive=True) + + # Remove all non-png files except pack.mcmeta and pack.png in the root + for file_path in all_files: + if not file_path.endswith('.png') and not file_path.endswith( + 'pack.mcmeta') and not file_path.endswith('pack.png'): + # print(f"Removing file: {file_path}") + os.remove(file_path) + + # Remove all directories in the root except 'assets' + for item in os.listdir(extract_folder): + item_path = os.path.join(extract_folder, item) + if os.path.isdir(item_path) and item != "assets": + # print(f"Removing directory: {item_path}") + shutil.rmtree(item_path, ignore_errors=True) + + # Remove directories in 'minecraft' except for 'textures' + minecraft_directory = os.path.normpath( + f"{extract_folder}/assets/minecraft") + for item in os.listdir(minecraft_directory): + item_path = os.path.join(minecraft_directory, item) + if os.path.isdir(item_path) and item != "textures": + print(f"Removing directory: {item_path}") + shutil.rmtree(item_path, ignore_errors=True) + + # Copy the textures directory to the output directory + output_textures_directory = os.path.join( + output_dir, 'assets/minecraft/textures') + if os.path.exists(textures_directory) and not os.path.exists( + output_textures_directory): + os.makedirs(os.path.dirname(output_textures_directory), exist_ok=True) + shutil.copytree(textures_directory, + output_textures_directory, dirs_exist_ok=True) + + # Copy pack.mcmeta and pack.png file if exists + for file_name in ['pack.mcmeta', 'pack.png']: + file_path = os.path.join(extract_folder, file_name) + if os.path.exists(file_path): + shutil.copy(file_path, output_dir) + + print(f"Filtered and extracted to: {extract_folder}") + return extract_folder diff --git a/tools/requirements.txt b/tools/requirements.txt new file mode 100644 index 000000000..f4c5a4016 --- /dev/null +++ b/tools/requirements.txt @@ -0,0 +1,2 @@ +Pillow +Wand diff --git a/tools/texture_conversion_extra_tools/conversion_table_validator.py b/tools/texture_conversion_extra_tools/conversion_table_validator.py new file mode 100644 index 000000000..81039558b --- /dev/null +++ b/tools/texture_conversion_extra_tools/conversion_table_validator.py @@ -0,0 +1,38 @@ +import csv +import os + +def validate_csv(file_path): + with open(file_path, newline='') as csvfile: + reader = csv.reader(csvfile, delimiter=',', quotechar='"') + line_num = 1 + for row in reader: + # Skip the header + if line_num == 1: + line_num += 1 + continue + + # Check if row has correct number of columns + if len(row) != 10: + print(f"Warning: Line {line_num} is not a valid CSV row.") + line_num += 1 + continue + + # Validate source path + if "/assets/minecraft/" not in row[0]: + print(f"Warning: Line {line_num} does not contain '/assets/minecraft/' in the source path.") + + # Validate Source file and Target file + if not row[1].endswith('.png'): + print(f"Warning: Line {line_num} has an invalid or missing Source file. It should end with '.png'.") + if not row[2].endswith('.png'): + print(f"Warning: Line {line_num} has an invalid or missing Target file. It should end with '.png'.") + + line_num += 1 + +if __name__ == "__main__": + csv_file = 'Conversion_Table.csv' + if os.path.exists(csv_file): + validate_csv(csv_file) + print("Validated CSV, if no warnings or errors, your good!") + else: + print(f"Error: The file '{csv_file}' does not exist.") diff --git a/tools/texture_conversion_extra_tools/new_table_conversion.py b/tools/texture_conversion_extra_tools/new_table_conversion.py new file mode 100644 index 000000000..7084fae6f --- /dev/null +++ b/tools/texture_conversion_extra_tools/new_table_conversion.py @@ -0,0 +1,40 @@ +import csv + +def read_csv(file_path): + with open(file_path, mode='r', encoding='utf-8') as file: + return list(csv.reader(file)) + +def write_csv(file_path, data): + with open(file_path, mode='w', encoding='utf-8', newline='') as file: + writer = csv.writer(file) + writer.writerows(data) + +def merge_tables(original_csv, new_csv): + # Convert the lists to dictionaries for easier manipulation + original_dict = {row[3]: row for row in original_csv} + new_dict = {row[3]: row for row in new_csv} + + # Update or add new entries + for key in new_dict: + original_dict[key] = new_dict[key] + + # Convert the dictionary back to a list + merged_data = list(original_dict.values()) + + return merged_data + +def main(): + original_csv_path = './Conversion_Table.csv' + new_csv_path = './Conversion_Table_New.csv' + + original_csv = read_csv(original_csv_path) + new_csv = read_csv(new_csv_path) + + # Skip the header row in new_csv + merged_data = merge_tables(original_csv, new_csv[1:]) + + write_csv(original_csv_path, merged_data) + print("Conversion tables have been merged and updated successfully.") + +if __name__ == "__main__": + main() diff --git a/tools/texture_conversion_extra_tools/outstanding_conv.py b/tools/texture_conversion_extra_tools/outstanding_conv.py new file mode 100644 index 000000000..b3d928a09 --- /dev/null +++ b/tools/texture_conversion_extra_tools/outstanding_conv.py @@ -0,0 +1,36 @@ +import csv + +def read_missing_textures(file_path): + with open(file_path, 'r') as file: + return [line.strip().split('/')[-1] for line in file.readlines()] + +def read_conversion_table(file_path): + with open(file_path, 'r') as file: + return list(csv.reader(file)) + +def find_outstanding_entries(missing_textures, conversion_table): + outstanding_entries = [] + for row in conversion_table: + if row[1] in missing_textures: + outstanding_entries.append(row) + return outstanding_entries + +def write_outstanding_entries(file_path, outstanding_entries): + with open(file_path, 'w', newline='') as file: + writer = csv.writer(file) + writer.writerows(outstanding_entries) + +def main(): + missing_textures_file = './missing_textures_filtered.txt' + conversion_table_file = './Conversion_Table.csv' + output_file = './Conversion_Table_Outstanding.csv' + + missing_textures = read_missing_textures(missing_textures_file) + conversion_table = read_conversion_table(conversion_table_file) + outstanding_entries = find_outstanding_entries(missing_textures, conversion_table) + + write_outstanding_entries(output_file, outstanding_entries) + print("Outstanding conversion table entries written to:", output_file) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/tools/texture_conversion_extra_tools/remove_null_lines.py b/tools/texture_conversion_extra_tools/remove_null_lines.py new file mode 100644 index 000000000..d1657b6f4 --- /dev/null +++ b/tools/texture_conversion_extra_tools/remove_null_lines.py @@ -0,0 +1,15 @@ +def remove_null_lines(input_file, output_file): + with open(input_file, 'r') as infile, open(output_file, 'w') as outfile: + for line in infile: + if "NULL" not in line: + outfile.write(line) + +def main(): + input_file = './Conversion_Table.csv' # Replace with your input file path + output_file = './Conversion_Table_New.csv' # Replace with your output file path + + remove_null_lines(input_file, output_file) + print("File processed successfully, NULL lines removed.") + +if __name__ == "__main__": + main()