From ee28bda893a5d1763c53fe9076470d010a3f9525 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sun, 11 Apr 2021 13:43:19 +0200 Subject: [PATCH 001/418] Add polish translation of mcl_core --- mods/ITEMS/mcl_core/locale/mcl_core.pl.tr | 258 ++++++++++++++++++++++ 1 file changed, 258 insertions(+) create mode 100644 mods/ITEMS/mcl_core/locale/mcl_core.pl.tr diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr b/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr new file mode 100644 index 000000000..7c000fe5d --- /dev/null +++ b/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr @@ -0,0 +1,258 @@ +# textdomain: mcl_core +@1 could not survive in lava.=@1 nie przeżyła w lawie. +@1 died in lava.=@1 umarła w lawie. +@1 melted in lava.=@1 stopiła się w lawie. +@1 took a bath in a hot lava tub.=@1 wzięła gorącą kąpiel w wannie z lawą. +A block of diamond is mostly a shiny decorative block but also useful as a compact storage of diamonds.=Blok diamentu jest głównie ładnym blokiem dekoracyjnym, ale jest użyteczny również do kompaktowego przechowywania diamentów. +A block of emerald is mostly a shiny decorative block but also useful as a compact storage of emeralds.=Blok szmaragdu jest głównie ładnym blokiem dekoracyjnym, ale jest użyteczny również do kompaktowego przechowywania szmaragdów. +A block of gold is mostly a shiny decorative block but also useful as a compact storage of gold ingots.=Blok złota jest głównie ładnym blokiem dekoracyjnym, ale jest użyteczny również do kompaktowego przechowywania sztabek złota. +A block of iron is mostly a decorative block but also useful as a compact storage of iron ingots.=Blok żelaza jest głównie ładnym blokiem dekoracyjnym, ale jest użyteczny również do kompaktowego przechowywania sztabek żelaza. +A cactus can only be placed on top of another cactus or any sand.=Kaktus może być postawiony tylko na innym kaktusie lub piasku. +A decorative and mostly transparent block.=Dekoracyjny i głównie przeźroczysty blok. +A grass block is dirt with a grass cover. Grass blocks are resourceful blocks which allow the growth of all sorts of plants. They can be turned into farmland with a hoe and turned into grass paths with a shovel. In light, the grass slowly spreads onto dirt nearby. Under an opaque block or a liquid, a grass block may turn back to dirt.=Blok trawy to blok ziemi z pokryciem z trawy. Bloki trawy są użytecznymi blokami pozwalającymi na wyrośnięcie różnych rodzajów roślin. Mogą zostać zamienione w pole uprawne motyką, lub w ścieżkę z trawy łopatą. Oświelona trawa rozprzestrzenia się na pobliskie bloki. Pod nieprzezroczystym blokiem lub cieczą blok trawy może zamienić się z powrotem w blok ziemi. +A lapis lazuli block is mostly a decorative block but also useful as a compact storage of lapis lazuli.=Blok lazurytu jest głównie ładnym blokiem dekoracyjnym, ale jest użyteczny również do kompaktowego przechowywania lazurytu. +A lava source sets fire to a couple of air blocks above when they're next to a flammable block.=Źródło lawy podpala bloki powietrza nad nią gdy są obok łatwopalnego bloku. +A piece of ladder which allows you to climb vertically. Ladders can only be placed on the side of solid blocks and not on glass, leaves, ice, slabs, glowstone, nor sea lanterns.=Kawałek drabiny, który pozwala ci wspinać się pionowo. Drabina może być postawiona na boku stałego bloku, lecz nie na szkle, liściach, lodzie, półbloku, jasnogłazie ani na laatarni morskiej. +Acacia Bark=Akacjowa kora +Acacia Leaves=Akacjowe liście +Acacia Sapling=Akacjowa sadzonka +Acacia Wood=Akacjowe drewno +Acacia Wood Planks=Akacjowe deski +Acacia leaves are grown from acacia trees.=Akacjowe liście rosną na akacjach. +Andesite=Andezyt +Andesite is an igneous rock.=Andezyt jest skałą pochodzenia wulkanicznego. +Apple=Jabłko +Apples are food items which can be eaten.=Jabłka to przedmioty które można zjeść. +Barrier=Bariera +Barriers are invisble walkable blocks. They are used to create boundaries of adventure maps and the like. Monsters and animals won't appear on barriers, and fences do not connect to barriers. Other blocks can be built on barriers like on any other block.=Bariery to niewidzialne bloki po których można chodzić. Są użyteczne do tworzenia ograniczeń na mapach przygodowych i im podobnych. Potwory i zwierzęta nie pojawiają się na barierach, a płoty się z nimi nie łączą. Inne bloki mogą być na nich budowane podobnie jak na innych blokach. +Bedrock=Skała macierzysta +Bedrock is a very hard type of rock. It can not be broken, destroyed, collected or moved by normal means, unless in Creative Mode.=Skała macierzysta jest rodzajem bardzo twardej skały. Nie może być ona zniszczona, zebrana lub przesunięta normalnymi metodami, jeśli nie jesteś w trybie kreatywnym. +Birch Bark=Brzozowa kora +Birch Leaves=Brzozowe liście +Birch Sapling=Brzozowa sadzonka +Birch Wood=Brzozowe drewno +Birch Wood Planks=Brzozowe deski +Birch leaves are grown from birch trees.=Brzozowe liście rosną na brzozach. +Black Stained Glass=Czarne szkło +Block of Coal=Blok węgla +Block of Diamond=Blok diamentu +Block of Emerald=Blok szmaragdu +Block of Gold=Blok złota +Block of Iron=Blok żelaza +Blocks of coal are useful as a compact storage of coal and very useful as a furnace fuel. A block of coal is as efficient as 10 coal.=Bloki węgla są użyteczne do kompaktowego przechowywania diamentów i bardzo użyteczne jako paliwo do pieca. +Blue Stained Glass=Niebieskie szkło +Bone Block=Blok kości +Bone blocks are decorative blocks and a compact storage of bone meal.=Bloki kości są blokami dekoracyjnymi i są użyteczne do kompaktowego przechowywania mączki kostnej. +Bowl=Miska +Bowls are mainly used to hold tasty soups.=Miski są użyteczne do przechowywania smacznych zup. +Brick=Cegła +Brick Block=Blok cegły +Brick blocks are a good building material for building solid houses and can take quite a punch.=Bloki cegły są dobrymi materiałami na budowanie solidnych domów i trzeba się namęczyć by je zniszczyć. +Bricks are used to craft brick blocks.=Cegły są wykorzystywane do wytwarzania bloków cegieł. +Brown Stained Glass=Brązowe szkło +Cactus=Kaktus +Charcoal=Węgiel drzewny +Charcoal is an alternative furnace fuel created by cooking wood in a furnace. It has the same burning time as coal and also shares many of its crafting recipes, but it can not be used to create coal blocks.=Węgiel drzewny jest alternatywnym paliwem do piecy uzyskiwanym przez wypalanie drewna w piecu. Pali się tak samo długo jak węgiel oraz może być użyty jako zamiennik w wielu recepturach, jednak nie można z niego robić bloków węgla. +Chiseled Stone Bricks=Rzeźbionne kamienne cegły +Chiseled Red Sandstone=Rzeźbiony czerwony piaskowiec +Chiseled Sandstone=Rzeźbiony piaskowiec +Chiseled red sandstone is a decorative building block.=Rzeźbiony czerwony piaskowiec jest dekoracyjnym blokiem budowlanym. +Chiseled sandstone is a decorative building block.=Rzeźbiony piaskowiec jest dekoracyjnym blokiem budowlanym. +Clay=Blok gliny +Clay Ball=Glina +Clay balls are a raw material, mainly used to create bricks in the furnace.=Glina jest surowym materiałem głównie wykorzystywanym do wypalania cegieł w piecu. +Clay is a versatile kind of earth commonly found at beaches underwater.=Bloki gliny są użytecznymi blokami ziemi często występującymi na plażach pod wodą. +Coal=Węgiel +Coal Ore=Ruda węgla +Coarse Dirt=Twarda ziemia +Coarse dirt acts as a soil for some plants and is similar to dirt, but it will never grow a cover.=Twarda ziemia jest podłożem dla niektórych roślin i jest podobna do ziemi, jednak nie rośnie na niej trawa. +Cobblestone=Brukowiec +Cobweb=Pajęczyna +Cobwebs can be walked through, but significantly slow you down.=Przez pajęczyny można przechodzić, jednak bardzo cię spowolnią. +Cracked Stone Bricks=Popękane kamienne cegły. +Cut Red Sandstone=Przycięty czerwony piaskowiec +Cut Sandstone=Przycięty piaskowiec +Cut red sandstone is a decorative building block.=Przycięty czerwony piaskowiec jest dekoracyjnym blokiem budowlanym. +Cut sandstone is a decorative building block.=Przycięty piaskowiec jest dekoracyjnym blokiem budowlanym. +Cyan Stained Glass=Błękitne szkło +Dark Oak Bark=Ciemna dębowa kora +Dark Oak Leaves=Ciemne dębowe liście +Dark Oak Sapling=Ciemna dębowa sadzonka +Dark Oak Wood=Ciemne dębowe drewno +Dark Oak Wood Planks=Ciemne dębowe deski +Dark oak leaves are grown from dark oak trees.=Ciemne dębowe liście rosną na ciemnych dębach. +Dark oak saplings can grow into dark oaks, but only in groups. A lonely dark oak sapling won't grow. A group of four dark oak saplings grows into a dark oak after some time when they are placed on soil (such as dirt) in a 2×2 square and exposed to light.=Ciemne dębowe sadzonki mogą wyrosnąć w ciemny dąb, ale tylko w grupach. Samotna ciemna dębowa sadzonka nie wyrośnie. Grupa czterech ciemnych dębowych sadzonek wyrośnie w ciemny dąb po jakimś czasie, gdy będą postawiona na glebie (np. ziemi) w kwadracie 2×2, która jest oświelona. +Dead Bush=Uschnięty krzew +Dead bushes are unremarkable plants often found in dry areas. They can be harvested for sticks.=Uschnięte krzewy to niewyróżniające się rośliny często występujące w suchych obszarach. Mogą z nich być zebrane patyki. +Diamond=Diament +Diamond Ore=Ruda diamentu +Diamond ore is rare and can be found in clusters near the bottom of the world.=Ruda diamentu jest rzadko występującym blokiem, który można znaleźć w grupach przy dnie świata. +Diamonds are precious minerals and useful to create the highest tier of armor and tools.=Diamenty to cenne minerały wykorzystywane do wytwarzania najwyższej jakości zbroi i narzędzi. +Diorite=Dioryt. +Diorite is an igneous rock.=Dioryt jest skałą pochodzenia wulkanicznego. +Dirt=Ziemia +Dirt acts as a soil for a few plants. When in light, this block may grow a grass or mycelium cover if such blocks are nearby.=ziemia jest podłożem dla niektórych roślin. Gdy jest oświetlona może na niej wyrosnąć trawa bądź grzybnia, jeśli takie bloki są w pobliżu. +Emerald=Szmaragd +Emerald Ore=Ruda szmaragdu +Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Ruda szmaragdu jest bardzo rzadka i występuje samotnie, nie w grupach. +Emeralds are not very useful on their own, but they can exchanged for gold ingots by crafting.=Szmaragdy nie są zbyt użyteczne same w sobie, ale można z nich wytworzyć sztabki złota. +Flint=Krzemień +Flint is a raw material.=Krzemień jest surowym materiałem. +Flowing Lava=Płynąca lawa +Flowing Water=Płynąca woda +Frosted Ice=Oszroniony lód +Frosted ice is a short-lived solid block. It melts into a water source within a few seconds.=Oszroniony lód jest krótkożyjącym blokiem. Topi się w źródło wody w kilka sekund. +Glass=Szkło +Gold Ingot=Sztabka złota +Gold Nugget=Bryłka złota +Gold Ore=Ruda złota +Gold nuggets are very small pieces of molten gold; the main purpose is to create gold ingots.=Bryłki złota są bardzo małymi kawałkami stopionego złota. Ich głównym zastosowaniem jest tworzenie sztabek złota. +Golden Apple=Złote jabłko +Golden apples are precious food items which can be eaten.=Złote jabłka są cennym jedzeniem, które można zjeść. +Granite=Granit +Grass Block=Blok trawy +Grass Path=Ścieżka trawy +Grass paths are a decorative variant of grass blocks. Their top has a different color and they are a bit lower than grass blocks, making them useful to build footpaths. Grass paths can be created with a shovel. A grass path turns into dirt when it is below a solid block.=Ścieżki trawy są dekoracyjną wersją bloków trawy. Ich góra ma inny kolor i są nieco niższe niż bloki trawy, przez co są użyteczne do wyznaczania ścieżek. Ścieżki trawy mogą zostać stworzone łopatą. Ścieżka trawy zamienia się w ziemię gdy jest pod stałym blokiem. +Gravel=Żwir +Green Stained Glass=Zielone szkło +Grey Stained Glass=Szare szkło +Ice=Lód +Ice is a solid block usually found in cold areas. It melts near block light sources at a light level of 12 or higher. When it melts or is broken while resting on top of another block, it will turn into a water source.=Lód jest stałym blokiem zwykle występującym w zimnych rejonach. Topi się w okolice źródeł swiatła przy poziomie oświetlenia 12 lub wyższym. Gdy się stopi bądź jest zniszczony na innym bloku zamienia się w źródło wody. +In the End dimension, starting a fire on this block will create an eternal fire.=W wymiarze Kresu rozpalenie ognia na tym bloku stworzy wieczny ogień. +Iron Ingot=Sztabka żelaza +Iron Nugget=Bryłka żelaza +Iron Ore=Ruda żelaza +Iron nuggets are very small pieces of molten iron; the main purpose is to create iron ingots.=Bryłki żelaza są bardzo małymi kawałkami stopionego żelaza. Ich głównym zastosowaniem jest tworzenie sztabek żelaza. +Jungle Bark=Tropikalna kora +Jungle Leaves=Tropikalne liście +Jungle Sapling=Tropikalna sadzonka +Jungle Wood=Tropikalne drewno +Jungle Wood Planks=Tropikalne deski +Jungle leaves are grown from jungle trees.=Tropikalne liście rosną na tropikalnych drzewach. +Ladder=Drabina +Lapis Lazuli Block=Blok lazurytu +Lapis Lazuli Ore=Ruda lazurytu +Lapis lazuli ore is the ore of lapis lazuli. It can be rarely found in clusters near the bottom of the world.=Ruda lazurytu jest rzadko występującym blokiem, który można znaleźć w grupach przy dnie świata. +Lava Source=Źródło lawy +Lava is hot and rather dangerous. Don't touch it, it will hurt you a lot and it is hard to get out.=Lawa jest gorąca i bardzo niebezpiczna. Nie dotykaj jej, jeśli nie chcesz ucierpieć. Trudno się z niej wydostać. +Light Blue Stained Glass=Jasnoniebieskie szkło +Light Grey Stained Glass=Jasnoszare szkło +Lime Stained Glass=Limonkowe szkło +Lit Redstone Ore=Świecąca ruda czerwienitu +Magenta Stained Glass=Karmazynowe szkło +Molten gold. It is used to craft armor, tools, and whatnot.=Stopione złoto. Wykorzystywane do wytwarzania zbroi, narzędzi i innych. +Molten iron. It is used to craft armor, tools, and whatnot.=Stopione żelazo. Wykorzystywane do wytwarzania zbroi, narzędzi i innych. +Mossy Cobblestone=Zamszony bruk +Mossy Stone Bricks=Zamszone kamienne cegły +Mycelium=Grzybnia +Mycelium is a type of dirt and the ideal soil for mushrooms. Unlike other dirt-type blocks, it can not be turned into farmland with a hoe. In light, mycelium slowly spreads over nearby dirt. Under an opaque block or a liquid, it eventually turns back into dirt.=Grzybnia jest rodzajem ziemi i idealnym podłożem dla grzybów. W przeciwieństwie do innych bloków ziemi nie może ona zostać zamieniona w pole uprawne motyką. Oświelona grzbynia powoli rozprzestrzenia się na pobliską ziemię. Pod nieprzezroczystym blokiem bądź cieczą po pewnym czasie zamieni się z powrotem w ziemię. +Oak Bark=Dębowa kora +Oak Leaves=Dębowe liście +Oak Sapling=Dębowe sadzonki +Oak Wood=Dębowe drewno +Oak Wood Planks=Dębowe deski +Oak leaves are grown from oak trees.=Dębowe liście rosną na dębach. +Obsidian=Obsydian +Obsidian is an extremely hard mineral with an enourmous blast-resistance. Obsidian is formed when water meets lava.=Obsydian jest bardzo twardym minerałem o ogromnej odporności na wybuchy. Obsydian powstaje gdy woda styka się z lawą. +One of the most common blocks in the world, almost the entire underground consists of stone. It sometimes contains ores. Stone may be created when water meets lava.=Jeden z napowszechniejszych bloków na świecie, prawie całe podziemia składają się z kamienia. Czasami zaweiera rudy. Kamień może być utworzony czy woda styka się z lawą. +Orange Stained Glass=Pomarańczowe szkło +Packed Ice=Zbity lód +Packed ice is a compressed form of ice. It is opaque and solid.=Zbity lód jest skompresowaną formą lodu. Jest nieprzezroczysty i stały. +Paper=Papier +Paper is used to craft books and maps.=Papier jest wykorzystywany do wytwarzania książek i map. +Pink Stained Glass=Różowe szkło +Podzol=Bielica +Podzol is a type of dirt found in taiga forests. Only a few plants are able to survive on it.=Bielica jest typem ziemi w tajgach. Tylko niektóre rośliny są w stanie na niej przeżyć. +Polished Andesite=Wypolerowany andezyt +Polished Diorite=Wypolerowany dioryt +Polished Granite=Wypolerowany granit +Polished Stone=Wypolerowany kamień +Polished andesite is a decorative building block made from andesite.=Wypolerowany andezyt jest dekoracyjnym blokiem budowlanym tworzonym z andezytu. +Polished diorite is a decorative building block made from diorite.=Wypolerowany dioryt jest dekoracyjnym blokiem budowlanym tworzonym z diorytu. +Polished granite is a decorative building block made from granite.=Wypolerowany granit jest dekoracyjnym blokiem budowlanym tworzonym z granitu. +Purple Stained Glass=Fioletowe szkło +Realm Barrier=Bariera wymiarów +Red Sand=Czerwony piasek +Red Sandstone=Czerwony piaskowiec +Red Stained Glass=Czerwone szkło +Red sand is found in large quantities in mesa biomes.=Czerwony piasek występuje w duzych ilościach w badlandach. +Red sandstone is compressed red sand and is a rather soft kind of stone.=Czerwony piaskowiec jest skompresowanym czerwonym piaskiem i jest miękkim rodzajem kamienia. +Redstone Ore=Ruda czerwienitu +Redstone ore is commonly found near the bottom of the world. It glows when it is punched or walked upon.=Ruda czerwienitu występuje często w okolicy dna świata. Świeci gdy się ją uderzy bądź gdy się po niej chodzi. +Sand=Piasek +Sand is found in large quantities at beaches and deserts.=Piasek występuje w dużych ilościach na plażach i pustyniach. +Sandstone=Piaskowiec +Sandstone is compressed sand and is a rather soft kind of stone.=Piaskowiec jest skompresowanym piaskiem i jest miękkim rodzajem kamienia. +Slime Block=Blok szlamu +Slime blocks are very bouncy and prevent fall damage.=Bloki szlamu są bardzo sprężyste i pomagają uniknąć obrażeń od upadku. +Smooth Red Sandstone=Gładki czerwony piaskowiec +Smooth Sandstone=Gładki piaskowiec +Smooth red sandstone is a decorative building block.=Gładki czerwony piaskowiec jest dekoracyjnym blokiem budowlanym. +Smooth sandstone is compressed sand and is a rather soft kind of stone.=Gładki piaskowiec skompresowanym piaskiem i jest miękkim rodzajem kamienia. +Snow=Śnieg +Some coal contained in stone, it is very common and can be found inside stone in medium to large clusters at nearly every height.=Trochę węgla zawartego w kamieniu. Jest bardzo częste i można to znaleźć w kamieniu w średnich i dużych grupach na niemal każdej wysokości. +Some iron contained in stone, it is prety common and can be found below sea level.=Trochę żelaza zawartego w kamieniu. Jest bardzo częste i można to znaleźć w kamieniu poniżej poziomu morza. +Spruce Bark=Świerkowa kora +Spruce Leaves=Świerkowe liście +Spruce Sapling=Świerkowa sadzonka +Spruce Wood=Świerkowe drewno +Spruce Wood Planks=Świerkowe deski +Spruce leaves are grown from spruce trees.=Świerkowe liście rosną na świerkach. +Stained glass is a decorative and mostly transparent block which comes in various different colors.=Kolorowe szkło jest dekorayjnym, przejrzystym blokiem. Istnieją różnokolorowe warianty tego bloku. +Stick=Patyk +Sticks are a very versatile crafting material; used in countless crafting recipes.=Patyk jest wszechstronnym materiałem do wytwarzania, wykorzystywanym w niezliczonej liczbie receptur. +Stone=Kamień +Stone Bricks=Kamienne cegły +Sugar=Cukier +Sugar Canes=Trzcina cukrowa +Sugar canes are a plant which has some uses in crafting. Sugar canes will slowly grow up to 3 blocks when they are next to water and are placed on a grass block, dirt, sand, red sand, podzol or coarse dirt. When a sugar cane is broken, all sugar canes connected above will break as well.=Trzciny cukrowe są rośliny użyteczne w wytwarzaniu. Będą one powoli rosły na wysokość 3 bloków, gdy są postawioneobok wody i są postawione na bloku trawy, ziemi, piasku, czerwonego piasku, bielicy lub twardej ziemi. Gdy trzcina cukrowa jest zniszczona wszystkie połączone trzciny nad nią również się zniszczą. +Sugar canes can only be placed top of other sugar canes and on top of blocks on which they would grow.=Trzciny cukrowe mogą być posadzone tylko na innych trzcinach cukrowych i na blokach na których by wyrosły. +Sugar comes from sugar canes and is used to make sweet foods.=Cukier wytwarza się z trzciny cukrowej i wykorzystuje się go do robienia słodkich potraw. +The trunk of a birch tree.=Pień brzozy. +The trunk of a dark oak tree.=Pień ciemnego dębu. +The trunk of a jungle tree.=Pień tropikalnego drzewa. +The trunk of a spruce tree.=Pień świerka. +The trunk of an acacia.=Pień akacji. +The trunk of an oak tree.=Pień dębu. +This block consists of a couple of loose stones and can't support itself.=Ten blok składa się z kilku luźnych kamieni i nie może się utrzymać. +This is a decorative block surrounded by the bark of a tree trunk.=Jest to dekoracyjny blok otoczony przez korę pnia. +This is a full block of snow. Snow of this thickness is usually found in areas of extreme cold.=To jest pełny blok śniego. Śnieg tej grubości występuje zwykle w ekstremalnie niskich obszarach. +This is a piece of cactus commonly found in dry areas, especially deserts. Over time, cacti will grow up to 3 blocks high on sand or red sand. A cactus hurts living beings touching it with a damage of 1 HP every half second. When a cactus block is broken, all cactus blocks connected above it will break as well.=To jest kawałek kaktusa często występujący w suchych obszarach, zwłaszcza pustyniach. Po pewnym czasie kaktusy rosną na wysokość 3 bloków na piasku lub czerwonym piasku. Kaktus rani żywe istoty dotykające go zadając 1 HP obrażeń na pół sekundy. Gdy blok kaktua jest zniszczony wszystkie bloki kaktua nad nim również zostaną zniszczone. +This stone contains pure gold, a rare metal.=Ten kamień zawiera czyste złoto, rzadki metal. +Top Snow=Pokrywa śniego +Top snow is a layer of snow. It melts near light sources other than the sun with a light level of 12 or higher.=Pokrywa śniego jest warstwą śniegu. Topi się przy źródłach światła innych niż słońce o poziomie oświetlenia 12 lub wyższym. +Vines=Pnącza +Vines are climbable blocks which can be placed on the sides of solid full-cube blocks. Vines slowly grow and spread.=Pnącza są blokami po których można się wspinać i które można postawić na bokach stałych pełnych bloków. +Void=Otchłań +Water=Woda +Water Source=Źródło wody +Water is abundant in oceans and also appears in a few springs in the ground. You can swim easily in water, but you need to catch your breath from time to time.=Wody jest dużo w oceanach i pojawia się też w strumykach na ziemi. Możesz łatwo pływać w wodzie, ale nie zapominaj od czasu do czasu złapać oddechu. +When placed on soil (such as dirt) and exposed to light, a birch sapling will grow into a birch after some time.=Z położonej na glebie (np. ziemi) i oświetlonej brzozowej sadzonki po pewnym czasie wyrośnie brzoza. +When placed on soil (such as dirt) and exposed to light, a jungle sapling will grow into a jungle tree after some time. When there are 4 jungle saplings in a 2×2 square, they will grow to a huge jungle tree.=Z położonej na glebie (np. ziemi) i oświetlonej tropikalnej sadzonki po pewnym czasie wyrośnie drzewo tropikalne. Jeśli 4 tropikalne sadzonki są posadzone w kwadracie 2×2 wyrośnie z nich duże drzewo tropikalne. +When placed on soil (such as dirt) and exposed to light, a spruce sapling will grow into a spruce after some time. When there are 4 spruce saplings in a 2×2 square, they will grow to a huge spruce.=Z położonej na glebie (np. ziemi) i oświetlonej świerkowej sadzonki po pewnym czasie wyrośnie świerk. Jeśli 4 tropikalne sadzonki są posadzone w kwadracie 2×2 wyrośnie z nich duży świerk. +When placed on soil (such as dirt) and exposed to light, an acacia sapling will grow into an acacia after some time.=Z położonej na glebie (np. ziemi) i oświetlonej akacjowej sadzonki po pewnym czasie wyrośnie akacja. +When placed on soil (such as dirt) and exposed to light, an oak sapling will grow into an oak after some time.=Z położonej na glebie (np. ziemi) i oświetlonej dębowej sadzonki po pewnym czasie wyrośnie dąb. +When you hold a barrier in hand, you reveal all placed barriers in a short distance around you.=Gdy w ręce trzymasz barierę będziesz w stanie dostrzec wszystkie bariery w niewielkiej odległości. +White Stained Glass=Białe szkło +Yellow Stained Glass=Żółte szkło +“Coal” refers to coal lumps obtained by digging coal ore which can be found underground. Coal is your standard furnace fuel, but it can also be used to make torches, coal blocks and a few other things.="Węgiel" odnosi się tutaj do kawałków węgla zdobytych przez wykopanie rudy węgla występującej pod ziemią. Węgiel jest standardowym paliwem do pieca, ale może być również wykorzystany do tworzenia pochodni, bloków węgla i kilku innych rzeczy. +Water interacts with lava in various ways:=Woda wchodzi w interakcję z lawą na kilka sposobów: +• When water is directly above or horizontally next to a lava source, the lava turns into obsidian.=• Gdy woda jest bezpośrednio nad lub poziomo obok źródła lawy, lawa zamienia się w obsydian. +• When flowing water touches flowing lava either from above or horizontally, the lava turns into cobblestone.=• Gdy płynąca woda zetknie się z lewą, z góry lub z boku, lawa zamienia się w brukowiec. +• When water is directly below lava, the water turns into stone.=Gdy woda jest bezpośrednio pod lawą, woda zamienia się w kamień. +Lava interacts with water various ways:=Lawa wchodzi w interakcję z wodą na różne sposoby: +• When a lava source is directly below or horizontally next to water, the lava turns into obsidian.=• Gdy źródło lawy jest bezpośrednio pod lub poziomo obok dowy, lawa zamienia się w obsydian. +• When lava is directly above water, the water turns into stone.=• Gdy lawa jest bezpośrednio nad wodą, woda zamienia się w kamień. +Stained Glass=Kolorowe szkło +Granite is an igneous rock.=Granit jest skałą pochodzenia wulkanicznego. +Top snow can be stacked and has one of 8 different height levels. At levels 2-8, top snow is collidable. Top snow drops 2-9 snowballs, depending on its height.=Pokrywa śniegu może być układana w stos i ma 8 poziomów wysokości. Na poziomach 2-8 pokrywa jest przeszkodą. Z pokrywy śniego wypada 2-9 kulek w zależności od jej wysokości. +This block can only be placed on full solid blocks and on another top snow (which increases its height).=Ten blok może być postawiony wyłącznie na pełnych stałych blokach i na innej pokrywie śniegu (co zwiększy jej wysokość). +Needs soil and water to grow=Potrzebuje gleby i wody by rosnąć +Needs soil and light to grow=Potrzebuje gleby i światła by rosnąć +Grows on sand=Rośnie na piasku +Contact damage: @1 per half second=Obrażenia dotykowe: @1 na pół sekundy +Slows down movement=Spowalnia poruszanie +2×2 saplings required=Wymagane . +2×2 saplings @= large tree=Sadzonki 2×2 @= duże drzewo. +Grows on sand or dirt next to water=Rośnie na piasku bądź ziemi obok wody. +Stackable=Grupowalne From 9f7f1f2c89ab4252eada683586ebc48d5573c6a3 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sun, 11 Apr 2021 14:35:35 +0200 Subject: [PATCH 002/418] Add polish translation of mcl_boats --- mods/ENTITIES/mcl_boats/locale/mcl_boats.pl.tr | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 mods/ENTITIES/mcl_boats/locale/mcl_boats.pl.tr diff --git a/mods/ENTITIES/mcl_boats/locale/mcl_boats.pl.tr b/mods/ENTITIES/mcl_boats/locale/mcl_boats.pl.tr new file mode 100644 index 000000000..2e50f85e1 --- /dev/null +++ b/mods/ENTITIES/mcl_boats/locale/mcl_boats.pl.tr @@ -0,0 +1,11 @@ +# textdomain: mcl_boats +Acacia Boat=Akacjowa łódź +Birch Boat=Brzozowa łódź +Boat=Łódź +Boats are used to travel on the surface of water.=Łodzie są wykorzystywane do podróżowania po powierzchni wody. +Dark Oak Boat=Ciemnodębowa łódź +Jungle Boat=Tropikalna łódź +Oak Boat=Dębowa łódź +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. Rightclick the boat again to leave it, punch the boat to make it drop as an item.=Kliknij prawym przyciskiem myszy na źródło wody by postawić łódź. Kliknij prawym przyciskiem myszy by w nią wsiąść. Użyj przycisków [Left] and [Right] by sterować, [Forwards] by przyspieszyć i [Backwards] by zwolnić lub się cofać. Ponownie kliknij prawym przyciskiem na łódź by z niej wyjść, uderz ją by wziąc ją jako przedmiot. +Spruce Boat=Świerkowa łódź +Water vehicle=Pojazd wodny From 1fd869b5fb28ff3a8e8fb2b7c7a8ee8404f5ade0 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 08:54:29 +0200 Subject: [PATCH 003/418] Add polish translation of mcl_minecarts --- .../mcl_minecarts/locale/mcl_minecarts.pl.tr | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.pl.tr diff --git a/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.pl.tr b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.pl.tr new file mode 100644 index 000000000..9cfd53e6c --- /dev/null +++ b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.pl.tr @@ -0,0 +1,36 @@ +# textdomain: mcl_minecarts +Minecart=Wagonik +Minecarts can be used for a quick transportion on rails.=Wagoniki mogą być użyte do szybkiego transportu po torach. +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.=Wagoniki mogą jeździć tylko po torach i zawsze podążają za wytyczoną ścieżką. W przypadku skrzyżowań typu T, gdzie nie ma prostej ścieżki, skręcają w lew. Ich szybkość zależy od typu torów. +You can place the minecart on rails. Right-click it to enter it. Punch it to get it moving.=Możesz postawić wagonik na torach. Kliknij prawym przyciskiem myszy aby do niego wejść. Uderz go by zaczął się poruszać. +To obtain the minecart, punch it while holding down the sneak key.=Aby odzyskać wagonik uderz go podczas skradania. +A minecart with TNT is an explosive vehicle that travels on rail.=Wagonik z TNT jest wybuchowym pojazdem podróżującym po torach. +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.=Postaw go na torach. Uderz by zaczął się poruszać. TNT zapala się krzesiwem lub gdy wagonik jest na zasilonych torach aktywacyjnych. +To obtain the minecart and TNT, punch them while holding down the sneak key. You can't do this if the TNT was ignited.=Aby odzyskać wagonik z TNT uderz go podczas skradania. Nie możesz tego zrobić gdy TNT jest zapalone. +A minecart with furnace is a vehicle that travels on rails. It can propel itself with fuel.=Wagonik z piecem jest pojazdem podróżującym na torach. Napędza on samego siebie za pomocą paliwa. +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.=Postaw go na torach. Jeśli dasz mu nieco węgla piec zacznie palić przez długi czas, a wagonik będzie się sam poruszał. Uderz go by zaczął się poruszać. +To obtain the minecart and furnace, punch them while holding down the sneak key.=Aby odzyskać wagonik z piecem uderz go podczas skradania. +Minecart with Chest=Wagonik ze skrzynią +Minecart with Furnace=Wagonik z piecem +Minecart with Command Block=Wagonik z blokiem poleceń +Minecart with Hopper=Wagonik z lejem +Minecart with TNT=Wagonik z 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.=Postaw je na ziemi by zbudować ścieżkę z torów. Tory automatycznie połączą się ze sobą i zamienią się w zakręty, skrzyżowania typu T, skrzyżowania i równie w zależności od potrzeb. +Rail=Tor +Rails can be used to build transport tracks for minecarts. Normal rails slightly slow down minecarts due to friction.=Tory mogą być wykorzystane do zbudowania torów dla wagoników. Zwyczajne tory nieco spowalniają wagoniki ze względu na tarcie. +Powered Rail=Zasilane tory +Rails can be used to build transport tracks for minecarts. Powered rails are able to accelerate and brake minecarts.=Tory mogą być wykorzystane do zbudowania torów dla wagoników. Zasilane tory mogą przyspieszać lub spowalniać wagoniki. +Without redstone power, the rail will brake minecarts. To make this rail accelerate minecarts, power it with redstone power.=Bez zasilania czerwienitem tory będą spowalniać wagoniki. Aby sprawić by je przyspieszały zasil je czerwienitem. +Activator Rail=Tory aktywacyjne +Rails can be used to build transport tracks for minecarts. Activator rails are used to activate special minecarts.=Tory mogą być wykorzystane do zbudowania torów dla wagoników. Tory aktywacyjne są wykorzystywane do aktywacyji specjalnych wagoników. +To make this rail activate minecarts, power it with redstone power and send a minecart over this piece of rail.=Aby ten tor aktywował wagonik, zasil go czerwienitem i spraw by wagonik po nim przejechał. +Detector Rail=Tory z czujnikiem +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.=Tory mogą być wykorzystane do zbudowania torów dla wagoników. Tory z czujnikiem są w stanie wykryć kiedy wagonik po nich przejeżdża i wysłać sygnał do czerwienitowych mechanizmów. +To detect a minecart and provide redstone power, connect it to redstone trails or redstone mechanisms and send any minecart over the rail.=Aby wykryć wagonik i dostarczyć zasilanie czerwienitem podłącz go czerwienitem to mechanizmu i spraw by wagonik po nim przejechał. +Track for minecarts=Tor dla wagoników +Speed up when powered, slow down when not powered=Przyspiesza gdy zasilane, spowalnia gdy nie +Activates minecarts when powered=Aktywuje wagoniki gdy zasilane +Emits redstone power when a minecart is detected=Emituje zasilanie czerwienitem gdy wagonik jest wykryty +Vehicle for fast travel on rails=Pojazd do szybkiej podróży na torach +Can be ignited by tools or powered activator rail=Może być zapalony przez narzędzia, lub zasilane tor aktywacyjne +Sneak to dismount=Zacznij się skradać by zejść From d50e63d935a803417d4344148ac69415b713644e Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 09:29:52 +0200 Subject: [PATCH 004/418] Add polish translation of mcl_falling_nodes --- mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.pl.tr | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.pl.tr diff --git a/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.pl.tr b/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.pl.tr new file mode 100644 index 000000000..9be9cf7c6 --- /dev/null +++ b/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.pl.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_falling_nodes +@1 was smashed by a falling anvil.=@1 została zmiażdżona przez spadające kowadło. +@1 was smashed by a falling block.=@1 została zmiażdżona przez spadający blok. From 958fee0a73f23a6aada558199be4a33030883637 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 09:55:36 +0200 Subject: [PATCH 005/418] Add polish translation of mcl_mobs --- mods/ENTITIES/mcl_mobs/locale/mcl_mobs.pl.tr | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 mods/ENTITIES/mcl_mobs/locale/mcl_mobs.pl.tr diff --git a/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.pl.tr b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.pl.tr new file mode 100644 index 000000000..44e8e9978 --- /dev/null +++ b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.pl.tr @@ -0,0 +1,11 @@ +# textdomain: mcl_mobs +Peaceful mode active! No monsters will spawn.=Tryb pokojowy aktywowawany! Potwory nie będą się pojawiać. +This allows you to place a single mob.=To pozwala na spawn jednego moba. +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.=Postaw to w miejscu w którym chcesz aby pojawił się mob. Zwierzęta pojawią się jako oswojone chyba, że będziesz się skradał podczas stawiania. Jeśli postawisz to na spawnerze to zmienisz którego moba przywołuje. +You need the “maphack” privilege to change the mob spawner.=Potrzebujesz przywileju "maphack", aby zmienić spawner. +Name Tag=Znacznik +A name tag is an item to name a mob.=Znacznik jest przedmiotem pozwalającym nazwać moba. +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.=Zanim użyjesz znacznika musisz wybrać imię przy kowadle. Następnie możesz użyć znacznika by nazwać moba. To zużywa znacznik. +Only peaceful mobs allowed!=Tylko pokojowe moby są dozwolone. +Give names to mobs=Nazwij moby +Set name at anvil=Wybierz imię przy kowadle From 034a29edc0fcd8abd7d802d260190845e3a5cd96 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 09:55:53 +0200 Subject: [PATCH 006/418] Add polish translation of mobs_mc --- mods/ENTITIES/mobs_mc/locale/mobs_mc.pl.tr | 75 ++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 mods/ENTITIES/mobs_mc/locale/mobs_mc.pl.tr diff --git a/mods/ENTITIES/mobs_mc/locale/mobs_mc.pl.tr b/mods/ENTITIES/mobs_mc/locale/mobs_mc.pl.tr new file mode 100644 index 000000000..06eaa457a --- /dev/null +++ b/mods/ENTITIES/mobs_mc/locale/mobs_mc.pl.tr @@ -0,0 +1,75 @@ +# textdomain: mobs_mc +Totem of Undying=Token nieśmiertelności +A totem of undying is a rare artifact which may safe you from certain death.=Totem nieśmiertelności to rzadki artefakt, który może uchronić cię przed pewną śmiercią. +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.=Totem działa tylko kiedy trzymasz go w dłoni. Jeśli otrzymasz obrażenia od upadku zostaniesz oszczędzony i pozostanie ci 1 HP, jednak totem zostanie wtedy zniszczony. +Agent=Agent +Bat=Nietoperz +Blaze=Płomyk +Chicken=Kurczak +Cow=Krowa +Mooshroom=Muuuchomor +Creeper=Creeper +Ender Dragon=Smok kresu +Enderman=Enderman +Endermite=Endermit +Ghast=Ghast +Elder Guardian=Prastrażnik +Guardian=Strażnik +Horse=Koń +Skeleton Horse=Koń szkielet +Zombie Horse=Koń zombie +Donkey=Osioł +Mule=Muł +Iron Golem=Żelazny golem +Llama=Lama +Ocelot=Ocelot +Parrot=Papuga +Pig=Świnia +Polar Bear=Niedźwiedź polarny +Rabbit=Królik +Killer Bunny=Królik zabójca +Sheep=Owca +Shulker=Shulker +Silverfish=Rybik cukrowy +Skeleton=Szkielet +Stray=Tułacz +Wither Skeleton=Witherowy szkielet +Magma Cube=Kostka magmy +Slime=Szlam +Snow Golem=Śnieżny golem +Spider=Pająk +Cave Spider=Pająk jaskiniowy +Squid=Kałamarnica +Vex=Dręczyciel +Evoker=Przywoływacz +Illusioner=Iluzjonista +Villager=Osadnik +Vindicator=Obrońca +Zombie Villager=Osadnik zombie +Witch=Wiedźma +Wither=Wither +Wolf=Wilk +Husk=Posuch +Zombie=Zombie +Zombie Pigman=Świniak zombie +Iron Horse Armor=Żelazna zbroja dla konia +Iron horse armor can be worn by horses to increase their protection from harm a bit.=Żelazna zbroja dla konia może być noszona przez konie aby nieco zwiększyć ich odporność na obrażenia. +Golden Horse Armor=Złota zbroja dla konia +Golden horse armor can be worn by horses to increase their protection from harm.=Złota zbroja dla konia może być noszona przez konie aby zwiększyć ich odporność na obrażenia. +Diamond Horse Armor=Diamentowa zbroja dla konia +Diamond horse armor can be worn by horses to greatly increase their protection from harm.=Diamentowa zbroja dla konia może być noszona przez konie aby istotnie zwiększyć ich odporność na obrażenia. +Place it on a horse to put on the horse armor. Donkeys and mules can't wear horse armor.=Połóż ją na koniu aby założyć zbroję dla konia. Osły i muły nie mogą nosić zbroi dla konia. +Farmer=Rolnik +Fisherman=Rybak +Fletcher=Łuczarz +Shepherd=Pasterz +Librarian=Bibliotekarz +Cartographer=Kartograf +Armorer=Płatnerz +Leatherworker=Rymarz +Butcher=Rzeźnik +Weapon Smith=Zbrojmistrz +Tool Smith=Narzędziarz +Cleric=Kapłan +Nitwit=Głupiec +Protects you from death while wielding it=Chroni przed śmiercią gdy go trzymasz From 50b209a9455c822f1d6ae722567745ab45995ee8 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 09:57:11 +0200 Subject: [PATCH 007/418] Add polish translation of mcl_paintings --- mods/ENTITIES/mcl_paintings/locale/mcl_paintings.pl.tr | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 mods/ENTITIES/mcl_paintings/locale/mcl_paintings.pl.tr diff --git a/mods/ENTITIES/mcl_paintings/locale/mcl_paintings.pl.tr b/mods/ENTITIES/mcl_paintings/locale/mcl_paintings.pl.tr new file mode 100644 index 000000000..473540dda --- /dev/null +++ b/mods/ENTITIES/mcl_paintings/locale/mcl_paintings.pl.tr @@ -0,0 +1,2 @@ +# textdomain:mcl_paintings +Painting=Obraz From 2221f896966e373a0c5006cfbb96f98dbd19a70e Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 09:58:07 +0200 Subject: [PATCH 008/418] Add polish translation of mcl_explosions --- mods/CORE/mcl_explosions/locale/mcl_explosions.pl.tr | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 mods/CORE/mcl_explosions/locale/mcl_explosions.pl.tr diff --git a/mods/CORE/mcl_explosions/locale/mcl_explosions.pl.tr b/mods/CORE/mcl_explosions/locale/mcl_explosions.pl.tr new file mode 100644 index 000000000..f7811d733 --- /dev/null +++ b/mods/CORE/mcl_explosions/locale/mcl_explosions.pl.tr @@ -0,0 +1,2 @@ +# textdomain:mcl_explosions +@1 was caught in an explosion.=@1 została wysadzona. From 7b4eb28160d1897342651286423e4e33243c2684 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 10:09:28 +0200 Subject: [PATCH 009/418] Add polish translation of mclx_stairs --- .../mclx_stairs/locale/mclx_stairs.pl.tr | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 mods/ITEMS/mclx_stairs/locale/mclx_stairs.pl.tr diff --git a/mods/ITEMS/mclx_stairs/locale/mclx_stairs.pl.tr b/mods/ITEMS/mclx_stairs/locale/mclx_stairs.pl.tr new file mode 100644 index 000000000..aa95f8c30 --- /dev/null +++ b/mods/ITEMS/mclx_stairs/locale/mclx_stairs.pl.tr @@ -0,0 +1,82 @@ +# textdomain: mclx_stairs +Oak Bark Stairs=Schody z dębowej kory +Oak Bark Slab=Płyta z dębowej kory +Double Oak Bark Slab=Podwójna łyta z dębowej kory +Acacia Bark Stairs=Schody z akacjowej kory +Acacia Bark Slab=Płyta z akacjowej kory +Double Acacia Bark Slab=Podwójna płyta z akacjowej kory +Spruce Bark Stairs=Schody ze świerkowej kory +Spruce Bark Slab=Płyta ze świerkowej kory +Double Spruce Bark Slab=Podwójna płyta ze świerkowej kory +Birch Bark Stairs=Schody z brzozowej kory +Birch Bark Slab=Płyta z brzozowej kory +Double Birch Bark Slab=Podwójna płyta z brzozowej kory +Jungle Bark Stairs=Schody z tropikalnej kory +Jungle Bark Slab=Płyta z tropikalnej kory +Double Jungle Bark Slab=Podwójna płyta z tropikalnej kory +Dark Oak Bark Stairs=Schody z ciemno-dębowej kory +Dark Oak Bark Slab=Płyta z ciemno-dębowej kory +Double Dark Oak Bark Slab=Podwójna płyta z ciemno-dębowej kory +Lapis Lazuli Slab=Płyta lazurytu +Double Lapis Lazuli Slab=Podwójna płyta lazurytu +Lapis Lazuli Stairs=Lazurytowe schody +Slab of Gold=Płyta złota +Double Slab of Gold=Podwójna płyta złota +Stairs of Gold=Złote schody +Slab of Iron=Płyta żelaza +Double Slab of Iron=Podwójna płyta żelaza +Stairs of Iron=Żelazne schody +Cracked Stone Brick Stairs=Schody z pękniętych kamieni cegłowych +Cracked Stone Brick Slab=Płyta z pękniętych kamieni cegłowych +Double Cracked Stone Brick Slab=Podwójna płyta z pękniętych kamieni cegłowych +White Concrete Stairs=Schody z białego cementu +White Concrete Slab=Płyta z białego cementu +Double White Concrete Slab=Podwójna płyta z białego cementu +Grey Concrete Stairs=Schody z szarego cementu +Grey Concrete Slab=Płyta z szarego cementu +Double Grey Concrete Slab=Podwójna płyta z szarego cementu +Light Grey Concrete Stairs=Schody z jasnoszarego cementu +Light Grey Concrete Slab=Płyta z jasnoszarego cementu +Double Light Grey Concrete Slab=Podwójna płyta z jasnoszarego cementu +Black Concrete Stairs=Schody z czarnego cementu +Black Concrete Slab=Płyta z czarnego cementu +Double Black Concrete Slab=Podwójna płyta z czarnego cementu +Red Concrete Stairs=Schody z czerwonego cementu +Red Concrete Slab=Płyta z czerwonego cementu +Double Red Concrete Slab=Podwójna płyta z czerwonego cementu +Yellow Concrete Stairs=Schody z żółtego cementu +Yellow Concrete Slab=Płyta z żółtego cementu +Double Yellow Concrete Slab=Podwójna płyta z żółtego cementu +Green Concrete Stairs=Schody z zielonego cementu +Green Concrete Slab=Płyta z zielonego cementu +Double Green Concrete Slab=Podwójna płyta z zielonego cementu +Cyan Concrete Stairs=Schody z błękitnego cementu +Cyan Concrete Slab=Płyta z błękitnego cementu +Double Cyan Concrete Slab=Podwójna płyta z błękitnego cementu +Blue Concrete Stairs=Schody z niebieskiego cementu +Blue Concrete Slab=Płyta z niebieskiego cementu +Double Blue Concrete Slab=Podwójna płyta z niebieskiego cementu +Magenta Concrete Stairs=Schody z karmazynowego cementu +Magenta Concrete Slab=Płyta z karmazynowego cementu +Double Magenta Concrete Slab=Podwójna płyta z karmazynowego cementu +Orange Concrete Stairs=Schody z pomarańczowego cementu +Orange Concrete Slab=Płyta z pomarańczowego cementu +Double Orange Concrete Slab=Podwójna płyta z pomarańczowego cementu +Purple Concrete Stairs=Schody z fioletowego cementu +Purple Concrete Slab=Płyta z fioletowego cementu +Double Purple Concrete Slab=Podwójna płyta z fioletowego cementu +Brown Concrete Stairs=Schody z brązowego cementu +Brown Concrete Slab=Płyta z brązowego cementu +Double Brown Concrete Slab=Podwójna płyta z brązowego cementu +Pink Concrete Stairs=Schody z różowego cementu +Pink Concrete Slab=Płyta z różowego cementu +Double Pink Concrete Slab=Podwójna płyta z różowego cementu +Lime Concrete Stairs=Schody z limonkowego cementu +Lime Concrete Slab=Płyta z limonkowego cementu +Double Lime Concrete Slab=Podwójna płyta z limonkowego cementu +Light Blue Concrete Stairs=Schody z jasnoniebieskiego cementu +Light Blue Concrete Slab=Płyta z jasnoniebieskiego cementu +Double Light Blue Concrete Slab=Podwójna płyta z jasnoniebieskiego cementu +Concrete Slab=płyta betonu +Double Concrete Slab=Podwójna płyta betonu +Concrete Stairs=Betonowe schody From 2bf2766688c72369b506a9a8e6a7e8ed2ba8a845 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 10:28:02 +0200 Subject: [PATCH 010/418] Add polish translation of mcl_furnaces --- mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.pl.tr | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.pl.tr diff --git a/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.pl.tr b/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.pl.tr new file mode 100644 index 000000000..a957155ad --- /dev/null +++ b/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.pl.tr @@ -0,0 +1,9 @@ +# textdomain: mcl_furnaces +Furnace=Piec +Furnaces cook or smelt several items, using a furnace fuel, into something else.=Piece mogą gotować lub przetapiać niektóre przedmioty, przy użyciu paliwa, w inne przedmioty. +Use the furnace to open the furnace menu. Place a furnace fuel in the lower slot and the source material in the upper slot. The furnace will slowly use its fuel to smelt the item. The result will be placed into the output slot at the right side.=Kliknij w piec aby otworzyć jego menu. Połóż paliwo w dolnym miejscu a materiał źródłowy w górnym. Piec będzie powoli zużywał paliwo aby przetopić przedmiot. Rezultat pojawi się w miejscu po prawej. +Use the recipe book to see what you can smelt, what you can use as fuel and how long it will burn.=Użyj książki receptur aby dowiedzieć się co możesz przetopić, co możesz użyć jako paliwa i na jak długo wystarczy. +Burning Furnace=Palący się piec +Recipe book=Książka receptur +Inventory=Ekwipunek +Uses fuel to smelt or cook items=Zużywa paliwo aby ugotować lub stopić przedmioty From cd8e695ca559b81a5ccd910f5d1a9d92d111a9ed Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 10:28:27 +0200 Subject: [PATCH 011/418] Add polish translation of mcl_brewing --- mods/ITEMS/mcl_brewing/locale/mcl_brewing.pl.tr | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 mods/ITEMS/mcl_brewing/locale/mcl_brewing.pl.tr diff --git a/mods/ITEMS/mcl_brewing/locale/mcl_brewing.pl.tr b/mods/ITEMS/mcl_brewing/locale/mcl_brewing.pl.tr new file mode 100644 index 000000000..cdcc1f887 --- /dev/null +++ b/mods/ITEMS/mcl_brewing/locale/mcl_brewing.pl.tr @@ -0,0 +1,10 @@ +# textdomain: mcl_brewing +Brewing Stand=Statyw alchemiczny +Inventory=Ekwipunek +To use a brewing stand, rightclick it.=Aby użyć statywu alchemicznego kliknij go prawym przyciskiem myszy. +To brew, you need blaze powder as fuel, a brewing material and at least 1 glass bottle filled with a liquid.=Aby warzyć mikstury potrzebujesz płomiennego proszku, materiału do warzenia i przynajmniej jedną butelkę wypełnioną płynem. +Place the blaze powder in the left slot, the brewing material in the middle slot and 1-3 bottles in the remaining slots.=Wstaw płomienny proszek po lewej, materiał do warzenia w środku i 1-3 butelek w pozostałych. +When you have found a good combination, the brewing will commence automatically and steam starts to appear, using up the fuel and brewing material. The potions will soon be ready.=Kiedy znajdziesz odpowiednią kombinację, warzenie rozpocznie się automatycznie, pojawi się para, a paliwo i materiał zaczną się zużywać. Mikstury wkrótce będą gotowe. +Different combinations of brewing materials and liquids will give different results. Try to experiment!=Różne kombinacje materiałów i płynów dadzą inne rezultaty. Spróbuj poeksperymentować! +The stand allows you to brew potions!=Statyw pozwala na warzenie mikstur! +Brew Potions=Uwarz mikstury. From 99c20421f4f7e2f1a30cdc0af311f233652a40a5 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 10:28:42 +0200 Subject: [PATCH 012/418] Add polish translation of mcl_dye --- mods/ITEMS/mcl_dye/locale/mcl_dye.pl.tr | 27 +++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 mods/ITEMS/mcl_dye/locale/mcl_dye.pl.tr diff --git a/mods/ITEMS/mcl_dye/locale/mcl_dye.pl.tr b/mods/ITEMS/mcl_dye/locale/mcl_dye.pl.tr new file mode 100644 index 000000000..b0735d814 --- /dev/null +++ b/mods/ITEMS/mcl_dye/locale/mcl_dye.pl.tr @@ -0,0 +1,27 @@ +# textdomain: mcl_dye +Bone Meal=Mączka kostna +Light Grey Dye=Jasnoszara farba +Grey Dye=Szara farba +Ink Sac=Torbiel z atramentem +Purple Dye=Fioletowa farba +Lapis Lazuli=Lazuryt +Light Blue Dye=Jasnoniebieska farba +Cyan Dye=Błękitna farba +Cactus Green=Kaktusowa zieleń +Lime Dye=Jasnozielona farba +Dandelion Yellow=Mleczowy żółty +Cocoa Beans=Ziarna kakaowe +Orange Dye=Pomarańczowa farba +Rose Red=Różany czerwony +Magenta Dye=Karmazynowa farba +Pink Dye=Różowa farba +This item is a dye which is used for dyeing and crafting.=Ten przedmiot to farba wykorzystywana to farbienia i wytwarzania +Rightclick on a sheep to dye its wool. Other things are dyed by crafting.=Kliknij prawym na owcę aby zafarbować jej wełne. Inne rzeczy mogą być zafarbione przy wytwarzaniu. +Bone Meal=Mączka kostna +Bone meal is a white dye and also useful as a fertilizer to speed up the growth of many plants.=Mączka kostna to biała farba i przydatny nawóz, który przyspiesza rośnięcie wielu roślin. +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.=Kliknij prawym na owcę, aby wybielić jej wełne. Kliknij prawym na roślinę aby przyspieszyć jej wzrost. Zważ, że nie na wszystkie rośliny to tak działa. Gdy klikniesz prawym na blok trawy, wysoka trawa wyrośnie wokół. +Cocoa beans are a brown dye and can be used to plant cocoas.=Ziarna kakaowe mogą być wykorzystane do sadzenia kakao. +Rightclick a sheep to turn its wool brown. Rightclick on the side of a jungle tree trunk (Jungle Wood) to plant a young cocoa.=Naciśnij prawym aby zafarbować wełne owcy na brązowo. Naciśnij prawym na boku tropikalnego pnia (Tropikalne drewno) aby zasadzić młode kakao. +Cocoa Beans=Ziarna kakaowe +Grows at the side of jungle trees=Rośnie na boku tropikalnych drzew +Speeds up plant growth=Przyspiesza wzrost roślin From 504a0e5d2ca3430a1f230dd2d768c28777baba19 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 10:33:01 +0200 Subject: [PATCH 013/418] Add polish translation of mcl_armor --- mods/ITEMS/mcl_armor/locale/mcl_armor.pl.tr | 23 +++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 mods/ITEMS/mcl_armor/locale/mcl_armor.pl.tr diff --git a/mods/ITEMS/mcl_armor/locale/mcl_armor.pl.tr b/mods/ITEMS/mcl_armor/locale/mcl_armor.pl.tr new file mode 100644 index 000000000..b9307b492 --- /dev/null +++ b/mods/ITEMS/mcl_armor/locale/mcl_armor.pl.tr @@ -0,0 +1,23 @@ +# textdomain: mcl_armor +This is a piece of equippable armor which reduces the amount of damage you receive.=Jest to część ekwipowalnej zbroi, która zmniejsza otrzymywane obrażenia. +To equip it, put it on the corresponding armor slot in your inventory menu.=Aby ją założyć, upuść ją na odpowiadającym miejscu na zbroję na ekranie ekwipunku. +Leather Cap=Skórzana czapka +Iron Helmet=Żelazny hełm +Golden Helmet=Złoty hełm +Diamond Helmet=Diamentowy hełm +Chain Helmet=Kolczy hełm +Leather Tunic=Skórzana tunika +Iron Chestplate=Żelazny napierśnik +Golden Chestplate=Złoty napierśnik +Diamond Chestplate=Diamentowy napierśnik +Chain Chestplate=Kolczy napierśnik +Leather Pants=Skórzane spodnie +Iron Leggings=Żelazne nogawice +Golden Leggings=Złote nogawice +Diamond Leggings=Diamentowe nogawice +Chain Leggings=Kolcze nogawice +Leather Boots=Skórzane buty +Iron Boots=Żelazne buty +Golden Boots=Złote buty +Diamond Boots=Diamentowe buty +Chain Boots=Kolcze buty From a7c8bfc0d779d112357913109280543f17a53ad2 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 10:55:49 +0200 Subject: [PATCH 014/418] Add polish translation of mcl_banners --- .../mcl_banners/locale/mcl_banners.pl.tr | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 mods/ITEMS/mcl_banners/locale/mcl_banners.pl.tr diff --git a/mods/ITEMS/mcl_banners/locale/mcl_banners.pl.tr b/mods/ITEMS/mcl_banners/locale/mcl_banners.pl.tr new file mode 100644 index 000000000..0f4264dd3 --- /dev/null +++ b/mods/ITEMS/mcl_banners/locale/mcl_banners.pl.tr @@ -0,0 +1,77 @@ +# textdomain: mcl_banners +White Banner=Biały sztandar +White=Biały +Grey Banner=Szary sztandar +Grey=Szary +Light Grey Banner=Jasnoszary sztandar +Light Grey=Jasnoszary +Black Banner=Czarny sztandar +Black=Czarny +Red Banner=Czerwony sztandar +Red=Czerwony +Yellow Banner=Żółty sztandar +Yellow=Żółty +Green Banner=Zielony sztandar +Green=Zielony +Cyan Banner=Błękitny sztandar +Cyan=Błękitny +Blue Banner=Niebieski sztandar +Blue=Niebieski +Magenta Banner=Karmazynowy sztandar +Magenta=Karmazynowy +Orange Banner=Pomarańczowy sztandar +Orange=Pomarańczowy +Purple Banner=Fioletowy sztandar +Violet=Fioletowy +Brown Banner=Brązowy sztandar +Brown=Brązowy +Pink Banner=Różowy sztandar +Pink=Różowy +Lime Banner=Jasnozielony sztandar +Lime=Jasnozielony +Light Blue Banner=Jasnoniebieski sztandar +Light Blue=Jasnoniebieski +Banners are tall colorful decorative blocks. They can be placed on the floor and at walls. Banners can be emblazoned with a variety of patterns using a lot of dye in crafting.=Sztandary są kolorowymi dekoracyjnymi blokami. Mogą być postawione na ziemi i na ścianach. Sztandary mogą być upiększone różnymi wzorami przy użyciu sporej ilości farby podczas wytwarzania. +Use crafting to draw a pattern on top of the banner. Emblazoned banners can be emblazoned again to combine various patterns. You can draw up to 12 layers on a banner that way. If the banner includes a gradient, only 3 layers are possible.=Użyj wytwarzania aby narysować wzór na górze sztandaru. Upiększone sztandary mogą być upiększone ponownie by połączyć kilka wzorów. Możesz narysować do 12 warstw na sztandarze w ten sposób. Jeśli baner zawiera gradient tylko 3 warstwy są możliwe. +You can copy the pattern of a banner by placing two banners of the same color in the crafting grid—one needs to be emblazoned, the other one must be clean. Finally, you can use a banner on a cauldron with water to wash off its top-most layer.=Możesz skopiować wzór sztandaru kładąc dwa sztandary tego samego koloru w siatce wytwarzania. Jeden z nich musi być upiększony, drugi czysty. Możesz również użyć sztandar na kociołku z wodą aby zmyć górną warstwę. +@1 Bordure=@1 z obramowaniem +@1 Bricks=@1 murowany +@1 Roundel=@1 krąg +@1 Creeper Charge=@1 creeper +@1 Saltire=@1 skośny krzyż +@1 Bordure Indented=@1 z ząbkowanym obramowaniem +@1 Per Bend Inverted=@1 z lewą dolną połową +@1 Per Bend Sinister Inverted=@1 z prawą dolną połową +@1 Per Bend=@1 z prawą górną połową +@1 Per Bend Sinister=@1 z lewą górną połową +@1 Flower Charge=@1 kwiat +@1 Gradient=@1 gradient +@1 Base Gradient=@1 odwrócony +@1 Per Fess Inverted=@1 z dolną połową +@1 Per Fess=@1 z górną połową +@1 Per Pale=@1 z lewą połową +@1 Per Pale Inverted=@1 z prawą połową +@1 Thing Charge=@1 kształt czegoś +@1 Lozenge=@1 romb +@1 Skull Charge=@1 kształ czaszki +@1 Paly=@1 z pionowymi paskami +@1 Base Dexter Canton=@1 lewy dolny róg +@1 Base Sinister Canton=@1 prawy dolny róg +@1 Chief Dexter Canton=@1 lewy górny róg +@1 Chief Sinister Canton=@1 prawy górny róg +@1 Cross=@1 krzyż +@1 Base=@1 dolny +@1 Pale=@1 pionowy pasek +@1 Bend Sinister=@1 odwrócony skos +@1 Bend=@1 skos +@1 Pale Dexter=@1 lewy +@1 Fess=@1 poziomy pasek +@1 Pale Sinister=@1 prawy +@1 Chief=@1 górny +@1 Chevron=@1 dolny trójkąt +@1 Chevron Inverted=@1 górny trójkąt +@1 Base Indented=@1 ząbkowany dolny +@1 Chief Indented=@1 ząbkowany górny +And one additional layer=I jedna dodatkowa warstwa +And @1 additional layer(s)=I @1 dodatkowych warstw +Paintable decoration=Dekoracja do malowania From 8e4ba0d3e183c46202a81a232f084e736f6e72d5 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 11:24:00 +0200 Subject: [PATCH 015/418] Add polish translation of xpanes --- mods/ITEMS/xpanes/locale/xpanes.pl.tr | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 mods/ITEMS/xpanes/locale/xpanes.pl.tr diff --git a/mods/ITEMS/xpanes/locale/xpanes.pl.tr b/mods/ITEMS/xpanes/locale/xpanes.pl.tr new file mode 100644 index 000000000..d169c1f97 --- /dev/null +++ b/mods/ITEMS/xpanes/locale/xpanes.pl.tr @@ -0,0 +1,23 @@ +# textdomain: xpanes +Glass panes are thin layers of glass which neatly connect to their neighbors as you build them.=Szyby są cienkimi warstwami szkła które łączą się z sąsiadującymi blokami podczas budowania. +Stained glass panes are thin layers of stained glass which neatly connect to their neighbors as you build them. They come in many different colors.=Kolorowe szyby są cienkimi warstwami kolorowego szkła które łączą się z sąsiadującymi blokami podczas budowania. Można je pokolorować na wiele kolorów. +Iron Bars=Żelazne kraty +Iron bars neatly connect to their neighbors as you build them.=Żelazne kraty łączą się z sąsiadującymi blokami podczas budowania. +Glass Pane=Szyba +Stained Glass Pane=Kolorowa szyba +Red Stained Glass Pane=Czerwona szyba +Green Stained Glass Pane=Zielona szyba +Blue Stained Glass Pane=Niebieska szyba +Light Blue Stained Glass Pane=Jasnoniebieska szyba +Black Stained Glass Pane=Czarna szyba +White Stained Glass Pane=Biała szyba +Yellow Stained Glass Pane=Żółta szyba +Brown Stained Glass Pane=Brązowa szyba +Orange Stained Glass Pane=Pomarańczowa szyba +Pink Stained Glass Pane=Różowa szyba +Grey Stained Glass Pane=Szara szyba +Lime Stained Glass Pane=Jasnozielona szyba +Light Grey Stained Glass Pane=Jasnoszara szyba +Magenta Stained Glass Pane=Karmazynowa szyba +Purple Stained Glass Pane=Fioletowa szyba +Cyan Stained Glass Pane=Błękitna szyba From a3b46be64a1ba867764abbf0ad19ceb3d1b3b12c Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 11:24:23 +0200 Subject: [PATCH 016/418] Add polish translation of mcl_privs --- mods/MISC/mcl_privs/locale/mcl_privs.pl.tr | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 mods/MISC/mcl_privs/locale/mcl_privs.pl.tr diff --git a/mods/MISC/mcl_privs/locale/mcl_privs.pl.tr b/mods/MISC/mcl_privs/locale/mcl_privs.pl.tr new file mode 100644 index 000000000..10984ef54 --- /dev/null +++ b/mods/MISC/mcl_privs/locale/mcl_privs.pl.tr @@ -0,0 +1,2 @@ +# textdomain: mcl_privs +Can place and use advanced blocks like mob spawners, command blocks and barriers.=Może kłaść i używać zaawansowane bloki takie jak spawnery, bloki poleceń czy bariery. From 6f3bd95106949e673fc5a45db29424d6a571f88a Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 11:24:38 +0200 Subject: [PATCH 017/418] Add polish translation of mcl_commands --- .../mcl_commands/locale/mcl_commands.pl.tr | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 mods/MISC/mcl_commands/locale/mcl_commands.pl.tr diff --git a/mods/MISC/mcl_commands/locale/mcl_commands.pl.tr b/mods/MISC/mcl_commands/locale/mcl_commands.pl.tr new file mode 100644 index 000000000..1ff346fe6 --- /dev/null +++ b/mods/MISC/mcl_commands/locale/mcl_commands.pl.tr @@ -0,0 +1,23 @@ +# textdomain: mcl_commands +Players can't be killed right now, damage has been disabled.=Gracze nie mogą się zabić, obrażenia zostały wyłączone. +Player @1 does not exist.=Gracz @1 nie istnieje. +You are already dead=Już nie żyjesz +@1 is already dead=@1 już nie żyje +@1 committed suicide.=@1 popełniła samobójstwo. +@1 was killed by @2.=@1 została zabita przez @2. +[]=[] +Kill player or yourself=Zabij gracza lub siebie +Can use /say=Może używać /say += +Send a message to every player=Wyślij wiadomość do każdego gracza +Invalid usage, see /help say.=Niepoprawne użyciu, zobacz /help say. +,, =,, +Set node at given position=Ustaw node w danej pozycji +Invalid node=Niepoprawny node +@1 spawned.=@1 przywołany. +Invalid parameters (see /help setblock)=Niepoprawne parametry (zobacz /help setblock) +List bans=Pokaż zbanowanych +Ban list: @1=List zbanowanych: @1 +Show who is logged on=Pokaż zalogowanych +Displays the world seed=Wyświetl ziarno świata +Only peaceful mobs allowed!=Tylko pokojowe moby dozwolone! From 321caa0632c440b5970640c7fd871df3dd40187c Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 11:27:41 +0200 Subject: [PATCH 018/418] Minor translation fixes --- .../ENTITIES/mcl_boats/locale/mcl_boats.pl.tr | 2 +- mods/ENTITIES/mcl_mobs/locale/mcl_mobs.pl.tr | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.pl.tr | 20 +++++++++---------- .../mclx_stairs/locale/mclx_stairs.pl.tr | 6 +++--- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/mods/ENTITIES/mcl_boats/locale/mcl_boats.pl.tr b/mods/ENTITIES/mcl_boats/locale/mcl_boats.pl.tr index 2e50f85e1..40b37e68c 100644 --- a/mods/ENTITIES/mcl_boats/locale/mcl_boats.pl.tr +++ b/mods/ENTITIES/mcl_boats/locale/mcl_boats.pl.tr @@ -3,7 +3,7 @@ Acacia Boat=Akacjowa łódź Birch Boat=Brzozowa łódź Boat=Łódź Boats are used to travel on the surface of water.=Łodzie są wykorzystywane do podróżowania po powierzchni wody. -Dark Oak Boat=Ciemnodębowa łódź +Dark Oak Boat=Ciemno-dębowa łódź Jungle Boat=Tropikalna łódź Oak Boat=Dębowa łódź 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. Rightclick the boat again to leave it, punch the boat to make it drop as an item.=Kliknij prawym przyciskiem myszy na źródło wody by postawić łódź. Kliknij prawym przyciskiem myszy by w nią wsiąść. Użyj przycisków [Left] and [Right] by sterować, [Forwards] by przyspieszyć i [Backwards] by zwolnić lub się cofać. Ponownie kliknij prawym przyciskiem na łódź by z niej wyjść, uderz ją by wziąc ją jako przedmiot. diff --git a/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.pl.tr b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.pl.tr index 44e8e9978..785ce7579 100644 --- a/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.pl.tr +++ b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.pl.tr @@ -6,6 +6,6 @@ You need the “maphack” privilege to change the mob spawner.=Potrzebujesz prz Name Tag=Znacznik A name tag is an item to name a mob.=Znacznik jest przedmiotem pozwalającym nazwać moba. 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.=Zanim użyjesz znacznika musisz wybrać imię przy kowadle. Następnie możesz użyć znacznika by nazwać moba. To zużywa znacznik. -Only peaceful mobs allowed!=Tylko pokojowe moby są dozwolone. +Only peaceful mobs allowed!=Tylko pokojowe moby są dozwolone! Give names to mobs=Nazwij moby Set name at anvil=Wybierz imię przy kowadle diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr b/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr index 7c000fe5d..b320be212 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr @@ -9,7 +9,7 @@ A block of gold is mostly a shiny decorative block but also useful as a compact A block of iron is mostly a decorative block but also useful as a compact storage of iron ingots.=Blok żelaza jest głównie ładnym blokiem dekoracyjnym, ale jest użyteczny również do kompaktowego przechowywania sztabek żelaza. A cactus can only be placed on top of another cactus or any sand.=Kaktus może być postawiony tylko na innym kaktusie lub piasku. A decorative and mostly transparent block.=Dekoracyjny i głównie przeźroczysty blok. -A grass block is dirt with a grass cover. Grass blocks are resourceful blocks which allow the growth of all sorts of plants. They can be turned into farmland with a hoe and turned into grass paths with a shovel. In light, the grass slowly spreads onto dirt nearby. Under an opaque block or a liquid, a grass block may turn back to dirt.=Blok trawy to blok ziemi z pokryciem z trawy. Bloki trawy są użytecznymi blokami pozwalającymi na wyrośnięcie różnych rodzajów roślin. Mogą zostać zamienione w pole uprawne motyką, lub w ścieżkę z trawy łopatą. Oświelona trawa rozprzestrzenia się na pobliskie bloki. Pod nieprzezroczystym blokiem lub cieczą blok trawy może zamienić się z powrotem w blok ziemi. +A grass block is dirt with a grass cover. Grass blocks are resourceful blocks which allow the growth of all sorts of plants. They can be turned into farmland with a hoe and turned into grass paths with a shovel. In light, the grass slowly spreads onto dirt nearby. Under an opaque block or a liquid, a grass block may turn back to dirt.=Blok trawy to blok ziemi z pokryciem z trawy. Bloki trawy są użytecznymi blokami pozwalającymi na wyrośnięcie różnych rodzajów roślin. Mogą zostać zamienione w pole uprawne motyką, lub w ścieżkę z trawy łopatą. Oświelona trawa rozprzestrzenia się na pobliskie bloki. Pod nieprzezroczystym blokiem lub płynem blok trawy może zamienić się z powrotem w blok ziemi. A lapis lazuli block is mostly a decorative block but also useful as a compact storage of lapis lazuli.=Blok lazurytu jest głównie ładnym blokiem dekoracyjnym, ale jest użyteczny również do kompaktowego przechowywania lazurytu. A lava source sets fire to a couple of air blocks above when they're next to a flammable block.=Źródło lawy podpala bloki powietrza nad nią gdy są obok łatwopalnego bloku. A piece of ladder which allows you to climb vertically. Ladders can only be placed on the side of solid blocks and not on glass, leaves, ice, slabs, glowstone, nor sea lanterns.=Kawałek drabiny, który pozwala ci wspinać się pionowo. Drabina może być postawiona na boku stałego bloku, lecz nie na szkle, liściach, lodzie, półbloku, jasnogłazie ani na laatarni morskiej. @@ -75,13 +75,13 @@ Cut Sandstone=Przycięty piaskowiec Cut red sandstone is a decorative building block.=Przycięty czerwony piaskowiec jest dekoracyjnym blokiem budowlanym. Cut sandstone is a decorative building block.=Przycięty piaskowiec jest dekoracyjnym blokiem budowlanym. Cyan Stained Glass=Błękitne szkło -Dark Oak Bark=Ciemna dębowa kora -Dark Oak Leaves=Ciemne dębowe liście -Dark Oak Sapling=Ciemna dębowa sadzonka -Dark Oak Wood=Ciemne dębowe drewno -Dark Oak Wood Planks=Ciemne dębowe deski -Dark oak leaves are grown from dark oak trees.=Ciemne dębowe liście rosną na ciemnych dębach. -Dark oak saplings can grow into dark oaks, but only in groups. A lonely dark oak sapling won't grow. A group of four dark oak saplings grows into a dark oak after some time when they are placed on soil (such as dirt) in a 2×2 square and exposed to light.=Ciemne dębowe sadzonki mogą wyrosnąć w ciemny dąb, ale tylko w grupach. Samotna ciemna dębowa sadzonka nie wyrośnie. Grupa czterech ciemnych dębowych sadzonek wyrośnie w ciemny dąb po jakimś czasie, gdy będą postawiona na glebie (np. ziemi) w kwadracie 2×2, która jest oświelona. +Dark Oak Bark=Ciemno-dębowa kora +Dark Oak Leaves=Ciemno-dębowe liście +Dark Oak Sapling=Ciemno-dębowa sadzonka +Dark Oak Wood=Ciemno-dębowe drewno +Dark Oak Wood Planks=Ciemno-dębowe deski +Dark oak leaves are grown from dark oak trees.=Ciemno-dębowe liście rosną na ciemnych dębach. +Dark oak saplings can grow into dark oaks, but only in groups. A lonely dark oak sapling won't grow. A group of four dark oak saplings grows into a dark oak after some time when they are placed on soil (such as dirt) in a 2×2 square and exposed to light.=Ciemno-dębowe sadzonki mogą wyrosnąć w ciemny dąb, ale tylko w grupach. Samotna ciemno-dębowa sadzonka nie wyrośnie. Grupa czterech ciemno-dębowych sadzonek wyrośnie w ciemny dąb po jakimś czasie, gdy będą postawiona na glebie (np. ziemi) w kwadracie 2×2, która jest oświelona. Dead Bush=Uschnięty krzew Dead bushes are unremarkable plants often found in dry areas. They can be harvested for sticks.=Uschnięte krzewy to niewyróżniające się rośliny często występujące w suchych obszarach. Mogą z nich być zebrane patyki. Diamond=Diament @@ -137,7 +137,7 @@ Lava Source=Źródło lawy Lava is hot and rather dangerous. Don't touch it, it will hurt you a lot and it is hard to get out.=Lawa jest gorąca i bardzo niebezpiczna. Nie dotykaj jej, jeśli nie chcesz ucierpieć. Trudno się z niej wydostać. Light Blue Stained Glass=Jasnoniebieskie szkło Light Grey Stained Glass=Jasnoszare szkło -Lime Stained Glass=Limonkowe szkło +Lime Stained Glass=Jasnozielone szkło Lit Redstone Ore=Świecąca ruda czerwienitu Magenta Stained Glass=Karmazynowe szkło Molten gold. It is used to craft armor, tools, and whatnot.=Stopione złoto. Wykorzystywane do wytwarzania zbroi, narzędzi i innych. @@ -145,7 +145,7 @@ Molten iron. It is used to craft armor, tools, and whatnot.=Stopione żelazo. Wy Mossy Cobblestone=Zamszony bruk Mossy Stone Bricks=Zamszone kamienne cegły Mycelium=Grzybnia -Mycelium is a type of dirt and the ideal soil for mushrooms. Unlike other dirt-type blocks, it can not be turned into farmland with a hoe. In light, mycelium slowly spreads over nearby dirt. Under an opaque block or a liquid, it eventually turns back into dirt.=Grzybnia jest rodzajem ziemi i idealnym podłożem dla grzybów. W przeciwieństwie do innych bloków ziemi nie może ona zostać zamieniona w pole uprawne motyką. Oświelona grzbynia powoli rozprzestrzenia się na pobliską ziemię. Pod nieprzezroczystym blokiem bądź cieczą po pewnym czasie zamieni się z powrotem w ziemię. +Mycelium is a type of dirt and the ideal soil for mushrooms. Unlike other dirt-type blocks, it can not be turned into farmland with a hoe. In light, mycelium slowly spreads over nearby dirt. Under an opaque block or a liquid, it eventually turns back into dirt.=Grzybnia jest rodzajem ziemi i idealnym podłożem dla grzybów. W przeciwieństwie do innych bloków ziemi nie może ona zostać zamieniona w pole uprawne motyką. Oświelona grzbynia powoli rozprzestrzenia się na pobliską ziemię. Pod nieprzezroczystym blokiem bądź płynem po pewnym czasie zamieni się z powrotem w ziemię. Oak Bark=Dębowa kora Oak Leaves=Dębowe liście Oak Sapling=Dębowe sadzonki diff --git a/mods/ITEMS/mclx_stairs/locale/mclx_stairs.pl.tr b/mods/ITEMS/mclx_stairs/locale/mclx_stairs.pl.tr index aa95f8c30..1b9f92360 100644 --- a/mods/ITEMS/mclx_stairs/locale/mclx_stairs.pl.tr +++ b/mods/ITEMS/mclx_stairs/locale/mclx_stairs.pl.tr @@ -71,9 +71,9 @@ Double Brown Concrete Slab=Podwójna płyta z brązowego cementu Pink Concrete Stairs=Schody z różowego cementu Pink Concrete Slab=Płyta z różowego cementu Double Pink Concrete Slab=Podwójna płyta z różowego cementu -Lime Concrete Stairs=Schody z limonkowego cementu -Lime Concrete Slab=Płyta z limonkowego cementu -Double Lime Concrete Slab=Podwójna płyta z limonkowego cementu +Lime Concrete Stairs=Schody z jasnozielonego cementu +Lime Concrete Slab=Płyta z jasnozielonego cementu +Double Lime Concrete Slab=Podwójna płyta z jasnozielonego cementu Light Blue Concrete Stairs=Schody z jasnoniebieskiego cementu Light Blue Concrete Slab=Płyta z jasnoniebieskiego cementu Double Light Blue Concrete Slab=Podwójna płyta z jasnoniebieskiego cementu From 2b6f31fe3b38d8fd9bd3f4be93237795bab8abd1 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 12:16:20 +0200 Subject: [PATCH 019/418] Add polish translation of mclx_fences --- mods/ITEMS/mclx_fences/locale/mclx_fences.pl.tr | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 mods/ITEMS/mclx_fences/locale/mclx_fences.pl.tr diff --git a/mods/ITEMS/mclx_fences/locale/mclx_fences.pl.tr b/mods/ITEMS/mclx_fences/locale/mclx_fences.pl.tr new file mode 100644 index 000000000..ecdd84562 --- /dev/null +++ b/mods/ITEMS/mclx_fences/locale/mclx_fences.pl.tr @@ -0,0 +1,4 @@ +# textdomain: mclx_fences +Red Nether Brick Fence=Płot z czerwonej netherowej cegły +Red Nether Brick Fence Gate=Furtka z czerwonej netherowej cegły +Nether Brick Fence Gate=Furtka z netherowej cegły From b14b08dc300de9612c3aeda1383569d7881dfa0d Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 12:16:54 +0200 Subject: [PATCH 020/418] Add polish translation of mcl_maps --- mods/ITEMS/mcl_maps/locale/mcl_maps.pl.tr | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 mods/ITEMS/mcl_maps/locale/mcl_maps.pl.tr diff --git a/mods/ITEMS/mcl_maps/locale/mcl_maps.pl.tr b/mods/ITEMS/mcl_maps/locale/mcl_maps.pl.tr new file mode 100644 index 000000000..f83b9f516 --- /dev/null +++ b/mods/ITEMS/mcl_maps/locale/mcl_maps.pl.tr @@ -0,0 +1,10 @@ +# textdomain: mcl_maps +Empty Map=Pusta mapa +Empty maps are not useful as maps, but they can be stacked and turned to maps which can be used.=Puste mapy nie są tak użyteczne jak mapy ale mogą być grupowane i zamienione w mapy które już są pożyteczne. +Rightclick to start using the map (which can't be stacked anymore).=Kliknij prawy aby zacząć używać mapy (nie będzie już jej można grupować). +Map=Mapa +Maps show your surroundings as you explore the world.=Mapy pokazują otoczenie, gdy eksplorujesz świat. +Hold the map in any of the hotbar slots. This allows you to access the minimap by pressing the minimap key (see controls settings).=Umieść mapę w szybkim ekwipunku. To pozwala ci używać minimapy przez naciśnięcie klawisza minimapy (zobacz w ustawieniach sterowania). +In Creative Mode, you don't need this item; the minimap is always available.=W trybie kreatywnym nie potrzebujesz tego przedmiotu, minimapa zawsze jest dostępna. +Enables minimap=Włącza minimapę +Use the minimap key to show the map.=Użyj klawisza minimap aby pokazać mapę. From 6c5c4b00804578dbaa046e51060ac84b13e99155 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 12:17:14 +0200 Subject: [PATCH 021/418] Add polish translation of mcl_itemframes --- mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.pl.tr | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.pl.tr diff --git a/mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.pl.tr b/mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.pl.tr new file mode 100644 index 000000000..8de889471 --- /dev/null +++ b/mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.pl.tr @@ -0,0 +1,5 @@ +# textdomain: mcl_itemframes +Item Frame=Ramka na przedmiot +Item frames are decorative blocks in which items can be placed.=Ramki na przedmiot to dekoracyjne bloki w których można umieszczać przedmioty. +Just place any item on the item frame. Use the item frame again to retrieve the item.=Umieść dowolny przedmiot w ramce. Użyj ramki ponownie aby odzyskać przedmiot. +Can hold an item=Może przetrzymywać przedmiot From baed298ce61911ab91b5ac94bdc0d46ca05d13f3 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 12:17:27 +0200 Subject: [PATCH 022/418] Add polish translation of mcl_wip --- mods/MISC/mcl_wip/locale/mcl_wip.pl.tr | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 mods/MISC/mcl_wip/locale/mcl_wip.pl.tr diff --git a/mods/MISC/mcl_wip/locale/mcl_wip.pl.tr b/mods/MISC/mcl_wip/locale/mcl_wip.pl.tr new file mode 100644 index 000000000..83c273a96 --- /dev/null +++ b/mods/MISC/mcl_wip/locale/mcl_wip.pl.tr @@ -0,0 +1,4 @@ +# textdomain: mcl_wip +# WIP means “Work in Progress” +(WIP)=(Niedokończone) +(Temporary)=(Tymczasowe) From 23e52975fdcae5a2784b1adabd7eee444966009b Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 12:39:01 +0200 Subject: [PATCH 023/418] Add polish translation of mcl_sponges --- mods/ITEMS/mcl_sponges/locale/mcl_sponges.pl.tr | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 mods/ITEMS/mcl_sponges/locale/mcl_sponges.pl.tr diff --git a/mods/ITEMS/mcl_sponges/locale/mcl_sponges.pl.tr b/mods/ITEMS/mcl_sponges/locale/mcl_sponges.pl.tr new file mode 100644 index 000000000..dc131cb75 --- /dev/null +++ b/mods/ITEMS/mcl_sponges/locale/mcl_sponges.pl.tr @@ -0,0 +1,10 @@ +# textdomain: mcl_sponges +Sponge=Gąbka +Sponges are blocks which remove water around them when they are placed or come in contact with water, turning it into a wet sponge.=Gąbki to bloki które usuwają wodę wokół sibie gdy są postawione, lub gdy wejdą w kontakt z wodą, zamieniając się w mokre gąbki. +Waterlogged Sponge=Nasiąknięta gąbka +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.=Nasiąknięta gąbka może zostać wysuszona w piecu by zamienić się w (suchą) gąbkę. Jeśli w miejscu na paliwo jest puste wiadro, to woda wyleje się do wiaderka. +Riverwaterlogged Sponge=Gąbka nasiąknięta wodą rzeczną +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.=To jest gąbka, która wchłonęła wodę rzeczną. Może zostać wysuszona w piecu by zamienić się w (suchą) gąbkę. Jeśli w miejscu na paliwo jest puste wiadro, to woda rzeczna wyleje się do wiaderka. +A sponge becomes riverwaterlogged (instead of waterlogged) if it sucks up more river water than (normal) water.=Gąbka zostanie nasiąknięta wodą rzeczną jeśli nasiąknie większą ilością wody z rzeki niż normalnej wody. +Removes water on contact=Usuwa dotkniętą wodę +Can be dried in furnace=Może zostać wysuszona w piecu From d553aa5e8c288ad59381245115f4369a8bf0434d Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 12:53:24 +0200 Subject: [PATCH 024/418] Add polish translation of mcl_ocean --- mods/ITEMS/mcl_ocean/locale/mcl_ocean.pl.tr | 60 +++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 mods/ITEMS/mcl_ocean/locale/mcl_ocean.pl.tr diff --git a/mods/ITEMS/mcl_ocean/locale/mcl_ocean.pl.tr b/mods/ITEMS/mcl_ocean/locale/mcl_ocean.pl.tr new file mode 100644 index 000000000..7c63e4959 --- /dev/null +++ b/mods/ITEMS/mcl_ocean/locale/mcl_ocean.pl.tr @@ -0,0 +1,60 @@ +# textdomain: mcl_ocean +Sea Lantern=Latarnia morska +Sea lanterns are decorative light sources which look great underwater but can be placed anywhere.=Latarnie morskie to dekoracyjne źródła światła, które wyglądają bardzo dobrze pod wodą, ale mogą być umieszczone gdziekolwiek. +Prismarine=Pryzmaryn +Prismarine is used as a building block. It slowly changes its color.=Pryzmaryn jest blokiem budowlanym. Powoli zmienia on swój kolor. +Prismarine Bricks=Pryzmarynowe cegły +Dark Prismarine=Ciemny pryzmaryn +Prismarine Crystals=Pryzmarynowe kryształy +Prismarine Shard=Pryzmarynowe odłamki +Dried Kelp=Suszone wodorosty +Dried Kelp Block=Blok suszonych wodorostów +Brain Coral Block=Blok mózgowatego koralowca +Brain Coral Fan=Wachlarz mózgowatego koralowca +Brain Coral=Mózgowaty koralowiec +Bubble Coral Block=Blok bąbelkowego koralowca +Bubble Coral Fan=Wachlarz bąbelkowego koralowca +Bubble Coral=Bąbelkowy koralowiec +Fire Coral Block=Blok ognistego koralowca +Fire Coral Fan=Wachlarz ognistego koralowca +Fire Coral=Ognisty koralowiec +Horn Coral Block=Blok rogatego koralowca +Horn Coral Fan=Wachlarz rogatego koralowca +Horn Coral=Rogaty koralowiec +Tube Coral Block=Blok rurkowatego koralowca +Tube Coral Fan=Wachlarz rurkowatego koralowca +Tube Coral=Rurkowaty koralowiec +Dead Brain Coral Block=Martwy blok mózgowatego koralowca +Dead Brain Coral Fan=Martwy wachlarz mózgowatego koralowca +Dead Brain Coral=Martwy mózgowaty koralowiec +Dead Bubble Coral Block=Martwy blok bąbelkowego koralowca +Dead Bubble Coral Fan=Martwy wachlarz bąbelkowego koralowca +Dead Bubble Coral=Martwy bąbelkowy koralowiec +Dead Fire Coral Block=Martwy blok ognistego koralowca +Dead Fire Coral Fan=Martwy wachlarz ognistego koralowca +Dead Fire Coral=Martwy ognisty koralowiec +Dead Horn Coral Block=Martwy blok rogatego koralowca +Dead Horn Coral Fan=Martwy wachlarz rogatego koralowca +Dead Horn Coral=Martwy rogaty koralowiec +Dead Tube Coral Block=Martwy blok rurkowatego koralowca +Dead Tube Coral Fan=Martwy wachlarz rurkowatego koralowca +Dead Tube Coral=Martwy rurkowaty koralowiec +Seagrass=Trawa morska +Kelp=Wodorosty +Kelp grows inside water on top of dirt, sand or gravel.=Wodorosty rosną w wodzie na ziemi, piasku i żwirze. +Coral blocks live in the oceans and need a water source next to them to survive. Without water, they die off.=Bloki koralowca żyją w oceanach i potrzebują źródła wody obok aby przeżyć. Bez wody obumierają. +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.=Koralowiec rośnie na blokach koralowca i musi być wewnątrz źródła wody aby przeżyć. Bez wody obumiera. +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.=Wachlarz koralowca rośnie na blokach koralowca i musi być wewnątrz źródła wody aby przeżyć. Bez wody obumiera zarówno on jak i blok koralowca pod nim. +Seagrass grows inside water on top of dirt, sand or gravel.=Trawa morska rośnie w wodzie na ziemi, piasku i żwirze. +A decorative block that serves as a great furnace fuel.=Blok dekoracyjny, który świetnie sprawdza się jako paliwo do pieca. +Dried kelp is a food item.=Suszone wodorosty jest przedmiotem do jedzenia. +Grows on coral block of same species=Rośnie na blokach koralowca tego samego gatunku. +Needs water to live=Potrzebuje wody do życia. +Grows in water on dirt, sand, gravel=Rośnie w wodzie na ziemi, piasku i żwirze. +Glows in the water=Świeci w wodzie +4 possible sizes=4 możliwe wielkości +Grows on dead brain coral block=Rośnie na martwych blokach mózgowatego koralowca +Sea Pickle=Iskrzyłuda +Sea pickles grow on dead brain coral blocks and provide light when underwater. They come in 4 sizes that vary in brightness.=Iskrzyłuda rośnie na martwych blokach mózgowatego koralowca i jest źródłem światła pod wodą. +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.=Może być postawiona tylko na blokach mózgowatego koralowca. Postawienie iskrzyłuda na innej iskrzyłudzie sprawi, że się powiększy i będzie jaśniejsza. + From a598d94afdc42ee363c8450de9c3068a0dbbf800 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 12:59:24 +0200 Subject: [PATCH 025/418] Add polish translation of mcl_throwing --- mods/ITEMS/mcl_throwing/locale/mcl_throwing.pl.tr | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 mods/ITEMS/mcl_throwing/locale/mcl_throwing.pl.tr diff --git a/mods/ITEMS/mcl_throwing/locale/mcl_throwing.pl.tr b/mods/ITEMS/mcl_throwing/locale/mcl_throwing.pl.tr new file mode 100644 index 000000000..3f0fb1ee3 --- /dev/null +++ b/mods/ITEMS/mcl_throwing/locale/mcl_throwing.pl.tr @@ -0,0 +1,12 @@ +# textdomain: mcl_throwing +@1 used the ender pearl too often.=@1 zbyt często używała perły kresu. +Use the punch key to throw.=Użyj przycisku ataku by rzucić. +Snowball=Śnieżka +Snowballs can be thrown or launched from a dispenser for fun. Hitting something with a snowball does nothing.=Śnieżki mogą być rzucone lub wystrzelone z dozownika dla zabawy. Uderzenie czegoś śnieżką niczego nie daje. +Egg=Jajo +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.=Jaja mogą być rzucone lub wystrzelone z dozownika i rozbiją się przy uderzeniu. Jest mała szansa, że 1 lub nawet 4 kurczęta wyskoczą z jaja. +Ender Pearl=Perła kresu +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.=Perła kresu jest przedmiotem, który można wykorzystać do teleportacij kosztem zdrowia. Może być rzucona, a rzucający zostanie przeteleportowany w miejsce gdzie uderzyła ona stały blok lub roślinę. +Throwable=Można rzucać +Chance to hatch chicks when broken=Szansa na wyklucie kurcąt po rozbiciu +Teleports you on impact for cost of 5 HP=Teleportuje przy uderzeniu za 5 HP From f1ce4f0df6f80a17a5535e61046fa7d86fd2d997 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 13:00:04 +0200 Subject: [PATCH 026/418] Add polish translation of mcl_screwdriver --- mods/ITEMS/screwdriver/locale/screwdriver.pl.tr | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 mods/ITEMS/screwdriver/locale/screwdriver.pl.tr diff --git a/mods/ITEMS/screwdriver/locale/screwdriver.pl.tr b/mods/ITEMS/screwdriver/locale/screwdriver.pl.tr new file mode 100644 index 000000000..b9adac135 --- /dev/null +++ b/mods/ITEMS/screwdriver/locale/screwdriver.pl.tr @@ -0,0 +1,2 @@ +#textdomain: screwdriver +Screwdriver=Śrubokręt From 38741754e031950982bcb840ea50a2305525a4fd Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 13:02:28 +0200 Subject: [PATCH 027/418] Add polish translation of mcl_monster_eggs --- .../ITEMS/mcl_monster_eggs/locale/mcl_monster_eggs.pl.tr | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 mods/ITEMS/mcl_monster_eggs/locale/mcl_monster_eggs.pl.tr diff --git a/mods/ITEMS/mcl_monster_eggs/locale/mcl_monster_eggs.pl.tr b/mods/ITEMS/mcl_monster_eggs/locale/mcl_monster_eggs.pl.tr new file mode 100644 index 000000000..2d55f713f --- /dev/null +++ b/mods/ITEMS/mcl_monster_eggs/locale/mcl_monster_eggs.pl.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.=Zarobaczony blok to blok z którego po rozbiciu wypadną rybiki cukrowe. Wygląda identycznie co niezarobaczona wersja. +Infested Stone=Zarobaczony kamień +Infested Cobblestone=Zarobaczony brukowiec +Infested Stone Bricks=Zarobaczone kamienne cegły +Infested Cracked Stone Bricks=Zarobaczone popękane kamienne cegły +Infested Mossy Stone Bricks=Zarobaczone zamszone kamienne cegły +Infested Chiseled Stone Bricks=Zarobaczone wygładzone kamienne cegły +Hides a silverfish=Chowa w sobie rybika cukrowego From 8f9f4f60930086331c0e9653fae1e7e99984d877 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 13:23:32 +0200 Subject: [PATCH 028/418] Add polish translation of mcl_flowers --- .../mcl_flowers/locale/mcl_flowers.pl.tr | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 mods/ITEMS/mcl_flowers/locale/mcl_flowers.pl.tr diff --git a/mods/ITEMS/mcl_flowers/locale/mcl_flowers.pl.tr b/mods/ITEMS/mcl_flowers/locale/mcl_flowers.pl.tr new file mode 100644 index 000000000..f79d5d40c --- /dev/null +++ b/mods/ITEMS/mcl_flowers/locale/mcl_flowers.pl.tr @@ -0,0 +1,32 @@ +# textdomain: mcl_flowers +This is a small flower. Small flowers are mainly used for dye production and can also be potted.=To jest mały kwiat. Małe kwiaty są głównie wykorzystywane do tworzenia farb oraz do ustawiania w doniczkach. +It can only be placed on a block on which it would also survive.=Może być postawiony tylko na blokach na których jest w stanie przeżyć. +Poppy=Mak +Dandelion=Mniszek lekarski +Oxeye Daisy=Stokrotka +Orange Tulip=Pomarańczowy tulipan +Pink Tulip=Różowy tulipan +Red Tulip=Czerwony tulipan +White Tulip=Biały tulipan +Allium=Czosnek +Azure Bluet=Houstonia błękitna +Blue Orchid=Niebieska orchidea +Tall Grass=Wysoka trawa +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.=Wysoka trawa jest małą rośliną często występująca na trawiastych biomach. Mogą z nich wypaść nasiona. Używając mączki kostnej można ją zamienić w podwójnie wysoką trawę, która ma dwa bloki wysokości. +Fern=Paproć +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.=Paprocie to małe rośliny występujące naturalnie w tropikach i tajgach. Mogą z nich wypaść nasiona. Używając mączki kostnej można je zamienić w duże paprocie, które mają dwa bloki wysokości. +(Top Part)=(Górna część) +Peony=Piwonia +A peony is a large plant which occupies two blocks. It is mainly used in dye production.=Piwonia jest dużą rośliną zajmującą dwa bloki. Jest głównie używana jako źródło farby. +Rose Bush=Krzew róży. +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.=Krzew róży jest dużą rośliną zajmującą dwa bloki. Można go dotykać. Jest głównie używana jako źródło farby. +Lilac=Bez +A lilac is a large plant which occupies two blocks. It is mainly used in dye production.=Bez jest dużą rośliną zajmującą dwa bloki. Jest głównie używana jako źródło farby. +Sunflower=Słonecznik +A sunflower is a large plant which occupies two blocks. It is mainly used in dye production.=Słonecznik jest dużą rośliną zajmującą dwa bloki. Jest głównie używana jako źródło farby. +Double tallgrass a variant of tall grass and occupies two blocks. It can be harvested for wheat seeds.=Podwójna wysoka trawa jest dużą rośliną zajmującą dwa bloki. Mogą z niej wypaść nasiona zboża. +Large fern is a variant of fern and occupies two blocks. It can be harvested for wheat seeds.=Duża paproć jest dużą rośliną zajmującą dwa bloki. Mogą z niej wypaść nasiona zboża. +Double Tallgrass=Podwójnie wysoka trawa +Large Fern=Duża paproć +Lily Pad=Lilia wodna +A lily pad is a flat plant block which can be walked on. They can be placed on water sources, ice and frosted ice.=Lilia wodna jest płaską rośliną po której można chodić. Można je stawiać na źródłach wody, lodzie i oszronionym lodzie. From 7a4d00964812cb543a522e60ffb4c9b3f8704259 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 13:37:42 +0200 Subject: [PATCH 029/418] Add polish translation of mcl_anvils --- mods/ITEMS/mcl_anvils/locale/mcl_anvils.pl.tr | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 mods/ITEMS/mcl_anvils/locale/mcl_anvils.pl.tr diff --git a/mods/ITEMS/mcl_anvils/locale/mcl_anvils.pl.tr b/mods/ITEMS/mcl_anvils/locale/mcl_anvils.pl.tr new file mode 100644 index 000000000..36bd43851 --- /dev/null +++ b/mods/ITEMS/mcl_anvils/locale/mcl_anvils.pl.tr @@ -0,0 +1,16 @@ +# textdomain: mcl_anvils +Set Name=Ustaw nazwę +Repair and Name=Napraw i nazwij +Inventory=Ekwipunek +Anvil=Kowadło +The anvil allows you to repair tools and armor, and to give names to items. It has a limited durability, however. Don't let it fall on your head, it could be quite painful!=Kowadło pozwala naprawiać przedmioty i zbroje, a także nazywać przedmioty. Ma jednak ograniczoną wytrzymałość. Nie pozwól by spadło ci na głowę, bo będzie bardzo boleśnie! +To use an anvil, rightclick it. An anvil has 2 input slots (on the left) and one output slot.=Aby użyć kowadła, kliknij je prawym przyciskiem. Kowdało ma dwa miejsca wejściowe (po lewej) i jedno miejsce wyjściowe. +To rename items, put an item stack in one of the item slots while keeping the other input slot empty. Type in a name, hit enter or “Set Name”, then take the renamed item from the output slot.=Aby zmienić nazwę przedmiotów, włóż grupę przedmiotów w jedno z miejsc i zostaw drugie miejsce puste. Wpisz imię, kliknij "Ustaw imię", a następnie wyjmij przemianowane przedmioty z miejsca wyjściowego. +There are two possibilities to repair tools (and armor):=Są dwie możliwości naprawiania przedmiotów (i zbroi): +• Tool + Tool: Place two tools of the same type in the input slots. The “health” of the repaired tool is the sum of the “health” of both input tools, plus a 12% bonus.=Narzędzie + narzędzie: Wstaw dwa narzędzia tego samego typu w miejscach wejściowych. "Życie" naprawionego w ten sposób narzędzia jest sumą "żyć" obu narzędź wejściowych plus 12% bonusu. +• Tool + Material: Some tools can also be repaired by combining them with an item that it's made of. For example, iron pickaxes can be repaired with iron ingots. This repairs the tool by 25%.=Narzędzie + materiał: Niektóre narzędzia mogą być naprawiane przez łączanie ich z przedmiotem z którego są wykonane. Przykładowo żelazne kilofy mogą być naprawione przy użyciu sztabek żelaza. To przywraca 25% "życia" narzędzia. +Armor counts as a tool. It is possible to repair and rename a tool in a single step.=Zbroje liczą się tu jako narzędzia. Możliwe jest jednoczesna naprawa i przemianowanie przedmiotu. +The anvil has limited durability and 3 damage levels: undamaged, slightly damaged and very damaged. Each time you repair or rename something, there is a 12% chance the anvil gets damaged. Anvils also have a chance of being damaged when they fall by more than 1 block. If a very damaged anvil is damaged again, it is destroyed.=Kowadło ma ograniczoną wytrzymałość i trzy poziomu uszkodzenia: nieuszkodzone, lekko uszkodzone i bardzo uszkodzone. Za każdym razem gdy naprawiasz lub przemianowujesz coś jest 12% szans, że kowadło się uszkodzi. Kowadła mogą się również uszkodzić gdy spadają z wysokości większej niż jeden blok. Jeśli bardzo uszkodzone kowadło zostanie uszkodzone jeszcze raz, zostanie zniszczone. +Slightly Damaged Anvil=Lekko uszkodzone kowadło +Very Damaged Anvil=Bardzo uszkodzone kowadło +Repair and rename items=Napraw i przemianuj przedmioty From ec2e5f743052f6cd57f6c5adf99b2303ad5e37d4 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 13:41:57 +0200 Subject: [PATCH 030/418] Add polish translation of mcl_heads --- mods/ITEMS/mcl_heads/locale/mcl_heads.pl.tr | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 mods/ITEMS/mcl_heads/locale/mcl_heads.pl.tr diff --git a/mods/ITEMS/mcl_heads/locale/mcl_heads.pl.tr b/mods/ITEMS/mcl_heads/locale/mcl_heads.pl.tr new file mode 100644 index 000000000..4ed4bbbee --- /dev/null +++ b/mods/ITEMS/mcl_heads/locale/mcl_heads.pl.tr @@ -0,0 +1,11 @@ +# textdomain: mcl_heads +Zombie Head=Głowa zombie +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%.=Głowa zombie jest małym blokiem dekoracyjnym i przypomina głowę zombie. Może być noszona jako hełm co zmniejsza obszar wykrycia przez zombie o 50%. +Creeper Head=Głowa creepera +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%.=Głowa creepera jest małym blokiem dekoracyjnym i przypomina głowę creepera. Może być noszona jako hełm co zmniejsza obszar wykrycia przez creepera o 50%. +Human Head=Głowa człowieka +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.=Głowa człowieka jest małym blokiem dekoracyjnym i przypomina głowę człowieka. Może być noszona jako hełm dla zabawy, ale nie zapewnia żadnej dodatkowej ochrony. +Skeleton Skull=Głowa szkieleta +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%.=Głowa szkieleta jest małym blokiem dekoracyjnym i przypomina głowę szkieleta. Może być noszona jako hełm co zmniejsza obszar wykrycia przez szkielety o 50%. +Wither Skeleton Skull=Głowa witherowego szkieleta +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.=Głowa witherowego szkieleta jest małym blokiem dekoracyjnym i przypomina głowę witherowego szkieleta. Może być noszona jako hełm dla zabawy, ale nie zapewnia żadnej dodatkowej ochrony. From 7d674e6e72bd29676c3e758a9679add6f15d074e Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 13:54:37 +0200 Subject: [PATCH 031/418] Add polish translation of mcl_cauldrons --- mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.pl.tr | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.pl.tr diff --git a/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.pl.tr b/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.pl.tr new file mode 100644 index 000000000..e47b5f460 --- /dev/null +++ b/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.pl.tr @@ -0,0 +1,11 @@ +# textdomain: mcl_cauldron +Cauldron=Kocioł +Cauldrons are used to store water and slowly fill up under rain. They can also be used to wash off banners.=Kotły są wykorzystywane do przechowywania wody oraz powoli wypełniają sie podczas deszczu. +Place a water pucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water. Use an emblazoned banner on a cauldron with water to wash off its top layer.=Umieść wiadro wody w kotle by wypełnić go wodą. Umieść puste wiadro na pełnym kotle by odzyskać wodę. Umieść szklaną butelkę w kotle z wodą aby odzyskać jedną trzecią wody. Użyj upiększonego sztandaru na kotle z wodą aby zmyć górną warstwę. +Cauldron (1/3 Water)=Kocioł (1/3 wody) +Cauldron (2/3 Water)=Kocioł (2/3 wody) +Cauldron (3/3 Water)=Kocioł (3/3 wody) +Cauldron (1/3 River Water)=Kocioł (1/3 rzecznej wody) +Cauldron (2/3 River Water)=Kocioł (2/3 rzecznej wody) +Cauldron (3/3 River Water)=Kocioł (3/3 rzecznej wody) +Stores water=Przechowuje wodę From 32e33d3b21b151f93ec1f2fa4656c324220f646f Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 13:56:55 +0200 Subject: [PATCH 032/418] Add polish translation of mclx_core --- mods/ITEMS/mclx_core/locale/mclx_core.pl.tr | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 mods/ITEMS/mclx_core/locale/mclx_core.pl.tr diff --git a/mods/ITEMS/mclx_core/locale/mclx_core.pl.tr b/mods/ITEMS/mclx_core/locale/mclx_core.pl.tr new file mode 100644 index 000000000..8972670b6 --- /dev/null +++ b/mods/ITEMS/mclx_core/locale/mclx_core.pl.tr @@ -0,0 +1,5 @@ +# textdomain: mclx_core +River Water Source=Żródło wody rzecznej +River water has the same properties as water, but has a reduced flowing distance and is not renewable.=Woda rzeczna ma takie same własności jak woda, ale ma zmniejszony zasięg płynięcia i nie jest odnawialna. +River Water=Woda rzeczna +Flowing River Water=Płynąca woda rzeczna From 1be74d21d35578f2979ff3493dd4e62b3f35d109 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 14:26:29 +0200 Subject: [PATCH 033/418] Add polish translation of mcl_enchanting --- .../locale/mcl_enchanting.pl.tr | 100 ++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.pl.tr diff --git a/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.pl.tr b/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.pl.tr new file mode 100644 index 000000000..7da2796b0 --- /dev/null +++ b/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.pl.tr @@ -0,0 +1,100 @@ +# textdomain: mcl_enchanting +Aqua Affinity=Powinowactwo wodne +Increases underwater mining speed.=Przyspiesza wydobywanie pod wodą. +Bane of Arthropods=Zmora stawonogów +Increases damage and applies Slowness IV to arthropod mobs (spiders, cave spiders, silverfish and endermites).=Zwiększa obrażenia i aplikuje Spowolnienie IV mobom stawonogim (pająkom, pająkom jaskiniowym, rybikom cukrowym i endermitom) +Blast Protection=Ochrona od wybuchów +Reduces explosion damage and knockback.=Zmniejsza obrażenia od wybuchów i odrzut. +Channeling=Przekierowanie +Channels a bolt of lightning toward a target. Works only during thunderstorms and if target is unobstructed with opaque blocks.=Przekierowuje błyskawicę w stronę celu. Działa tylko podczas burz jeśli cel nie jest zasłonięty przez nieprzezroczyste bloki. +Curse of Binding=Klątwa wiązania +Item cannot be removed from armor slots except due to death, breaking or in Creative Mode.=Przedmiotu nie można zdjąć z miejsc na zbroję inaczej niż przez śmierć, zepsucie bądź w trybie kreatywnym. +Curse of Vanishing=Klątwa znikania +Item destroyed on death.=Przedmiot niszczony przy śmierci +Depth Strider=Głębinowy wędrowiec +Increases underwater movement speed.=Zwiększa prędkość poruszania pod wodą. +Efficiency=Wydajność +Increases mining speed.=Zwiększa prędkość wydobywania zasobów. +Feather Falling=Powolne opadanie +Reduces fall damage.=Zmniejsza obrażenia od upadku. +Fire Aspect=Zaklęty ogień +Sets target on fire.=Podpala cel. +Fire Protection=Ochrona przed ogniem +Reduces fire damage.=Zmniejsza obrażenia od ognia +Flame=Płomień +Arrows set target on fire.=Strzały podpalają cel. +Fortune=Fortuna +Increases certain block drops.=Zwiększa prawdopodobieństwo wypadnięcia przedmiotów z niektórych bloków. +Frost Walker=Mroźny piechur +Turns water beneath the player into frosted ice and prevents the damage from magma blocks.=Zamienia wodę pod graczem w oszroniony lód i pozwala uniknąć obrażeń od bloków magmy. +Impaling=Przebicie +Trident deals additional damage to ocean mobs.=Trójząb zadaje dodatkowe obrażenia podwodnym stworzeniom. +Infinity=Nieskończoność +Shooting consumes no regular arrows.=Strzelanie nie zużywa zwykłych strzał. +Knockback=Odrzut +Increases knockback.=Zwiększa odrzut. +Looting=Grabież +Increases mob loot.=Zwiększa liczbę przedmiotów wypadających z mobów. +Loyalty=Lojalność +Trident returns after being thrown. Higher levels reduce return time.=Trydent wraca do gracza po rzuceniu. Większy poziom zmniejsza czas powrotu. +Luck of the Sea=Morska fortuna +Increases rate of good loot (enchanting books, etc.)=Zwiększa szansę na wypadnięcie dobrych przediotów (zaklętych książek itp.) +Lure=Przynęta +Decreases time until rod catches something.=Zmniejsza czas po którym coś złapie się na wędkę +Mending=Naprawa +Repair the item while gaining XP orbs.=Naprawia przedmiot podczas podnoszenia kul doświaczenia. +Multishot=Wielostrzał +Shoot 3 arrows at the cost of one.=Wystrzel 3 strzały kosztem jednej. +Piercing=Przeszycie +Arrows passes through multiple objects.=Strzała przelatuje przez wiele obiektów. +Power=Moc +Increases arrow damage.=Zwiększa obrażenia od strzał. +Projectile Protection=Ochrona przed pociskami +Reduces projectile damage.=Zmniejsza obrażenia od pocisków. +Protection=Obrona +Reduces most types of damage by 4% for each level.=Zmniejsza obrażenia większości typów o 4% za każdy poziom. +Punch=Uderzenie +Increases arrow knockback.=Zwiększa odrzut strzał. +Quick Charge=Szybkie ładowanie +Decreases crossbow charging time.=Zmniejsza czas ładowania kuszy. +Respiration=Oddychanie +Extends underwater breathing time.=Zwiększa czas na który można wstrzymać oddech pod wodą. +Riptide=Torpeda +Trident launches player with itself when thrown. Works only in water or rain.=Trydent porywa gracza ze sobą podczas rzucania. Działa tylko w wodzie lub w deszczu. +Sharpness=Ostrość +Increases damage.=Zwiększa obrażenia. +Silk Touch=Jedwaby dotyk +Mined blocks drop themselves.=Z wydobywanych bloków wypadają one same. +Smite=Pogromca nieumarłych +Increases damage to undead mobs.=Zwiększa obrażenia zadawane nieumarłym mobom. +Soul Speed=Prędkość dusz +Increases walking speed on soul sand.=Zwiększa szybkość chodzenia po piasku dusz. +Sweeping Edge=Szerokie ostrze +Increases sweeping attack damage.=Zwiększa obrażenia przy ataku z zamachu. +Thorns=Ciernie +Reflects some of the damage taken when hit, at the cost of reducing durability with each proc.=Odbija część zadanych obrażeń kosztem utraty wytrzymałości zbroi. +Unbreaking=Niezniszczalność +Increases item durability.=Zwiększa wytrzymałość przedmiotu. +Inventory=Ekwipunek +@1 × Lapis Lazuli=@1 × Lazuryt +Enchantment levels: @1=Poziom zaklęcia: @1 +Level requirement: @1=Wymagany poziom: @1 +Enchant an item=Zaczaruj przedmiot + []= [] +Usage: /enchant []=Użycie: /enchant [] +Player '@1' cannot be found.=Gracz '@1' nie został znaleziony. +There is no such enchantment '@1'.=Nie ma takiego zaklęcia '@1'. +The target doesn't hold an item.=Cel nie trzyma żadnego przedmiotu. +The selected enchantment can't be added to the target item.=Wybrane zaklęcie nie może zostać zaaplikowane do docelowego przedmiotu. +'@1' is not a valid number='@1' nie jest poprawną liczbą. +The number you have entered (@1) is too big, it must be at most @2.=Liczba którą wpisałaś (@1) jest zbyt duża, nie może być większa niż @2. +The number you have entered (@1) is too small, it must be at least @2.=Liczba którą wpisałaś (@1) jest zbyt mała, nie może być mniejsza niż @2. +@1 can't be combined with @2.=@1 nie może być połączone z @2. +Enchanting succeded.=Zaklinanie powiodło się. +Forcefully enchant an item=Bezwzględnie zaczaruj przedmiot. +Usage: /forceenchant []=Użycie: /forceenchant [] +The target item is not enchantable.=Docelowego przedmiotu nie można zaklnąć. +'@1' is not a valid number.='@1' nie jset poprawną liczbą. +Enchanted Book=Zaklęta książka +Enchanting Table=Stół do zaklinania +Enchant=Zaczaruj From 9e41d5874ae5f03742295fa0cba7454a6b19d613 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 15:08:57 +0200 Subject: [PATCH 034/418] Add polish translation of mcl_potions --- .../mcl_potions/locale/mcl_potions.pl.tr | 115 ++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 mods/ITEMS/mcl_potions/locale/mcl_potions.pl.tr diff --git a/mods/ITEMS/mcl_potions/locale/mcl_potions.pl.tr b/mods/ITEMS/mcl_potions/locale/mcl_potions.pl.tr new file mode 100644 index 000000000..0ab90c902 --- /dev/null +++ b/mods/ITEMS/mcl_potions/locale/mcl_potions.pl.tr @@ -0,0 +1,115 @@ +# 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%)=Dodaj status na siebie. Arguemnty: : nazwa efektu statusu, np. trucizna. : czas trwania w sekundach. : czynnik siły efektu (1 @= 100%) + +Missing effect parameter!=Brak parametru efektu! +Missing or invalid duration parameter!=Brak lub nieprawidłowy parametr czasu trwania! +Invalid factor parameter!=Nieprawidłowy parametr czynnika! +@1 is not an available status effect.=@1 nie jest dostępnym efektem statusu. +Fermented Spider Eye=Fermentowane oko pająka +Glass Bottle=Szklana butelka +Liquid container=Pojemnik na płyn + +A glass bottle is used as a container for liquids and can be used to collect water directly.=Szklana butelka jest używana jako pojemnik na płyny i może być wykorzystana bezpośrednio do pozyskiwania wody. + +To collect water, use it on a cauldron with water (which removes a level of water) or any water source (which removes no water).=Aby pozyskać wodę użyj jej na kotle z wodą (co usunie jeden poziom wody) lub jakimkolwiek źródle wody (co nie usunie wody). + +Water Bottle=Butelka wody +Water bottles can be used to fill cauldrons. Drinking water has no effect.=Butelka wody może być wykorzystana do napełniania kotłów. Picie wody nie ma żadnych efektów. + +Use the “Place” key to drink. Place this item on a cauldron to pour the water into the cauldron.=Użyj przycisku do stawiania aby pić. Postaw ten przedmiot na kotle aby wylać wodę do kotła. + +River Water Bottle=Butelka wody rzecznej +River water bottles can be used to fill cauldrons. Drinking it has no effect.=Butelka wody rzecznej może być wykorzystana do napełniania kotłów. Picie jej nie ma żadnego efektu. + +Use the “Place” key to drink. Place this item on a cauldron to pour the river water into the cauldron.=Użyj przycisku do stawiania aby pić. Postaw ten przedmiot na kotle aby wylać wodę rzeczną do kotła. + +Splash Water Bottle=Miotana butelka wody +Extinguishes fire and hurts some mobs=Gasi ogień i rani niektóre moby + +A throwable water bottle that will shatter on impact, where it extinguishes nearby fire and hurts mobs that are vulnerable to water.=Butelka wody którą można rzucać i roztrzaska się przy uderzeniu, gdzie ugasi ogień i rani moby podatne na wodę. + +Lingering Water Bottle=Trwała miotana butelka wody + +A throwable water bottle that will shatter on impact, where it creates a cloud of water vapor that lingers on the ground for a while. This cloud extinguishes fire and hurts mobs that are vulnerable to water.=Butelka wody którą można rzucać i roztrzaska się przy uderzeniu tworząc opary wody pozostające przez chwilę na ziemi. Opary te gaszą ogień i ranią moby podatne na wodę. + +Glistering Melon=Błyszczący arbuz + +This shiny melon is full of tiny gold nuggets and would be nice in an item frame. It isn't edible and not useful for anything else.=Ten błyszcący arbuz jest pełen tycich odłamków złota i wygląda ładnie w ramkach na przedmioty. Nie jest jadalny ani użyteczny do innych rzeczy. + +A throwable potion that will shatter on impact, where it creates a magic cloud that lingers around for a while. Any player or mob inside the cloud will receive the potion's effect, possibly repeatedly.=Mikstura którą można rzucać i roztrzaska się przy uderzeniu tworząc magiczne opary pozostające przez chwilę na ziemi. Jakikolwiek gracz lub mob wewnątrz oparów będzie wystawiony na efekt mikstury. + +Use the “Punch” key to throw it.=Użyj przycisku "Uderz" by rzucić. +Use the “Place” key to drink it.=Użyj przycisku "Postaw" by wypić. +Drinking a potion gives you a particular effect.=Wypicie mikstury sprawi, że będziesz wystawiona na jej efekty. +1 HP/@1s | @2=1 HP/@1s | @2 +@1 HP=@1 HP +@1 Potion=Mikstura @1 +Splash @1 Potion=Miotana mikstura @1 +Lingering @1 Potion=Trwała miotana mikstura @1 +Arrow of @1=Strzała @1 + II= II + IV= IV +@1 Potion@2=Mikstura @1@2 +Splash @1@2 Potion=Miotana mikstura @1@2 +Lingering @1@2 Potion=Trwała miotana mikstura @1@2 +Arrow of @1@2=Strzała @1@2 +@1 + Potion=Mikstura @1 + +Splash @1 + Potion=Miotana mikstura @1 + +Lingering @1 + Potion=Trwała miotana mikstura @1 + +Arrow of @1 +=Strzała @1 + +Awkward Potion=Klarowna mikstura +Awkward Splash Potion=Klarowna miotana mikstura +Awkward Lingering Potion=Klarowna trwała miotana mikstura +Has an awkward taste and is used for brewing potions.=Ma dziwny smak i jest użyteczna przy warzenia mikstur. +Mundane Potion=Mdła mikstura +Mundane Splash Potion=Mdła miotana mikstura +Mundane Lingering Potion=Mdła trwała miotana mikstura +Has a terrible taste and is not useful for brewing potions.=Ma ochydny smak i nie jest użyteczna przy warzenia mikstur. +Thick Potion=Gęsta imkstura +Thick Splash Potion=Gęsta miotana mikstura +Thick Lingering Potion=Gęsta trwała miotana mikstura +Has a bitter taste and is not useful for brewing potions.=Ma cierpki smak i nie jest użyteczna przy warzenia mikstur. +Dragon's Breath=Oddech smoka + +This item is used in brewing and can be combined with splash potions to create lingering potions.=Ten przediot jest używany przy ważeniu i może zostać dodany do miotanych mikstur aby uczynić je trwałymi. + +Healing=leczenia ++4 HP=+4 HP ++8 HP=+8 HP +Instantly heals.=Natychmiastowo leczy. +Harming=obrażeń +-6 HP=-6 HP +-12 HP=-12 HP +Instantly deals damage.=Natychimastowo zadaje obrażenia. +Night Vision=widzenia w ciemności +Increases the perceived brightness of light under a dark sky.=Zwiększa postrzeganą jasność przy ciemnym niiebie. +Swiftness=prędkości +Increases walking speed.=Zwiększa prędkość poruszania. +Slowness=spowolnienia +Decreases walking speed.=Zmniejsza prędkość poruszania. +Leaping=skakania +Increases jump strength.=Zwiększa siłę skoku. +Poison=trucizny +Applies the poison effect which deals damage at a regular interval.=Aplikuje efekt trucizny zadający obrażenia w regularnych odstępach czasu. +Regeneration=regeneracji +Regenerates health over time.=Regeneruje życie przez pewiec czas. +Invisibility=niewidzialności +Grants invisibility.=Sprawia, że cel jest niewidzialny. +Water Breathing=oddychania pod wodą +Grants limitless breath underwater.=Sprawia, że cel może oddychać pod wodą. +Fire Resistance=odporności na ogień +Grants immunity to damage from heat sources like fire.=Sprawia, że cel jest odporny na obrażenia od źródeł ciepła takich jak ogień. +Weakness=słabości +Weakness +=słabości + +Strength=siły +Strength II=siły II +Strength +=siły + +Try different combinations to create potions.=Spróbuj innej kombinacji aby stworzyć miksturę. +No effect=Brak efektu + +A throwable potion that will shatter on impact, where it gives all nearby players and mobs a status effect.=Mikstura, którą można rzucić i rozbije się przy uderzeniu wystawiając wszystkich pobliskich graczy i moby na efekt jej działania. + +This particular arrow is tipped and will give an effect when it hits a player or mob.=Czubek tej strzały jest zanurzony w mikstrurze co wystawi jej cel na efekt jej działania. + From 38d788998dcd306d73287a50cf4c2d397512af3b Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 15:19:40 +0200 Subject: [PATCH 035/418] Add polish translation of mcl_doors --- mods/ITEMS/mcl_doors/locale/mcl_doors.pl.tr | 24 +++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 mods/ITEMS/mcl_doors/locale/mcl_doors.pl.tr diff --git a/mods/ITEMS/mcl_doors/locale/mcl_doors.pl.tr b/mods/ITEMS/mcl_doors/locale/mcl_doors.pl.tr new file mode 100644 index 000000000..48789f81f --- /dev/null +++ b/mods/ITEMS/mcl_doors/locale/mcl_doors.pl.tr @@ -0,0 +1,24 @@ +# textdomain: mcl_doors +Wooden doors are 2-block high barriers which can be opened or closed by hand and by a redstone signal.=Drewniane drzwi są blokami o wysokości 2, które mogą być otworzone i zamkniętę ręcznie bądź przez zasilenie czerwienitem. +To open or close a wooden door, rightclick it or supply its lower half with a redstone signal.=Aby otworzyć lub zamknąć drewniane drzwi, kliknij je prawym przyciskiem bądź zasil ich dolną połowę czerwienitem. +Oak Door=Dębowe drzwi +Acacia Door=Akacjowe drzwi +Birch Door=Brzozowe drzwi +Dark Oak Door=Ciemno-dębowe drzwi +Jungle Door=Tropikalne drzwi +Spruce Door=Świerkowe drzwi +Iron Door=Żelazne drzwi +Iron doors are 2-block high barriers which can only be opened or closed by a redstone signal, but not by hand.=Żelazne drzwi są blokami o wysokości dwa, które mogą być otware lub zamknięte przez zasilanie czerwienitem, ale nie ręcznie. +To open or close an iron door, supply its lower half with a redstone signal.=Aby otworzyć lub zamknąć żelazne drzwi zasil ich dolną część czerwienitem. +Oak Trapdoor=Dębowa klapa +Acacia Trapdoor=Akacjowa klapa +Birch Trapdoor=Brzozowa klapa +Spruce Trapdoor=Świerkowa klapa +Dark Oak Trapdoor=Ciemno-dębowa klapa +Jungle Trapdoor=Tropikalna klapa +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.=Drewniane klapy są poziomymi barierami, które mogą być otwarte i zamknięte ręcznie bądź przez zasilenie czerwienitem. Zajmują główną lub dolną część bloku w zależności od tego jak zostaną postawione. Gdy są otwarte można się po nich wspinac jak po drabinie. +To open or close the trapdoor, rightclick it or send a redstone signal to it.=Aby otworzyć lub zamknąć drewniane klapy, kliknij je prawym przyciskiem bądź zasil ich dolną połowę czerwienitem. +Iron Trapdoor=Żelazna klapa +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.=Żelazne klapy są poziomymi barierami, które mogą być otwarte i zamknięte tylko przez zasilenie czerwienitem, ale nie ręcznie. Zajmują główną lub dolną część bloku w zależności od tego jak zostaną postawione. Gdy są otwarte można się po nich wspinac jak po drabinie. +Openable by players and redstone power=Mogą być otworzone przez graczy i zasilanie czerwienitem +Openable by redstone power=Mogą być otworzone przez zasilanie czerwienitem From cec4011de2fb1cb4b70cacb66e070b7849cb2dd3 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 15:29:33 +0200 Subject: [PATCH 036/418] Add polish translation of mcl_hoppers --- mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.pl.tr | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.pl.tr diff --git a/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.pl.tr b/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.pl.tr new file mode 100644 index 000000000..9b85c594b --- /dev/null +++ b/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.pl.tr @@ -0,0 +1,16 @@ +# textdomain: mcl_hoppers +Hopper=Lej +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.=Leje są pojemnikami z 5 miejscami ekwipunku. Zbierają upuszczone na nie z góry przedmioty, przedmioty z pojemników na nimi i próbują je umieścić w przyległych pojemnikach. Leje mogą być skierowane w dół bądź w bok. Leje wchodzą w interakcję ze skrzyniami, podajnikami, dozownikami, shulkerowymi skrzyniami, piecami i lejami. +Hoppers interact with containers the following way:=Leje wchodzą w interakcję z pojemnikami w następujący sposób: +• 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=Piece: leje nad nimi będą umiejszczać przedmioty w miejsce materiału źródłowego. Leje z dołu będą brały przedmioty z miejsca wyjściowego. Będą także zabierały przedmioty z miejsca na paliwo jeśli nie można ich użyć jako paliwo. Boczne leje wskazujące na piec będą wstawiać przedmioty w miejsce na paliwo. +• Ender chests: No interaction.=Skrzynie kresu: nie wchodzą w interakcję. +• Other containers: Normal interaction.=Inne pojemniki: zwykła ineterakcja. +Hoppers can be disabled when supplied with redstone power. Disabled hoppers don't move items.=Leje mogą być wyłączone sygnałem z czerwienitu. +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.=Aby postawić lej pionowo postaw go na podłodze lub suficie. Aby postawić go bocznie ustaw go na boku bloku. Kliknij "Użyj" na leju by zarządzać jego ekwipunkiem. +Disabled Hopper=Wyłączony lej +Side Hopper=Boczny lej +Disabled Side Hopper=Wyłączony boczny lej +Inventory=Ekwipunek +5 inventory slots=5 miejsc w ekwipunku +Collects items from above, moves items to container below=Zbiera przedmioty z góry, umieszcza je w pojemniku pod spodem +Can be disabled with redstone power=Może być wyłączony czerwienitem From 33f22f4eedda45342c5c72342104aad0da6f2279 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 15:33:37 +0200 Subject: [PATCH 037/418] Add polish translation of mcl_compass --- mods/ITEMS/mcl_compass/locale/mcl_compass.pl.tr | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 mods/ITEMS/mcl_compass/locale/mcl_compass.pl.tr diff --git a/mods/ITEMS/mcl_compass/locale/mcl_compass.pl.tr b/mods/ITEMS/mcl_compass/locale/mcl_compass.pl.tr new file mode 100644 index 000000000..1b36effc7 --- /dev/null +++ b/mods/ITEMS/mcl_compass/locale/mcl_compass.pl.tr @@ -0,0 +1,4 @@ +# textdomain: mcl_compass +Compasses are tools which point to the world origin (X@=0, Z@=0) or the spawn point in the Overworld.=Kompasy to narzędzia które wskazują na punkt początku świata (X@=0, Z@=0) lub na miejsce odrodzenia w normalnym świecie. +Compass=Kompas +Points to the world origin=Wskazuje na początek świata From 42d2dfed19013b6559d80f856f973b0942342bfa Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 15:48:00 +0200 Subject: [PATCH 038/418] Add polish translation of mcl_chests --- mods/ITEMS/mcl_chests/locale/mcl_chests.pl.tr | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 mods/ITEMS/mcl_chests/locale/mcl_chests.pl.tr diff --git a/mods/ITEMS/mcl_chests/locale/mcl_chests.pl.tr b/mods/ITEMS/mcl_chests/locale/mcl_chests.pl.tr new file mode 100644 index 000000000..e9f7c4357 --- /dev/null +++ b/mods/ITEMS/mcl_chests/locale/mcl_chests.pl.tr @@ -0,0 +1,36 @@ +# textdomain: mcl_chests +Chest=Skrzynia +Chests are containers which provide 27 inventory slots. Chests can be turned into large chests with double the capacity by placing two chests next to each other.=Skrzynie to pojemniki zawierające 27 miejsc ekwipunku. Skrzynie można zmienić w wielkie skrzynie z podwojoną pojemnością kładąc dwie skrzynie jedna obok drugiej. +To access its inventory, rightclick it. When broken, the items will drop out.=Aby zarządzać jej ekwipunkiem kliknij prawym przyciskiem. Po zniszczeniu przedmioty z niej wypadną. +Trapped Chest=Skrzynia-pułapka +A trapped chest is a container which provides 27 inventory slots. When it is opened, it sends a redstone signal to its adjacent blocks as long it stays open. Trapped chests can be turned into large trapped chests with double the capacity by placing two trapped chests next to each other.=Skrzynia pułapka jest pojemnikiem zawierającym 27 miejsc ekwipunku. Gdy jest otwarta wysyła ona zasila czerwienit na sąsiadujących blokach tak długo jak jest otwarta. Skrzynie-pułapki można zmienić w wielkie skrzynie-pułapki z podwojoną pojemnością przez położenie dwóch skryznek-pułapek jedna obok drugiej. +Ender Chest=Skrzynia kresu +Ender chests grant you access to a single personal interdimensional inventory with 27 slots. This inventory is the same no matter from which ender chest you access it from. If you put one item into one ender chest, you will find it in all other ender chests. Each player will only see their own items, but not the items of other players.=Skrzynie kresu dają dostęp do pojedynczego, osobistego, międzywymiarowego ekwipunku z 27 miejscami. Ten ekwipunek będzie zawierał to samo niezależnie od skrzyni kresu z której nim zarządzasz. Jeśli włożysz przedmiot do jednej skrzyni kresu, znajdziesz go we wszystkich innych. każdy gracz będzie widział tylko swoje przedmioty, a nie innych graczy. +Rightclick the ender chest to access your personal interdimensional inventory.=Kliknij prawym w skrzynię kresu aby mieć dostęp do twojego osobistego, międzywymiarowego ekwipunku. +White Shulker Box=Biała shulkerowa skrzynia +Light Grey Shulker Box=Jasnoszara shulkerowa skrzynia +Orange Shulker Box=Pomarańczowa shulkerowa skrzynia +Cyan Shulker Box=Błękitna shulkerowa skrzynia +Magenta Shulker Box=Karmazynowa shulkerowa skrzynia +Purple Shulker Box=Fioletowa shulkerowa skrzynia +Light Blue Shulker Box=Jasnoniebieska shulkerowa skrzynia +Blue Shulker Box=Niebieska shulkerowa skrzynia +Yellow Shulker Box=Żółta shulkerowa skrzynia +Brown Shulker Box=Brązowa shulkerowa skrzynia +Lime Shulker Box=Jasnozielona shulkerowa skrzynia +Green Shulker Box=Zielona shulkerowa skrzynia +Pink Shulker Box=Różowa shulkerowa skrzynia +Red Shulker Box=Czerwona shulkerowa skrzynia +Grey Shulker Box=Szara shulkerowa skrzynia +Black Shulker Box=Czarna shulkerowa skrzynia +A shulker box is a portable container which provides 27 inventory slots for any item except shulker boxes. Shulker boxes keep their inventory when broken, so shulker boxes as well as their contents can be taken as a single item. Shulker boxes come in many different colors.=Shulkerowe skrzynie to przenośny pojemnik udostępniający 27 miejsc ekwipunku na dowolny przedmiot z wyjątkiem shulkerowych skrzyń. Shulkerowe skrzynie nie tracą swojego ekwipunku po zniszczeniu, więc te skrzynie razem z całą zawartością mogą być przechowywane jako pojedynczy przedmiot. +To access the inventory of a shulker box, place and right-click it. To take a shulker box and its contents with you, just break and collect it, the items will not fall out. Place the shulker box again to be able to retrieve its contents.=Aby dostać się do przedmiotów w shulkerowej skrzyni postaw ją i naciśnij ją prawym. Aby wziąć shulkerową skrzynię i jej zawartość ze sobą, zniszcz ją i zbierz, przedmioty nie wypadną. +Shulker Box=Shulkerowa skrzynia +Large Chest=Duża skrzynia +Inventory=Ekwipunek +27 inventory slots=27 miejsc ekwipunku +Can be carried around with its contents=Może być przenoszona razem z zawartością +Can be combined to a large chest=Może być połączona w dużą skrzynię +27 interdimensional inventory slots=27 międzywymiarowych miejsc ekwipunku +Put items inside, retrieve them from any ender chest=Włóż do niej przedmioty, miej do nich dostęp z dowolnej skrzyni kresu +Emits a redstone signal when opened=Aktywuje pobliski czerwienit gdy otwarta From 883bd0f437ff1cc44837e083a395ccf7114d968d Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 15:58:13 +0200 Subject: [PATCH 039/418] Add polish translation of findbiome --- mods/MISC/findbiome/locale/findbiome.pl.tr | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 mods/MISC/findbiome/locale/findbiome.pl.tr diff --git a/mods/MISC/findbiome/locale/findbiome.pl.tr b/mods/MISC/findbiome/locale/findbiome.pl.tr new file mode 100644 index 000000000..d5299220d --- /dev/null +++ b/mods/MISC/findbiome/locale/findbiome.pl.tr @@ -0,0 +1,10 @@ +# textdomain: findbiome +Find and teleport to biome=Znajdź i teleportuj do biomu += +No player.=Brak gracza. +Biome does not exist!=Biom nie istnieje! +Biome found at @1.=Nie znaleziono biomu w @1. +No biome found!=Nie znaleziono biomu! +List all biomes=Lista biomów. +No biomes.=Brak biomów. +Not supported. The “biomeinfo” mod is required for v6 mapgen support!=Nie wspierane. Aby wspierać generator map v6 wyamagany jest mod "biomeinfo"! From 6fb94fb4119dd03373ebd709b114db98930cf8e0 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 16:23:54 +0200 Subject: [PATCH 040/418] Add polish translation of mcl_portals --- mods/ITEMS/mcl_portals/locale/mcl_portals.pl.tr | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 mods/ITEMS/mcl_portals/locale/mcl_portals.pl.tr diff --git a/mods/ITEMS/mcl_portals/locale/mcl_portals.pl.tr b/mods/ITEMS/mcl_portals/locale/mcl_portals.pl.tr new file mode 100644 index 000000000..366cad0a3 --- /dev/null +++ b/mods/ITEMS/mcl_portals/locale/mcl_portals.pl.tr @@ -0,0 +1,15 @@ +# textdomain: mcl_portals +End Portal=Portal Kresu +An End portal teleports creatures and objects to the mysterious End dimension (and back!).=Portal Kresu teleportuje osoby i rzeczy do tajemniczego wymiaru Kresu (i z powrotem!). +Hop into the portal to teleport. Entering an End portal in the Overworld teleports you to a fixed position in the End dimension and creates a 5×5 obsidian platform at your destination. End portals in the End will lead back to your spawn point in the Overworld.=Wskocz do portalu by się teleportować. Wejście do portalu Kresu na Powierzchni przeniesie cię do ustalonej pozycij w wymiarze Kresu i tworzy obsydianową platformę 5×5 w tym miejscu. Portal Kresu w Kresie przeniesie cię do twojego miejsca odradzania. +End Portal Frame=Rama portalu Kresu +End portal frames are used in the construction of End portals. Each block has a socket for an eye of ender.=Ramy portalu Kresu są wykorzystywane do konstrukcji portali Kresu. Każdy blok ma miejsce na oko Kresu. +NOTE: The End dimension is currently incomplete and might change in future versions.=UWAGA: Wymiar Kresu jest aktualnie nieukończony i może się zmienić w przyszłych wersjach. +End Portal Frame with Eye of Ender=Rama portalu Kresu z okiem Kresu. +Nether Portal=Portal Netheru +A Nether portal teleports creatures and objects to the hot and dangerous Nether dimension (and back!). Enter at your own risk!=Portal Netheru teleportuje osoby i obiekty do gorącego i niebezpiecznego wymiaru Nether (i z powrotem!). Wejdź na własne ryzyko! +Stand in the portal for a moment to activate the teleportation. Entering a Nether portal for the first time will also create a new portal in the other dimension. If a Nether portal has been built in the Nether, it will lead to the Overworld. A Nether portal is destroyed if the any of the obsidian which surrounds it is destroyed, or if it was caught in an explosion.=Stań w portalu na krótki moment aby aktywować teleport. Wejście przez portal Netheru po raz pierwszy stworzy również nowy portal w drugim wymiarze. Jeśli portal Netheru został zbudowany w Netherze będzie prowadził z powrotem na Powierzchnę. Portal Netheru przestanie działać jeśli któryś z otaczających go bloków obsydianu zostanie zniszczony lub gdy dosięgnie go wybuch. +Obsidian is also used as the frame of Nether portals.=Obsydian jest również wykorzystywany do budowania portali Netheru. +To open a Nether portal, place an upright frame of obsidian with a width of at least 4 blocks and a height of 5 blocks, leaving only air in the center. After placing this frame, light a fire in the obsidian frame. Nether portals only work in the Overworld and the Nether.=Aby otworzyć portal Netheru umieść ramę z obsydianu o szerokości co najmniej 4 i wysokości 5 bloków, zostawiając tylko powietrze wewnątrz. Po postawieniu tej ramy rozpal ogień wewnątrz ramy. Portaly Netheru działają tylko w Netherze i na Powierzchni. +Once placed, an eye of ender can not be taken back.=Raz umieszczone oko Kresu nie może być odzyskane +Used to construct end portals=Używane do konstrukcji portali Kresu From 9472f86025b11c13b3f744c2f96872e88724c822 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 17:57:25 +0200 Subject: [PATCH 041/418] Fix spellchecking errors --- .../ENTITIES/mcl_boats/locale/mcl_boats.pl.tr | 2 +- .../mcl_minecarts/locale/mcl_minecarts.pl.tr | 2 +- mods/ENTITIES/mcl_mobs/locale/mcl_mobs.pl.tr | 4 +- mods/ITEMS/mcl_anvils/locale/mcl_anvils.pl.tr | 6 +-- mods/ITEMS/mcl_armor/locale/mcl_armor.pl.tr | 2 +- .../mcl_banners/locale/mcl_banners.pl.tr | 2 +- .../mcl_cauldrons/locale/mcl_cauldrons.pl.tr | 2 +- mods/ITEMS/mcl_chests/locale/mcl_chests.pl.tr | 2 +- .../mcl_compass/locale/mcl_compass.pl.tr | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.pl.tr | 40 +++++++++---------- mods/ITEMS/mcl_doors/locale/mcl_doors.pl.tr | 8 ++-- mods/ITEMS/mcl_dye/locale/mcl_dye.pl.tr | 8 ++-- .../locale/mcl_enchanting.pl.tr | 12 +++--- .../mcl_flowers/locale/mcl_flowers.pl.tr | 2 +- .../mcl_hoppers/locale/mcl_hoppers.pl.tr | 4 +- .../mcl_portals/locale/mcl_portals.pl.tr | 6 +-- .../mcl_potions/locale/mcl_potions.pl.tr | 20 +++++----- .../mcl_sponges/locale/mcl_sponges.pl.tr | 2 +- .../mcl_throwing/locale/mcl_throwing.pl.tr | 4 +- mods/ITEMS/mclx_core/locale/mclx_core.pl.tr | 2 +- .../mclx_stairs/locale/mclx_stairs.pl.tr | 8 ++-- mods/MISC/findbiome/locale/findbiome.pl.tr | 2 +- .../mcl_commands/locale/mcl_commands.pl.tr | 2 +- 23 files changed, 72 insertions(+), 72 deletions(-) diff --git a/mods/ENTITIES/mcl_boats/locale/mcl_boats.pl.tr b/mods/ENTITIES/mcl_boats/locale/mcl_boats.pl.tr index 40b37e68c..dd071bc10 100644 --- a/mods/ENTITIES/mcl_boats/locale/mcl_boats.pl.tr +++ b/mods/ENTITIES/mcl_boats/locale/mcl_boats.pl.tr @@ -6,6 +6,6 @@ Boats are used to travel on the surface of water.=Łodzie są wykorzystywane do Dark Oak Boat=Ciemno-dębowa łódź Jungle Boat=Tropikalna łódź Oak Boat=Dębowa łódź -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. Rightclick the boat again to leave it, punch the boat to make it drop as an item.=Kliknij prawym przyciskiem myszy na źródło wody by postawić łódź. Kliknij prawym przyciskiem myszy by w nią wsiąść. Użyj przycisków [Left] and [Right] by sterować, [Forwards] by przyspieszyć i [Backwards] by zwolnić lub się cofać. Ponownie kliknij prawym przyciskiem na łódź by z niej wyjść, uderz ją by wziąc ją jako przedmiot. +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. Rightclick the boat again to leave it, punch the boat to make it drop as an item.=Kliknij prawym przyciskiem myszy na źródło wody by postawić łódź. Kliknij prawym przyciskiem myszy by w nią wsiąść. Użyj przycisków [Lewy] oraz [Prawy] by sterować, [Naprzód] by przyspieszyć i [W tył] by zwolnić lub się cofać. Ponownie kliknij prawym przyciskiem na łódź by z niej wyjść, uderz ją by wziąć ją jako przedmiot. Spruce Boat=Świerkowa łódź Water vehicle=Pojazd wodny diff --git a/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.pl.tr b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.pl.tr index 9cfd53e6c..b36ec5eb1 100644 --- a/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.pl.tr +++ b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.pl.tr @@ -22,7 +22,7 @@ Powered Rail=Zasilane tory Rails can be used to build transport tracks for minecarts. Powered rails are able to accelerate and brake minecarts.=Tory mogą być wykorzystane do zbudowania torów dla wagoników. Zasilane tory mogą przyspieszać lub spowalniać wagoniki. Without redstone power, the rail will brake minecarts. To make this rail accelerate minecarts, power it with redstone power.=Bez zasilania czerwienitem tory będą spowalniać wagoniki. Aby sprawić by je przyspieszały zasil je czerwienitem. Activator Rail=Tory aktywacyjne -Rails can be used to build transport tracks for minecarts. Activator rails are used to activate special minecarts.=Tory mogą być wykorzystane do zbudowania torów dla wagoników. Tory aktywacyjne są wykorzystywane do aktywacyji specjalnych wagoników. +Rails can be used to build transport tracks for minecarts. Activator rails are used to activate special minecarts.=Tory mogą być wykorzystane do zbudowania torów dla wagoników. Tory aktywacyjne są wykorzystywane do aktywacji specjalnych wagoników. To make this rail activate minecarts, power it with redstone power and send a minecart over this piece of rail.=Aby ten tor aktywował wagonik, zasil go czerwienitem i spraw by wagonik po nim przejechał. Detector Rail=Tory z czujnikiem 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.=Tory mogą być wykorzystane do zbudowania torów dla wagoników. Tory z czujnikiem są w stanie wykryć kiedy wagonik po nich przejeżdża i wysłać sygnał do czerwienitowych mechanizmów. diff --git a/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.pl.tr b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.pl.tr index 785ce7579..96dc1ea15 100644 --- a/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.pl.tr +++ b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.pl.tr @@ -1,6 +1,6 @@ # textdomain: mcl_mobs -Peaceful mode active! No monsters will spawn.=Tryb pokojowy aktywowawany! Potwory nie będą się pojawiać. -This allows you to place a single mob.=To pozwala na spawn jednego moba. +Peaceful mode active! No monsters will spawn.=Tryb pokojowy aktywowany! Potwory nie będą się pojawiać. +This allows you to place a single mob.=To pozwala na przywołanie jednego moba. 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.=Postaw to w miejscu w którym chcesz aby pojawił się mob. Zwierzęta pojawią się jako oswojone chyba, że będziesz się skradał podczas stawiania. Jeśli postawisz to na spawnerze to zmienisz którego moba przywołuje. You need the “maphack” privilege to change the mob spawner.=Potrzebujesz przywileju "maphack", aby zmienić spawner. Name Tag=Znacznik diff --git a/mods/ITEMS/mcl_anvils/locale/mcl_anvils.pl.tr b/mods/ITEMS/mcl_anvils/locale/mcl_anvils.pl.tr index 36bd43851..cf778e554 100644 --- a/mods/ITEMS/mcl_anvils/locale/mcl_anvils.pl.tr +++ b/mods/ITEMS/mcl_anvils/locale/mcl_anvils.pl.tr @@ -4,11 +4,11 @@ Repair and Name=Napraw i nazwij Inventory=Ekwipunek Anvil=Kowadło The anvil allows you to repair tools and armor, and to give names to items. It has a limited durability, however. Don't let it fall on your head, it could be quite painful!=Kowadło pozwala naprawiać przedmioty i zbroje, a także nazywać przedmioty. Ma jednak ograniczoną wytrzymałość. Nie pozwól by spadło ci na głowę, bo będzie bardzo boleśnie! -To use an anvil, rightclick it. An anvil has 2 input slots (on the left) and one output slot.=Aby użyć kowadła, kliknij je prawym przyciskiem. Kowdało ma dwa miejsca wejściowe (po lewej) i jedno miejsce wyjściowe. +To use an anvil, rightclick it. An anvil has 2 input slots (on the left) and one output slot.=Aby użyć kowadła, kliknij je prawym przyciskiem. Kowadło ma dwa miejsca wejściowe (po lewej) i jedno miejsce wyjściowe. To rename items, put an item stack in one of the item slots while keeping the other input slot empty. Type in a name, hit enter or “Set Name”, then take the renamed item from the output slot.=Aby zmienić nazwę przedmiotów, włóż grupę przedmiotów w jedno z miejsc i zostaw drugie miejsce puste. Wpisz imię, kliknij "Ustaw imię", a następnie wyjmij przemianowane przedmioty z miejsca wyjściowego. There are two possibilities to repair tools (and armor):=Są dwie możliwości naprawiania przedmiotów (i zbroi): -• Tool + Tool: Place two tools of the same type in the input slots. The “health” of the repaired tool is the sum of the “health” of both input tools, plus a 12% bonus.=Narzędzie + narzędzie: Wstaw dwa narzędzia tego samego typu w miejscach wejściowych. "Życie" naprawionego w ten sposób narzędzia jest sumą "żyć" obu narzędź wejściowych plus 12% bonusu. -• Tool + Material: Some tools can also be repaired by combining them with an item that it's made of. For example, iron pickaxes can be repaired with iron ingots. This repairs the tool by 25%.=Narzędzie + materiał: Niektóre narzędzia mogą być naprawiane przez łączanie ich z przedmiotem z którego są wykonane. Przykładowo żelazne kilofy mogą być naprawione przy użyciu sztabek żelaza. To przywraca 25% "życia" narzędzia. +• Tool + Tool: Place two tools of the same type in the input slots. The “health” of the repaired tool is the sum of the “health” of both input tools, plus a 12% bonus.=Narzędzie + narzędzie: Wstaw dwa narzędzia tego samego typu w miejscach wejściowych. "Życie" naprawionego w ten sposób narzędzia jest sumą "żyć" obu narzędzi wejściowych plus 12% bonusu. +• Tool + Material: Some tools can also be repaired by combining them with an item that it's made of. For example, iron pickaxes can be repaired with iron ingots. This repairs the tool by 25%.=Narzędzie + materiał: Niektóre narzędzia mogą być naprawiane przez łączenie ich z przedmiotem z którego są wykonane. Przykładowo żelazne kilofy mogą być naprawione przy użyciu sztabek żelaza. To przywraca 25% "życia" narzędzia. Armor counts as a tool. It is possible to repair and rename a tool in a single step.=Zbroje liczą się tu jako narzędzia. Możliwe jest jednoczesna naprawa i przemianowanie przedmiotu. The anvil has limited durability and 3 damage levels: undamaged, slightly damaged and very damaged. Each time you repair or rename something, there is a 12% chance the anvil gets damaged. Anvils also have a chance of being damaged when they fall by more than 1 block. If a very damaged anvil is damaged again, it is destroyed.=Kowadło ma ograniczoną wytrzymałość i trzy poziomu uszkodzenia: nieuszkodzone, lekko uszkodzone i bardzo uszkodzone. Za każdym razem gdy naprawiasz lub przemianowujesz coś jest 12% szans, że kowadło się uszkodzi. Kowadła mogą się również uszkodzić gdy spadają z wysokości większej niż jeden blok. Jeśli bardzo uszkodzone kowadło zostanie uszkodzone jeszcze raz, zostanie zniszczone. Slightly Damaged Anvil=Lekko uszkodzone kowadło diff --git a/mods/ITEMS/mcl_armor/locale/mcl_armor.pl.tr b/mods/ITEMS/mcl_armor/locale/mcl_armor.pl.tr index b9307b492..32236113e 100644 --- a/mods/ITEMS/mcl_armor/locale/mcl_armor.pl.tr +++ b/mods/ITEMS/mcl_armor/locale/mcl_armor.pl.tr @@ -1,5 +1,5 @@ # textdomain: mcl_armor -This is a piece of equippable armor which reduces the amount of damage you receive.=Jest to część ekwipowalnej zbroi, która zmniejsza otrzymywane obrażenia. +This is a piece of equippable armor which reduces the amount of damage you receive.=Jest to część możliwej do założenia zbroi, która zmniejsza otrzymywane obrażenia. To equip it, put it on the corresponding armor slot in your inventory menu.=Aby ją założyć, upuść ją na odpowiadającym miejscu na zbroję na ekranie ekwipunku. Leather Cap=Skórzana czapka Iron Helmet=Żelazny hełm diff --git a/mods/ITEMS/mcl_banners/locale/mcl_banners.pl.tr b/mods/ITEMS/mcl_banners/locale/mcl_banners.pl.tr index 0f4264dd3..31c12d88a 100644 --- a/mods/ITEMS/mcl_banners/locale/mcl_banners.pl.tr +++ b/mods/ITEMS/mcl_banners/locale/mcl_banners.pl.tr @@ -53,7 +53,7 @@ You can copy the pattern of a banner by placing two banners of the same color in @1 Per Pale Inverted=@1 z prawą połową @1 Thing Charge=@1 kształt czegoś @1 Lozenge=@1 romb -@1 Skull Charge=@1 kształ czaszki +@1 Skull Charge=@1 kształt czaszki @1 Paly=@1 z pionowymi paskami @1 Base Dexter Canton=@1 lewy dolny róg @1 Base Sinister Canton=@1 prawy dolny róg diff --git a/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.pl.tr b/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.pl.tr index e47b5f460..2f77c77d0 100644 --- a/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.pl.tr +++ b/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.pl.tr @@ -1,6 +1,6 @@ # textdomain: mcl_cauldron Cauldron=Kocioł -Cauldrons are used to store water and slowly fill up under rain. They can also be used to wash off banners.=Kotły są wykorzystywane do przechowywania wody oraz powoli wypełniają sie podczas deszczu. +Cauldrons are used to store water and slowly fill up under rain. They can also be used to wash off banners.=Kotły są wykorzystywane do przechowywania wody oraz powoli wypełniają się podczas deszczu. Place a water pucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water. Use an emblazoned banner on a cauldron with water to wash off its top layer.=Umieść wiadro wody w kotle by wypełnić go wodą. Umieść puste wiadro na pełnym kotle by odzyskać wodę. Umieść szklaną butelkę w kotle z wodą aby odzyskać jedną trzecią wody. Użyj upiększonego sztandaru na kotle z wodą aby zmyć górną warstwę. Cauldron (1/3 Water)=Kocioł (1/3 wody) Cauldron (2/3 Water)=Kocioł (2/3 wody) diff --git a/mods/ITEMS/mcl_chests/locale/mcl_chests.pl.tr b/mods/ITEMS/mcl_chests/locale/mcl_chests.pl.tr index e9f7c4357..2af4fad22 100644 --- a/mods/ITEMS/mcl_chests/locale/mcl_chests.pl.tr +++ b/mods/ITEMS/mcl_chests/locale/mcl_chests.pl.tr @@ -3,7 +3,7 @@ Chest=Skrzynia Chests are containers which provide 27 inventory slots. Chests can be turned into large chests with double the capacity by placing two chests next to each other.=Skrzynie to pojemniki zawierające 27 miejsc ekwipunku. Skrzynie można zmienić w wielkie skrzynie z podwojoną pojemnością kładąc dwie skrzynie jedna obok drugiej. To access its inventory, rightclick it. When broken, the items will drop out.=Aby zarządzać jej ekwipunkiem kliknij prawym przyciskiem. Po zniszczeniu przedmioty z niej wypadną. Trapped Chest=Skrzynia-pułapka -A trapped chest is a container which provides 27 inventory slots. When it is opened, it sends a redstone signal to its adjacent blocks as long it stays open. Trapped chests can be turned into large trapped chests with double the capacity by placing two trapped chests next to each other.=Skrzynia pułapka jest pojemnikiem zawierającym 27 miejsc ekwipunku. Gdy jest otwarta wysyła ona zasila czerwienit na sąsiadujących blokach tak długo jak jest otwarta. Skrzynie-pułapki można zmienić w wielkie skrzynie-pułapki z podwojoną pojemnością przez położenie dwóch skryznek-pułapek jedna obok drugiej. +A trapped chest is a container which provides 27 inventory slots. When it is opened, it sends a redstone signal to its adjacent blocks as long it stays open. Trapped chests can be turned into large trapped chests with double the capacity by placing two trapped chests next to each other.=Skrzynia pułapka jest pojemnikiem zawierającym 27 miejsc ekwipunku. Gdy jest otwarta wysyła ona zasila czerwienit na sąsiadujących blokach tak długo jak jest otwarta. Skrzynie-pułapki można zmienić w wielkie skrzynie-pułapki z podwojoną pojemnością przez położenie dwóch skrzynek-pułapek jedna obok drugiej. Ender Chest=Skrzynia kresu Ender chests grant you access to a single personal interdimensional inventory with 27 slots. This inventory is the same no matter from which ender chest you access it from. If you put one item into one ender chest, you will find it in all other ender chests. Each player will only see their own items, but not the items of other players.=Skrzynie kresu dają dostęp do pojedynczego, osobistego, międzywymiarowego ekwipunku z 27 miejscami. Ten ekwipunek będzie zawierał to samo niezależnie od skrzyni kresu z której nim zarządzasz. Jeśli włożysz przedmiot do jednej skrzyni kresu, znajdziesz go we wszystkich innych. każdy gracz będzie widział tylko swoje przedmioty, a nie innych graczy. Rightclick the ender chest to access your personal interdimensional inventory.=Kliknij prawym w skrzynię kresu aby mieć dostęp do twojego osobistego, międzywymiarowego ekwipunku. diff --git a/mods/ITEMS/mcl_compass/locale/mcl_compass.pl.tr b/mods/ITEMS/mcl_compass/locale/mcl_compass.pl.tr index 1b36effc7..2a9533652 100644 --- a/mods/ITEMS/mcl_compass/locale/mcl_compass.pl.tr +++ b/mods/ITEMS/mcl_compass/locale/mcl_compass.pl.tr @@ -1,4 +1,4 @@ # textdomain: mcl_compass -Compasses are tools which point to the world origin (X@=0, Z@=0) or the spawn point in the Overworld.=Kompasy to narzędzia które wskazują na punkt początku świata (X@=0, Z@=0) lub na miejsce odrodzenia w normalnym świecie. +Compasses are tools which point to the world origin (X@=0, Z@=0) or the spawn point in the Overworld.=Kompasy to narzędzia które wskazują na punkt początku świata (X@=0, Z@=0) lub na miejsce odrodzenia na Powierzchni. Compass=Kompas Points to the world origin=Wskazuje na początek świata diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr b/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr index b320be212..d77865101 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr @@ -9,10 +9,10 @@ A block of gold is mostly a shiny decorative block but also useful as a compact A block of iron is mostly a decorative block but also useful as a compact storage of iron ingots.=Blok żelaza jest głównie ładnym blokiem dekoracyjnym, ale jest użyteczny również do kompaktowego przechowywania sztabek żelaza. A cactus can only be placed on top of another cactus or any sand.=Kaktus może być postawiony tylko na innym kaktusie lub piasku. A decorative and mostly transparent block.=Dekoracyjny i głównie przeźroczysty blok. -A grass block is dirt with a grass cover. Grass blocks are resourceful blocks which allow the growth of all sorts of plants. They can be turned into farmland with a hoe and turned into grass paths with a shovel. In light, the grass slowly spreads onto dirt nearby. Under an opaque block or a liquid, a grass block may turn back to dirt.=Blok trawy to blok ziemi z pokryciem z trawy. Bloki trawy są użytecznymi blokami pozwalającymi na wyrośnięcie różnych rodzajów roślin. Mogą zostać zamienione w pole uprawne motyką, lub w ścieżkę z trawy łopatą. Oświelona trawa rozprzestrzenia się na pobliskie bloki. Pod nieprzezroczystym blokiem lub płynem blok trawy może zamienić się z powrotem w blok ziemi. +A grass block is dirt with a grass cover. Grass blocks are resourceful blocks which allow the growth of all sorts of plants. They can be turned into farmland with a hoe and turned into grass paths with a shovel. In light, the grass slowly spreads onto dirt nearby. Under an opaque block or a liquid, a grass block may turn back to dirt.=Blok trawy to blok ziemi z pokryciem z trawy. Bloki trawy są użytecznymi blokami pozwalającymi na wyrośnięcie różnych rodzajów roślin. Mogą zostać zamienione w pole uprawne motyką, lub w ścieżkę z trawy łopatą. Oświetlona trawa rozprzestrzenia się na pobliskie bloki. Pod nieprzezroczystym blokiem lub płynem blok trawy może zamienić się z powrotem w blok ziemi. A lapis lazuli block is mostly a decorative block but also useful as a compact storage of lapis lazuli.=Blok lazurytu jest głównie ładnym blokiem dekoracyjnym, ale jest użyteczny również do kompaktowego przechowywania lazurytu. A lava source sets fire to a couple of air blocks above when they're next to a flammable block.=Źródło lawy podpala bloki powietrza nad nią gdy są obok łatwopalnego bloku. -A piece of ladder which allows you to climb vertically. Ladders can only be placed on the side of solid blocks and not on glass, leaves, ice, slabs, glowstone, nor sea lanterns.=Kawałek drabiny, który pozwala ci wspinać się pionowo. Drabina może być postawiona na boku stałego bloku, lecz nie na szkle, liściach, lodzie, półbloku, jasnogłazie ani na laatarni morskiej. +A piece of ladder which allows you to climb vertically. Ladders can only be placed on the side of solid blocks and not on glass, leaves, ice, slabs, glowstone, nor sea lanterns.=Kawałek drabiny, który pozwala ci wspinać się pionowo. Drabina może być postawiona na boku stałego bloku, lecz nie na szkle, liściach, lodzie, półbloku, jasnogłazie ani na latarni morskiej. Acacia Bark=Akacjowa kora Acacia Leaves=Akacjowe liście Acacia Sapling=Akacjowa sadzonka @@ -52,8 +52,8 @@ Bricks are used to craft brick blocks.=Cegły są wykorzystywane do wytwarzania Brown Stained Glass=Brązowe szkło Cactus=Kaktus Charcoal=Węgiel drzewny -Charcoal is an alternative furnace fuel created by cooking wood in a furnace. It has the same burning time as coal and also shares many of its crafting recipes, but it can not be used to create coal blocks.=Węgiel drzewny jest alternatywnym paliwem do piecy uzyskiwanym przez wypalanie drewna w piecu. Pali się tak samo długo jak węgiel oraz może być użyty jako zamiennik w wielu recepturach, jednak nie można z niego robić bloków węgla. -Chiseled Stone Bricks=Rzeźbionne kamienne cegły +Charcoal is an alternative furnace fuel created by cooking wood in a furnace. It has the same burning time as coal and also shares many of its crafting recipes, but it can not be used to create coal blocks.=Węgiel drzewny jest alternatywnym paliwem do pieca uzyskiwanym przez wypalanie drewna w piecu. Pali się tak samo długo jak węgiel oraz może być użyty jako zamiennik w wielu recepturach, jednak nie można z niego robić bloków węgla. +Chiseled Stone Bricks=Rzeźbione kamienne cegły Chiseled Red Sandstone=Rzeźbiony czerwony piaskowiec Chiseled Sandstone=Rzeźbiony piaskowiec Chiseled red sandstone is a decorative building block.=Rzeźbiony czerwony piaskowiec jest dekoracyjnym blokiem budowlanym. @@ -81,7 +81,7 @@ Dark Oak Sapling=Ciemno-dębowa sadzonka Dark Oak Wood=Ciemno-dębowe drewno Dark Oak Wood Planks=Ciemno-dębowe deski Dark oak leaves are grown from dark oak trees.=Ciemno-dębowe liście rosną na ciemnych dębach. -Dark oak saplings can grow into dark oaks, but only in groups. A lonely dark oak sapling won't grow. A group of four dark oak saplings grows into a dark oak after some time when they are placed on soil (such as dirt) in a 2×2 square and exposed to light.=Ciemno-dębowe sadzonki mogą wyrosnąć w ciemny dąb, ale tylko w grupach. Samotna ciemno-dębowa sadzonka nie wyrośnie. Grupa czterech ciemno-dębowych sadzonek wyrośnie w ciemny dąb po jakimś czasie, gdy będą postawiona na glebie (np. ziemi) w kwadracie 2×2, która jest oświelona. +Dark oak saplings can grow into dark oaks, but only in groups. A lonely dark oak sapling won't grow. A group of four dark oak saplings grows into a dark oak after some time when they are placed on soil (such as dirt) in a 2×2 square and exposed to light.=Ciemno-dębowe sadzonki mogą wyrosnąć w ciemny dąb, ale tylko w grupach. Samotna ciemno-dębowa sadzonka nie wyrośnie. Grupa czterech ciemno-dębowych sadzonek wyrośnie w ciemny dąb po jakimś czasie, gdy będą postawiona na glebie (np. ziemi) w kwadracie 2×2, która jest oświetlona. Dead Bush=Uschnięty krzew Dead bushes are unremarkable plants often found in dry areas. They can be harvested for sticks.=Uschnięte krzewy to niewyróżniające się rośliny często występujące w suchych obszarach. Mogą z nich być zebrane patyki. Diamond=Diament @@ -101,7 +101,7 @@ Flint is a raw material.=Krzemień jest surowym materiałem. Flowing Lava=Płynąca lawa Flowing Water=Płynąca woda Frosted Ice=Oszroniony lód -Frosted ice is a short-lived solid block. It melts into a water source within a few seconds.=Oszroniony lód jest krótkożyjącym blokiem. Topi się w źródło wody w kilka sekund. +Frosted ice is a short-lived solid block. It melts into a water source within a few seconds.=Oszroniony lód jest blokiem o krótkim życiu. Topi się w źródło wody w kilka sekund. Glass=Szkło Gold Ingot=Sztabka złota Gold Nugget=Bryłka złota @@ -117,7 +117,7 @@ Gravel=Żwir Green Stained Glass=Zielone szkło Grey Stained Glass=Szare szkło Ice=Lód -Ice is a solid block usually found in cold areas. It melts near block light sources at a light level of 12 or higher. When it melts or is broken while resting on top of another block, it will turn into a water source.=Lód jest stałym blokiem zwykle występującym w zimnych rejonach. Topi się w okolice źródeł swiatła przy poziomie oświetlenia 12 lub wyższym. Gdy się stopi bądź jest zniszczony na innym bloku zamienia się w źródło wody. +Ice is a solid block usually found in cold areas. It melts near block light sources at a light level of 12 or higher. When it melts or is broken while resting on top of another block, it will turn into a water source.=Lód jest stałym blokiem zwykle występującym w zimnych rejonach. Topi się w okolice źródeł światła przy poziomie oświetlenia 12 lub wyższym. Gdy się stopi bądź jest zniszczony na innym bloku zamienia się w źródło wody. In the End dimension, starting a fire on this block will create an eternal fire.=W wymiarze Kresu rozpalenie ognia na tym bloku stworzy wieczny ogień. Iron Ingot=Sztabka żelaza Iron Nugget=Bryłka żelaza @@ -134,7 +134,7 @@ Lapis Lazuli Block=Blok lazurytu Lapis Lazuli Ore=Ruda lazurytu Lapis lazuli ore is the ore of lapis lazuli. It can be rarely found in clusters near the bottom of the world.=Ruda lazurytu jest rzadko występującym blokiem, który można znaleźć w grupach przy dnie świata. Lava Source=Źródło lawy -Lava is hot and rather dangerous. Don't touch it, it will hurt you a lot and it is hard to get out.=Lawa jest gorąca i bardzo niebezpiczna. Nie dotykaj jej, jeśli nie chcesz ucierpieć. Trudno się z niej wydostać. +Lava is hot and rather dangerous. Don't touch it, it will hurt you a lot and it is hard to get out.=Lawa jest gorąca i bardzo niebezpieczna. Nie dotykaj jej, jeśli nie chcesz ucierpieć. Trudno się z niej wydostać. Light Blue Stained Glass=Jasnoniebieskie szkło Light Grey Stained Glass=Jasnoszare szkło Lime Stained Glass=Jasnozielone szkło @@ -145,7 +145,7 @@ Molten iron. It is used to craft armor, tools, and whatnot.=Stopione żelazo. Wy Mossy Cobblestone=Zamszony bruk Mossy Stone Bricks=Zamszone kamienne cegły Mycelium=Grzybnia -Mycelium is a type of dirt and the ideal soil for mushrooms. Unlike other dirt-type blocks, it can not be turned into farmland with a hoe. In light, mycelium slowly spreads over nearby dirt. Under an opaque block or a liquid, it eventually turns back into dirt.=Grzybnia jest rodzajem ziemi i idealnym podłożem dla grzybów. W przeciwieństwie do innych bloków ziemi nie może ona zostać zamieniona w pole uprawne motyką. Oświelona grzbynia powoli rozprzestrzenia się na pobliską ziemię. Pod nieprzezroczystym blokiem bądź płynem po pewnym czasie zamieni się z powrotem w ziemię. +Mycelium is a type of dirt and the ideal soil for mushrooms. Unlike other dirt-type blocks, it can not be turned into farmland with a hoe. In light, mycelium slowly spreads over nearby dirt. Under an opaque block or a liquid, it eventually turns back into dirt.=Grzybnia jest rodzajem ziemi i idealnym podłożem dla grzybów. W przeciwieństwie do innych bloków ziemi nie może ona zostać zamieniona w pole uprawne motyką. Oświetlona grzybnia powoli rozprzestrzenia się na pobliską ziemię. Pod nieprzezroczystym blokiem bądź płynem po pewnym czasie zamieni się z powrotem w ziemię. Oak Bark=Dębowa kora Oak Leaves=Dębowe liście Oak Sapling=Dębowe sadzonki @@ -154,7 +154,7 @@ Oak Wood Planks=Dębowe deski Oak leaves are grown from oak trees.=Dębowe liście rosną na dębach. Obsidian=Obsydian Obsidian is an extremely hard mineral with an enourmous blast-resistance. Obsidian is formed when water meets lava.=Obsydian jest bardzo twardym minerałem o ogromnej odporności na wybuchy. Obsydian powstaje gdy woda styka się z lawą. -One of the most common blocks in the world, almost the entire underground consists of stone. It sometimes contains ores. Stone may be created when water meets lava.=Jeden z napowszechniejszych bloków na świecie, prawie całe podziemia składają się z kamienia. Czasami zaweiera rudy. Kamień może być utworzony czy woda styka się z lawą. +One of the most common blocks in the world, almost the entire underground consists of stone. It sometimes contains ores. Stone may be created when water meets lava.=Jeden z najpowszechniejszych bloków na świecie, prawie całe podziemia składają się z kamienia. Czasami zawiera rudy. Kamień może być utworzony czy woda styka się z lawą. Orange Stained Glass=Pomarańczowe szkło Packed Ice=Zbity lód Packed ice is a compressed form of ice. It is opaque and solid.=Zbity lód jest skompresowaną formą lodu. Jest nieprzezroczysty i stały. @@ -175,7 +175,7 @@ Realm Barrier=Bariera wymiarów Red Sand=Czerwony piasek Red Sandstone=Czerwony piaskowiec Red Stained Glass=Czerwone szkło -Red sand is found in large quantities in mesa biomes.=Czerwony piasek występuje w duzych ilościach w badlandach. +Red sand is found in large quantities in mesa biomes.=Czerwony piasek występuje w dużych ilościach w Badlandach. Red sandstone is compressed red sand and is a rather soft kind of stone.=Czerwony piaskowiec jest skompresowanym czerwonym piaskiem i jest miękkim rodzajem kamienia. Redstone Ore=Ruda czerwienitu Redstone ore is commonly found near the bottom of the world. It glows when it is punched or walked upon.=Ruda czerwienitu występuje często w okolicy dna świata. Świeci gdy się ją uderzy bądź gdy się po niej chodzi. @@ -198,14 +198,14 @@ Spruce Sapling=Świerkowa sadzonka Spruce Wood=Świerkowe drewno Spruce Wood Planks=Świerkowe deski Spruce leaves are grown from spruce trees.=Świerkowe liście rosną na świerkach. -Stained glass is a decorative and mostly transparent block which comes in various different colors.=Kolorowe szkło jest dekorayjnym, przejrzystym blokiem. Istnieją różnokolorowe warianty tego bloku. +Stained glass is a decorative and mostly transparent block which comes in various different colors.=Kolorowe szkło jest dekoracyjnym, przejrzystym blokiem. Istnieją różnokolorowe warianty tego bloku. Stick=Patyk Sticks are a very versatile crafting material; used in countless crafting recipes.=Patyk jest wszechstronnym materiałem do wytwarzania, wykorzystywanym w niezliczonej liczbie receptur. Stone=Kamień Stone Bricks=Kamienne cegły Sugar=Cukier Sugar Canes=Trzcina cukrowa -Sugar canes are a plant which has some uses in crafting. Sugar canes will slowly grow up to 3 blocks when they are next to water and are placed on a grass block, dirt, sand, red sand, podzol or coarse dirt. When a sugar cane is broken, all sugar canes connected above will break as well.=Trzciny cukrowe są rośliny użyteczne w wytwarzaniu. Będą one powoli rosły na wysokość 3 bloków, gdy są postawioneobok wody i są postawione na bloku trawy, ziemi, piasku, czerwonego piasku, bielicy lub twardej ziemi. Gdy trzcina cukrowa jest zniszczona wszystkie połączone trzciny nad nią również się zniszczą. +Sugar canes are a plant which has some uses in crafting. Sugar canes will slowly grow up to 3 blocks when they are next to water and are placed on a grass block, dirt, sand, red sand, podzol or coarse dirt. When a sugar cane is broken, all sugar canes connected above will break as well.=Trzciny cukrowe są rośliny użyteczne w wytwarzaniu. Będą one powoli rosły na wysokość 3 bloków, gdy są postawione obok wody i są postawione na bloku trawy, ziemi, piasku, czerwonego piasku, bielicy lub twardej ziemi. Gdy trzcina cukrowa jest zniszczona wszystkie połączone trzciny nad nią również się zniszczą. Sugar canes can only be placed top of other sugar canes and on top of blocks on which they would grow.=Trzciny cukrowe mogą być posadzone tylko na innych trzcinach cukrowych i na blokach na których by wyrosły. Sugar comes from sugar canes and is used to make sweet foods.=Cukier wytwarza się z trzciny cukrowej i wykorzystuje się go do robienia słodkich potraw. The trunk of a birch tree.=Pień brzozy. @@ -216,11 +216,11 @@ The trunk of an acacia.=Pień akacji. The trunk of an oak tree.=Pień dębu. This block consists of a couple of loose stones and can't support itself.=Ten blok składa się z kilku luźnych kamieni i nie może się utrzymać. This is a decorative block surrounded by the bark of a tree trunk.=Jest to dekoracyjny blok otoczony przez korę pnia. -This is a full block of snow. Snow of this thickness is usually found in areas of extreme cold.=To jest pełny blok śniego. Śnieg tej grubości występuje zwykle w ekstremalnie niskich obszarach. -This is a piece of cactus commonly found in dry areas, especially deserts. Over time, cacti will grow up to 3 blocks high on sand or red sand. A cactus hurts living beings touching it with a damage of 1 HP every half second. When a cactus block is broken, all cactus blocks connected above it will break as well.=To jest kawałek kaktusa często występujący w suchych obszarach, zwłaszcza pustyniach. Po pewnym czasie kaktusy rosną na wysokość 3 bloków na piasku lub czerwonym piasku. Kaktus rani żywe istoty dotykające go zadając 1 HP obrażeń na pół sekundy. Gdy blok kaktua jest zniszczony wszystkie bloki kaktua nad nim również zostaną zniszczone. +This is a full block of snow. Snow of this thickness is usually found in areas of extreme cold.=To jest pełny blok śniegu. Śnieg tej grubości występuje zwykle w ekstremalnie niskich obszarach. +This is a piece of cactus commonly found in dry areas, especially deserts. Over time, cacti will grow up to 3 blocks high on sand or red sand. A cactus hurts living beings touching it with a damage of 1 HP every half second. When a cactus block is broken, all cactus blocks connected above it will break as well.=To jest kawałek kaktusa często występujący w suchych obszarach, zwłaszcza pustyniach. Po pewnym czasie kaktusy rosną na wysokość 3 bloków na piasku lub czerwonym piasku. Kaktus rani żywe istoty dotykające go zadając 1 HP obrażeń na pół sekundy. Gdy blok kaktusa jest zniszczony wszystkie bloki kaktusa nad nim również zostaną zniszczone. This stone contains pure gold, a rare metal.=Ten kamień zawiera czyste złoto, rzadki metal. -Top Snow=Pokrywa śniego -Top snow is a layer of snow. It melts near light sources other than the sun with a light level of 12 or higher.=Pokrywa śniego jest warstwą śniegu. Topi się przy źródłach światła innych niż słońce o poziomie oświetlenia 12 lub wyższym. +Top Snow=Pokrywa śniegu +Top snow is a layer of snow. It melts near light sources other than the sun with a light level of 12 or higher.=Pokrywa śniegu jest warstwą śniegu. Topi się przy źródłach światła innych niż słońce o poziomie oświetlenia 12 lub wyższym. Vines=Pnącza Vines are climbable blocks which can be placed on the sides of solid full-cube blocks. Vines slowly grow and spread.=Pnącza są blokami po których można się wspinać i które można postawić na bokach stałych pełnych bloków. Void=Otchłań @@ -241,11 +241,11 @@ Water interacts with lava in various ways:=Woda wchodzi w interakcję z lawą na • When flowing water touches flowing lava either from above or horizontally, the lava turns into cobblestone.=• Gdy płynąca woda zetknie się z lewą, z góry lub z boku, lawa zamienia się w brukowiec. • When water is directly below lava, the water turns into stone.=Gdy woda jest bezpośrednio pod lawą, woda zamienia się w kamień. Lava interacts with water various ways:=Lawa wchodzi w interakcję z wodą na różne sposoby: -• When a lava source is directly below or horizontally next to water, the lava turns into obsidian.=• Gdy źródło lawy jest bezpośrednio pod lub poziomo obok dowy, lawa zamienia się w obsydian. +• When a lava source is directly below or horizontally next to water, the lava turns into obsidian.=• Gdy źródło lawy jest bezpośrednio pod lub poziomo obok wody, lawa zamienia się w obsydian. • When lava is directly above water, the water turns into stone.=• Gdy lawa jest bezpośrednio nad wodą, woda zamienia się w kamień. Stained Glass=Kolorowe szkło Granite is an igneous rock.=Granit jest skałą pochodzenia wulkanicznego. -Top snow can be stacked and has one of 8 different height levels. At levels 2-8, top snow is collidable. Top snow drops 2-9 snowballs, depending on its height.=Pokrywa śniegu może być układana w stos i ma 8 poziomów wysokości. Na poziomach 2-8 pokrywa jest przeszkodą. Z pokrywy śniego wypada 2-9 kulek w zależności od jej wysokości. +Top snow can be stacked and has one of 8 different height levels. At levels 2-8, top snow is collidable. Top snow drops 2-9 snowballs, depending on its height.=Pokrywa śniegu może być układana w stos i ma 8 poziomów wysokości. Na poziomach 2-8 pokrywa jest przeszkodą. Z pokrywy śniegu wypada 2-9 kulek w zależności od jej wysokości. This block can only be placed on full solid blocks and on another top snow (which increases its height).=Ten blok może być postawiony wyłącznie na pełnych stałych blokach i na innej pokrywie śniegu (co zwiększy jej wysokość). Needs soil and water to grow=Potrzebuje gleby i wody by rosnąć Needs soil and light to grow=Potrzebuje gleby i światła by rosnąć @@ -255,4 +255,4 @@ Slows down movement=Spowalnia poruszanie 2×2 saplings required=Wymagane . 2×2 saplings @= large tree=Sadzonki 2×2 @= duże drzewo. Grows on sand or dirt next to water=Rośnie na piasku bądź ziemi obok wody. -Stackable=Grupowalne +Stackable=Możliwe grupowanie diff --git a/mods/ITEMS/mcl_doors/locale/mcl_doors.pl.tr b/mods/ITEMS/mcl_doors/locale/mcl_doors.pl.tr index 48789f81f..e26c5861a 100644 --- a/mods/ITEMS/mcl_doors/locale/mcl_doors.pl.tr +++ b/mods/ITEMS/mcl_doors/locale/mcl_doors.pl.tr @@ -1,5 +1,5 @@ # textdomain: mcl_doors -Wooden doors are 2-block high barriers which can be opened or closed by hand and by a redstone signal.=Drewniane drzwi są blokami o wysokości 2, które mogą być otworzone i zamkniętę ręcznie bądź przez zasilenie czerwienitem. +Wooden doors are 2-block high barriers which can be opened or closed by hand and by a redstone signal.=Drewniane drzwi są blokami o wysokości 2, które mogą być otworzone i zamknięte ręcznie bądź przez zasilenie czerwienitem. To open or close a wooden door, rightclick it or supply its lower half with a redstone signal.=Aby otworzyć lub zamknąć drewniane drzwi, kliknij je prawym przyciskiem bądź zasil ich dolną połowę czerwienitem. Oak Door=Dębowe drzwi Acacia Door=Akacjowe drzwi @@ -8,7 +8,7 @@ Dark Oak Door=Ciemno-dębowe drzwi Jungle Door=Tropikalne drzwi Spruce Door=Świerkowe drzwi Iron Door=Żelazne drzwi -Iron doors are 2-block high barriers which can only be opened or closed by a redstone signal, but not by hand.=Żelazne drzwi są blokami o wysokości dwa, które mogą być otware lub zamknięte przez zasilanie czerwienitem, ale nie ręcznie. +Iron doors are 2-block high barriers which can only be opened or closed by a redstone signal, but not by hand.=Żelazne drzwi są blokami o wysokości dwa, które mogą być otwarte lub zamknięte przez zasilanie czerwienitem, ale nie ręcznie. To open or close an iron door, supply its lower half with a redstone signal.=Aby otworzyć lub zamknąć żelazne drzwi zasil ich dolną część czerwienitem. Oak Trapdoor=Dębowa klapa Acacia Trapdoor=Akacjowa klapa @@ -16,9 +16,9 @@ Birch Trapdoor=Brzozowa klapa Spruce Trapdoor=Świerkowa klapa Dark Oak Trapdoor=Ciemno-dębowa klapa Jungle Trapdoor=Tropikalna klapa -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.=Drewniane klapy są poziomymi barierami, które mogą być otwarte i zamknięte ręcznie bądź przez zasilenie czerwienitem. Zajmują główną lub dolną część bloku w zależności od tego jak zostaną postawione. Gdy są otwarte można się po nich wspinac jak po drabinie. +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.=Drewniane klapy są poziomymi barierami, które mogą być otwarte i zamknięte ręcznie bądź przez zasilenie czerwienitem. Zajmują główną lub dolną część bloku w zależności od tego jak zostaną postawione. Gdy są otwarte można się po nich wspinać jak po drabinie. To open or close the trapdoor, rightclick it or send a redstone signal to it.=Aby otworzyć lub zamknąć drewniane klapy, kliknij je prawym przyciskiem bądź zasil ich dolną połowę czerwienitem. Iron Trapdoor=Żelazna klapa -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.=Żelazne klapy są poziomymi barierami, które mogą być otwarte i zamknięte tylko przez zasilenie czerwienitem, ale nie ręcznie. Zajmują główną lub dolną część bloku w zależności od tego jak zostaną postawione. Gdy są otwarte można się po nich wspinac jak po drabinie. +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.=Żelazne klapy są poziomymi barierami, które mogą być otwarte i zamknięte tylko przez zasilenie czerwienitem, ale nie ręcznie. Zajmują główną lub dolną część bloku w zależności od tego jak zostaną postawione. Gdy są otwarte można się po nich wspinać jak po drabinie. Openable by players and redstone power=Mogą być otworzone przez graczy i zasilanie czerwienitem Openable by redstone power=Mogą być otworzone przez zasilanie czerwienitem diff --git a/mods/ITEMS/mcl_dye/locale/mcl_dye.pl.tr b/mods/ITEMS/mcl_dye/locale/mcl_dye.pl.tr index b0735d814..d16edb5b0 100644 --- a/mods/ITEMS/mcl_dye/locale/mcl_dye.pl.tr +++ b/mods/ITEMS/mcl_dye/locale/mcl_dye.pl.tr @@ -15,13 +15,13 @@ Orange Dye=Pomarańczowa farba Rose Red=Różany czerwony Magenta Dye=Karmazynowa farba Pink Dye=Różowa farba -This item is a dye which is used for dyeing and crafting.=Ten przedmiot to farba wykorzystywana to farbienia i wytwarzania -Rightclick on a sheep to dye its wool. Other things are dyed by crafting.=Kliknij prawym na owcę aby zafarbować jej wełne. Inne rzeczy mogą być zafarbione przy wytwarzaniu. +This item is a dye which is used for dyeing and crafting.=Ten przedmiot to farba wykorzystywana to farbowania i wytwarzania. +Rightclick on a sheep to dye its wool. Other things are dyed by crafting.=Kliknij prawym na owcę aby zafarbować jej wełnę. Inne rzeczy mogą być zafarbowane przy wytwarzaniu. Bone Meal=Mączka kostna Bone meal is a white dye and also useful as a fertilizer to speed up the growth of many plants.=Mączka kostna to biała farba i przydatny nawóz, który przyspiesza rośnięcie wielu roślin. -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.=Kliknij prawym na owcę, aby wybielić jej wełne. Kliknij prawym na roślinę aby przyspieszyć jej wzrost. Zważ, że nie na wszystkie rośliny to tak działa. Gdy klikniesz prawym na blok trawy, wysoka trawa wyrośnie wokół. +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.=Kliknij prawym na owcę, aby wybielić jej wełnę. Kliknij prawym na roślinę aby przyspieszyć jej wzrost. Zważ, że nie na wszystkie rośliny to tak działa. Gdy klikniesz prawym na blok trawy, wysoka trawa wyrośnie wokół. Cocoa beans are a brown dye and can be used to plant cocoas.=Ziarna kakaowe mogą być wykorzystane do sadzenia kakao. -Rightclick a sheep to turn its wool brown. Rightclick on the side of a jungle tree trunk (Jungle Wood) to plant a young cocoa.=Naciśnij prawym aby zafarbować wełne owcy na brązowo. Naciśnij prawym na boku tropikalnego pnia (Tropikalne drewno) aby zasadzić młode kakao. +Rightclick a sheep to turn its wool brown. Rightclick on the side of a jungle tree trunk (Jungle Wood) to plant a young cocoa.=Naciśnij prawym aby zafarbować wełnę owcy na brązowo. Naciśnij prawym na boku tropikalnego pnia (Tropikalne drewno) aby zasadzić młode kakao. Cocoa Beans=Ziarna kakaowe Grows at the side of jungle trees=Rośnie na boku tropikalnych drzew Speeds up plant growth=Przyspiesza wzrost roślin diff --git a/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.pl.tr b/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.pl.tr index 7da2796b0..fa19d463b 100644 --- a/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.pl.tr +++ b/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.pl.tr @@ -2,7 +2,7 @@ Aqua Affinity=Powinowactwo wodne Increases underwater mining speed.=Przyspiesza wydobywanie pod wodą. Bane of Arthropods=Zmora stawonogów -Increases damage and applies Slowness IV to arthropod mobs (spiders, cave spiders, silverfish and endermites).=Zwiększa obrażenia i aplikuje Spowolnienie IV mobom stawonogim (pająkom, pająkom jaskiniowym, rybikom cukrowym i endermitom) +Increases damage and applies Slowness IV to arthropod mobs (spiders, cave spiders, silverfish and endermites).=Zwiększa obrażenia i aplikuje Spowolnienie IV stawonogom (pająkom, pająkom jaskiniowym, rybikom cukrowym i endermitom) Blast Protection=Ochrona od wybuchów Reduces explosion damage and knockback.=Zmniejsza obrażenia od wybuchów i odrzut. Channeling=Przekierowanie @@ -38,11 +38,11 @@ Increases mob loot.=Zwiększa liczbę przedmiotów wypadających z mobów. Loyalty=Lojalność Trident returns after being thrown. Higher levels reduce return time.=Trydent wraca do gracza po rzuceniu. Większy poziom zmniejsza czas powrotu. Luck of the Sea=Morska fortuna -Increases rate of good loot (enchanting books, etc.)=Zwiększa szansę na wypadnięcie dobrych przediotów (zaklętych książek itp.) +Increases rate of good loot (enchanting books, etc.)=Zwiększa szansę na wypadnięcie dobrych przedmiotów (zaklętych książek itp.) Lure=Przynęta Decreases time until rod catches something.=Zmniejsza czas po którym coś złapie się na wędkę Mending=Naprawa -Repair the item while gaining XP orbs.=Naprawia przedmiot podczas podnoszenia kul doświaczenia. +Repair the item while gaining XP orbs.=Naprawia przedmiot podczas podnoszenia kul doświadczenia. Multishot=Wielostrzał Shoot 3 arrows at the cost of one.=Wystrzel 3 strzały kosztem jednej. Piercing=Przeszycie @@ -63,7 +63,7 @@ Riptide=Torpeda Trident launches player with itself when thrown. Works only in water or rain.=Trydent porywa gracza ze sobą podczas rzucania. Działa tylko w wodzie lub w deszczu. Sharpness=Ostrość Increases damage.=Zwiększa obrażenia. -Silk Touch=Jedwaby dotyk +Silk Touch=Jedwabny dotyk Mined blocks drop themselves.=Z wydobywanych bloków wypadają one same. Smite=Pogromca nieumarłych Increases damage to undead mobs.=Zwiększa obrażenia zadawane nieumarłym mobom. @@ -93,8 +93,8 @@ The number you have entered (@1) is too small, it must be at least @2.=Liczba kt Enchanting succeded.=Zaklinanie powiodło się. Forcefully enchant an item=Bezwzględnie zaczaruj przedmiot. Usage: /forceenchant []=Użycie: /forceenchant [] -The target item is not enchantable.=Docelowego przedmiotu nie można zaklnąć. -'@1' is not a valid number.='@1' nie jset poprawną liczbą. +The target item is not enchantable.=Docelowego przedmiotu nie można zaczarować. +'@1' is not a valid number.='@1' nie jest poprawną liczbą. Enchanted Book=Zaklęta książka Enchanting Table=Stół do zaklinania Enchant=Zaczaruj diff --git a/mods/ITEMS/mcl_flowers/locale/mcl_flowers.pl.tr b/mods/ITEMS/mcl_flowers/locale/mcl_flowers.pl.tr index f79d5d40c..828eea96a 100644 --- a/mods/ITEMS/mcl_flowers/locale/mcl_flowers.pl.tr +++ b/mods/ITEMS/mcl_flowers/locale/mcl_flowers.pl.tr @@ -29,4 +29,4 @@ Large fern is a variant of fern and occupies two blocks. It can be harvested for Double Tallgrass=Podwójnie wysoka trawa Large Fern=Duża paproć Lily Pad=Lilia wodna -A lily pad is a flat plant block which can be walked on. They can be placed on water sources, ice and frosted ice.=Lilia wodna jest płaską rośliną po której można chodić. Można je stawiać na źródłach wody, lodzie i oszronionym lodzie. +A lily pad is a flat plant block which can be walked on. They can be placed on water sources, ice and frosted ice.=Lilia wodna jest płaską rośliną po której można chodzić. Można je stawiać na źródłach wody, lodzie i oszronionym lodzie. diff --git a/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.pl.tr b/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.pl.tr index 9b85c594b..8ef70f4f0 100644 --- a/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.pl.tr +++ b/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.pl.tr @@ -2,9 +2,9 @@ Hopper=Lej 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.=Leje są pojemnikami z 5 miejscami ekwipunku. Zbierają upuszczone na nie z góry przedmioty, przedmioty z pojemników na nimi i próbują je umieścić w przyległych pojemnikach. Leje mogą być skierowane w dół bądź w bok. Leje wchodzą w interakcję ze skrzyniami, podajnikami, dozownikami, shulkerowymi skrzyniami, piecami i lejami. Hoppers interact with containers the following way:=Leje wchodzą w interakcję z pojemnikami w następujący sposób: -• 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=Piece: leje nad nimi będą umiejszczać przedmioty w miejsce materiału źródłowego. Leje z dołu będą brały przedmioty z miejsca wyjściowego. Będą także zabierały przedmioty z miejsca na paliwo jeśli nie można ich użyć jako paliwo. Boczne leje wskazujące na piec będą wstawiać przedmioty w miejsce na paliwo. +• 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=Piece: leje nad nimi będą umieszczać przedmioty w miejsce materiału źródłowego. Leje z dołu będą brały przedmioty z miejsca wyjściowego. Będą także zabierały przedmioty z miejsca na paliwo jeśli nie można ich użyć jako paliwo. Boczne leje wskazujące na piec będą wstawiać przedmioty w miejsce na paliwo. • Ender chests: No interaction.=Skrzynie kresu: nie wchodzą w interakcję. -• Other containers: Normal interaction.=Inne pojemniki: zwykła ineterakcja. +• Other containers: Normal interaction.=Inne pojemniki: zwykła interakcja. Hoppers can be disabled when supplied with redstone power. Disabled hoppers don't move items.=Leje mogą być wyłączone sygnałem z czerwienitu. 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.=Aby postawić lej pionowo postaw go na podłodze lub suficie. Aby postawić go bocznie ustaw go na boku bloku. Kliknij "Użyj" na leju by zarządzać jego ekwipunkiem. Disabled Hopper=Wyłączony lej diff --git a/mods/ITEMS/mcl_portals/locale/mcl_portals.pl.tr b/mods/ITEMS/mcl_portals/locale/mcl_portals.pl.tr index 366cad0a3..18d9b4b7b 100644 --- a/mods/ITEMS/mcl_portals/locale/mcl_portals.pl.tr +++ b/mods/ITEMS/mcl_portals/locale/mcl_portals.pl.tr @@ -1,15 +1,15 @@ # textdomain: mcl_portals End Portal=Portal Kresu An End portal teleports creatures and objects to the mysterious End dimension (and back!).=Portal Kresu teleportuje osoby i rzeczy do tajemniczego wymiaru Kresu (i z powrotem!). -Hop into the portal to teleport. Entering an End portal in the Overworld teleports you to a fixed position in the End dimension and creates a 5×5 obsidian platform at your destination. End portals in the End will lead back to your spawn point in the Overworld.=Wskocz do portalu by się teleportować. Wejście do portalu Kresu na Powierzchni przeniesie cię do ustalonej pozycij w wymiarze Kresu i tworzy obsydianową platformę 5×5 w tym miejscu. Portal Kresu w Kresie przeniesie cię do twojego miejsca odradzania. +Hop into the portal to teleport. Entering an End portal in the Overworld teleports you to a fixed position in the End dimension and creates a 5×5 obsidian platform at your destination. End portals in the End will lead back to your spawn point in the Overworld.=Wskocz do portalu by się teleportować. Wejście do portalu Kresu na Powierzchni przeniesie cię do ustalonej pozycji w wymiarze Kresu i tworzy obsydianową platformę 5×5 w tym miejscu. Portal Kresu w Kresie przeniesie cię do twojego miejsca odradzania. End Portal Frame=Rama portalu Kresu End portal frames are used in the construction of End portals. Each block has a socket for an eye of ender.=Ramy portalu Kresu są wykorzystywane do konstrukcji portali Kresu. Każdy blok ma miejsce na oko Kresu. NOTE: The End dimension is currently incomplete and might change in future versions.=UWAGA: Wymiar Kresu jest aktualnie nieukończony i może się zmienić w przyszłych wersjach. End Portal Frame with Eye of Ender=Rama portalu Kresu z okiem Kresu. Nether Portal=Portal Netheru A Nether portal teleports creatures and objects to the hot and dangerous Nether dimension (and back!). Enter at your own risk!=Portal Netheru teleportuje osoby i obiekty do gorącego i niebezpiecznego wymiaru Nether (i z powrotem!). Wejdź na własne ryzyko! -Stand in the portal for a moment to activate the teleportation. Entering a Nether portal for the first time will also create a new portal in the other dimension. If a Nether portal has been built in the Nether, it will lead to the Overworld. A Nether portal is destroyed if the any of the obsidian which surrounds it is destroyed, or if it was caught in an explosion.=Stań w portalu na krótki moment aby aktywować teleport. Wejście przez portal Netheru po raz pierwszy stworzy również nowy portal w drugim wymiarze. Jeśli portal Netheru został zbudowany w Netherze będzie prowadził z powrotem na Powierzchnę. Portal Netheru przestanie działać jeśli któryś z otaczających go bloków obsydianu zostanie zniszczony lub gdy dosięgnie go wybuch. +Stand in the portal for a moment to activate the teleportation. Entering a Nether portal for the first time will also create a new portal in the other dimension. If a Nether portal has been built in the Nether, it will lead to the Overworld. A Nether portal is destroyed if the any of the obsidian which surrounds it is destroyed, or if it was caught in an explosion.=Stań w portalu na krótki moment aby aktywować teleport. Wejście przez portal Netheru po raz pierwszy stworzy również nowy portal w drugim wymiarze. Jeśli portal Netheru został zbudowany w Netherze będzie prowadził z powrotem na Powierzchnię. Portal Netheru przestanie działać jeśli któryś z otaczających go bloków obsydianu zostanie zniszczony lub gdy dosięgnie go wybuch. Obsidian is also used as the frame of Nether portals.=Obsydian jest również wykorzystywany do budowania portali Netheru. -To open a Nether portal, place an upright frame of obsidian with a width of at least 4 blocks and a height of 5 blocks, leaving only air in the center. After placing this frame, light a fire in the obsidian frame. Nether portals only work in the Overworld and the Nether.=Aby otworzyć portal Netheru umieść ramę z obsydianu o szerokości co najmniej 4 i wysokości 5 bloków, zostawiając tylko powietrze wewnątrz. Po postawieniu tej ramy rozpal ogień wewnątrz ramy. Portaly Netheru działają tylko w Netherze i na Powierzchni. +To open a Nether portal, place an upright frame of obsidian with a width of at least 4 blocks and a height of 5 blocks, leaving only air in the center. After placing this frame, light a fire in the obsidian frame. Nether portals only work in the Overworld and the Nether.=Aby otworzyć portal Netheru umieść ramę z obsydianu o szerokości co najmniej 4 i wysokości 5 bloków, zostawiając tylko powietrze wewnątrz. Po postawieniu tej ramy rozpal ogień wewnątrz ramy. Portale Netheru działają tylko w Netherze i na Powierzchni. Once placed, an eye of ender can not be taken back.=Raz umieszczone oko Kresu nie może być odzyskane Used to construct end portals=Używane do konstrukcji portali Kresu diff --git a/mods/ITEMS/mcl_potions/locale/mcl_potions.pl.tr b/mods/ITEMS/mcl_potions/locale/mcl_potions.pl.tr index 0ab90c902..abf61d4d3 100644 --- a/mods/ITEMS/mcl_potions/locale/mcl_potions.pl.tr +++ b/mods/ITEMS/mcl_potions/locale/mcl_potions.pl.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%)=Dodaj status na siebie. Arguemnty: : nazwa efektu statusu, np. trucizna. : czas trwania w sekundach. : czynnik siły efektu (1 @= 100%) +Add a status effect to yourself. Arguments: : name of status effect, e.g. poison. : duration in seconds. : effect strength multiplier (1 @= 100%)=Dodaj status na siebie. Argumenty: : nazwa efektu statusu, np. trucizna. : czas trwania w sekundach. : czynnik siły efektu (1 @= 100%) Missing effect parameter!=Brak parametru efektu! Missing or invalid duration parameter!=Brak lub nieprawidłowy parametr czasu trwania! @@ -36,7 +36,7 @@ A throwable water bottle that will shatter on impact, where it creates a cloud o Glistering Melon=Błyszczący arbuz -This shiny melon is full of tiny gold nuggets and would be nice in an item frame. It isn't edible and not useful for anything else.=Ten błyszcący arbuz jest pełen tycich odłamków złota i wygląda ładnie w ramkach na przedmioty. Nie jest jadalny ani użyteczny do innych rzeczy. +This shiny melon is full of tiny gold nuggets and would be nice in an item frame. It isn't edible and not useful for anything else.=Ten błyszczący arbuz jest pełen tycich odłamków złota i wygląda ładnie w ramkach na przedmioty. Nie jest jadalny ani użyteczny do innych rzeczy. A throwable potion that will shatter on impact, where it creates a magic cloud that lingers around for a while. Any player or mob inside the cloud will receive the potion's effect, possibly repeatedly.=Mikstura którą można rzucać i roztrzaska się przy uderzeniu tworząc magiczne opary pozostające przez chwilę na ziemi. Jakikolwiek gracz lub mob wewnątrz oparów będzie wystawiony na efekt mikstury. @@ -66,14 +66,14 @@ Has an awkward taste and is used for brewing potions.=Ma dziwny smak i jest uży Mundane Potion=Mdła mikstura Mundane Splash Potion=Mdła miotana mikstura Mundane Lingering Potion=Mdła trwała miotana mikstura -Has a terrible taste and is not useful for brewing potions.=Ma ochydny smak i nie jest użyteczna przy warzenia mikstur. -Thick Potion=Gęsta imkstura +Has a terrible taste and is not useful for brewing potions.=Ma ohydny smak i nie jest użyteczna przy warzenia mikstur. +Thick Potion=Gęsta mikstura Thick Splash Potion=Gęsta miotana mikstura Thick Lingering Potion=Gęsta trwała miotana mikstura Has a bitter taste and is not useful for brewing potions.=Ma cierpki smak i nie jest użyteczna przy warzenia mikstur. Dragon's Breath=Oddech smoka -This item is used in brewing and can be combined with splash potions to create lingering potions.=Ten przediot jest używany przy ważeniu i może zostać dodany do miotanych mikstur aby uczynić je trwałymi. +This item is used in brewing and can be combined with splash potions to create lingering potions.=Ten przedmiot jest używany przy warzeniu i może zostać dodany do miotanych mikstur aby uczynić je trwałymi. Healing=leczenia +4 HP=+4 HP @@ -82,9 +82,9 @@ Instantly heals.=Natychmiastowo leczy. Harming=obrażeń -6 HP=-6 HP -12 HP=-12 HP -Instantly deals damage.=Natychimastowo zadaje obrażenia. +Instantly deals damage.=Natychmiastowo zadaje obrażenia. Night Vision=widzenia w ciemności -Increases the perceived brightness of light under a dark sky.=Zwiększa postrzeganą jasność przy ciemnym niiebie. +Increases the perceived brightness of light under a dark sky.=Zwiększa postrzeganą jasność przy ciemnym niebie. Swiftness=prędkości Increases walking speed.=Zwiększa prędkość poruszania. Slowness=spowolnienia @@ -94,7 +94,7 @@ Increases jump strength.=Zwiększa siłę skoku. Poison=trucizny Applies the poison effect which deals damage at a regular interval.=Aplikuje efekt trucizny zadający obrażenia w regularnych odstępach czasu. Regeneration=regeneracji -Regenerates health over time.=Regeneruje życie przez pewiec czas. +Regenerates health over time.=Regeneruje życie przez pewien czas. Invisibility=niewidzialności Grants invisibility.=Sprawia, że cel jest niewidzialny. Water Breathing=oddychania pod wodą @@ -111,5 +111,5 @@ No effect=Brak efektu A throwable potion that will shatter on impact, where it gives all nearby players and mobs a status effect.=Mikstura, którą można rzucić i rozbije się przy uderzeniu wystawiając wszystkich pobliskich graczy i moby na efekt jej działania. -This particular arrow is tipped and will give an effect when it hits a player or mob.=Czubek tej strzały jest zanurzony w mikstrurze co wystawi jej cel na efekt jej działania. +This particular arrow is tipped and will give an effect when it hits a player or mob.=Czubek tej strzały jest zanurzony w miksturze co wystawi jej cel na efekt jej działania. diff --git a/mods/ITEMS/mcl_sponges/locale/mcl_sponges.pl.tr b/mods/ITEMS/mcl_sponges/locale/mcl_sponges.pl.tr index dc131cb75..6cb6bf474 100644 --- a/mods/ITEMS/mcl_sponges/locale/mcl_sponges.pl.tr +++ b/mods/ITEMS/mcl_sponges/locale/mcl_sponges.pl.tr @@ -1,6 +1,6 @@ # textdomain: mcl_sponges Sponge=Gąbka -Sponges are blocks which remove water around them when they are placed or come in contact with water, turning it into a wet sponge.=Gąbki to bloki które usuwają wodę wokół sibie gdy są postawione, lub gdy wejdą w kontakt z wodą, zamieniając się w mokre gąbki. +Sponges are blocks which remove water around them when they are placed or come in contact with water, turning it into a wet sponge.=Gąbki to bloki które usuwają wodę wokół siebie gdy są postawione, lub gdy wejdą w kontakt z wodą, zamieniając się w mokre gąbki. Waterlogged Sponge=Nasiąknięta gąbka 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.=Nasiąknięta gąbka może zostać wysuszona w piecu by zamienić się w (suchą) gąbkę. Jeśli w miejscu na paliwo jest puste wiadro, to woda wyleje się do wiaderka. Riverwaterlogged Sponge=Gąbka nasiąknięta wodą rzeczną diff --git a/mods/ITEMS/mcl_throwing/locale/mcl_throwing.pl.tr b/mods/ITEMS/mcl_throwing/locale/mcl_throwing.pl.tr index 3f0fb1ee3..e27970424 100644 --- a/mods/ITEMS/mcl_throwing/locale/mcl_throwing.pl.tr +++ b/mods/ITEMS/mcl_throwing/locale/mcl_throwing.pl.tr @@ -6,7 +6,7 @@ Snowballs can be thrown or launched from a dispenser for fun. Hitting something Egg=Jajo 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.=Jaja mogą być rzucone lub wystrzelone z dozownika i rozbiją się przy uderzeniu. Jest mała szansa, że 1 lub nawet 4 kurczęta wyskoczą z jaja. Ender Pearl=Perła kresu -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.=Perła kresu jest przedmiotem, który można wykorzystać do teleportacij kosztem zdrowia. Może być rzucona, a rzucający zostanie przeteleportowany w miejsce gdzie uderzyła ona stały blok lub roślinę. +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.=Perła kresu jest przedmiotem, który można wykorzystać do teleportacji kosztem zdrowia. Może być rzucona, a rzucający zostanie przeteleportowany w miejsce gdzie uderzyła ona stały blok lub roślinę. Throwable=Można rzucać -Chance to hatch chicks when broken=Szansa na wyklucie kurcąt po rozbiciu +Chance to hatch chicks when broken=Szansa na wyklucie kurcząt po rozbiciu Teleports you on impact for cost of 5 HP=Teleportuje przy uderzeniu za 5 HP diff --git a/mods/ITEMS/mclx_core/locale/mclx_core.pl.tr b/mods/ITEMS/mclx_core/locale/mclx_core.pl.tr index 8972670b6..757507065 100644 --- a/mods/ITEMS/mclx_core/locale/mclx_core.pl.tr +++ b/mods/ITEMS/mclx_core/locale/mclx_core.pl.tr @@ -1,5 +1,5 @@ # textdomain: mclx_core -River Water Source=Żródło wody rzecznej +River Water Source=Źródło wody rzecznej River water has the same properties as water, but has a reduced flowing distance and is not renewable.=Woda rzeczna ma takie same własności jak woda, ale ma zmniejszony zasięg płynięcia i nie jest odnawialna. River Water=Woda rzeczna Flowing River Water=Płynąca woda rzeczna diff --git a/mods/ITEMS/mclx_stairs/locale/mclx_stairs.pl.tr b/mods/ITEMS/mclx_stairs/locale/mclx_stairs.pl.tr index 1b9f92360..8a4c4d5e2 100644 --- a/mods/ITEMS/mclx_stairs/locale/mclx_stairs.pl.tr +++ b/mods/ITEMS/mclx_stairs/locale/mclx_stairs.pl.tr @@ -1,7 +1,7 @@ # textdomain: mclx_stairs Oak Bark Stairs=Schody z dębowej kory Oak Bark Slab=Płyta z dębowej kory -Double Oak Bark Slab=Podwójna łyta z dębowej kory +Double Oak Bark Slab=Podwójna płyta z dębowej kory Acacia Bark Stairs=Schody z akacjowej kory Acacia Bark Slab=Płyta z akacjowej kory Double Acacia Bark Slab=Podwójna płyta z akacjowej kory @@ -26,9 +26,9 @@ Stairs of Gold=Złote schody Slab of Iron=Płyta żelaza Double Slab of Iron=Podwójna płyta żelaza Stairs of Iron=Żelazne schody -Cracked Stone Brick Stairs=Schody z pękniętych kamieni cegłowych -Cracked Stone Brick Slab=Płyta z pękniętych kamieni cegłowych -Double Cracked Stone Brick Slab=Podwójna płyta z pękniętych kamieni cegłowych +Cracked Stone Brick Stairs=Schody z pękniętych ceglanych kamieni +Cracked Stone Brick Slab=Płyta z pękniętych ceglanych kamieni +Double Cracked Stone Brick Slab=Podwójna płyta z pękniętych ceglanych kamieni White Concrete Stairs=Schody z białego cementu White Concrete Slab=Płyta z białego cementu Double White Concrete Slab=Podwójna płyta z białego cementu diff --git a/mods/MISC/findbiome/locale/findbiome.pl.tr b/mods/MISC/findbiome/locale/findbiome.pl.tr index d5299220d..bc25b5758 100644 --- a/mods/MISC/findbiome/locale/findbiome.pl.tr +++ b/mods/MISC/findbiome/locale/findbiome.pl.tr @@ -7,4 +7,4 @@ Biome found at @1.=Nie znaleziono biomu w @1. No biome found!=Nie znaleziono biomu! List all biomes=Lista biomów. No biomes.=Brak biomów. -Not supported. The “biomeinfo” mod is required for v6 mapgen support!=Nie wspierane. Aby wspierać generator map v6 wyamagany jest mod "biomeinfo"! +Not supported. The “biomeinfo” mod is required for v6 mapgen support!=Nie wspierane. Aby wspierać generator map v6 wymagany jest mod "biomeinfo"! diff --git a/mods/MISC/mcl_commands/locale/mcl_commands.pl.tr b/mods/MISC/mcl_commands/locale/mcl_commands.pl.tr index 1ff346fe6..4a3ad181c 100644 --- a/mods/MISC/mcl_commands/locale/mcl_commands.pl.tr +++ b/mods/MISC/mcl_commands/locale/mcl_commands.pl.tr @@ -17,7 +17,7 @@ Invalid node=Niepoprawny node @1 spawned.=@1 przywołany. Invalid parameters (see /help setblock)=Niepoprawne parametry (zobacz /help setblock) List bans=Pokaż zbanowanych -Ban list: @1=List zbanowanych: @1 +Ban list: @1=Lista zbanowanych: @1 Show who is logged on=Pokaż zalogowanych Displays the world seed=Wyświetl ziarno świata Only peaceful mobs allowed!=Tylko pokojowe moby dozwolone! From 51711385a172a0a59ad3f6a4f068c64080300a8b Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 12 Apr 2021 18:31:23 +0200 Subject: [PATCH 042/418] Add hunspell spell checking tool script --- tools/dicts/polish.dic | 57 ++++++++++++++++++++++++++ tools/spell_check_translate_files.py | 60 ++++++++++++++++++++++++++++ 2 files changed, 117 insertions(+) create mode 100644 tools/dicts/polish.dic create mode 100644 tools/spell_check_translate_files.py diff --git a/tools/dicts/polish.dic b/tools/dicts/polish.dic new file mode 100644 index 000000000..1b1452a4b --- /dev/null +++ b/tools/dicts/polish.dic @@ -0,0 +1,57 @@ +1s +Badlandach +biomeinfo +creeper +Creeper +creepera +czerwienit +czerwienitem +czerwienitowych +czerwienitu +enchant +Enderman +Endermit +endermitom +forceenchant +Ghast +Houstonia +iskrzyłuda +Iskrzyłuda +iskrzyłudzie +jasnogłazie +Kolcze +Kolczy +Łuczarz +maphack +międzywymiarowego +międzywymiarowych +moba +Muuuchomor +Nether +netherowej +Netheru +Netherze +półbloku +Prastrażnik +pryzmaryn +Pryzmaryn +Pryzmarynowe +Przywoływacz +setblock +Shulker +shulkerowa +Shulkerowa +shulkerową +Shulkerowe +shulkerowej +shulkerowych +shulkerowymi +spawner +spawnery +spawnerze +szkieleta +v6 +Wielostrzał +Wither +witherowego +Witherowy diff --git a/tools/spell_check_translate_files.py b/tools/spell_check_translate_files.py new file mode 100644 index 000000000..894306d4a --- /dev/null +++ b/tools/spell_check_translate_files.py @@ -0,0 +1,60 @@ +# Output indicator +# >> Spell checking error +# !> Indicates a text line with too many '=' in translate file (.tr) + +import os +import argparse +import hunspell +import re + +parser = argparse.ArgumentParser(description='Check translation file using pyhunspell for a given language.') +parser.add_argument("language", help='language code') +parser.add_argument("dic_file", help='path to .dic file') +parser.add_argument("aff_file", help='path to .aff file') +parser.add_argument('-a', "--add", help='path to file with additional words', default=None) +parser.add_argument('-s', "--suggestions", action="store_true", help='display spelling suggestions for incorrectly spelled words') +args = parser.parse_args() + +PATH = "../mods/" +code_lang = args.language +hs = hunspell.HunSpell(args.dic_file, args.aff_file) +if args.add is not None: + with open(args.add, 'r') as file: + for word in file: + hs.add(word.strip()) + +def get_errors(file): + result = set() + for line in file: + line = line.strip() + if line.startswith('#') or line == '': + continue + if '=' in line: + try: + _, translated = re.split(r'[^@]=', line) + except: + print("!> Too many =s in line:", line) + continue + for word in re.split(r'[\W ]',translated): + if not hs.spell(word): + result.add(word) + + return result + +def spell_check(filename): + with open(filename, 'r', encoding="utf-8") as file: + errors = get_errors(file) + if len(errors) > 0: + print("Spell checking errors in '", filename[len(PATH):], "':", sep='') + for word in errors: + print('>>', word) + if args.suggestions: + print(">> Did you mean:", ", ".join(hs.suggest(word)), "?") + + +for root, _, _ in os.walk(PATH): + if root.endswith('locale'): + translated_file = os.path.join(root, os.path.basename(os.path.dirname(root))) + "." + code_lang + ".tr" + + if os.path.exists(translated_file) and os.path.isfile(translated_file): + spell_check(translated_file) From 8934c65564c3b08739a5a43a5b28da813e283b4f Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Tue, 13 Apr 2021 09:44:00 +0200 Subject: [PATCH 043/418] Add polish translation of mcl_mushrooms --- .../mcl_mushrooms/locale/mcl_mushrooms.pl.tr | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 mods/ITEMS/mcl_mushrooms/locale/mcl_mushrooms.pl.tr diff --git a/mods/ITEMS/mcl_mushrooms/locale/mcl_mushrooms.pl.tr b/mods/ITEMS/mcl_mushrooms/locale/mcl_mushrooms.pl.tr new file mode 100644 index 000000000..3a05b5fb0 --- /dev/null +++ b/mods/ITEMS/mcl_mushrooms/locale/mcl_mushrooms.pl.tr @@ -0,0 +1,24 @@ +# textdomain: mcl_mushrooms +This decorative block is like a huge mushroom stem, but with the stem texture on all sides.=Ten dekoracyjny blok jest jak łodyga grzyba, ale z teksturą łodygi na każdej stronie. +Huge red mushroom blocks are the cap parts of huge red mushrooms. It consists of a red skin and can have pores on each of its sides.=Duże czerwone bloki grzybów to część kapelusza dużych czerwonych grzybów. Składają się z czerwonej skóry i mogą mieć pory na ścianach. +The stem part of a huge red mushroom.=Część łodygi dużego czerwonego grzyba. +Huge Red Mushroom Block=Blok dużego czerwonego grzyba +Huge Red Mushroom Stem=Łodyga dużego czerwonego grzyba +Huge Red Mushroom All-Faces Stem=Łodyga dużego czerwonego grzyba (wszystkie ściany) +Huge brown mushroom blocks are the cap parts of huge brown mushrooms. It consists of a brown skin and can have pores on each of its sides.=Duże brązowe bloki grzybów to część kapelusza dużych brązowych grzybów. Składają się z czerwonej skóry i mogą mieć pory na ścianach. +The stem part of a huge brown mushroom.=Część łodygi dużego brązowego grzyba. +Huge Brown Mushroom Block=Blok dużego brązowego grzyba +Huge Brown Mushroom Stem=Łodyga dużego brązowego grzyba +Huge Brown Mushroom All-Faces Stem=Łodyga dużego brązowego grzyba (wszystkie ściany) +Brown mushrooms are fungi which grow and spread in darkness, but are sensitive to light. They are inedible as such, but they can be used to craft food items.=Brązowe grzyby to grzyby rosnące i rozprzestrzeniające się w ciemności i czułe na światło. Same są niejadalne, jednak można je wykorzystać do stworzenia jedzenia. +Red mushrooms are fungi which grow and spread in darkness, but are sensitive to light. They are inedible as such, but they can be used to craft food items.=Czerwone grzyby to grzyby rosnące i rozprzestrzeniające się w ciemności i czułe na światło. Same są niejadalne, jednak można je wykorzystać do stworzenia jedzenia. +A single mushroom of this species will slowly spread over time towards a random solid opaque block with a light level of 12 or lower in a 3×3×3 cube around the mushroom. It stops spreading when there are 5 or more mushrooms of the same species within an area of 9×3×9 blocks around the mushroom.=Pojedynczy grzyb tego gatunku będzie powoli rozrastał się na losowe, nieprzezroczyste, stałe bloki z poziomem oświetlenia 12 lub niższym w sześcianie 3×3×3 wokół grzyba. +Mushrooms will eventually uproot at a light level of 12 or higher. On mycelium or podzol, they survive and spread at any light level.=Grzyby po jakimś czasie obumrą w oświetlenie o poziomie 12 i wyższym. Na grzybni i bielicy przeżyją i będą się rozprzestrzeniać przy każdym poziomie oświetlenia. +This mushroom can be placed on mycelium and podzol at any light level. It can also be placed on blocks which are both solid and opaque, as long as the light level at daytime is not higher than 12.=Ten grzyb może być postawiony na grzybni oraz bielicy przy dowolnym poziomie oświetlenia. Można go również postawić na dowolnym stałym, nieprzezroczystym bloku tylko jeśli poziom oświetlenia jest nie większy niż 12. +Brown Mushroom=Brązowy grzyb +Red Mushroom=Czerwony grzyb +Mushroom Stew=Zupa grzybowa +Mushroom stew is a healthy soup which can be consumed to restore some hunger points.=Zupa grzybowa jest zdrową zupą, którą można zjeść by odzyskać punkty głodu. +By placing huge mushroom blocks of the same species next to each other, the sides that touch each other will turn into pores permanently.=Kładą bloki dużych grzybów tego samego gatunku obok siebie, ich dotykające się boki zamienią się na stałe w pory. +Grows on podzol, mycelium and other blocks=Rośnie na bielicy, grzybni i innych blokach. +Spreads in darkness=Rozprzestrzenia się w ciemności From 0de2d3d707a0ba2a05c9715f03c1c780263ba212 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Tue, 13 Apr 2021 09:58:10 +0200 Subject: [PATCH 044/418] Add polish translation of mcl_bows --- mods/ITEMS/mcl_bows/locale/mcl_bows.pl.tr | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 mods/ITEMS/mcl_bows/locale/mcl_bows.pl.tr diff --git a/mods/ITEMS/mcl_bows/locale/mcl_bows.pl.tr b/mods/ITEMS/mcl_bows/locale/mcl_bows.pl.tr new file mode 100644 index 000000000..a518ac0ea --- /dev/null +++ b/mods/ITEMS/mcl_bows/locale/mcl_bows.pl.tr @@ -0,0 +1,16 @@ +# textdomain: mcl_bows +Arrow=Strzała +Arrows are ammunition for bows and dispensers.=Strzały są amunicją do łuku i dozowników. +An arrow fired from a bow has a regular damage of 1-9. At full charge, there's a 20% chance of a critical hit dealing 10 damage instead. An arrow fired from a dispenser always deals 3 damage.=Strzała wypuszczona z łuku ma typowe obrażania 1-9. Przy pełnym napięciu jest szansa 20% na trafienie krytyczne zadające 10 obrażeń. Strzała wystrzelona z dozownika zawsze zadaje 3 obrażenia. +Arrows might get stuck on solid blocks and can be retrieved again. They are also capable of pushing wooden buttons.=Strzały zatrzymują się na stałych blokach i mogą być wówczas odzyskane. Są również w stanie klikać drewniane przyciski. +To use arrows as ammunition for a bow, just put them anywhere in your inventory, they will be used up automatically. To use arrows as ammunition for a dispenser, place them in the dispenser's inventory. To retrieve an arrow that sticks in a block, simply walk close to it.=Aby użyć strzał jako amunicję do łuku umieść je gdziekolwiek w twoim ekwipunku, będą użyte automatyczne. Aby użyć strzał jako amunicję do dozownika umieść je w jego ekwipunku. Aby odzyskać strzałę wbitą w blok po prostu podejdź do niej. +Bow=Łuk +Bows are ranged weapons to shoot arrows at your foes.=Łuki to bronie dystansowe do strzelania strzałami w twoich przeciwników. +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.=Szybkość i obrażenia strzały wzrastają im dłużej ją naciągasz. Zwykłe obrażenia strzały są pomiędzy 1 a 9. Przy pełnym napięciu jest szansa 20% na trafienie krytyczne zadające 10 obrażeń. +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.=Aby użyć łuku musisz mieć przynajmniej jedną strzałę gdziekolwiek w twoim ekwipunku (chyba, że to tryb Kreatywny). Przytrzymaj prawy przycisk myszy aby napiąć łuk, puść by strzelić. +Bow=Łuk +Ammunition=Amunicja +Damage from bow: 1-10=Obrażenia z łuku 1-10 +Damage from dispenser: 3=Obrażenia z dozownika: 3 +Launches arrows=Strzela strzałami + From 3a88ff7cb37e560f5c25b183f457e2409caa5510 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Tue, 13 Apr 2021 10:01:37 +0200 Subject: [PATCH 045/418] Add polish translation of mcl_clock --- mods/ITEMS/mcl_clock/locale/mcl_clock.pl.tr | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 mods/ITEMS/mcl_clock/locale/mcl_clock.pl.tr diff --git a/mods/ITEMS/mcl_clock/locale/mcl_clock.pl.tr b/mods/ITEMS/mcl_clock/locale/mcl_clock.pl.tr new file mode 100644 index 000000000..6cb110dd8 --- /dev/null +++ b/mods/ITEMS/mcl_clock/locale/mcl_clock.pl.tr @@ -0,0 +1,5 @@ +# textdomain: mcl_clock +Clocks are tools which shows the current time of day in the Overworld.=Zegary to narzędzia pokazujące aktualną godzinę na Powierzchni. +The clock contains a rotating disc with a sun symbol (yellow disc) and moon symbol and a little “pointer” which shows the current time of day by estimating the real position of the sun and the moon in the sky. Noon is represented by the sun symbol and midnight is represented by the moon symbol.=Zegar zawiera obracające się kółko z symbolami słońca (żółte kółko) i symbolem księżyca oraz małym wskaźnikiem pokazującym aktualną godzinę przez oszacowanie prawdziwej pozycji słońca i księżyca na niebie. Południe jest reprezentowane przez symbol słońca, a północ przez symbol księżyca. +Clock=Zegar +Displays the time of day in the Overworld=Pokazuje aktualną godzinę na Powierzchni From c6de8c0669f242aeb7036537d5bb5ebd117682bf Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Tue, 13 Apr 2021 19:20:40 +0200 Subject: [PATCH 046/418] Add polish translation of mcl_end --- mods/ITEMS/mcl_end/locale/mcl_end.pl.tr | 33 +++++++++++++++++++++++++ tools/dicts/polish.dic | 2 ++ 2 files changed, 35 insertions(+) create mode 100644 mods/ITEMS/mcl_end/locale/mcl_end.pl.tr diff --git a/mods/ITEMS/mcl_end/locale/mcl_end.pl.tr b/mods/ITEMS/mcl_end/locale/mcl_end.pl.tr new file mode 100644 index 000000000..e6526b265 --- /dev/null +++ b/mods/ITEMS/mcl_end/locale/mcl_end.pl.tr @@ -0,0 +1,33 @@ +# textdomain: mcl_end +End Stone=Kamień Kresu +End Stone Bricks=Ceglany kamień Kresu +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. +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 +A chorus flower is the living part of a chorus plant. It can grow into a tall chorus plant, step by step. When it grows, it may die on old age eventually. It also dies when it is unable to grow.=Kwiat refrenusu jest żywą częścią rośliny refrenusu. Może wyrosnąć w wysoką roślinę refrenusu blok po bloku. Gdy rośnie może po pewnym czasie umrzeć ze starości. Umiera również gdy nie jest w stanie rosnąć. +Place it and wait for it to grow. It can only be placed on top of end stone, on top of a chorus plant stem, or at the side of exactly one chorus plant stem.=Postaw go i poczekaj aż urośnie. Może być postawiony tylko na kamieniu Kresu, na łodydze rośliny refrenusu lub na boku dokładnie jednej łodygi rośliny refrenusu. +Dead Chorus Flower=Martwy kwiat refrenusu +This is a part of a chorus plant. It doesn't grow. Chorus flowers die of old age or when they are unable to grow. A dead chorus flower can be harvested to obtain a fresh chorus flower which is able to grow again.=Jest to część rośliny refrenusu, która nie rośnie. Kwiaty refrenusu umierają ze starości lub gdy nie mogą rosnąć. Martwy kwiat refrenusu może zostać zebrany by otrzymać świeży kwiat refrenusu, który znów może urosnąć. +Chorus Plant Stem=Łodyga rośliny refrenusu +A chorus plant stem is the part of a chorus plant which holds the whole plant together. It needs end stone as its soil. Stems are grown from chorus flowers.=Łodyga rośliny refrenusu to część rośliny która utrzymuje całą roślinę razem. Potrzebuje kamienia Kresu jako podłoża. Łodygi wyrastają z kwiatów refrenusu. +Chorus Fruit=Owoc refrenusu +A chorus fruit is an edible fruit from the chorus plant which is home to the End. Eating it teleports you to the top of a random solid block nearby, provided you won't end up inside a liquid, solid or harmful blocks. Teleportation might fail if there are very few or no places to teleport to.=Owoc refrenusu jest jadalną częścią rośliny refrenusu, której naturalnym środowiskiem jest Kres. Zjedzenie go teleportuje cię na górę któregoś losowego stałego bloku w pobliżu, jeśli nie wylądowałbyś w płynie, stałym bloku lub szkodliwym bloku. Teleportacja może się nie udać jeśli nie ma, lub jest mało bloków które spełniają te warunki. +Popped Chorus Fruit=Prażony owoc refrenusu +Eye of Ender=Oko Kresu +This item is used to locate End portal shrines in the Overworld and to activate End portals.=Ten przedmiot jest wykorzystywany do znajdowaniu kapliczek portalu Kresu na Powierzchni oraz do aktywacji portali Kresu. +Use the attack key to release the eye of ender. It will rise and fly in the horizontal direction of the closest end portal shrine. If you're very close, the eye of ender will take the direct path to the End portal shrine instead. After a few seconds, it stops. It may drop as an item, but there's a 20% chance it shatters.=Użyj przycisku ataku aby wypuścić oko Kresu. Podniesie się ono i poleci w poziomym kierunku najbliższej kapliczki portalu. Jeśli jesteś bardzo blisko, oko Kresu podąży bezpośrednią ścieżką do kapliczki portalu Kresu. Po kilku sekundach się zatrzymuje. Może wypaść jako przedmiot, jednak jest 20% szans, że się rozbije. +To activate an End portal, eyes of ender need to be placed into each block of an intact End portal frame.=Aby aktywować portal Kresu, w każdym bloku ramy portalu Kresu musi znajdować się oko Kresu. +NOTE: The End dimension is currently incomplete and might change in future versions.=UWAGA: Wymiar Kresu jest aktualnie nieukończony i może się zmienić w przyszłych wersjach. +The stem attaches itself to end stone and other chorus blocks.=Łodyga przytwierdza się do kamienia Kresu i innych refrenusowych bloków. +Grows on end stone=Rośnie na kamieniu Kresu +Randomly teleports you when eaten=Losowo teleportuje przy zjedzeniu +Guides the way to the mysterious End dimension=Prowadzi do tajemniczego wymiaru Kresu +End Crystal=Kryształ Kresu +End Crystals are explosive devices. They can be placed on Obsidian or Bedrock. Ignite them by a punch or a hit with an arrow. End Crystals can also be used the spawn the Ender Dragon by placing one at each side of the End Exit Portal.=Kryształy kresu to wybuchowe narzędzia. Mogą być postawione na obsydianie bądź skale macierzystej. Zapal je uderzeniem bądź strzałą. Kryształy kresu mogą być również wykorzystane do przywołania smoka Kresu, jeśli ułoży się po jednym na każdym boku Portalu wyjścia z Kresu. +Explosion radius: @1=Promień wybuchu: @1 +Ignited by a punch or a hit with an arrow=Zapalane przez uderzenie lub strzałę +Place the End Crystal on Obsidian or Bedrock, then punch it or hit it with an arrow to cause an huge and probably deadly explosion. To Spawn the Ender Dragon, place one at each side of the End Exit Portal.=Postaw kryształ na obsydianie lub skale macierzystej, a następnie uderz bądź strzel w niego strzałą, aby wywołać dużą, prawdopodobnie śmiertelną, eksplozję. Aby przywołać smoka Kresu postaw po jednej na każdym boku Portalu wyjścia z Kresu. diff --git a/tools/dicts/polish.dic b/tools/dicts/polish.dic index 1b1452a4b..702aa5fa1 100644 --- a/tools/dicts/polish.dic +++ b/tools/dicts/polish.dic @@ -55,3 +55,5 @@ Wielostrzał Wither witherowego Witherowy +refrenusu +refrenusowych From 2a06be02b39dca57bdc619f5c864c33573366b06 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Wed, 14 Apr 2021 21:20:58 +0200 Subject: [PATCH 047/418] Add polish translation of mcl_farming --- .../mcl_farming/locale/mcl_farming.pl.tr | 100 ++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 mods/ITEMS/mcl_farming/locale/mcl_farming.pl.tr diff --git a/mods/ITEMS/mcl_farming/locale/mcl_farming.pl.tr b/mods/ITEMS/mcl_farming/locale/mcl_farming.pl.tr new file mode 100644 index 000000000..3f8d0fc6c --- /dev/null +++ b/mods/ITEMS/mcl_farming/locale/mcl_farming.pl.tr @@ -0,0 +1,100 @@ + +# textdomain: mcl_farming +Beetroot Seeds=Nasiona buraka +Grows into a beetroot plant. Chickens like beetroot seeds.=Wyrasta w roślinę buraka. Kurczaki lubią nasiona buraka. +Place the beetroot seeds on farmland (which can be created with a hoe) to plant a beetroot plant. They grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it beetroot seeds.=Postaw nasiona buraka na polu uprawnym (możesz zaorać ziemię motyką) aby zasadzić roślinę buraka. Wyrasta ona w słońcu i rośnie szybciej na nawodnionym polu uprawnym. Kliknij prawym przyciskiem na zwierzę, aby je nakarmić nasionami buraka. +Premature Beetroot Plant (Stage 1)=Niedojrzała roślina buraka (etap 1) +Beetroot plants are plants which grow on farmland under sunlight in 4 stages. On hydrated farmland, they grow a bit faster. They can be harvested at any time but will only yield a profit when mature.=Rośliny buraka są roślinami rosnącymi na oświetlonym polu uprawnym w czterech etapach. Na nawodnionym polu rosną nieco szybciej. Mogą być zebrane w dowolnym momencie ale będzie to zyskowne tylko jeśli są dojrzałe. +Premature Beetroot Plant=Niedojrzała roślina buraka +Premature Beetroot Plant (Stage 2)=Niedojrzała roślina buraka (etap 2) +Premature Beetroot Plant (Stage 3)=Niedojrzała roślina buraka (etap 3) +Mature Beetroot Plant=Dojrzała roślina buraka +A mature beetroot plant is a farming plant which is ready to be harvested for a beetroot and some beetroot seeds. It won't grow any further.=Dojrzała roślina buraka jest rośliną hodowlaną, która jest gotowa do zebrania w celu uzyskania buraków i nasion. Nie urośnie już więcej. +Beetroot=Burak +Beetroots are both used as food item and a dye ingredient. Pigs like beetroots, too.=Buraki są używane zarówno jako przedmioty jadalne jak i jako składniki do farb. +Hold it in your hand and right-click to eat it. Rightclick an animal to feed it.=Weź je do ręki i kliknij prawy przycisk myszy by je zjeść. +Beetroot Soup=Zupa z buraków +Beetroot soup is a food item.=Zupa z buraków to przedmiot jadalny. +Premature Carrot Plant=Niedojrzała roślina marchwi +Carrot plants are plants which grow on farmland under sunlight in 8 stages, but only 4 stages can be visually told apart. On hydrated farmland, they grow a bit faster. They can be harvested at any time but will only yield a profit when mature.=Rośliny marchwi są roślinami rosnącymi na polach uprawnych w słońcu w 8 etapach, ale tylko 4 etapy mogą być odróżnione wizualnie. Na nawodnionych polach uprawnych rosną one nieco szybciej. +Premature Carrot Plant (Stage @1)=Niedojrzała roślina marchwi (etap @1) +Mature Carrot Plant=Dojrzała roślina marchwi +Mature carrot plants are ready to be harvested for carrots. They won't grow any further.=Dojrzałe rośliny marchwi są gotowe do zebrania w celu uzyskania marchwi. +Carrot=Marchew +Carrots can be eaten and planted. Pigs and rabbits like carrots.=Marchewki mogą być zjedzone bądź zasadzone. Świnie i króliki lubią marchwie. +Hold it in your hand and rightclick to eat it. Place it on top of farmland to plant the carrot. It grows in sunlight and grows faster on hydrated farmland. Rightclick an animal to feed it.=Weź ją do ręki i kliknij prawy przycisk myszy by ją zjeść. Postaw ją na górze pola uprawnego aby ją zasadzić. Rośnie w słońcu i rośnie szybciej na nawodnionym polu. Kliknij prawym przyciskiem na zwierzę aby je nakarmić. +Golden Carrot=Złota marchew +A golden carrot is a precious food item which can be eaten. It is really, really filling!=Złota marchewka to cenny przedmiot jadalny. Jest bardzo, bardzo sycąca! +Hoes are essential tools for growing crops. They are used to create farmland in order to plant seeds on it. Hoes can also be used as very weak weapons in a pinch.=Motyki są niezbędnymi narzędziami do uprawiania roślin. Są używane do tworzenia pól uprawnych na których można sadzić nasiona. Motyki mogą być również użyte jako bardzo słabe bronie w razie konieczności. +Use the hoe on a cultivatable block (by rightclicking it) to turn it into farmland. Dirt, grass blocks and grass paths are cultivatable blocks. Using a hoe on coarse dirt turns it into dirt.=Użyj motyki na bloku który można zaorać (klikając go prawym przyciskiem), aby zamienić go w pole uprawne. Ziemia, bloki trawy i ścieżki trawy są blokami, które można zaorać. Korzystanie z motyki na twardej ziemi zamienia ją w ziemię. +Wood Hoe=Drewniana motyka +Stone Hoe=Kamienna motyka +Iron Hoe=Żelazna motyka +Golden Hoe=Złota motyka +Diamond Hoe=Diamentowa motyka +Melon Seeds=Nasiona melona +Grows into a melon stem which in turn grows melons. Chickens like melon seeds.=Wyrasta z nich łodyga melona, z której z kolei wyrastają melony. Kurczaki lubią nasiona melona. +Place the melon seeds on farmland (which can be created with a hoe) to plant a melon stem. Melon stems grow in sunlight and grow faster on hydrated farmland. When mature, the stem will attempt to grow a melon at the side. Rightclick an animal to feed it melon seeds.=Umieść nasiona melona na polu uprawnym (ziemię można zaorać motyką), aby zasadzić łodygę melona. Łodygi melona rosną w słońcu i rosną szybciej na nawodnionym polu. Gdy są dojrzałe, łodygi melona będą próbować umieścić melon na boku. Kliknij prawym na zwierzę aby nakarmić je nasionami melona. +Melon=Melon +A melon is a block which can be grown from melon stems, which in turn are grown from melon seeds. It can be harvested for melon slices.=Melon jest blokiem, który wyrasta z łodygi melona, która z kolei wyrasta z nasion melona. +Premature Melon Stem=Niedojrzała łodyga melona. +Melon stems grow on farmland in 8 stages. On hydrated farmland, the growth is a bit quicker. Mature melon stems are able to grow melons.=Łodygi melona rosną na polu uprawnym w 8 etapach. Na nawodnionym polu rosną nieco szybciej. Dojrzałe łodygi melona są w stanie tworzyć melony. +Premature Melon Stem (Stage @1)=Niedojrzała łodyga melona (etap @1) +Mature Melon Stem=Dojrzała łodyga melona +A mature melon stem attempts to grow a melon at one of its four adjacent blocks. A melon can only grow on top of farmland, dirt, or a grass block. When a melon is next to a melon stem, the melon stem immediately bends and connects to the melon. While connected, a melon stem can't grow another melon. As soon all melons around the stem have been removed, it loses the connection and is ready to grow another melon.=Dojrzała łodyga melona próbuje stworzyć melona na jednym z czterech sąsiednich bloków. Melon może wyrosnąć tylko na polu uprawnym, ziemi lub bloku trawy. Gdy melon jest obok łodygi melona, łodyga natychmiast się zgina i łączy z melonem. Dopóki jest połączona, nie może z niej wyrosnąć inny melon. Jak tylko wszystkie melony wokół łodygi są usunięte traci ona połączenie i może z niej wyrosnąć następny melon. +Melon Slice=Kawałek melona +This is a food item which can be eaten.=Jest to przedmiot, który można zjeść. +Premature Potato Plant=Niedojrzała roślina ziemniaka +Potato plants are plants which grow on farmland under sunlight in 8 stages, but only 4 stages can be visually told apart. On hydrated farmland, they grow a bit faster. They can be harvested at any time but will only yield a profit when mature.=Rośliny ziemniaka są roślinami rosnącymi w słońcu w 8 etapach, ale tylko 4 są rozróżnialne wizualnie. Na nawodnionym polu rosną nieco szybciej. Mogą być zebrane w dowolnym momencie, ale jest to zyskowne tylko gdy są dojrzałe. +Premature Potato Plant (Stage @1)=Niedojrzała roślina ziemniaka (Etap @1) +Mature Potato Plant=Dojrzała roślina ziemniaka +Mature potato plants are ready to be harvested for potatoes. They won't grow any further.=Dojrzałe rośliny ziemniaka są gotowe do zebrania. Nie będą już rosnąć. +Potato=Ziemniak +Potatoes are food items which can be eaten, cooked in the furnace and planted. Pigs like potatoes.=Ziemniaki to przedmioty, które można zjeść, upiec w piecu i zasadzić. Świnie lubią ziemniaki. +Hold it in your hand and rightclick to eat it. Place it on top of farmland to plant it. It grows in sunlight and grows faster on hydrated farmland. Rightclick an animal to feed it.=Weź je do ręki i kliknij prawy by je zjeść. Postaw je na polu uprawnym by je zasadzić. Rosną w słońcu i rosną szybciej na nawodnionym polu. Kliknij prawym na zwierzę by je nakarmić. +Baked Potato=Upieczony ziemniak +Baked potatoes are food items which are more filling than the unbaked ones.=Upieczone ziemniaki są przedmiotami jadalnymi, które są bardziej sycące niż nieupieczone ziemniaki. +Poisonous Potato=Zatruty ziemniak +This potato doesn't look too healthy. You can eat it to restore hunger points, but there's a 60% chance it will poison you briefly.=Ten ziemniak nie wygląda na zdrowy. Możesz go zjeść aby odzyskać punkty głodu, ale jest 60% szans, że chwilowo cię zatruje. +Pumpkin Seeds=Nasiona dyni +Grows into a pumpkin stem which in turn grows pumpkins. Chickens like pumpkin seeds.=Wyrasta z nich łodyga dyni, z której z kolei wyrastają dynie. Kurczaki lubią nasiona dyni. +Place the pumpkin seeds on farmland (which can be created with a hoe) to plant a pumpkin stem. Pumpkin stems grow in sunlight and grow faster on hydrated farmland. When mature, the stem attempts to grow a pumpkin next to it. Rightclick an animal to feed it pumpkin seeds.=Postaw nasiona dyni na polu uprawnym (możesz zaorać ziemię motyką) aby zasadzić łodygę dyni. Łodygi dyni rosną w słońcu i rosną szybciej na nawodnionym polu. Gdy są dojrzałe, próbują one postawić dynię na jednym z sąsiednich pól. +Premature Pumpkin Stem=Niedojrzała łodyga dyni +Pumpkin stems grow on farmland in 8 stages. On hydrated farmland, the growth is a bit quicker. Mature pumpkin stems are able to grow pumpkins.=Łodygi dyni rosną w 8 etapach. Na nawodnionym polu rośnie nieco szybciej. Z dojrzałych łodyg dyni są w stanie wyrosnąć dynie. +Premature Pumpkin Stem (Stage @1)=Niedojrzała łodyga dyni (etap @1) +Mature Pumpkin Stem=Dojrzała łodyga dyni +A mature pumpkin stem attempts to grow a pumpkin at one of its four adjacent blocks. A pumpkin can only grow on top of farmland, dirt or a grass block. When a pumpkin is next to a pumpkin stem, the pumpkin stem immediately bends and connects to the pumpkin. A connected pumpkin stem can't grow another pumpkin. As soon all pumpkins around the stem have been removed, it loses the connection and is ready to grow another pumpkin.=Dojrzała łodyga dyni próbuje postawić dynię na jednym z czterech sąsiadujących bloków. Dynia może wyrosnąć tylko na polu uprawnym, ziemi lub bloku trawy. Gdy dynia jest obok łodygi dyni, ugina się ona i łączy z dynią. Z połączonej łodygi dyni nie może wyrosnąć kolejna dynia. Jak tylko wszystkie pobliskie dynie są usunięte, traci ona połączenie i może z niej wyrosnąć następna dynia. +Faceless Pumpkin=Dynia bez twarzy +A faceless pumpkin is a decorative block. It can be carved with shears to obtain pumpkin seeds.=Dynia bez twarzy jest blokiem dekoracyjnym. Może być pokrojona nożycami aby otrzymać nasiona dyni. +Pumpkin=Dynia +A pumpkin can be worn as a helmet. Pumpkins grow from pumpkin stems, which in turn grow from pumpkin seeds.=Dynia może być noszona jak hełm. Dynie rosną z łodygi dyni, która z kolei rośnie z nasion dyni. +Jack o'Lantern=Świecąca dynia +A jack o'lantern is a traditional Halloween decoration made from a pumpkin. It glows brightly.=Świecąca dynia jest tradycyjną dekoracją Halloween wykonaną z dyni, która jasno świeci. +Pumpkin Pie=Ciasto z dyni +A pumpkin pie is a tasty food item which can be eaten.=Ciasto z dyni jest pysznym przedmiotem, który można zjeść. +Farmland=Pole uprawne +Farmland is used for farming, a necessary surface to plant crops. It is created when a hoe is used on dirt or a similar block. Plants are able to grow on farmland, but slowly. Farmland will become hydrated farmland (on which plants grow faster) when it rains or a water source is nearby. This block will turn back to dirt when a solid block appears above it or a piston arm extends above it.=Pole uprawne jest wykorzystywane do rolnictwa. Jest to niezbędne powierzchnia do sadzenia roślin. Jest tworzona gdy motyka jest użyta na ziemi lub podobnym bloku. Rośliny mogą rosnąć na polu uprawnym, ale powoli. Pola uprawne zamienią się w nawodnione pola uprawne (na których rośliny rosną szybciej) kiedy spadnie deszcz lub źródło wody jest w pobliżu. Ten blok zamieni się w ziemię gdy stały blok pojawi się nad nim, lub ramię tłoku będzie nad nim wysunięte. +Hydrated Farmland=Nawodnione pole uprawne +Hydrated farmland is used in farming, this is where you can plant and grow some plants. It is created when farmland is under rain or near water. Without water, this block will dry out eventually. This block will turn back to dirt when a solid block appears above it or a piston arm extends above it.=Nawodnione pole uprawne jest używane w rolnictwie, do sadzenia roślin. Jest utworzone gdy na pole uprawne spadnie deszcz lub w pobliżu jest woda. Bez wody blok ten wyschnie po jakimś czasie. Ten blok zamieni się w ziemię gdy stały blok pojawi się nad nim, lub ramię tłoku będzie nad nim wysunięte. +Wheat Seeds=Nasiona zboża +Grows into a wheat plant. Chickens like wheat seeds.=Wyrasta w zboże. Kurczaki lubią nasiona zboża. +Place the wheat seeds on farmland (which can be created with a hoe) to plant a wheat plant. They grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it wheat seeds.=Postaw nasiona zboża na polu uprawnym (możesz zaorać ziemię motyką) aby zasadzić zboże. Wyrasta ono w słońcu i rośnie szybciej na nawodnionym polu uprawnym. Kliknij prawym przyciskiem na zwierzę, aby je nakarmić. +Premature Wheat Plant=Niedojrzałe zboże +Premature wheat plants grow on farmland under sunlight in 8 stages. On hydrated farmland, they grow faster. They can be harvested at any time but will only yield a profit when mature.=Zboże rośnie w słońcu na polu uprawnym w 8 etapach. Na nawodnionym polu rośnie nieco szybciej. Może być zebrane w dowolnym momencie ale będzie to zyskowne tylko jeśli jest dojrzałe. +Premature Wheat Plant (Stage @1)=Niedojrzałe zboże (etap @1) +Mature Wheat Plant=Dojrzałe zboże +Mature wheat plants are ready to be harvested for wheat and wheat seeds. They won't grow any further.=Dojrzałe zboże jest gotowe by zostać zebrane w celu pozyskania nasion zboża. Nie urośnie ono więcej. +Wheat=Zboże +Wheat is used in crafting. Some animals like wheat.=Zboże jest używane do wytwarzania. Niektóre zwierzęta lubią zboże. +Cookie=Ciastko +Bread=Chleb +Hay Bale=Bela siana +Hay bales are decorative blocks made from wheat.=Bele siana są blokami dekoracyjnymi wytwarzanymi ze zboża. +To carve a face into the pumpkin, use the shears on the side you want to carve.=Aby wyrzeźbić twarz w dyni, użyj nożyc na boku w którym chcesz wyrzeźbić. +Use the “Place” key on an animal to try to feed it wheat.=Użyj przycisku "Umieść" na zwierzęciu, aby spróbować je nakarmić. +Grows on farmland=Rośnie na polu uprawnym +Turns block into farmland=Zamienia blok w pole uprawne +60% chance of poisoning=60% szans na zatrucie +Surface for crops=Podłoże pod uprawy +Can become wet=Może się zmoczyć +Uses: @1=Wykorzystuje: @1 From 0a8b6a63cba0310682ed1e748e4644f568b68343 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sat, 24 Apr 2021 20:30:46 +0200 Subject: [PATCH 048/418] Add polish translation of mcl_mobitems --- .../mcl_mobitems/locale/mcl_mobitems.pl.tr | 96 +++++++++++++++++++ tools/dicts/polish.dic | 3 + 2 files changed, 99 insertions(+) create mode 100644 mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.pl.tr diff --git a/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.pl.tr b/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.pl.tr new file mode 100644 index 000000000..dd78a692f --- /dev/null +++ b/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.pl.tr @@ -0,0 +1,96 @@ +# textdomain: mcl_mobitems +Rotten Flesh=Zgniłe mięso +80% chance of food poisoning=80% szans na zatrucie pokarmowe + +Yuck! This piece of flesh clearly has seen better days. If you're really desperate, you can eat it to restore a few hunger points, but there's a 80% chance it causes food poisoning, which increases your hunger for a while.=Fuj! Ten kawał mięsa zdecydowanie widział lepsze dni. Jeśli jesteś bardzo zdesperowana, możesz je zjeść by odzyskać kilka punktów głodu, ale jest 80 % szans, że spowoduje to zatrucie pokarmowe, które zwiększa chwilowo twój głód. + +Raw Mutton=Surowa baranina + +Raw mutton is the flesh from a sheep and can be eaten safely. Cooking it will greatly increase its nutritional value.=Surowa baranina to mięso z owcy, które może być bezpiecznie zjedzone. Upieczenie go znacząco zwiększy jego wartości odżywcze. + +Cooked Mutton=Pieczona baranina +Cooked mutton is the cooked flesh from a sheep and is used as food.=Upieczona baranina jest upieczonym mięsem z owcy i używana jako jedzenie. +Raw Beef=Surowa wołowina + +Raw beef is the flesh from cows and can be eaten safely. Cooking it will greatly increase its nutritional value.=Surowa wołowina jest mięsem z krowy i może być bezpiecznie zjedzone. Upieczenie go znacząco zwiększy jego wartości odżywcze. + + +Steak=Befsztyk +Steak is cooked beef from cows and can be eaten.=Befsztyk jest upieczoną wołowiną z krowy i może być zjedzony. +Raw Chicken=Surowy drób +30% chance of food poisoning=30% szans na zatrucie pokarmowe + +Raw chicken is a food item which is not safe to consume. You can eat it to restore a few hunger points, but there's a 30% chance to suffer from food poisoning, which increases your hunger rate for a while. Cooking raw chicken will make it safe to eat and increases its nutritional value.=Surowy drób nie jest bezpieczny do jedzenia. Można go zjeść, co przywróci kilka punktów głodu, jednak jest 30% szans, że spowoduje to zatrucie pokarmowe, które chwilowo zwiększa głód. Upieczenie surowego drobiu sprawi, że będzie on bezpieczny do jedzenia i zwiększy jego wartości odżywcze. + +Cooked Chicken=Pieczony kurczak +A cooked chicken is a healthy food item which can be eaten.=Pieczony kurczak jest zdrowym jedzeniem, które można bezpiecznie zjeść. +Raw Porkchop=Surowy schab + +A raw porkchop is the flesh from a pig and can be eaten safely. Cooking it will greatly increase its nutritional value.=Surowy schab jest mięsem ze świni i może zostać bezpiecznie zjedzony. Upieczenie go znacząco zwiększy jego wartości odżywcze. + +Cooked Porkchop=Pieczony schab +Cooked porkchop is the cooked flesh of a pig and is used as food.=Pieczony schab to upieczone mięso świni i jest używane jako jedzenie. +Raw Rabbit=Surowy mięso królicze + +Raw rabbit is a food item from a dead rabbit. It can be eaten safely. Cooking it will increase its nutritional value.=Surowy mięso królicze jest mięsem z martwego królika. Może zostać bezpiecznie zjedzone. Upieczenie go znacząco zwiększy jego wartości odżywcze. + +Cooked Rabbit=Pieczony królik +This is a food item which can be eaten.=Ten przedmiot można bezpiecznie zjeść. +Milk=Mleko +Removes all status effects=Usuwa wszystkie statusy efektów. + +Milk is very refreshing and can be obtained by using a bucket on a cow. Drinking it will remove all status effects, but restores no hunger points.=Mleko jest bardzo odświeżające i może zostać uzyskane przez użycie wiadra na krowie. Wypicie go usunie wszystkie statusy efektów, ale nie przywróci punktów głodu. + +Use the placement key to drink the milk.=Kliknij przycisk umieszczania aby wypić mleko. +Spider Eye=Oko pająka +Poisonous=Trujące + +Spider eyes are used mainly in crafting. If you're really desperate, you can eat a spider eye, but it will poison you briefly.=Oczy pająka są użyteczne przy wytwarzaniu. Jeśli jesteś zdesperowana możesz je zjeść, ale otruje cię ono chwilowo. + +Bone=Kość + +Bones can be used to tame wolves so they will protect you. They are also useful as a crafting ingredient.=Kości mogą być użyte do oswajania wilków, aby cię broniły. Są również użyteczne jako materiały do wytwarzania. + +Wield the bone near wolves to attract them. Use the “Place” key on the wolf to give it a bone and tame it. You can then give commands to the tamed wolf by using the “Place” key on it.=Trzymaj kość w pobliżu wilków aby je zwabić. Użyj przycisku "Umieść" na wilku aby dać mu kość i go oswoić. Możesz wtedy wydawać polecenia oswojonemu wilkowi klikając przycisk "Umieść" na nim. + +String=Nić +Strings are used in crafting.=Nić jest użyteczna w wytwarzaniu. +Blaze Rod=Płomienna różdżka +This is a crafting component dropped from dead blazes.=Jest to materiał do wytwarzania wypadający z martwych płomyków. +Blaze Powder=Płomienny proszek +This item is mainly used for crafting.=Ten przedmiot jest użyteczny w wytwarzaniu. +Magma Cream=Magmowy krem +Magma cream is a crafting component.=Magmowy krem to materiał do wytwarzania. +Ghast Tear=Łza Ghasta +Place this item in an item frame as decoration.=Umieść ten item w ramce jako dekorację. +Nether Star=Gwiazda Netheru + +A nether star is dropped when the Wither dies. Place it in an item frame to show the world how hardcore you are! Or just as decoration.=Gwiazda Netheru wypada gdy Wither umiera. Umieść ją w ramce by pokazać światu jak bardzo hardkorowa jesteś. + +Leather=Skóra +Leather is a versatile crafting component.=Skóra jest wszechstronnym materiałem do wytwarzania. +Feather=Pióro +Feathers are used in crafting and are dropped from chickens.=Pióra są używane w wytwarzaniu i wypadają z kurczaków. +Rabbit Hide=Królicza skóra +Rabbit hide is used to create leather.=Królicza skóra jest wykorzystywana do tworzenia skóry. +Rabbit's Foot=Królicza łapka +Must be your lucky day! Place this item in an item frame for decoration.=To musi być twój szczęśliwy dzień! Umieść ten przedmiot w ramce jako dekorację. +Saddle=Siodło +Can be placed on animals to ride them=Może być umieszczone na zwierzętach aby na nich jeździć. +Saddles can be put on some animals in order to mount them.=Siodła mogą być umieszczone na zwierzętach aby ich dosiąść. + +Use the placement key with the saddle in your hand to try to put on the saddle. Saddles fit on horses, mules, donkeys and pigs. Horses, mules and donkeys need to be tamed first, otherwise they'll reject the saddle. Saddled animals can be mounted by using the placement key on them again.=Użyj przycisku umieszczania z siodłem w ręku, aby założyć siodło. Siodła pasują na konie, muły, osły i świnie. Konie, muły i osły muszą być najpierw oswojone, w przeciwnym razie nie dadzą się osiodłać. Osiodłane zwierzęta można dosiąść klikając je prawym przyciskiem myszy. + +Rabbit Stew=Potrawka z królika +Rabbit stew is a very nutricious food item.=Potrawka z królika jest bardzo odżywczym posiłkiem. +Shulker Shell=Skorupa shulkera +Shulker shells are used in crafting. They are dropped from dead shulkers.=Skorupy shulkera są użyteczne w wytwarzaniu. Wypadają z martwych shulkerów. +Slimeball=Kula szlamu +Slimeballs are used in crafting. They are dropped from slimes.=Kule szlamu są użyteczne w wytwarzaniu. Wypadają z szlamów. +Gunpowder=Proch +Carrot on a Stick=Marchewka na patyku +Lets you ride a saddled pig=Pozwala prowadzić osiodłaną świnię +A carrot on a stick can be used on saddled pigs to ride them.=Marchewka na patyku może być użyta na osiodłanej świni by ją prowadzić. + +Place it on a saddled pig to mount it. You can now ride the pig like a horse. Pigs will also walk towards you when you just wield the carrot on a stick.=Użyj jej na osiodłanej skrzyni aby ją założyć. Możesz teraz jeździć na świni jak na koniu. Świnie będą także do ciebie podchodzić jeśli po prostu trzymasz marchewkę na patyku. + diff --git a/tools/dicts/polish.dic b/tools/dicts/polish.dic index 702aa5fa1..e1822789a 100644 --- a/tools/dicts/polish.dic +++ b/tools/dicts/polish.dic @@ -14,6 +14,7 @@ Endermit endermitom forceenchant Ghast +Ghasta Houstonia iskrzyłuda Iskrzyłuda @@ -39,6 +40,8 @@ Pryzmarynowe Przywoływacz setblock Shulker +shulkera +shulkerów shulkerowa Shulkerowa shulkerową From 0ebf6b8f92c23226ed0d2565ce4ac6f8cca71e80 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sat, 24 Apr 2021 20:37:03 +0200 Subject: [PATCH 049/418] Add polish translation of mcl_tnt --- mods/ITEMS/mcl_tnt/locale/mcl_tnt.pl.tr | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 mods/ITEMS/mcl_tnt/locale/mcl_tnt.pl.tr diff --git a/mods/ITEMS/mcl_tnt/locale/mcl_tnt.pl.tr b/mods/ITEMS/mcl_tnt/locale/mcl_tnt.pl.tr new file mode 100644 index 000000000..39e520684 --- /dev/null +++ b/mods/ITEMS/mcl_tnt/locale/mcl_tnt.pl.tr @@ -0,0 +1,8 @@ +# textdomain: mcl_tnt +@1 was caught in an explosion.=@1 została wysadzona. +TNT=Trotyl +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.=Wybuchowy materiał. Gdy wybucha rani żywe istoty w pobliżu i niszczy pobliskie bloki. Trotyl ma promień wybuchu równy @1. Trotyl może być zapalony narzędziami, eksplozjami, ogniem, lawą i energią z czerwienitu. +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.=Materiał wybuchowy Gdy wybucha rani żywe istoty. Trotyl ma promień wybuchu równy @1. Trotyl może być zapalony narzędziami, eksplozjami, ogniem, lawą i energią z czerwienitu. +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.=Postaw trotyl i zapal go za pomocą metod opisanych powyżej. Szybko oddal się na bezpieczny dystans. Na trotyl zacznie działać grawitacja, a po 4 sekundach wybuchnie. +Ignited by tools, explosions, fire, lava, redstone power=Zapalany przez narzędzia, eksplozję, ogień lawę, energię z czerwienitu +Explosion radius: @1=Promień wybuchu: @1 From 0cf58ce98d6b77bd0b49f824159cec71da3c43ac Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sat, 24 Apr 2021 20:44:57 +0200 Subject: [PATCH 050/418] Add polish translation of mcl_jukebox --- mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.pl.tr | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.pl.tr diff --git a/mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.pl.tr b/mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.pl.tr new file mode 100644 index 000000000..a0c2eccd5 --- /dev/null +++ b/mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.pl.tr @@ -0,0 +1,11 @@ +# textdomain: mcl_jukebox +Music Disc=Płyta z muzyką +A music disc holds a single music track which can be used in a jukebox to play music.=Płyta z muzyką zawiera ścieżkę muzyczną, którą można użyć na szafie grającej aby włączyć muzykę. +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.=Włóż płyty z muzyką do pustej szafy grającej aby włączyć muzykę. Kliknij użycie na szafie grającej ponownie, aby odzyskać płytę. Muzyka jest słyszalna tylko przez ciebie, nie przez innych graczy. +Music Disc=Płyta z muzyką +@1—@2=@1-@2 +Jukebox=Szafa grająca +Jukeboxes play music when they're supplied with a music disc.=Szafa grająca gra muzykę, gdy ma w sobie płytę z muzyką. +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.=Włóż płytę z muzyką do szafy grającej aby muzyka zaczęła grać. Jeśli w szafie grającej jest już płyta odzyskasz najpierw tę muzykę. Muzyka będzie słyszalna tylko przez ciebie, nie przez innych graczy. +Now playing: @1—@2=Aktualna muzyka: @1—@2 +Uses music discs to play music=Używa płyt z muzyką by odtwarzać muzykę From ae7ea8edef272c71573a135af5222c29473eca5f Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sat, 24 Apr 2021 20:53:24 +0200 Subject: [PATCH 051/418] Add polish translation of mcl_buckets --- mods/ITEMS/mcl_buckets/locale/mcl_buckets.pl.tr | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 mods/ITEMS/mcl_buckets/locale/mcl_buckets.pl.tr diff --git a/mods/ITEMS/mcl_buckets/locale/mcl_buckets.pl.tr b/mods/ITEMS/mcl_buckets/locale/mcl_buckets.pl.tr new file mode 100644 index 000000000..f7593b14e --- /dev/null +++ b/mods/ITEMS/mcl_buckets/locale/mcl_buckets.pl.tr @@ -0,0 +1,17 @@ +# textdomain: mcl_buckets +Empty Bucket=Puste wiadro +A bucket can be used to collect and release liquids.=Wiadro może być użyte do zbierania i wylewania płynów. +Punch a liquid source to collect it. You can then use the filled bucket to place the liquid somewhere else.=Uderz w źródło płynu aby je zebrać. Możesz następnie użyć pełnego wiadra aby postawić płyn gdzie indziej. +Lava Bucket=Wiadro lawy +A bucket can be used to collect and release liquids. This one is filled with hot lava, safely contained inside. Use with caution.= Wiadro może być użyte do zbierania i wylewania płynów. To jest wypełnione lawą, bezpiecznie przechowywaną w środku. Używać z rozwagą. +Get in a safe distance and place the bucket to empty it and create a lava source at this spot. Don't burn yourself!=Odejdź na bezpieczną odległość i umieść wiadro aby je opróżnić i utworzyć źródło lawy w danym miejscu. Nie poparz się! +Water Bucket=Wiadro wody +A bucket can be used to collect and release liquids. This one is filled with water.=Wiadro może być użyte do zbierania i wylewania płynów. To jest wypełnione wodą. +Place it to empty the bucket and create a water source.=Umieść je aby opróżnić wiadro i utworzyć źródło wody. +River Water Bucket=Wiadro wody rzecznej +A bucket can be used to collect and release liquids. This one is filled with river water.= Wiadro może być użyte do zbierania i wylewania płynów. To jest wypełnione wodą rzeczną. +Place it to empty the bucket and create a river water source.=Umieść je aby opróżnić wiadro i utworzyć źródło wody rzecznej. +Collects liquids=Zbiera płyny +Places a lava source=Umieszcza źródło lawy +Places a water source=Umieszcza źródło wody +Places a river water source=Umieszcza źródło wody rzecznej From 7e9eb927f1b08a858537b13ef0dc68b09e544ade Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sat, 24 Apr 2021 21:11:45 +0200 Subject: [PATCH 052/418] Add polish translation of mcl_colorblocks --- .../locale/mcl_colorblocks.pl.tr | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.pl.tr diff --git a/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.pl.tr b/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.pl.tr new file mode 100644 index 000000000..90a6f2431 --- /dev/null +++ b/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.pl.tr @@ -0,0 +1,76 @@ +# textdomain: mcl_colorblocks +White Terracotta=Biała terakota +White Glazed Terracotta=Biała glazurowana terakota +White Concrete Powder=Biały cement +White Concrete=Biały beton +Grey Terracotta=Szara terakota +Grey Glazed Terracotta=Szara glazurowana terakota +Grey Concrete Powder=Szary cement +Grey Concrete=Szary beton +Light Grey Terracotta=Jasnoszara terakota +Light Grey Glazed Terracotta=Jasnoszara glazurowana terakota +Light Grey Concrete Powder=Jasnoszary cement +Light Grey Concrete=Jasnoszary beton +Black Terracotta=Czarna terakota +Black Glazed Terracotta=Czarna glazurowana terakota +Black Concrete Powder=Czarny cement +Black Concrete=Czarny beton +Red Terracotta=Czerwona terakota +Red Glazed Terracotta=Czerwona glazurowana terakota +Red Concrete Powder=Czerwony cement +Red Concrete=Czerwony beton +Yellow Terracotta=Żółta terakota +Yellow Glazed Terracotta=Żółta glazurowana terakota +Yellow Concrete Powder=Żółty cement +Yellow Concrete=Żółty beton +Green Terracotta=Zielona terakota +Green Glazed Terracotta=Zielona glazurowana terakota +Green Concrete Powder=Zielony cement +Green Concrete=Zielony beton +Cyan Terracotta=Błękitna terakota +Cyan Glazed Terracotta=Błękitna glazurowana terakota +Cyan Concrete Powder=Błękitny cement +Cyan Concrete=Błękitny beton +Blue Terracotta=Niebieska terakota +Blue Glazed Terracotta=Niebieska glazurowana terakota +Blue Concrete Powder=Niebieski cement +Blue Concrete=Niebieski beton +Magenta Terracotta=Karmazynowa terakota +Magenta Glazed Terracotta=Karmazynowa glazurowana terakota +Magenta Concrete Powder=Karmazynowy cement +Magenta Concrete=Karmazynowy beton +Orange Terracotta=Pomarańczowa terakota +Orange Glazed Terracotta=Pomarańczowa glazurowana terakota +Orange Concrete Powder=Pomarańczowy cement +Orange Concrete=Pomarańczowy beton +Purple Terracotta=Fioletowa terakota +Purple Glazed Terracotta=Fioletowa glazurowana terakota +Purple Concrete Powder=Fioletowy cement +Purple Concrete=Fioletowy beton +Brown Terracotta=Brązowa terakota +Brown Glazed Terracotta=Brązowa glazurowana terakota +Brown Concrete Powder=Brązowy cement +Brown Concrete=Brązowy beton +Pink Terracotta=Różowa terakota +Pink Glazed Terracotta=Różowa glazurowana terakota +Pink Concrete Powder=Różowy cement +Pink Concrete=Różowy beton +Lime Terracotta=Jasnozielona terakota +Lime Glazed Terracotta=Jasnozielona glazurowana terakota +Lime Concrete Powder=Jasnozielony cement +Lime Concrete=Jasnozielony beton +Light Blue Terracotta=Jasnoniebieska terakota +Light Blue Glazed Terracotta=Jasnoniebieska glazurowana terakota +Light Blue Concrete Powder=Jasnoniebieski cement +Light Blue Concrete=Jasnoniebieski beton +Terracotta is a basic building material. It comes in many different colors.=Terakota jest podstawowym blokiem budowlanym. Może mieć wiele różnych kolorów. +Glazed terracotta is a decorative block with a complex pattern. It can be rotated by placing it in different directions.=Glazurowana terakota jest dekoracyjnym blokiem ze złożonym wzorem. Może być obracana przez stawianie jej w różnych kierunkach. +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.=Cement jest używany do stworzenia betonu, ale może być również sam użyty jako dekoracja. Może mieć wiele różnych kolorów. Cement zamienia się w beton tego samego koloru gdy wejdzie w kontakt z wodą. +Concrete is a decorative block which comes in many different colors. It is notable for having a very strong and clean color.=Beton jest blokiem dekoracyjnym, który może mieć wiele różnych kolorów. Jest warty uwagi ze względu na swój czysty i wyrazisty kolor. +Terracotta=Terakota +Terracotta is a basic building material which comes in many different colors. This particular block is uncolored.=Terakota jest podstawowym blokiem budowlanym, który może mieć wiele różnych kolorów. Ten konkretny blok nie ma żadnego koloru. +Colored Terracotta=Barwiona terakota +Glazed Terracotta=Glazurowana terakota +Concrete Powder=Cement +Concrete=Beton +Turns into concrete on water contact=Zamienia się w beton w kontakcie z wodą From 67780f2159684b45951157401c89ab0ca1a49a51 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sat, 24 Apr 2021 21:16:02 +0200 Subject: [PATCH 053/418] Add polish translation of mcl_cake --- mods/ITEMS/mcl_cake/locale/mcl_cake.pl.tr | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 mods/ITEMS/mcl_cake/locale/mcl_cake.pl.tr diff --git a/mods/ITEMS/mcl_cake/locale/mcl_cake.pl.tr b/mods/ITEMS/mcl_cake/locale/mcl_cake.pl.tr new file mode 100644 index 000000000..f90e665e7 --- /dev/null +++ b/mods/ITEMS/mcl_cake/locale/mcl_cake.pl.tr @@ -0,0 +1,12 @@ +# textdomain: mcl_cake +Cake=Ciasto +Cakes can be placed and eaten to restore hunger points. A cake has 7 slices. Each slice restores 2 hunger points and 0.4 saturation points. Cakes will be destroyed when dug or when the block below them is broken.=Ciasto może być postawione i zjedzone by odzyskać punkty głodu. Ciasto ma 7 kawałków. Każdy kawałek przywraca dwa punkty głodu i 0.4 punktu nasycenia. Ciasta zostaną zniszczone przy próbie wykopania, lub gdy blok pod nimi zostanie zniszczony. +Place the cake anywhere, then rightclick it to eat a single slice. You can't eat from the cake when your hunger bar is full.=Postaw ciasto gdziekolwiek, następnie kliknij prawym by zjeść pojedynczy kawałek. Nie możesz jeść ciasta gdy twój pasek głodu jest pełny. +Cake (6 Slices Left)=Ciasto (pozostały 6 kawałki) +Cake (5 Slices Left)=Ciasto (pozostały 5 kawałki) +Cake (4 Slices Left)=Ciasto (pozostały 4 kawałki) +Cake (3 Slices Left)=Ciasto (pozostały 3 kawałki) +Cake (2 Slices Left)=Ciasto (pozostały 2 kawałki) +Cake (1 Slice Left)=Ciasto (pozostał 1 kawałek) +With 7 tasty slices!=Z 7 pysznymi kawałkami! +Hunger points: +@1 per slice=Punkty głodu: +@1 za kawałek From c6a07b8007e4010dde309f665561d8032c09043a Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sat, 24 Apr 2021 21:19:11 +0200 Subject: [PATCH 054/418] Add polish translation of mcl_cocoas --- mods/ITEMS/mcl_cocoas/locale/mcl_cocoas.pl.tr | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 mods/ITEMS/mcl_cocoas/locale/mcl_cocoas.pl.tr diff --git a/mods/ITEMS/mcl_cocoas/locale/mcl_cocoas.pl.tr b/mods/ITEMS/mcl_cocoas/locale/mcl_cocoas.pl.tr new file mode 100644 index 000000000..bfd0d707e --- /dev/null +++ b/mods/ITEMS/mcl_cocoas/locale/mcl_cocoas.pl.tr @@ -0,0 +1,6 @@ +# textdomain: mcl_cocoas +Premature Cocoa Pod=Niedojrzała roślina kakao +Cocoa pods grow on the side of jungle trees in 3 stages.=Roślina kakao rośnie na bokach tropikalnych drzew w 3 etapach +Medium Cocoa Pod=Średnio-dojrzała roślina kakao +Mature Cocoa Pod=Dojrzała roślina kakao +A mature cocoa pod grew on a jungle tree to its full size and it is ready to be harvested for cocoa beans. It won't grow any further.=Dojrzała roślina kakao wyrosła na drzewie tropikalnym do swojego pełnego rozmiaru i jest gotowa by ją zebrać dla ziaren kakao. Nie urośnie już więcej. From 18903d5a098b38f9d1ef8de2dbdde795f26139cd Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sat, 24 Apr 2021 21:23:09 +0200 Subject: [PATCH 055/418] Add polish translation of mcl_wool --- mods/ITEMS/mcl_wool/locale/mcl_wool.pl.tr | 37 +++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 mods/ITEMS/mcl_wool/locale/mcl_wool.pl.tr diff --git a/mods/ITEMS/mcl_wool/locale/mcl_wool.pl.tr b/mods/ITEMS/mcl_wool/locale/mcl_wool.pl.tr new file mode 100644 index 000000000..ac92171d1 --- /dev/null +++ b/mods/ITEMS/mcl_wool/locale/mcl_wool.pl.tr @@ -0,0 +1,37 @@ +# textdomain: mcl_wool +Wool=Wełna +Carpet=Dywan +White Wool=Biała wełna +White Carpet=Biały dywan +Grey Wool=Szara wełna +Grey Carpet=Szary dywan +Light Grey Wool=Jasnoszara wełna +Light Grey Carpet=Jasnoszary dywan +Black Wool=Czarna wełna +Black Carpet=Czarny dywan +Red Wool=Czerwona wełna +Red Carpet=Czerwony dywan +Yellow Wool=Żółta wełna +Yellow Carpet=Żółty dywan +Green Wool=Zielona wełna +Green Carpet=Zielony dywan +Cyan Wool=Błękitna wełna +Cyan Carpet=Błękitny dywan +Blue Wool=Niebieska wełna +Blue Carpet=Niebieski dywan +Magenta Wool=Karmazynowa wełna +Magenta Carpet=Karmazynowy dywan +Orange Wool=Pomarańczowa wełna +Orange Carpet=Pomarańczowy dywan +Purple Wool=Fioletowa wełna +Purple Carpet=Fioletowy dywan +Brown Wool=Brązowa wełna +Brown Carpet=Brązowy dywan +Pink Wool=Różowa wełna +Pink Carpet=Różowy dywan +Lime Wool=Jasnozielona wełna +Lime Carpet=Jasnozielony dywan +Light Blue Wool=Jasnoniebieska wełna +Light Blue Carpet=Jasnoniebieski dywan +Wool is a decorative block which comes in many different colors.=Wełna jest blokiem dekoracyjnym, który może mieć wiele różnych kolorów. +Carpets are thin floor covers which come in many different colors.=Dywany są cienkimi pokrywami na podłogi, które mogą mieć wiele różnych kolorów. From a613da65c57f9aacf1e49c3d9ff29cfa132a68ed Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sat, 24 Apr 2021 21:47:42 +0200 Subject: [PATCH 056/418] Add polish translation of mcl_walls --- mods/ITEMS/mcl_walls/locale/mcl_walls.pl.tr | 17 +++++++++++++++++ tools/dicts/polish.dic | 1 + 2 files changed, 18 insertions(+) create mode 100644 mods/ITEMS/mcl_walls/locale/mcl_walls.pl.tr diff --git a/mods/ITEMS/mcl_walls/locale/mcl_walls.pl.tr b/mods/ITEMS/mcl_walls/locale/mcl_walls.pl.tr new file mode 100644 index 000000000..9d75eb18d --- /dev/null +++ b/mods/ITEMS/mcl_walls/locale/mcl_walls.pl.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.=Kawałek ściany. Nie może być przeskoczony pojedynczym skokiem. Gdy kilka z nich jest położonych obok siebie, automatycznie połączą się one w ścianę. +Cobblestone Wall=Ściana z brukowca +Mossy Cobblestone Wall=Ściana z zamszonego brukowca +Andesite Wall=Andezytowa ściana +Granite Wall=Granitowa ściana +Diorite Wall=Diorytowa ściana +Brick Wall=Ceglana ściana +Sandstone Wall=Ściana z piaskowca +Red Sandstone Wall=Ściana z czerwienitu +Stone Brick Wall=Ściana z ceglanego kamienia +Mossy Stone Brick Wall=Ściana z zamszonego ceglanego kamienia +Prismarine Wall=Pryzmarynowa ściana +End Stone Brick Wall=Ściana z ceglanego kamienia Kresu +Nether Brick Wall=Ściana z Netherowej cegły +Red Nether Brick Wall=Ściana z czerwonej Netherowej cegły + diff --git a/tools/dicts/polish.dic b/tools/dicts/polish.dic index e1822789a..266b244f0 100644 --- a/tools/dicts/polish.dic +++ b/tools/dicts/polish.dic @@ -36,6 +36,7 @@ półbloku Prastrażnik pryzmaryn Pryzmaryn +Pryzmarynowa Pryzmarynowe Przywoływacz setblock From a038908acd23f9eb1f5e37b79cbd62b77cbd47e2 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sat, 24 Apr 2021 21:51:11 +0200 Subject: [PATCH 057/418] Add polish translation of mcl_crafting_table --- .../mcl_crafting_table/locale/mcl_crafting_table.pl.tr | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.pl.tr diff --git a/mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.pl.tr b/mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.pl.tr new file mode 100644 index 000000000..aed33bf6c --- /dev/null +++ b/mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.pl.tr @@ -0,0 +1,8 @@ +# textdomain: mcl_crafting_table +Crafting Table=Stół rzemieślniczy +A crafting table is a block which grants you access to a 3×3 crafting grid which allows you to perform advanced crafts.=Stół rzemieślniczy jest blokiem, który daje dostęp do siatki wytwarzania rozmiaru 3×3, co daje dostęp do zaawansowanego wytwarzania. +Rightclick the crafting table to access the 3×3 crafting grid.=Kliknij prawym przyciskiem na stół rzemieślniczy aby zyskać dostęp do siatki wytwarzania rozmiaru 3×3. +Recipe book=Księga receptur +Crafting=Wytwarzanie +Inventory=Ekwipunek +3×3 crafting grid=Siatka wytwarzania 3×3 From b93d3cf93cfe944a03c3d84ff5f20e4a2f83d846 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sun, 25 Apr 2021 12:58:32 +0200 Subject: [PATCH 058/418] Add polish translation of mcl_books --- mods/ITEMS/mcl_books/locale/mcl_books.pl.tr | 28 +++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 mods/ITEMS/mcl_books/locale/mcl_books.pl.tr diff --git a/mods/ITEMS/mcl_books/locale/mcl_books.pl.tr b/mods/ITEMS/mcl_books/locale/mcl_books.pl.tr new file mode 100644 index 000000000..8ef0db873 --- /dev/null +++ b/mods/ITEMS/mcl_books/locale/mcl_books.pl.tr @@ -0,0 +1,28 @@ +# textdomain: mcl_books +Book=Książka +Books are used to make bookshelves and book and quills.=Książki są używane do tworzenia półek z książkami oraz książek z piórem. +“@1”=„@1” +Copy of “@1”=Kopia „@” +Copy of Copy of “@1”=Kopia kopii „@” +Tattered Book=Podarta książka +by @1=autorstwa @1 +# as in “to sign a book” +Sign=Podpisz +Done=Skończone +This item can be used to write down some notes.=Ten przedmiot może być wykorzystany do zapisania notatek +Hold it in the hand, then rightclick to read the current notes and edit then. You can edit the text as often as you like. You can also sign the book which turns it into a written book which you can stack, but it can't be edited anymore.=Weź ją do ręki, następnie kliknij prawym przyciskiem by przeczytać notatki i je edytować. Możesz edytować tekst tak często jak tylko chcesz. Możesz także podpisać książkę, co zamienia ją w zapisaną książkę, którą można grupować, ale nie można jej edytować. +A book can hold up to 4500 characters. The title length is limited to 64 characters.=W książce zmieści się maksymalnie 4500 znaków. Długość tytułu jest ograniczona do 64 znaków. +Enter book title:=Wprowadź tytuł książki: +by @1=autorstwa @1 +Note: The book will no longer be editable after signing=Uwaga: Książki nie da się edytować po podpisaniu +Sign and Close=Podpisz i zamknij +Cancel=Anuluj +Nameless Book=Nienazwana książka +Written Book=Zapisana książka +Written books contain some text written by someone. They can be read and copied, but not edited.=Zapisane książki przechowują tekst napisany przez kogoś. Mogą być czytane i kopiowane, ale nie edytowane. +Hold it in your hand, then rightclick to read the book.=Weź ją do ręki i kliknij prawym, aby przeczytać książkę. +To copy the text of the written book, place it into the crafting grid together with a book and quill (or multiple of those) and craft. The written book will not be consumed. Copies of copies can not be copied.=Aby skopiować tekst z zapisanej książki umieść ją w siatce wytwarzania z książką z piórem (lub kilkoma) i wytwarzaj. Zapisana książka nie zostanie wykorzystana. Kopie kopii nie mogą być kopiowane. +Bookshelf=Półka z książkami +Bookshelves are used for decoration.=Półki z książkami są używane jako dekoracje +Book and Quill=Książka z piórem +Write down some notes=Zapisz jakieś notatki From c0ce511ad000b3ec6357fb0f9a4412a9e172c471 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sun, 25 Apr 2021 13:14:56 +0200 Subject: [PATCH 059/418] Add polish translation of mcl_mobspawners --- mods/ITEMS/mcl_mobspawners/locale/mcl_mobspawners.pl.tr | 5 +++++ tools/dicts/polish.dic | 1 + 2 files changed, 6 insertions(+) create mode 100644 mods/ITEMS/mcl_mobspawners/locale/mcl_mobspawners.pl.tr diff --git a/mods/ITEMS/mcl_mobspawners/locale/mcl_mobspawners.pl.tr b/mods/ITEMS/mcl_mobspawners/locale/mcl_mobspawners.pl.tr new file mode 100644 index 000000000..5b4a8d896 --- /dev/null +++ b/mods/ITEMS/mcl_mobspawners/locale/mcl_mobspawners.pl.tr @@ -0,0 +1,5 @@ +# textdomain: mcl_mobspawners +Mob Spawner=Spawner mobów +A mob spawner regularily causes mobs to appear around it while a player is nearby. Some mob spawners are disabled while in light.=Spawner mobów sprawia, że wokół niego regularnie pojawiają się moby, gdy w pobliżu jest gracz. Niektóre spawnery są wyłączone w świetle. +If you have a spawn egg, you can use it to change the mob to spawn. Just place the item on the mob spawner. Player-set mob spawners always spawn mobs regardless of the light level.=Jeśli masz jajo spawnowania, możesz go użyć by zmienić moba, który będzie przywoływany. Aby to zrobić umieść przedmiot na spawnerze. +Makes mobs appear=Tworzy moby diff --git a/tools/dicts/polish.dic b/tools/dicts/polish.dic index 266b244f0..ed631afa6 100644 --- a/tools/dicts/polish.dic +++ b/tools/dicts/polish.dic @@ -51,6 +51,7 @@ shulkerowej shulkerowych shulkerowymi spawner +spawnowania spawnery spawnerze szkieleta From 4975a516f5b92f742ecaa3736afe5354fbd52908 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sun, 25 Apr 2021 13:24:42 +0200 Subject: [PATCH 060/418] Add polish translation of mcl_fishing --- .../ITEMS/mcl_fishing/locale/mcl_fishing.pl.tr | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 mods/ITEMS/mcl_fishing/locale/mcl_fishing.pl.tr diff --git a/mods/ITEMS/mcl_fishing/locale/mcl_fishing.pl.tr b/mods/ITEMS/mcl_fishing/locale/mcl_fishing.pl.tr new file mode 100644 index 000000000..cc35096cd --- /dev/null +++ b/mods/ITEMS/mcl_fishing/locale/mcl_fishing.pl.tr @@ -0,0 +1,18 @@ +# textdomain: mcl_fishing +Fishing Rod=Wędka +Fishing rods can be used to catch fish.=Wędki są wykorzystywane do łowienia ryb. +Rightclick to launch the bobber. When it sinks right-click again to reel in an item. Who knows what you're going to catch?=Kliknij prawym przyciskiem aby wyrzucić spławik. Gdy zejdzie pod wodę, kliknij prawym aby go wciągnąć razem z przedmiotem. Kto wie co uda ci się złapać? +Raw Fish=Surowa ryba +Raw fish is obtained by fishing and is a food item which can be eaten safely. Cooking it improves its nutritional value.=Surowa ryba jest możliwa do zdobycia poprzez łowienie i można go bezpiecznie zjeść. Upieczenie jej znacząco zwiększa wartości odżywcze. +Cooked Fish=Upieczona ryba +Mmh, fish! This is a healthy food item.=Mm, ryba! Jest to zdrowy i pożywny posiłek. +Raw Salmon=Surowy łosoś +Raw salmon is obtained by fishing and is a food item which can be eaten safely. Cooking it improves its nutritional value.=Surowy łosoś można zdobyć poprzez łowienie i można go bezpiecznie zjeść. Upieczenie jej znacząco zwiększa wartości odżywcze. +Cooked Salmon=Upieczony łosoś +This is a healthy food item which can be eaten.=Jest to zdrowy i pożywny posiłek. +Clownfish=Błazenek +Clownfish may be obtained by fishing (and luck) and is a food item which can be eaten safely.=Błazenek +Pufferfish=Rozdymka +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).=Rozdymki są powszechnym gatunkiem ryby, który można zdobyć poprzez łowienie. Technicznie rzecz biorąc można je zjeść, jednak są bardzo niezdrowe dla ludzi. Zjedzenie rozdymki przywraca tylko 1 punkt głodu, ale powoduje zatrucie (co zabiera twoje zdrowie, ale nie zabija) oraz zatrucie pokarmowe (co zwiększa twój głód). +Catches fish in water=Łowi ryby z wody +Very poisonous=Bardzo trujące From dd0e381e39a05a0f4baac5453a568e7dd8ecc482 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sun, 25 Apr 2021 13:33:57 +0200 Subject: [PATCH 061/418] Add polish translation of mcl_beds --- mods/ITEMS/mcl_beds/locale/mcl_beds.pl.tr | 41 +++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 mods/ITEMS/mcl_beds/locale/mcl_beds.pl.tr diff --git a/mods/ITEMS/mcl_beds/locale/mcl_beds.pl.tr b/mods/ITEMS/mcl_beds/locale/mcl_beds.pl.tr new file mode 100644 index 000000000..3a1d8f6ce --- /dev/null +++ b/mods/ITEMS/mcl_beds/locale/mcl_beds.pl.tr @@ -0,0 +1,41 @@ +# textdomain: mcl_beds +Beds allow you to sleep at night and make the time pass faster.=Łóżka pozwalają na spanie w nocy i sprawiają, że czas płynie szybciej. +To use a bed, stand close to it and right-click the bed to sleep in it. Sleeping only works when the sun sets, at night or during a thunderstorm. The bed must also be clear of any danger.=Aby użyć łóżka stań blisko niego i kliknij je prawym przyciskiem myszy aby na nim zasnąć. Spać można tylko przy zachodzie słońca, w nocy lub podczas burz. Łóżko nie może być również narażone na niebezpieczeństwo. +You have heard of other worlds in which a bed would set the start point for your next life. But this world is not one of them.=Słyszałaś o światach w których łóżko byłoby twoim punktem wyjścia w następnym życiu. Ten świat nie jest jednym z nich. +By using a bed, you set the starting point for your next life. If you die, you will start your next life at this bed, unless it is obstructed or destroyed.=Korzystając z łóżka ustawiasz punkt wyjścia w następnym życiu. Jeśli umrzesz, odrodzisz się przy tym łóżku chyba, że zostanie zniszczone lub zawalone. +In this world, going to bed won't skip the night, but it will skip thunderstorms.=W tym świecie pójście do łóżka nie ominie nocy, jednak może pominąć burze. +Sleeping allows you to skip the night. The night is skipped when all players in this world went to sleep. The night is skipped after sleeping for a few seconds. Thunderstorms can be skipped in the same manner.=Spanie pozwala pominąć noc. Noc jest pomijana gdy wszyscy gracze w tym świecie pójdą spać. Jest ona pomijana po kilku sekundach. Burze można pomijać w ten sam sposób. +Bed=Łóżko +Red Bed=Czerwone łóżko +Blue Bed=Niebieskie łóżko +Cyan Bed=Błękitne łóżko +Grey Bed=Szare łóżko +Light Grey Bed=Jasnoszare łóżko +Black Bed=Czarne łóżko +Yellow Bed=Żółte łóżko +Green Bed=Zielone łóżko +Magenta Bed=Karmazynowe łóżko +Orange Bed=Pomarańczowe łóżko +Purple Bed=Fioletowe łóżko +Brown Bed=Brązowe łóżko +Pink Bed=Różowe łóżko +Lime Bed=Jasnozielone łóżko +Light Blue Bed=Jasnoniebieskie łóżko +White Bed=Białe łóżko +You can't sleep, the bed's too far away!=Nie możesz spać, łóżko jest zbyt daleko! +This bed is already occupied!=To łóżko jest zajęte! +You have to stop moving before going to bed!=Musisz przestać się poruszać przed pójściem do spania! +You can't sleep now, monsters are nearby!=Nie możesz spać, w pobliżu są potwory! +You can't sleep, the bed is obstructed!=Nie możesz spać, łóżko jest zawalone! +It's too dangerous to sleep here!=Tu jest zbyt niebezpiecznie by spać! +New respawn position set! But you can only sleep at night or during a thunderstorm.=Nowa pozycja do odrodzenia ustawiona! Ale możesz spać tylko podczas nocy, bądź burzy. +You can only sleep at night or during a thunderstorm.=Możesz spać tylko podczas nocy, bądź burzy. +New respawn position set!=Nowa pozycja odradzania ustawiona! +Leave bed=Opuść łóżka +Abort sleep=Przerwij sen +Players in bed: @1/@2=Graczy w łóżkach: @1/@2 +Note: Night skip is disabled.=Uwaga: Pomijanie nocy wyłączone. +You're sleeping.=Śpisz. +You will fall asleep when all players are in bed.=Zaśniesz gdy wszyscy gracze będą w łóżkach. +You're in bed.=Jesteś w łóżku. +Allows you to sleep=Pozwala spać From 3917bb51a29649feaf1259086153f37a03b3e779 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sun, 25 Apr 2021 13:39:59 +0200 Subject: [PATCH 062/418] Add polish translation of mcl_signs --- mods/ITEMS/mcl_signs/locale/mcl_signs.pl.tr | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 mods/ITEMS/mcl_signs/locale/mcl_signs.pl.tr diff --git a/mods/ITEMS/mcl_signs/locale/mcl_signs.pl.tr b/mods/ITEMS/mcl_signs/locale/mcl_signs.pl.tr new file mode 100644 index 000000000..bf3bbf3c8 --- /dev/null +++ b/mods/ITEMS/mcl_signs/locale/mcl_signs.pl.tr @@ -0,0 +1,9 @@ +# textdomain: mcl_signs +Sign=Znak +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.=Na znakach można pisać i postawić je w dwóch wariantach: znak ścienny i znak na patyku. Znaki mogą być stawiane na górze i na bokach bloków, ale nie pod nimi. +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.=Po postawieniu znaku możesz coś na nim napisać. Masz miejsce na cztery linie tekstu po 15 znaków każda; cokolwiek poza limitami będzie utracone. Nie wszystkie znaki są wspierane. Tekstu nie można zmienić po napisaniu; musisz zniszczyć znak i postawić go ponownie. +Enter sign text:=Wpisz tekst znaku: +Maximum line length: 15=Maksymalna długość linii: 15 +Maximum lines: 4=Maksymalna liczba linii: 4 +Done=Skończone +Can be written=Można na nim coś napisać From bcf5eef01083277f72670dc500c77017371eb804 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sun, 25 Apr 2021 13:41:04 +0200 Subject: [PATCH 063/418] Add polish translation of mcl_torches --- mods/ITEMS/mcl_torches/locale/mcl_torches.pl.tr | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 mods/ITEMS/mcl_torches/locale/mcl_torches.pl.tr diff --git a/mods/ITEMS/mcl_torches/locale/mcl_torches.pl.tr b/mods/ITEMS/mcl_torches/locale/mcl_torches.pl.tr new file mode 100644 index 000000000..ae1c118ae --- /dev/null +++ b/mods/ITEMS/mcl_torches/locale/mcl_torches.pl.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_torches +Torch=Pochodnia +Torches are light sources which can be placed at the side or on the top of most blocks.=Pochodnie są źródłami światła, które może zostać postawione na boku lub na górze większości bloków. From 095128b6b36cbeff8a363dd90e8aaa899249fb68 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sun, 25 Apr 2021 13:55:30 +0200 Subject: [PATCH 064/418] Add polish translation of mcl_fire --- mods/ITEMS/mcl_fire/locale/mcl_fire.pl.tr | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 mods/ITEMS/mcl_fire/locale/mcl_fire.pl.tr diff --git a/mods/ITEMS/mcl_fire/locale/mcl_fire.pl.tr b/mods/ITEMS/mcl_fire/locale/mcl_fire.pl.tr new file mode 100644 index 000000000..ba55cc31e --- /dev/null +++ b/mods/ITEMS/mcl_fire/locale/mcl_fire.pl.tr @@ -0,0 +1,19 @@ +# textdomain: mcl_fire +Fire Charge=Ładunek ognia +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.=Ładunki ognia są pociskami, którymi można strzelać z dozowników. Lecą one w linii prostej a po zderzeniu zamieniają się w ogień. +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.=Włóż ładunek ognia do dozownika i dostarcz energię z czerwienitu aby wystrzelić. Aby bezpośrednio zapalić ładunek postaw go na ziemi co go wykorzystuje. +Flint and Steel=Krzesiwo +Flint and steel is a tool to start fires and ignite blocks.=Krzesiwo jest narzędziem do rozpalania ognia i podpalania bloków. +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.=Kliknij prawym przyciskiem na powierzchni bloku, ab spróbować rozpalić na nim ogień lub go podpalić. Niektóre bloki reagują na podpalenie w specjalny sposób. +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.=Ogień jest raniącym i niszczącym, ale krótko żyjącym blokiem. Zniszczy on i będzie się rozprzestrzeniał na inne łatwopalne bloki, ale zniknie on gdy nie zostanie nic więcej do spalenia. Zostanie zgaszony przez pobliską wodę lub deszcz. Jeśli ogień jest zapalony na skale Netheru lub bloku magmy, natychmiast zamieni się on w wieczny ogień. +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.=Ogień jest raniącym, ale nie niszczącym i krótko żyjącym blokiem. Zniknie gdy w pobliżu nie będzie łatwopalnych bloków. Ogień nie niszczy bloków, przynajmniej nie w tym świecie. Może być zgaszony przez pobliską wodę i deszcz. Może być bezpiecznie zniszczony przez uderzenie go, ale jest raniący gdy stanie się wewnątrz. Jeśli ogień jest zapalony nad skałą Netheru lub bloku magmy, natychmiast zamieni się w wieczny ogień. +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.=Wieczny ogień jest niszczącym blokiem, który może tworzyć więcej ognia. Będzie on tworzył ogień wokół gdy w pobliżu są łatwopalne bloki. Wieczny ogień można ugasić uderzeniem i blokami wody. W przeciwieństwie do (zwykłego) ognia, wieczny ogień nie gasi się sam z siebie i będzie nadal płonął w deszczu. Uderzanie wiecznego ognia jest bezpieczne, ale jest raniący gdy stoi się wewnątrz. +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.=Wieczny ogień jest raniącym blokiem. Może on być zgaszony przez uderzenie i bloki wody. W przeciwieństwie do (zwykłego) ognia, wieczny ogień nie zgaśnie sam z siebie i będzie nadal płonął w deszczu. Uderzanie wiecznego ognia jest bezpieczne, ale jest raniący gdy stoi się wewnątrz. +@1 has been cooked crisp.=@1 została usmażona na chrupko. +@1 felt the burn.=@1 poczuła oparzenie. +@1 died in the flames.=@1 zginęła w płomieniach. +@1 died in a fire.=@1 zginęła w ogniu. +Fire=Ogień +Eternal Fire=Wieczny ogień +Dispenser projectile=Pocisk do dozownika +Starts fires and ignites blocks=Rozpala ogień i podpala bloki From 1f07f5ba17d4cb1bb60916472439232ae2f4c165 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sun, 25 Apr 2021 14:26:52 +0200 Subject: [PATCH 065/418] Add polish translation of mcl_stairs --- mods/ITEMS/mcl_stairs/locale/mcl_stairs.pl.tr | 101 ++++++++++++++++++ tools/dicts/polish.dic | 4 + 2 files changed, 105 insertions(+) create mode 100644 mods/ITEMS/mcl_stairs/locale/mcl_stairs.pl.tr diff --git a/mods/ITEMS/mcl_stairs/locale/mcl_stairs.pl.tr b/mods/ITEMS/mcl_stairs/locale/mcl_stairs.pl.tr new file mode 100644 index 000000000..2b2b52486 --- /dev/null +++ b/mods/ITEMS/mcl_stairs/locale/mcl_stairs.pl.tr @@ -0,0 +1,101 @@ +# textdomain: mcl_stairs +Stairs are useful to reach higher places by walking over them; jumping is not required. Placing stairs in a corner pattern will create corner stairs. Stairs placed on the ceiling or at the upper half of the side of a block will be placed upside down.=Schody są użyteczne by wspiąć się do wyższych miejsc poprzez chodzenie po nich. Nie trzeba na nich skakać. Umieszczenie schodów w rogu schodów dopasuje schodu do rogu. Schody postawione na suficie lub na górnej części bloku będą postawione do góry nogami. +Double @1=Podwójna @1 +Slabs are half as high as their full block counterparts and occupy either the lower or upper part of a block, depending on how it was placed. Slabs can be easily stepped on without needing to jump. When a slab is placed on another slab of the same type, a double slab is created.=Płyty są wysokości połowy odpowiadającego im bloku i zajmują górną lub dolną część bloku w zależności od tego jak są postawione. Na płyty można łatwo wejść bez konieczności skakania. Gdy płyta jest postawiona na innej płycie tego samego typu, podwójna płyta jest tworzona. +Upper @1=Górna @1 +Double slabs are full blocks which are created by placing two slabs of the same kind on each other.=Podwójne płyty są pełnymi blokami tworzonymi przez położenie dwóch płyt tego samego typu jedna na drugiej. +Oak Wood Stairs=Dębowe schody +Oak Wood Slab=Dębowa płyta +Double Oak Wood Slab=Podwójna dębowa płyta +Jungle Wood Stairs=Tropikalne schody +Jungle Wood Slab=Tropikalna płyta +Double Jungle Wood Slab=Podwójna tropikalna płyta +Acacia Wood Stairs=Akacjowe schody +Acacia Wood Slab=Akacjowa płyta +Double Acacia Wood Slab=Podwójna akacjowa płyta +Spruce Wood Stairs=Świerkowe schody +Spruce Wood Slab=Świerkowa płyta +Double Spruce Wood Slab=Podwójna świerkowa płyta +Birch Wood Stairs=Brzozowe schody +Birch Wood Slab=Brzozowa płyta +Double Birch Wood Slab=Podwójna brzozowa płyta +Dark Oak Wood Stairs=Ciemno-dębowe schody +Dark Oak Wood Slab=Ciemno-dębowa płyta +Double Dark Oak Wood Slab=Podwójna ciemno-dębowa płyta +Stone Stairs=Kamienne schody +Stone Slab=Kamienna płyta +Double Stone Slab=Podwójna kamienna płyta +Polished Stone Slab=Polerowana kamienna płyta +Double Polished Stone Slab=Podwójna polerowana kamienna płyta +Andesite Stairs=Andezytowe schody +Andesite Slab=Andezytowa płyta +Double Andesite Slab=Podwójne andezytowa płyta +Granite Stairs=Granitowe schody +Granite Slab=Granitowa płyta +Double Granite Slab=Podwójna granitowa płyta +Diorite Stairs=Diorytowe schody +Diorite Slab=Diorytowa płyta +Double Diorite Slab=Podwójna diorytowa płyta +Cobblestone Stairs=Brukowane schody +Cobblestone Slab=Brukowana płyta +Double Cobblestone Slab=Podwójna brukowana płyta +Mossy Cobblestone Stairs=Zamszone brukowane schody +Mossy Cobblestone Slab=Zamszona brukowana płyta +Double Mossy Cobblestone Slab=Podwójna zamszona brukowana płyta +Brick Stairs=Ceglane schody +Brick Slab=Ceglana płyta +Double Brick Slab=Podwójna ceglana płyta +Sandstone Stairs=Piaskowcowe schody +Sandstone Slab=Piaskowcowa płyta +Double Sandstone Slab=Podwójna piaskowcowa płyta +Smooth Sandstone Stairs=Polerowane piaskowcowe schody +Smooth Sandstone Slab=Polerowana piaskowcowa płyta +Double Smooth Sandstone Slab=Podwójna polerowana piaskowcowa płyta +Red Sandstone Stairs=Czerwone piaskowcowe schody +Red Sandstone Slab=Czerwona piaskowcowa płyta +Double Red Sandstone Slab=Podwójna czerwona piaskowcowa płyta +Smooth Red Sandstone Stairs=Polerowane czerwone piaskowcowe schody +Smooth Red Sandstone Slab=Polerowana czerwona piaskowcowa płyta +Double Smooth Red Sandstone Slab=Podwójna polerowana czerwona piaskowcowa płyta +Stone Bricks Stairs=Ceglane kamienne schody +Stone Bricks Slab=Ceglana kamienna płyta +Double Stone Bricks Slab=Podwójna ceglana kamienna płyta +Quartz Stairs=Kwarcowe schody +Quartz Slab=Kwarcowa płyta +Double Quartz Slab=Podwójna kwarcowa płyta +Smooth Quartz Stairs=Polerowane kwarcowe schody +Smooth Quartz Slab=Polerowana kwarcowa płyta +Double Smooth Quartz Slab=Podwójna polerowana kwarcowa płyta +Nether Brick Stairs=Netherowe ceglane schody +Nether Brick Slab=Netherowa ceglana płyta +Double Nether Brick Slab=Podwójna Netherowa ceglana płyta +Red Nether Brick Stairs=Czerwone Netherowe ceglane schody +Red Nether Brick Slab=Czerwona Netherowa ceglana płyta +Double Red Nether Brick Slab=Podwójna czerwona Netherowa ceglana płyta +End Stone Brick Stairs=Kresowe ceglane kamienne schody +End Stone Brick Slab=Kresowa ceglana kamienna płyta +Double End Stone Brick Slab=Podwójna kresowa ceglana kamienna płyta +Purpur Stairs=Purpurowe schody +Purpur Slab=Purpurowa płyta +Double Purpur Slab=Podwójna purpurowe płyta +Prismarine Stairs=Pryzmarynowe schody +Prismarine Slab=Pryzmarynowa płyta +Double Prismarine Slab=Podwójna pryzmarynowa płyta +Prismarine Brick Stairs=Pryzmarynowe ceglane schody +Prismarine Brick Slab=Pryzmarynowa ceglana płyta +Double Prismarine Brick Slab=Podwójna pryzmarynowa ceglana płyta +Dark Prismarine Stairs=Ciemne pryzmarynowe schody +Dark Prismarine Slab=Ciemna pryzmarynowa płyta +Double Dark Prismarine Slab=Podwójna ciemna pryzmarynowa płyta +Polished Andesite Slab=Polerowana andezytowa płyta +Double Polished Andesite Slab=Podwójna polerowana andezytowa płyta +Polished Andesite Stairs=Polerowane andezytowe schody +Polished Granite Slab=Polerowana granitowa płyta +Double Polished Granite Slab=Podwójna polerowana granitowa płyta +Polished Granite Stairs=Polerowane granitowe schody +Polished Diorite Slab=Polerowana diorytowa płyta +Double Polished Diorite Slab=Podwójna polerowana diorytowa płyta +Polished Diorite Stairs=Polerowane diorytowe schody +Mossy Stone Brick Stairs=Zamszone kamienne ceglane schody +Mossy Stone Brick Slab=Zamszona kamienna ceglana płyta +Double Mossy Stone Brick Slab=Podwójna zamszona kamienna ceglana płyta diff --git a/tools/dicts/polish.dic b/tools/dicts/polish.dic index ed631afa6..6db9e2e07 100644 --- a/tools/dicts/polish.dic +++ b/tools/dicts/polish.dic @@ -30,11 +30,15 @@ moba Muuuchomor Nether netherowej +Netherowa +Netherowe Netheru Netherze półbloku Prastrażnik pryzmaryn +pryzmarynowe +pryzmarynowa Pryzmaryn Pryzmarynowa Pryzmarynowe From 29001086c31473decaf343b0ad4de7d16b10bff4 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sun, 25 Apr 2021 14:30:42 +0200 Subject: [PATCH 066/418] Add polish translation of mesecons_walllever --- .../mesecons_walllever/locale/mesecons_walllever.pl.tr | 5 +++++ tools/dicts/polish.dic | 4 ++++ 2 files changed, 9 insertions(+) create mode 100644 mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.pl.tr diff --git a/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.pl.tr b/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.pl.tr new file mode 100644 index 000000000..924fe3dd0 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.pl.tr @@ -0,0 +1,5 @@ +# textdomain: mesecons_wallever +Lever=Dźwignia +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.=Dźwignia jest czerwienitowym elementem, który można przełączać między stanem włączonym i wyłączonym. Wysyła ona czerwienitową energię gdy jest w stanie włączonym. +Use the lever to flip it on or off.=Użyj dźwigni by przełączyć ją między stanami. +Provides redstone power while it's turned on=Dostarcza energii czerwienitowej gdy jest włączona diff --git a/tools/dicts/polish.dic b/tools/dicts/polish.dic index 6db9e2e07..26f41db38 100644 --- a/tools/dicts/polish.dic +++ b/tools/dicts/polish.dic @@ -8,6 +8,10 @@ czerwienit czerwienitem czerwienitowych czerwienitu +czerwienitowa +czerwienitowej +czerwienitową +czerwienitowym enchant Enderman Endermit From eeaf4e09c6134a47e1840dfcaf0fe2d939e01513 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sun, 25 Apr 2021 14:34:15 +0200 Subject: [PATCH 067/418] Add polish translation of mesecons_solarpanel --- .../mesecons_solarpanel/locale/mesecons_solarpanel.pl.tr | 8 ++++++++ tools/dicts/polish.dic | 1 + 2 files changed, 9 insertions(+) create mode 100644 mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.pl.tr diff --git a/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.pl.tr b/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.pl.tr new file mode 100644 index 000000000..d7e3e19ca --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.pl.tr @@ -0,0 +1,8 @@ +# textdomain: mesecons_solarpanel +Daylight Sensor=Czujnik światła dziennego +Daylight sensors are redstone components which provide redstone power when they are in sunlight and no power otherwise. They can also be inverted.=Czujniki światła dziennego są czerwienitowymi elementami, które wysyłają energie czerwienitową gdy są w świetle słonecznym i nie dostarczają energii w przeciwnym przypadku. +Use the daylight sensor to toggle its state.=Użyj czujnik światła dziennego by zmienić jego stan. +Inverted Daylight Sensor=Odwrotny czujnik światła dziennego +In inverted state, they provide redstone power when they are not in sunlight and no power otherwise.=W odwrotnym stanie, dostarczają energię czerwienitową gdy nie są w świetle słonecznym i nie dostarczają energii w przeciwnym przypadku. +Provides redstone power when in sunlight=Dostarcza energię czerwienitową gdy w oświetlony słońcem +Can be inverted=Może być odwrócony diff --git a/tools/dicts/polish.dic b/tools/dicts/polish.dic index 26f41db38..5d811d66e 100644 --- a/tools/dicts/polish.dic +++ b/tools/dicts/polish.dic @@ -12,6 +12,7 @@ czerwienitowa czerwienitowej czerwienitową czerwienitowym +czerwienitowymi enchant Enderman Endermit From ffd28c259dc56375615b4122d174ceab1b31c79e Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Thu, 29 Apr 2021 16:11:43 +0200 Subject: [PATCH 068/418] Add polish translation of mcl_droppers --- .../REDSTONE/mcl_droppers/locale/mcl_droppers.pl.tr | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.pl.tr diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.pl.tr b/mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.pl.tr new file mode 100644 index 000000000..7b0fd3c0d --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.pl.tr @@ -0,0 +1,9 @@ +# textdomain: mcl_droppers +Dropper=Podajnik +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.=Podajnik jest urządzeniem czerwienitowym i pojemnikiem z 9 miejscami, który po dostarczeniu energii czerwienitowej wyrzuca przedmiot lub umieszcza go w pojemniku przed nim. +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.=Podajniki mogą być skierowane w 6 możliwych kierunkach, przedmioty będą wyrzucane z dziury. Użyj podajnika aby zyskać dostęp do jego ekwipunku. Dostarcz do niego energii czerwienitowej aby sprawić by wyrzucił lub przeniósł losowy przedmiot. +Downwards-Facing Dropper=Podajnik skierowany w dół +Upwards-Facing Dropper=Podajnik skierowany w górę +Inventory=Ekwipunek +9 inventory slots=9 miejsc ekwipunku +Drops item when powered by redstone power=Wyrzuca przedmiot gdy zasilony czerwienitem From 0e52e09cc8c5e9dc74ce4f008cfa9452c10745ff Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Thu, 29 Apr 2021 16:21:08 +0200 Subject: [PATCH 069/418] Add polish translation of mesecons_wires --- .../mesecons_wires/locale/mesecons_wires.pl.tr | 11 +++++++++++ tools/dicts/polish.dic | 1 + 2 files changed, 12 insertions(+) create mode 100644 mods/ITEMS/REDSTONE/mesecons_wires/locale/mesecons_wires.pl.tr diff --git a/mods/ITEMS/REDSTONE/mesecons_wires/locale/mesecons_wires.pl.tr b/mods/ITEMS/REDSTONE/mesecons_wires/locale/mesecons_wires.pl.tr new file mode 100644 index 000000000..bdc717649 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_wires/locale/mesecons_wires.pl.tr @@ -0,0 +1,11 @@ +# textdomain: mesecons_wires +Redstone is a versatile conductive mineral which transmits redstone power. It can be placed on the ground as a trail.=Czerwienit jest wszechstronnym przewodzącym minerałem, który przewodzi energię czerwienitową. Może być położony na ziemi tworząc ścieżkę. +A redstone trail can be in two states: Powered or not powered. A powered redstone trail will power (and thus activate) adjacent redstone components.=Ścieżka czerwienitu może być w dwóch stanach: Zasilonym lub Nie zasilonym. Zasilona ścieżka będzie zasilać (a więc również aktywować) sąsiadujące mechanizmy czerwienitowe. +Redstone power can be received from various redstone components, such as a block of redstone or a button. Redstone power is used to activate numerous mechanisms, such as redstone lamps or pistons.=Energia czerwienitowa może być uzyskana z różnych mechanizmów czerwienitowych, takich jak blok czerwienitu czy przycisk. Energia czerwienitowa może być wykorzystywana do aktywowania różnych mechanizmów takich jak czerwienitowe lampy lub tłoki. +Place redstone on the ground to build a redstone trail. The trails will connect to each other automatically and it can also go over hills. An easy way to power a redstone trail is by placing a redstone torch.=Połóż czerwienit na ziemi aby stworzyć ścieżkę czerwienitu. Ścieżki połączą się ze sobą automatycznie, nawet jeśli istnieje różnica wysokości. Łatwym sposobem na zasilenie ścieżki czerwienitu jest postawienie czerwienitowej pochodni. +Read the help entries on the other redstone components to learn how redstone components interact.=Przeczytaj wpisy na temat innych czerwienitowych mechanizmów, by dowiedzieć się jak wchodzą ze sobą w interakcję. +Redstone=Czerwienit +Powered Redstone Spot (@1)=Zasilony punkt czerwienitu (@1) +Redstone Trail (@1)=Ścieżka czerwienitu (@1) +Powered Redstone Trail (@1)=Zasilona ścieżka czerwienitu (@1) +Transmits redstone power, powers mechanisms=Przekazuje energię czerwienitową, zasila mechanizmy diff --git a/tools/dicts/polish.dic b/tools/dicts/polish.dic index 5d811d66e..1b19c3840 100644 --- a/tools/dicts/polish.dic +++ b/tools/dicts/polish.dic @@ -9,6 +9,7 @@ czerwienitem czerwienitowych czerwienitu czerwienitowa +czerwienitowe czerwienitowej czerwienitową czerwienitowym From d74e1fd162c8cd5ef8925eb0a40135ded5671a39 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Thu, 29 Apr 2021 16:34:26 +0200 Subject: [PATCH 070/418] Add polish translation of mcl_dispensers --- .../locale/mcl_dispensers.pl.tr | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.pl.tr diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.pl.tr b/mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.pl.tr new file mode 100644 index 000000000..ee2b3cffe --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.pl.tr @@ -0,0 +1,25 @@ +# textdomain: mcl_dispensers +Dispenser=Dozownik +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.=Dozownik jest mechanizmem czerwienitowym, który po zasileniu wystrzeli lub wyrzuci przedmiot. Jest on pojemnikiem z 9 miejscami. +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.=Postaw dozownik w jednym z 6 możliwych kierunków. "Dziura" wskazuje z której strony przedmioty będą dozowane. Użyj dozownika, aby zarządzać jego ekwipunkiem. Zasil dozownik czerwienitem aby wyrzucić losowy przedmiot. +The dispenser will do different things, depending on the dispensed item:=Dozownik będzie zachowywał się inaczej w zależności od przedmiotu: +• Arrows: Are launched=• Strzały: są wystrzelone +• Eggs and snowballs: Are thrown=• Jaja i śnieżki: są wyrzucane +• Fire charges: Are fired in a straight line=• Ładunki ogniowe: Są wystrzelone w linii prostej +• Armor: Will be equipped to players and armor stands=• Zbroja: będzie ekwipowana graczom, lub stojakom na zbroję +• Boats: Are placed on water or are dropped=• Łódki: Będą postawione na wodzie, lub wypuszczone +• Minecart: Are placed on rails or are dropped=• Wagoniki: będą postawione na torach, lub upuszczone +• Bone meal: Is applied on the block it is facing=• Mączka kostna: będzie zaaplikowana do bloku +• Empty buckets: Are used to collect a liquid source=• Puste wiadra: będą wykorzystane do zebrania źródła płynu +• Filled buckets: Are used to place a liquid source=• Pełne wiadra: będą wykorzystane do postawienia źródła płynu +• Heads, pumpkins: Equipped to players and armor stands, or placed as a block=• Głowy, dynie: będą ekwipowane graczom i stojakom na zbroję, lub postawione jako bloki +• Shulker boxes: Are placed as a block=Shulkerowe skrzynie: są postawione jako blok +• TNT: Is placed and ignited=• Trotyl: będzie postawiony i zapalony +• Flint and steel: Is used to ignite a fire in air and to ignite TNT=• Krzesiwo: będzie wykorzystane do rozpalenia ognia w powietrzu i zapalenia trotylu +• Spawn eggs: Will summon the mob they contain=• Jaja przywołujące: przywołają moba, którego zawierają +• Other items: Are simply dropped=• Inne przedmioty: zostaną upuszczone +Downwards-Facing Dispenser=Dozownik skierowany w dół +Upwards-Facing Dispenser=Dozownik skierowany w górę +Inventory=Ekwipunek +9 inventory slots=9 miejsc ekwipunku +Launches item when powered by redstone power=Wystrzela przedmiot gdy zasilony czerwienitem From 87b5a7b7ad7d6fe487d326f56f383168d471b40f Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Thu, 29 Apr 2021 16:37:19 +0200 Subject: [PATCH 071/418] Add polish translation of lightning --- mods/ENVIRONMENT/lightning/locale/lightning.pl.tr | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 mods/ENVIRONMENT/lightning/locale/lightning.pl.tr diff --git a/mods/ENVIRONMENT/lightning/locale/lightning.pl.tr b/mods/ENVIRONMENT/lightning/locale/lightning.pl.tr new file mode 100644 index 000000000..1b0edbd1f --- /dev/null +++ b/mods/ENVIRONMENT/lightning/locale/lightning.pl.tr @@ -0,0 +1,4 @@ +# textdomain: lightning +@1 was struck by lightning.=@1 została trafiona przez piorun. +Let lightning strike at the specified position or yourself=Pozwala by piorun uderzył we wskazaną pozycję lub ciebie +No position specified and unknown player=Nie wskazano pozycji i nieznany gracz From 7f1cb7fc5445609036e65b84efc75a248d1a9e5c Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Thu, 29 Apr 2021 16:38:23 +0200 Subject: [PATCH 072/418] Add polish translation of mcl_void_damage --- mods/ENVIRONMENT/mcl_void_damage/locale/mcl_void_damage.pl.tr | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 mods/ENVIRONMENT/mcl_void_damage/locale/mcl_void_damage.pl.tr diff --git a/mods/ENVIRONMENT/mcl_void_damage/locale/mcl_void_damage.pl.tr b/mods/ENVIRONMENT/mcl_void_damage/locale/mcl_void_damage.pl.tr new file mode 100644 index 000000000..c943d3e67 --- /dev/null +++ b/mods/ENVIRONMENT/mcl_void_damage/locale/mcl_void_damage.pl.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_void_damage +The void is off-limits to you!=Otchłań jest poza twoim zasięgiem! +@1 fell into the endless void.=@1 spadła w bezkresną otchłań. From 9666076cb4d605892fc920aa8a50a7af5b318b8e Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Thu, 29 Apr 2021 16:41:28 +0200 Subject: [PATCH 073/418] Add polish translation of mcl_weather --- mods/ENVIRONMENT/mcl_weather/locale/mcl_weather.pl.tr | 8 ++++++++ tools/dicts/polish.dic | 4 ++++ 2 files changed, 12 insertions(+) create mode 100644 mods/ENVIRONMENT/mcl_weather/locale/mcl_weather.pl.tr diff --git a/mods/ENVIRONMENT/mcl_weather/locale/mcl_weather.pl.tr b/mods/ENVIRONMENT/mcl_weather/locale/mcl_weather.pl.tr new file mode 100644 index 000000000..fc4c72a31 --- /dev/null +++ b/mods/ENVIRONMENT/mcl_weather/locale/mcl_weather.pl.tr @@ -0,0 +1,8 @@ +# textdomain: mcl_weather +Gives ability to control weather=Daje możliwość kontrolowania pogody +Changes the weather to the specified parameter.=Zmienia pogodę na wskazany parametr +Error: No weather specified.=Błąd: nie wskazano pogody. +Error: Invalid parameters.=Błąd: nieprawidłowy parametr. +Error: Duration can't be less than 1 second.=Błąd: Czas trwania nie może być mniejszy niż 1 sekunda. +Error: Invalid weather specified. Use “clear”, “rain”, “snow” or “thunder”.=Błąd: wskazano nieprawidłową pogodę. Użyj "clear", "rain", "snow" lub "thunder". +Toggles between clear weather and weather with downfall (randomly rain, thunderstorm or snow)=Zmienia pomiędzy czystą pogodą i pogodą z opadami (losowo deszcz, burza lub śnieg) diff --git a/tools/dicts/polish.dic b/tools/dicts/polish.dic index 1b19c3840..0e2d5b669 100644 --- a/tools/dicts/polish.dic +++ b/tools/dicts/polish.dic @@ -72,3 +72,7 @@ witherowego Witherowy refrenusu refrenusowych +thunder +clear +snow +rain From 97e50714febadd690ebd7991dd877abe1b9cf260 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Thu, 29 Apr 2021 16:43:08 +0200 Subject: [PATCH 074/418] Add polish translation of mesecons_lightstone --- .../mesecons_lightstone/locale/mesecons_lightstone.pl.tr | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.pl.tr diff --git a/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.pl.tr b/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.pl.tr new file mode 100644 index 000000000..cd2f755c9 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.pl.tr @@ -0,0 +1,4 @@ +# textdomain: mesecons_lightstone +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 From 65846cb6d8193fff74560177a84d4c95139c12bd Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Thu, 29 Apr 2021 16:47:41 +0200 Subject: [PATCH 075/418] Add polish translation of mesecons_button --- .../mesecons_button/locale/mesecons_button.pl.tr | 14 ++++++++++++++ tools/dicts/polish.dic | 1 + 2 files changed, 15 insertions(+) create mode 100644 mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.pl.tr diff --git a/mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.pl.tr b/mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.pl.tr new file mode 100644 index 000000000..f6d895ad0 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.pl.tr @@ -0,0 +1,14 @@ +# textdomain: mesecons_button +Use the button to push it.=Użyj przycisku by go wcisnąć. +Stone Button=Kamienny przycisk +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.=Kamienny przycisk jest mechanizmem czerwienitowym, który można nacisnąć by dostarczył on energię czerwienitową. Po naciśnięciu zasila on przyległy mechanizm czerwienitowy przez 1 sekundę. +Oak Button=Dębowy przycisk +Acacia Button=Akacjowy przycisk +Birch Button=Brzozowy przycisk +Dark Oak Button=Ciemno-dębowy przycisk +Spruce Button=Świerkowy przycisk +Jungle Button=Tropikalny przycisk +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.=Drewniany przycisk jest mechanizmem czerwienitowym wykonanym z drewna, który można nacisnąć by dostarczał energię czerwienitową. Po naciśnięciu zasila on przyległe mechanizmy czerwienitowe przez 1.5 sekundy. Drewniane przyciski mogą być również naciśnięte przez strzały. +Provides redstone power when pushed=Dostarcza energii czerwienitowej gdy naciśnięty +Push duration: @1s=Czas trwania naciśnięcia: @1s +Pushable by arrow=Można nacisnąć strzałą diff --git a/tools/dicts/polish.dic b/tools/dicts/polish.dic index 0e2d5b669..4ffe4aad0 100644 --- a/tools/dicts/polish.dic +++ b/tools/dicts/polish.dic @@ -12,6 +12,7 @@ czerwienitowa czerwienitowe czerwienitowej czerwienitową +czerwienitowy czerwienitowym czerwienitowymi enchant From 77597f9bac08e2effacf26e7b273363cb15e6a94 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Thu, 29 Apr 2021 16:53:47 +0200 Subject: [PATCH 076/418] Add polish translation of mesecons_torch --- .../mesecons_torch/locale/mesecons_torch.pl.tr | 10 ++++++++++ tools/dicts/polish.dic | 1 + 2 files changed, 11 insertions(+) create mode 100644 mods/ITEMS/REDSTONE/mesecons_torch/locale/mesecons_torch.pl.tr diff --git a/mods/ITEMS/REDSTONE/mesecons_torch/locale/mesecons_torch.pl.tr b/mods/ITEMS/REDSTONE/mesecons_torch/locale/mesecons_torch.pl.tr new file mode 100644 index 000000000..a791da3a7 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_torch/locale/mesecons_torch.pl.tr @@ -0,0 +1,10 @@ +# textdomain: mesecons_torch +Redstone Torch=Pochodnia czerwienitowa +Redstone Torch (off)=Pochodnia czerwienitowa (wyłączona) +Redstone Torch (overheated)=Pochodnia czerwienitowa (przegrzana) +A redstone torch is a redstone component which can be used to invert a redstone signal. It supplies its surrounding blocks with redstone power, except for the block it is attached to. A redstone torch is normally lit, but it can also be turned off by powering the block it is attached to. While unlit, a redstone torch does not power anything.=Pochodnia czerwienitowa to mechanizm czerwienitowy, który można wykorzystać do odwrócenia czerwienitowego sygnału. Dostarcza otaczającym jej blokom energię czerwienitową, z wyjątkiem bloku do którego jest przyczepiona. Pochodnia czerwienitowa normalnie jest zapalona, jednak może zostać wyłączona przez zasilenie bloku do którego jest przyczepiona. Gdy jest wyłączona nie zasila ona niczego. +Redstone torches can be placed at the side and on the top of full solid opaque blocks.=Pochodnia czerwienitowa może być postawiona na boku i wierzchu pełnych, stałych, nieprzezroczystych bloków. +Block of Redstone=Blok czerwienitu +A block of redstone permanently supplies redstone power to its surrounding blocks.=Blok czerwienitu nieustannie dostarcza energię czerwienitową do otaczających go bloków. +Provides redstone power when it's not powered itself=Dostarcza energię czerwienitową gdy nie jest zasilona +Provides redstone power=Dostarcza energię czerwienitową diff --git a/tools/dicts/polish.dic b/tools/dicts/polish.dic index 4ffe4aad0..930e3d856 100644 --- a/tools/dicts/polish.dic +++ b/tools/dicts/polish.dic @@ -11,6 +11,7 @@ czerwienitu czerwienitowa czerwienitowe czerwienitowej +czerwienitowego czerwienitową czerwienitowy czerwienitowym From 0e8c0026655709c5c6a1e40afc7b18a7d93b2f63 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Thu, 29 Apr 2021 16:56:33 +0200 Subject: [PATCH 077/418] Add polish translation of mcl_playerplus --- mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.pl.tr | 3 +++ tools/dicts/polish.dic | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.pl.tr diff --git a/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.pl.tr b/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.pl.tr new file mode 100644 index 000000000..67a82d95d --- /dev/null +++ b/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.pl.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_playerplus +@1 suffocated to death.=@1 udusiła się na śmierć. +@1 was prickled to death by a cactus.=@1 została zakłuta na śmierć przez kaktusa. diff --git a/tools/dicts/polish.dic b/tools/dicts/polish.dic index 930e3d856..90e559c75 100644 --- a/tools/dicts/polish.dic +++ b/tools/dicts/polish.dic @@ -11,7 +11,7 @@ czerwienitu czerwienitowa czerwienitowe czerwienitowej -czerwienitowego +czerwienitoweg czerwienitową czerwienitowy czerwienitowym @@ -72,6 +72,7 @@ Wielostrzał Wither witherowego Witherowy +zakłuta refrenusu refrenusowych thunder From 604af04849ac33d0615d942ceb338e9283826a3a Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Thu, 29 Apr 2021 17:08:11 +0200 Subject: [PATCH 078/418] Add polish translation of mesecons_noteblock --- .../locale/mesecons_noteblock.pl.tr | 22 +++++++++++++++++++ tools/dicts/polish.dic | 3 ++- 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.pl.tr diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.pl.tr b/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.pl.tr new file mode 100644 index 000000000..fbf31bc16 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.pl.tr @@ -0,0 +1,22 @@ +# textdomain: mesecons_noteblock +Note Block=Blok nuty +A note block is a musical block which plays one of many musical notes and different intruments when it is punched or supplied with redstone power.=Blok nuty jest muzycznym blokiem, który gra jedną z wielu muzycznych nut różnych instrumentów gdy jest uderzony, lub zasilony czerwienitem. +Use the note block to choose the next musical note (there are 25 semitones, or 2 octaves). The intrument played depends on the material of the block below the note block:=Użyj bloku nuty aby wybrać następną muzyczną nutę (możliwe jest 25 półtonów, lub 2 oktawy). Zagrany instrument zależy od materiału znajdującego się pod blokiem nuty: +• Glass: Sticks=• Szkło: patyki +• Wood: Bass guitar=• Drewno: gitara basowa +• Stone: Bass drum=• Kamień: bęben +• Sand or gravel: Snare drum=• Piasek lub żwir: bęben mały +• Anything else: Piano=• Cokolwiek innego: pianino +• Block of Gold: Bell=• Blok złota: dzwon +• Clay: Flute=• Glina: flet +• Packed Ice: Chime=• Zbity lud: cymbałki +• Wool: Guitar=• Wełna: gitara +• Bone Block: Xylophne=• Blok kości: ksylofon +• Block of Iron: Iron xylophne=• Blok żelaza: żelazny ksylofon +• Soul Sand: Cow bell=• Piasek dusz: krowi dzwonek +• Pumpkin: Didgeridoo=• Dynia: Didgeridoo +• Block of Emerald: Square wave=• Blok szmaragdu: fala kwadratowa +• Hay Bale: Banjo=• Bela siana: banjo +• Glowstone: Electric piano=• Jasnogłaz: elektryczne pianino +The note block will only play a note when it is below air, otherwise, it stays silent.=Blok nuty gra tylko gdy jest poniżej powietrza, w przeciwnym przypadku będzie cichy. +Plays a musical note when powered by redstone power=Gra muzyczną nutę gdy zasilana energię czerwienitową diff --git a/tools/dicts/polish.dic b/tools/dicts/polish.dic index 90e559c75..5de430a55 100644 --- a/tools/dicts/polish.dic +++ b/tools/dicts/polish.dic @@ -11,7 +11,7 @@ czerwienitu czerwienitowa czerwienitowe czerwienitowej -czerwienitoweg +czerwienitowego czerwienitową czerwienitowy czerwienitowym @@ -28,6 +28,7 @@ iskrzyłuda Iskrzyłuda iskrzyłudzie jasnogłazie +Jasnogłaz Kolcze Kolczy Łuczarz From 5b3a156c0916fd622e9d4aa292af037e0936d856 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Thu, 29 Apr 2021 17:13:54 +0200 Subject: [PATCH 079/418] Add polish translation of mesecons_pressureplates --- .../locale/mesecons_pressureplates.pl.tr | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.pl.tr diff --git a/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.pl.tr b/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.pl.tr new file mode 100644 index 000000000..50cef3ba7 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.pl.tr @@ -0,0 +1,16 @@ +# 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.=Płyta naciskowa jest mechanizmem czerwienitowym, który zasila otaczające bloki energią czerwienitową gdy ktoś lub coś na niej spoczywa. +Oak Pressure Plate=Dębowa płyta naciskowa +Acacia Pressure Plate=Akacjowa płyta naciskowa +Birch Pressure Plate=Brzozowa płyta naciskowa +Dark Oak Pressure Plate=Ciemno-dębowa płyta naciskowa +Spruce Pressure Plate=Świerkowa płyta naciskowa +Jungle Pressure Plate=Tropikalna płyta naciskowa +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.=Drewniana płyta naciskowa jest mechanizmem czerwienitowym, który zasila otaczające bloki energią czerwienitowym, gdy ruchomy obiekt (włączając w to upuszczone przedmioty, graczy, moby) spoczywa na niej. +Stone Pressure Plate=Kamienna płyta naciskowa +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.=Kamienna płyta naciskowa jest mechanizmem czerwienitowym, która zasila otaczające bloki energią czerwienitową gdy gracz lub mob na niej stoi. Nie jest aktywowana niczym innym. +Provides redstone power when pushed=Dostarcza energię czerwienitową gdy naciśnięta +Pushable by players, mobs and objects=Możliwa do naciśnięcia przez graczy, moby i obiekty +Pushable by players and mobs=Możliwa do naciśnięcia przez graczy i moby +Pushable by players=Możliwa do naciśnięcia przez graczy +Pushable by mobs=Możliwa do naciśnięcia przez moby From 397a05b6515032ec7d98e79db71288cac4d53cc6 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Thu, 29 Apr 2021 17:16:30 +0200 Subject: [PATCH 080/418] Add polish translation of mcl_skins --- mods/PLAYER/mcl_skins/locale/mcl_skins.pl.tr | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 mods/PLAYER/mcl_skins/locale/mcl_skins.pl.tr diff --git a/mods/PLAYER/mcl_skins/locale/mcl_skins.pl.tr b/mods/PLAYER/mcl_skins/locale/mcl_skins.pl.tr new file mode 100644 index 000000000..9b07cea2c --- /dev/null +++ b/mods/PLAYER/mcl_skins/locale/mcl_skins.pl.tr @@ -0,0 +1,13 @@ +# textdomain: mcl_skins +[] []=[] [] +Select player skin of yourself or another player=Wybierz skin gracza dla siebie lub innego gracza +Insufficient or wrong parameters=Niewystarczające lub złe parametry +Player @1 not online!=Gracz @1 nie jest online! +You need the “server” privilege to change the skin of other players!=Potrzebujesz uprawnienia "serwer", aby zmieniać skiny innych graczy! +Invalid skin number! Valid numbers: 0 to @1=Niepoprawny numer skina! Poprawne numery: od 0 do @1 +Your skin has been set to: @1=Twój skin został ustawiony na: @1 +Your skin has been set to: @1 (@2)=Twój skin został ustawiony na: @1 (@2) +Skin of @1 set to: @2 (@3)=Skin gracza @1 ustawiony na @2 (@3) +Select player skin:=Wybierz skin gracza: +@1 (@2)=@1 (@2) +Name: @1=Nazwa: @1 From e19d39f0650b1176d7e64ceada9ddc08981e4364 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Thu, 29 Apr 2021 17:26:47 +0200 Subject: [PATCH 081/418] Add polish translation of mesecons_delayer --- .../mesecons_delayer/locale/mesecons_delayer.pl.tr | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.pl.tr diff --git a/mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.pl.tr b/mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.pl.tr new file mode 100644 index 000000000..ed533e241 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.pl.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.=Przekaźniki są wszechstronnymi mechanizmami czerwienitowym z kilkoma funkcjami: 1. Pozwalają by sygnał podróżował tylko w jednym kierunku. 2. Opóźniają sygnał. 3. Opcjonalnie mogą zablokować swój output w jednym stanie. +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.=Aby zasilić przekaźnik dostarcz sygnał w kierunku "strzałki" (wejście). Sygnał wyjściowy pojawi się po przeciwnej stronie z opóźnieniem. Aby zmienić opóźnienie kliknij użyj na przekaźniku. Możliwe opóźnienia są pomiędzy 0.1 a 0.4 sekundy i może być zmieniony używając przekaźnik co zmienia go o 0.1 sekundy. Opóźnienie jest oznaczone przez pozycję przesuwającej się pochodni. +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.=Aby zablokować przekaźnik wyślij sygnał z przyległego przekaźnika w jeden z jego boków. Gdy jest zablokowany poruszająca się pochodnia znika, sygnał wyjściowy się nie zmienia, a sygnał wejściowy jest ignorowany. +Redstone Repeater=Przekaźnik czerwienitowy +Redstone Repeater (Powered)=Przekaźnik czerwienitowy (zasilony) +Redstone Repeater (Locked)=Przekaźnik czerwienitowy (zablokowany) +Redstone Repeater (Locked, Powered)=Przekaźnik czerwienitowy (zablokowany, zasilony) +Redstone Repeater (Delay @1)=Przekaźnik czerwienitowy (opóźnienie @1) +Redstone Repeater (Delay @1, Powered)=Przekaźnik czerwienitowy (opóźnienie @1, zasilony) +Transmits redstone power only in one direction=Przesyła energię czerwienitową w jednym kierunku +Delays signal=Opóźnia sygnał +Output locks when getting active redstone repeater signal from the side=Wyjście się blokuje przy otrzymywaniu zasilonego sygnału z przekaźnika z boku From f1229c5401494b7d809817fa43e4d25076451341 Mon Sep 17 00:00:00 2001 From: talamh Date: Sun, 2 May 2021 01:58:40 +0000 Subject: [PATCH 082/418] Added spawn egg for killer rabbitt --- .../mobs_mc_spawn_icon_rabbit_caerbannog.png | Bin 0 -> 1897 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_rabbit_caerbannog.png diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_rabbit_caerbannog.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_rabbit_caerbannog.png new file mode 100644 index 0000000000000000000000000000000000000000..4244a83c6f0a93ff1f7d65180fd6d56b43e98af3 GIT binary patch literal 1897 zcmV-v2bTDWP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1YulI182{O1&N1WN)Wj>8%;H<;s3VuS0|@?KYW zmmM}(W=UmAvR(i0-{Jnj!5qBvK`o{j4;()E#2Fnst|Om!I{bNG56AAjv%C8R!z5_s zdbGIg9d^ceUiP}y$*_lqg;HNH%KI02EyT7q*gLL`gsu&awXn-;A>p;Nzn;tG))ABG zqYHJ7AM5=|11>jjUX){qq#k$AhiXjd8y{Z5Tbn>d&;9R>K0doWl!1x6kQ}(%L@4tj z$!NoQXN;M)EV3+%3aG{IQ1sL0_4V-zx!cf}BD1U*2UO;c{F~ZCB17#+Av|IV<8+T;Z@u_B<0# zLrPT0*$`v}XQf0883%c4lxa{u+e#G>J$F{L%oXBR2ctoZ#1(Rq_<7P`l_X6JVpoKN zz{)okI=4;dc9jepH!_FlAS_0h@>i$(&Y&@7LJ=Kya|K*HBO55DazySR41*#x7OCMR zc%L7SsjEQ2aMEmWFdt>E0QpOxx8RafXu-gM_R1sDwiW#G=JYD!H<&Qhg0IR;^Z3&5fHhx|g6?PQug-im@jMu2TUL$2>JVjJ)Tm z+|=wyJc}R$WSHVKnu?=QtWgX4k#5C0k&@74l-_&0nZM zRQI^rPS^%yVYyRXk>0&FnxL&&4|}Qy>|;&%M(f@gq=T{5_4$b}k9f+$Q^fUg6gfFW zwnkcjn(r*hu3^nfr|$=3&&w&UqcpzM%N~COS(kRf29#~Q5b+2nBlzMqa#wEwL6vJu zVOnjpH5$}!kABV3%@vBpcD{GJweaa8&Lki4GFFpb^0iQDDnknAwvg&Gp4;Au#saK$ zVRvs%JZob+HwYC`f`Yv^%X+@Xe@ySw=uRtWJO_kc(nu|(a&K7EHNmR(bT6(=*FuFA z)h?R*NagX8(x*|^U1*EeEPd=GfD?Mjr#XWL{Qch$%Y_QXTw6&y?#y+B!{VT8uKx1G zr}D|)J2Jk={o|7Vc}|~F@duZ6QWxPwxUB)L%JgzDt?zz{YW5HG@r4cmQA9RD<3UIBDK7$1w-QnX|n=&!S6J#FSNeT0%D6YqIUEif*S>-oYH>emR5}^Fkwg@_oh35b$_S93CGmdz$@Es=#J; zeN9ja714I3q6@tu+)BDBeyF5T)-tFLe)~f-Vq8coja2Q-F895(dJZ}6uSk_y2F|BM z2ufQ4noTQziPQIMt^tazs0rq%XIq2V_qc*JAdmcS!E-OmM6aK8ekfIob4^iObE(#y zUHC(`UzN+Jt^3o7f4Y$32Qj(-0gvB171uc!#sB~S24YJ`L;%PDS^!tH0(VpZ000Sa zNLh0L01FcU01FcV0GgZ_00007bV*G`2jv9<0V4$`wT`m@000?uMObu0Z*6U5Zgc=c za%Ew3Wn>_CX>@2HM@dakSAh-}0004CNklbF5XOHoK`b;JVIM$K99Z8z zgPq_DXerpKg^gMWSBOs`_yF2S;;Kp&{r>lkCK@B4V3=Z)r$1%5iFTC>(}10W(?Yt0g{KT~|LB0{1RiBgp!Ypopv*h^Cyz`N@%B3xU*m=o zt`rm4%`%KJzZ1nVec%Xe6THe6MC2Pa2#BJHEhpZv%>xfW)2*`v&{}%{_i;?3R4HDb z=M{hjU}YMGL~8(+ouB79BEnr9^9gJkL&Mt2MOG*rgJ*!3k+ECA8*mx~W9K~f7fu|v j9Vl0|3LH#0`#-TSNF9Mg)SuCN00000NkvXXu0mjfBRps$ literal 0 HcmV?d00001 From e6b61a1551948352bf7e3dce3f59f7238a5d413e Mon Sep 17 00:00:00 2001 From: talamh Date: Sun, 2 May 2021 02:00:21 +0000 Subject: [PATCH 083/418] Update 'mods/ENTITIES/mobs_mc/rabbit.lua' --- mods/ENTITIES/mobs_mc/rabbit.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mobs_mc/rabbit.lua b/mods/ENTITIES/mobs_mc/rabbit.lua index 90d5c27bf..2a9521ecb 100644 --- a/mods/ENTITIES/mobs_mc/rabbit.lua +++ b/mods/ENTITIES/mobs_mc/rabbit.lua @@ -233,4 +233,4 @@ mobs:spawn(spawn_grass) mobs:register_egg("mobs_mc:rabbit", S("Rabbit"), "mobs_mc_spawn_icon_rabbit.png", 0) -- Note: This spawn egg does not exist in Minecraft -mobs:register_egg("mobs_mc:killer_bunny", S("Killer Bunny"), "mobs_mc_spawn_icon_rabbit.png^[colorize:#FF0000:192", 0) -- TODO: Update inventory image +mobs:register_egg("mobs_mc:killer_bunny", S("Killer Bunny"), "mobs_mc_spawn_icon_rabbit_caerbannog.png", 0) From 6ffb7f525a991ebbf6ed4832f000a2c9b2441b36 Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 10 May 2021 09:40:16 +0000 Subject: [PATCH 084/418] Add more crafting recipes for wooden planks (including stripped wood) --- mods/ITEMS/mcl_core/crafting.lua | 109 +++++++++++++++++++++---------- 1 file changed, 73 insertions(+), 36 deletions(-) diff --git a/mods/ITEMS/mcl_core/crafting.lua b/mods/ITEMS/mcl_core/crafting.lua index a0ad38a77..ded4364c3 100644 --- a/mods/ITEMS/mcl_core/crafting.lua +++ b/mods/ITEMS/mcl_core/crafting.lua @@ -4,47 +4,84 @@ -- Crafting definition -- -minetest.register_craft({ - output = 'mcl_core:wood 4', - recipe = { - {'mcl_core:tree'}, - } -}) +local craft_oak_planks = function(subname) + minetest.register_craft({ + output = "mcl_core:wood 4", + recipe = { + {"mcl_core:"..subname}, + } + }) +end +local craft_dark_oak_planks = function(subname) + minetest.register_craft({ + output = "mcl_core:darkwood 4", + recipe = { + {"mcl_core:"..subname}, + } + }) +end +local craft_jungle_planks = function(subname) + minetest.register_craft({ + output = "mcl_core:junglewood 4", + recipe = { + {"mcl_core:"..subname}, + } + }) +end +local craft_acacia_planks = function(subname) + minetest.register_craft({ + output = "mcl_core:acaciawood 4", + recipe = { + {"mcl_core:"..subname}, + } + }) +end +local craft_spruce_planks = function(subname) + minetest.register_craft({ + output = "mcl_core:sprucewood 4", + recipe = { + {"mcl_core:"..subname}, + } + }) +end +local craft_birch_planks = function(subname) + minetest.register_craft({ + output = "mcl_core:birchwood 4", + recipe = { + {"mcl_core:"..subname}, + } + }) +end -minetest.register_craft({ - output = 'mcl_core:darkwood 4', - recipe = { - {'mcl_core:darktree'}, - } -}) +craft_oak_planks("tree") +craft_oak_planks("tree_bark") +craft_oak_planks("stripped_oak") +craft_oak_planks("stripped_oak_bark") -minetest.register_craft({ - output = 'mcl_core:junglewood 4', - recipe = { - {'mcl_core:jungletree'}, - } -}) +craft_dark_oak_planks("darktree") +craft_dark_oak_planks("darktree_bark") +craft_dark_oak_planks("stripped_dark_oak") +craft_dark_oak_planks("stripped_dark_oak_bark") -minetest.register_craft({ - output = 'mcl_core:acaciawood 4', - recipe = { - {'mcl_core:acaciatree'}, - } -}) +craft_jungle_planks("jungletree") +craft_jungle_planks("jungletree_bark") +craft_jungle_planks("stripped_jungle") +craft_jungle_planks("stripped_jungle_bark") -minetest.register_craft({ - output = 'mcl_core:sprucewood 4', - recipe = { - {'mcl_core:sprucetree'}, - } -}) +craft_acacia_planks("acaciatree") +craft_acacia_planks("acaciatree_bark") +craft_acacia_planks("stripped_acacia") +craft_acacia_planks("stripped_acacia_bark") -minetest.register_craft({ - output = 'mcl_core:birchwood 4', - recipe = { - {'mcl_core:birchtree'}, - } -}) +craft_spruce_planks("sprucetree") +craft_spruce_planks("sprucetree_bark") +craft_spruce_planks("stripped_spruce") +craft_spruce_planks("stripped_spruce_bark") + +craft_birch_planks("birchtree") +craft_birch_planks("birchtree_bark") +craft_birch_planks("stripped_birch") +craft_birch_planks("stripped_birch_bark") minetest.register_craft({ type = 'shapeless', From 9fa51dc6b9593a7723fde51ef23557b2a0b45137 Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 10 May 2021 10:06:34 +0000 Subject: [PATCH 085/418] Simplify wooden planks crafting --- mods/ITEMS/mcl_core/crafting.lua | 95 ++++++++++---------------------- 1 file changed, 28 insertions(+), 67 deletions(-) diff --git a/mods/ITEMS/mcl_core/crafting.lua b/mods/ITEMS/mcl_core/crafting.lua index ded4364c3..44f49a4d4 100644 --- a/mods/ITEMS/mcl_core/crafting.lua +++ b/mods/ITEMS/mcl_core/crafting.lua @@ -4,84 +4,45 @@ -- Crafting definition -- -local craft_oak_planks = function(subname) +local craft_planks = function(output, input) minetest.register_craft({ - output = "mcl_core:wood 4", + output = "mcl_core:"..output.."wood 4", recipe = { - {"mcl_core:"..subname}, - } - }) -end -local craft_dark_oak_planks = function(subname) - minetest.register_craft({ - output = "mcl_core:darkwood 4", - recipe = { - {"mcl_core:"..subname}, - } - }) -end -local craft_jungle_planks = function(subname) - minetest.register_craft({ - output = "mcl_core:junglewood 4", - recipe = { - {"mcl_core:"..subname}, - } - }) -end -local craft_acacia_planks = function(subname) - minetest.register_craft({ - output = "mcl_core:acaciawood 4", - recipe = { - {"mcl_core:"..subname}, - } - }) -end -local craft_spruce_planks = function(subname) - minetest.register_craft({ - output = "mcl_core:sprucewood 4", - recipe = { - {"mcl_core:"..subname}, - } - }) -end -local craft_birch_planks = function(subname) - minetest.register_craft({ - output = "mcl_core:birchwood 4", - recipe = { - {"mcl_core:"..subname}, + {"mcl_core:"..input}, } }) end -craft_oak_planks("tree") -craft_oak_planks("tree_bark") -craft_oak_planks("stripped_oak") -craft_oak_planks("stripped_oak_bark") +craft_planks("", "tree") +craft_planks("", "tree_bark") +craft_planks("", "stripped_oak") +craft_planks("", "stripped_oak_bark") -craft_dark_oak_planks("darktree") -craft_dark_oak_planks("darktree_bark") -craft_dark_oak_planks("stripped_dark_oak") -craft_dark_oak_planks("stripped_dark_oak_bark") +craft_planks("dark", "darktree") +craft_planks("dark", "darktree_bark") +craft_planks("dark", "stripped_dark_oak") +craft_planks("dark", "stripped_dark_oak_bark") -craft_jungle_planks("jungletree") -craft_jungle_planks("jungletree_bark") -craft_jungle_planks("stripped_jungle") -craft_jungle_planks("stripped_jungle_bark") +craft_planks("jungle", "jungletree") +craft_planks("jungle", "jungletree_bark") +craft_planks("jungle", "stripped_jungle") +craft_planks("jungle", "stripped_jungle_bark") -craft_acacia_planks("acaciatree") -craft_acacia_planks("acaciatree_bark") -craft_acacia_planks("stripped_acacia") -craft_acacia_planks("stripped_acacia_bark") +craft_planks("acacia", "acaciatree") +craft_planks("acacia", "acaciatree_bark") +craft_planks("acacia", "stripped_acacia") +craft_planks("acacia", "stripped_acacia_bark") -craft_spruce_planks("sprucetree") -craft_spruce_planks("sprucetree_bark") -craft_spruce_planks("stripped_spruce") -craft_spruce_planks("stripped_spruce_bark") +craft_planks("spruce", "sprucetree") +craft_planks("spruce", "sprucetree_bark") +craft_planks("spruce", "stripped_spruce") +craft_planks("spruce", "stripped_spruce_bark") + +craft_planks("birch", "birchtree") +craft_planks("birch", "birchtree_bark") +craft_planks("birch", "stripped_birch") +craft_planks("birch", "stripped_birch_bark") -craft_birch_planks("birchtree") -craft_birch_planks("birchtree_bark") -craft_birch_planks("stripped_birch") -craft_birch_planks("stripped_birch_bark") minetest.register_craft({ type = 'shapeless', From 11d700b78594e8876f7718482f5fbb5313ff2ad0 Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 10 May 2021 19:47:46 +0000 Subject: [PATCH 086/418] Update my credits in CREDITS.md --- CREDITS.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CREDITS.md b/CREDITS.md index c6ca7d0fb..296e7c23b 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -22,6 +22,7 @@ * Nicu * aligator * Code-Sploit +* NO11 ## Contributors * Laurent Rocher @@ -40,7 +41,6 @@ * Jared Moody * Li0n * Midgard -* NO11 * Saku Laesvuori * Yukitty * ZedekThePD @@ -102,6 +102,7 @@ * leorockway * xMrVizzy * yutyo +* NO11 ## Translations * Wuzzy From 7e132866bf0570a6c8dc2f470492216816a6ca4c Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 10 May 2021 19:47:51 +0000 Subject: [PATCH 087/418] Update my credits in mcl_credits --- mods/HUD/mcl_credits/init.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mods/HUD/mcl_credits/init.lua b/mods/HUD/mcl_credits/init.lua index 4464a401b..294373875 100644 --- a/mods/HUD/mcl_credits/init.lua +++ b/mods/HUD/mcl_credits/init.lua @@ -28,6 +28,7 @@ mcl_credits.people = { "Nicu", "aligator", "Code-Sploit", + "NO11", }}, {"Contributors", 0x52FF00, { "Laurent Rocher", @@ -46,7 +47,6 @@ mcl_credits.people = { "Jared Moody", "Li0n", "Midgard", - "NO11", "Saku Laesvuori", "Yukitty", "ZedekThePD", @@ -107,7 +107,8 @@ mcl_credits.people = { "kingoscargames", "leorockway", "xMrVizzy", - "yutyo" + "yutyo", + "NO11", }}, {"Translations", 0x00FF60, { "Wuzzy", From 074e8c83892f809de38c59a54546273525581828 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 11 May 2021 00:43:17 +0200 Subject: [PATCH 088/418] remove unused optional depends to lucky_block lucky_block is mtg mod and never used at any place in the code --- mods/ENTITIES/mcl_mobs/mod.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_mobs/mod.conf b/mods/ENTITIES/mcl_mobs/mod.conf index 0d622f6a9..9dfb43aef 100644 --- a/mods/ENTITIES/mcl_mobs/mod.conf +++ b/mods/ENTITIES/mcl_mobs/mod.conf @@ -2,4 +2,4 @@ name = mcl_mobs author = PilzAdam description = Adds a mob API for mods to add animals or monsters, etc. depends = mcl_particles -optional_depends = mcl_weather, mcl_explosions, mcl_hunger, mcl_worlds, invisibility, lucky_block, cmi, doc_identifier, mcl_armor, mcl_portals, mcl_experience +optional_depends = mcl_weather, mcl_explosions, mcl_hunger, mcl_worlds, invisibility, cmi, doc_identifier, mcl_armor, mcl_portals, mcl_experience From 052bb540baf9487d08fd8feb3bfc85052b545214 Mon Sep 17 00:00:00 2001 From: jordan4ibanez Date: Mon, 10 May 2021 20:06:38 -0400 Subject: [PATCH 089/418] Remove unused parent data for arrows --- mods/ITEMS/mcl_bows/arrow.lua | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/mods/ITEMS/mcl_bows/arrow.lua b/mods/ITEMS/mcl_bows/arrow.lua index a6f0c13db..c34e93479 100644 --- a/mods/ITEMS/mcl_bows/arrow.lua +++ b/mods/ITEMS/mcl_bows/arrow.lua @@ -118,16 +118,6 @@ ARROW_ENTITY.on_step = function(self, dtime) dpos = vector.round(dpos) local node = minetest.get_node(dpos) - if self.object:get_attach() ~= nil and self.object:get_attach(parent):get_hp() < 1 then - self.object:remove() - end - - minetest.register_on_leaveplayer(function(player) - if self.object:get_attach(parent) == player then - self.object:remove() - end - end) - if self._stuck then self._stucktimer = self._stucktimer + dtime self._stuckrechecktimer = self._stuckrechecktimer + dtime From ad4e86decaa4a833ea9e90e623a662a4c987a34c Mon Sep 17 00:00:00 2001 From: jordan4ibanez Date: Mon, 10 May 2021 20:17:43 -0400 Subject: [PATCH 090/418] Fix #1726 --- mods/PLAYER/mcl_hunger/init.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/PLAYER/mcl_hunger/init.lua b/mods/PLAYER/mcl_hunger/init.lua index 6b9998574..d212e631a 100644 --- a/mods/PLAYER/mcl_hunger/init.lua +++ b/mods/PLAYER/mcl_hunger/init.lua @@ -137,14 +137,14 @@ local timerMult = 1 -- Cycles from 0 to 7, each time when timer hits half a seco minetest.register_globalstep(function(dtime) main_timer = main_timer + dtime timer = timer + dtime - if main_timer > mcl_hunger.HUD_TICK or timer > 0.5 then + if main_timer > mcl_hunger.HUD_TICK or timer > 0.25 then if main_timer > mcl_hunger.HUD_TICK then main_timer = 0 end for _,player in pairs(minetest.get_connected_players()) do local name = player:get_player_name() local h = tonumber(mcl_hunger.get_hunger(player)) local hp = player:get_hp() - if timer > 0.5 then + if timer > 0.25 then -- Slow health regeneration, and hunger damage (every 4s). -- Regeneration rate based on tutorial video . -- Minecraft Wiki seems to be wrong in claiming that full hunger gives 0.5s regen rate. @@ -166,9 +166,9 @@ minetest.register_globalstep(function(dtime) end end end - if timer > 0.5 then + if timer > 0.25 then timer = 0 - timerMult = timerMult + 1 + timerMult = timerMult + 2 if timerMult > 7 then timerMult = 0 end From 0ad03acf469a900ff11009cd3a843783b5845aea Mon Sep 17 00:00:00 2001 From: AFCMS Date: Thu, 13 May 2021 22:55:17 +0200 Subject: [PATCH 091/418] improve mcl_worlds API --- mods/CORE/mcl_worlds/init.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mods/CORE/mcl_worlds/init.lua b/mods/CORE/mcl_worlds/init.lua index 6cdeaab7e..435ce51c7 100644 --- a/mods/CORE/mcl_worlds/init.lua +++ b/mods/CORE/mcl_worlds/init.lua @@ -112,10 +112,11 @@ local last_dimension = {} -- * player: Player who changed the dimension -- * dimension: New dimension ("overworld", "nether", "end", "void") function mcl_worlds.dimension_change(player, dimension) + local playername = player:get_player_name() for i=1, #mcl_worlds.registered_on_dimension_change do - mcl_worlds.registered_on_dimension_change[i](player, dimension) - last_dimension[player:get_player_name()] = dimension + mcl_worlds.registered_on_dimension_change[i](player, dimension, last_dimension[playername]) end + last_dimension[playername] = dimension end ----------------------- INTERNAL STUFF ---------------------- From d5ec2ccbd8f02f23482711be60260407bce70b9b Mon Sep 17 00:00:00 2001 From: AFCMS Date: Thu, 13 May 2021 23:09:47 +0200 Subject: [PATCH 092/418] fix doc --- mods/CORE/mcl_worlds/API.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/mods/CORE/mcl_worlds/API.md b/mods/CORE/mcl_worlds/API.md index a5509431c..dd96b01b5 100644 --- a/mods/CORE/mcl_worlds/API.md +++ b/mods/CORE/mcl_worlds/API.md @@ -61,20 +61,21 @@ In mc, you cant use clock in the nether and the end. * pos: position -## mcl_worlds.register_on_dimension_change(function(player, dimension)) +## mcl_worlds.register_on_dimension_change(function(player, dimension, last_dimension)) Register a callback function func(player, dimension). It will be called whenever a player changes between dimensions. The void counts as dimension. -* player: player, the player who changed the dimension -* dimension: position, The new dimension of the player ("overworld", "nether", "end", "void"). +* player: player, the player who changed of dimension +* dimension: string, The new dimension of the player ("overworld", "nether", "end", "void"). +* last_dimension: string, The dimension where the player was ("overworld", "nether", "end", "void"). ## mcl_worlds.registered_on_dimension_change Table containing all function registered with mcl_worlds.register_on_dimension_change() ## mcl_worlds.dimension_change(player, dimension) -Notify this mod of a dimmension change of to +Notify this mod of a dimension change of to * player: player, player who changed the dimension * dimension: string, new dimension ("overworld", "nether", "end", "void") \ No newline at end of file From 866c097d56b12a8ada819abff86a49b59269edf5 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Fri, 14 May 2021 09:19:44 +0200 Subject: [PATCH 093/418] fix typo --- mods/ENTITIES/mobs_mc/guardian_elder.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mobs_mc/guardian_elder.lua b/mods/ENTITIES/mobs_mc/guardian_elder.lua index 4fb989e2f..e44796bad 100644 --- a/mods/ENTITIES/mobs_mc/guardian_elder.lua +++ b/mods/ENTITIES/mobs_mc/guardian_elder.lua @@ -15,7 +15,7 @@ mobs:register_mob("mobs_mc:guardian_elder", { xp_min = 10, xp_max = 10, breath_max = -1, - passive = false, + passive = false, attack_type = "punch", pathfinding = 1, view_range = 16, From 86d1e0ac12046ec521207a5169aab1b69479f4c2 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Fri, 14 May 2021 09:34:40 +0200 Subject: [PATCH 094/418] fix duplicated assignement --- mods/ENTITIES/mobs_mc/0_gameconfig.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mobs_mc/0_gameconfig.lua b/mods/ENTITIES/mobs_mc/0_gameconfig.lua index 3476bee4c..c947e9185 100644 --- a/mods/ENTITIES/mobs_mc/0_gameconfig.lua +++ b/mods/ENTITIES/mobs_mc/0_gameconfig.lua @@ -15,7 +15,7 @@ with name "mobs_mc_gameconfig". ]] -- Set to false in your gameconfig mod if you create your own monster egg nodes. mobs_mc.create_monster_egg_nodes = true -mobs_mc.items = {} +--mobs_mc.items = {} mobs_mc.items = { -- Items defined in mobs_mc From bcea5a35efd1b69b32a3f7208b8ad611a28bdd64 Mon Sep 17 00:00:00 2001 From: Code-Sploit Date: Fri, 14 May 2021 08:22:10 +0000 Subject: [PATCH 095/418] Try to fix unknown variable in mcl_chorus_flower --- mods/MAPGEN/mcl_biomes/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 3655be7eb..d4ebe00d3 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -3974,7 +3974,7 @@ if mg_name ~= "singlenode" then mcl_mapgen_core.register_generator("chorus_grow", nil, function(minp, maxp, blockseed) local gennotify = minetest.get_mapgen_object("gennotify") --local poslist = {} - local pr = PseudoRandom(blockseed + 14) + pr = PseudoRandom(blockseed + 14) for _, pos in ipairs(gennotify["decoration#"..deco_id_chorus_plant] or {}) do local x, y, z = pos.x, pos.y, pos.z if x < -2 or x > 2 or z < -2 or z > 2 then From f4c302e582319e2d92b3006384ee59901be213ec Mon Sep 17 00:00:00 2001 From: NO11 Date: Fri, 14 May 2021 10:07:42 +0000 Subject: [PATCH 096/418] Fix #1718 (Give potion particles the same color as in mc) part1 --- mods/ITEMS/mcl_potions/potions.lua | 62 +++++++++++++++--------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/mods/ITEMS/mcl_potions/potions.lua b/mods/ITEMS/mcl_potions/potions.lua index 2d76a217b..b9c2aad24 100644 --- a/mods/ITEMS/mcl_potions/potions.lua +++ b/mods/ITEMS/mcl_potions/potions.lua @@ -459,7 +459,7 @@ local healing_def = { _tt = S("+4 HP"), _tt_2 = S("+8 HP"), _longdesc = S("Instantly heals."), - color = "#CC0000", + color = "#F82423", effect = 4, instant = true, on_use = mcl_potions.healing_func, @@ -473,7 +473,7 @@ local harming_def = { _tt = S("-6 HP"), _tt_II = S("-12 HP"), _longdesc = S("Instantly deals damage."), - color = "#660099", + color = "#430A09", effect = -6, instant = true, on_use = mcl_potions.healing_func, @@ -486,7 +486,7 @@ local night_vision_def = { description = S("Night Vision"), _tt = nil, _longdesc = S("Increases the perceived brightness of light under a dark sky."), - color = "#1010AA", + color = "#1F1FA1", effect = nil, is_dur = true, on_use = mcl_potions.night_vision_func, @@ -498,7 +498,7 @@ local swiftness_def = { description = S("Swiftness"), _tt = nil, _longdesc = S("Increases walking speed."), - color = "#009999", + color = "#7CAFC6", effect = 1.2, is_dur = true, on_use = mcl_potions.swiftness_func, @@ -511,7 +511,7 @@ local slowness_def = { description = S("Slowness"), _tt = nil, _longdesc = S("Decreases walking speed."), - color = "#000080", + color = "#5A6C81", effect = 0.85, is_dur = true, on_use = mcl_potions.swiftness_func, @@ -525,7 +525,7 @@ local leaping_def = { description = S("Leaping"), _tt = nil, _longdesc = S("Increases jump strength."), - color = "#00CC33", + color = "#22FF4C", effect = 1.15, is_dur = true, on_use = mcl_potions.leaping_func, @@ -538,7 +538,7 @@ local poison_def = { description = S("Poison"), _tt = nil, _longdesc = S("Applies the poison effect which deals damage at a regular interval."), - color = "#447755", + color = "#4E9331", effect = 2.5, is_dur = true, on_use = mcl_potions.poison_func, @@ -552,7 +552,7 @@ local regeneration_def = { description = S("Regeneration"), _tt = nil, _longdesc = S("Regenerates health over time."), - color = "#B52CC2", + color = "#CD5CAB", effect = 2.5, is_dur = true, on_use = mcl_potions.regeneration_func, @@ -565,7 +565,7 @@ local invisibility_def = { description = S("Invisibility"), _tt = nil, _longdesc = S("Grants invisibility."), - color = "#B0B0B0", + color = "#7F8392", is_dur = true, on_use = mcl_potions.invisiblility_func, is_plus = true, @@ -576,7 +576,7 @@ local water_breathing_def = { description = S("Water Breathing"), _tt = nil, _longdesc = S("Grants limitless breath underwater."), - color = "#0000AA", + color = "#2E5299", is_dur = true, on_use = mcl_potions.water_breathing_func, is_plus = true, @@ -587,7 +587,7 @@ local fire_resistance_def = { description = S("Fire Resistance"), _tt = nil, _longdesc = S("Grants immunity to damage from heat sources like fire."), - color = "#D0A040", + color = "#E49A3A", is_dur = true, on_use = mcl_potions.fire_resistance_func, is_plus = true, @@ -611,22 +611,22 @@ end -- description = S("Weakness"), -- _tt_help = TODO, -- _doc_items_longdesc = brewhelp, --- wield_image = potion_image("#6600AA"), --- inventory_image = potion_image("#6600AA"), +-- wield_image = potion_image("#484D48"), +-- inventory_image = potion_image("#484D48"), -- groups = { brewitem=1, food=3, can_eat_when_full=1 }, -- stack_max = 1, -- -- on_place = function(itemstack, user, pointed_thing) -- mcl_potions.weakness_func(user, -4, mcl_potions.DURATION*mcl_potions.INV_FACTOR) -- minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) --- mcl_potions._use_potion(itemstack, user, "#6600AA") +-- mcl_potions._use_potion(itemstack, user, "#484D48") -- return itemstack -- end, -- -- on_secondary_use = function(itemstack, user, pointed_thing) -- mcl_potions.weakness_func(user, -4, mcl_potions.DURATION*mcl_potions.INV_FACTOR) -- minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) --- mcl_potions._use_potion(itemstack, user, "#6600AA") +-- mcl_potions._use_potion(itemstack, user, "#484D48") -- return itemstack -- end -- }) @@ -635,22 +635,22 @@ end -- description = S("Weakness +"), -- _tt_help = TODO, -- _doc_items_longdesc = brewhelp, --- wield_image = potion_image("#7700BB"), --- inventory_image = potion_image("#7700BB"), +-- wield_image = potion_image("#484D48"), +-- inventory_image = potion_image("#484D48"), -- groups = { brewitem=1, food=3, can_eat_when_full=1 }, -- stack_max = 1, -- -- on_place = function(itemstack, user, pointed_thing) -- mcl_potions.weakness_func(user, -4, mcl_potions.DURATION_2*mcl_potions.INV_FACTOR) -- minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) --- mcl_potions._use_potion(itemstack, user, "#7700BB") +-- mcl_potions._use_potion(itemstack, user, "#484D48") -- return itemstack -- end, -- -- on_secondary_use = function(itemstack, user, pointed_thing) -- mcl_potions.weakness_func(user, -4, mcl_potions.DURATION_2*mcl_potions.INV_FACTOR) -- minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) --- mcl_potions._use_potion(itemstack, user, "#7700BB") +-- mcl_potions._use_potion(itemstack, user, "#484D48") -- return itemstack -- end -- }) @@ -659,22 +659,22 @@ end -- description = S("Strength"), -- _tt_help = TODO, -- _doc_items_longdesc = brewhelp, --- wield_image = potion_image("#D444D4"), --- inventory_image = potion_image("#D444D4"), +-- wield_image = potion_image("#932423"), +-- inventory_image = potion_image("#932423"), -- groups = { brewitem=1, food=3, can_eat_when_full=1 }, -- stack_max = 1, -- -- on_place = function(itemstack, user, pointed_thing) -- mcl_potions.weakness_func(user, 3, mcl_potions.DURATION) -- minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) --- mcl_potions._use_potion(itemstack, user, "#D444D4") +-- mcl_potions._use_potion(itemstack, user, "#932423") -- return itemstack -- end, -- -- on_secondary_use = function(itemstack, user, pointed_thing) -- mcl_potions.weakness_func(user, 3, mcl_potions.DURATION) -- minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) --- mcl_potions._use_potion(itemstack, user, "#D444D4") +-- mcl_potions._use_potion(itemstack, user, "#932423") -- return itemstack -- end -- }) @@ -683,22 +683,22 @@ end -- description = S("Strength II"), -- _tt_help = TODO, -- _doc_items_longdesc = brewhelp, --- wield_image = potion_image("#D444E4"), --- inventory_image = potion_image("#D444E4"), +-- wield_image = potion_image("#932423"), +-- inventory_image = potion_image("#932423"), -- groups = { brewitem=1, food=3, can_eat_when_full=1 }, -- stack_max = 1, -- -- on_place = function(itemstack, user, pointed_thing) -- mcl_potions.weakness_func(user, 6, mcl_potions.DURATION_2) -- minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) --- mcl_potions._use_potion(itemstack, user, "#D444E4") +-- mcl_potions._use_potion(itemstack, user, "#932423") -- return itemstack -- end, -- -- on_secondary_use = function(itemstack, user, pointed_thing) -- mcl_potions.weakness_func(user, 6, mcl_potions.DURATION_2) -- minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) --- mcl_potions._use_potion(itemstack, user, "#D444E4") +-- mcl_potions._use_potion(itemstack, user, "#932423") -- return itemstack -- end -- }) @@ -707,22 +707,22 @@ end -- description = S("Strength +"), -- _tt_help = TODO, -- _doc_items_longdesc = brewhelp, --- wield_image = potion_image("#D444F4"), --- inventory_image = potion_image("#D444F4"), +-- wield_image = potion_image("#932423"), +-- inventory_image = potion_image("#932423"), -- groups = { brewitem=1, food=3, can_eat_when_full=1 }, -- stack_max = 1, -- -- on_place = function(itemstack, user, pointed_thing) -- mcl_potions.weakness_func(user, 3, mcl_potions.DURATION_PLUS) -- minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) --- mcl_potions._use_potion(itemstack, user, "#D444F4") +-- mcl_potions._use_potion(itemstack, user, "#932423") -- return itemstack -- end, -- -- on_secondary_use = function(itemstack, user, pointed_thing) -- mcl_potions.weakness_func(user, 3, mcl_potions.DURATION_PLUS) -- minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) --- mcl_potions._use_potion(itemstack, user, "#D444F4") +-- mcl_potions._use_potion(itemstack, user, "#932423") -- return itemstack -- end -- }) From be9fb5be47aa1e848f04746617f870eaf293f297 Mon Sep 17 00:00:00 2001 From: NO11 Date: Fri, 14 May 2021 10:07:58 +0000 Subject: [PATCH 097/418] Fix #1718 (Give potion particles the same color as in mc) part2 --- mods/ITEMS/mcl_potions/functions.lua | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index 55a98ba9d..b4e1d9448 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -107,7 +107,7 @@ minetest.register_globalstep(function(dtime) EF.invisible[player].timer = EF.invisible[player].timer + dtime - if player:get_pos() then mcl_potions._add_spawner(player, "#B0B0B0") end + if player:get_pos() then mcl_potions._add_spawner(player, "#7F8392") end if EF.invisible[player].timer >= EF.invisible[player].dur then mcl_potions.make_invisible(player, false) @@ -129,7 +129,7 @@ minetest.register_globalstep(function(dtime) EF.poisoned[player].timer = EF.poisoned[player].timer + dtime EF.poisoned[player].hit_timer = (EF.poisoned[player].hit_timer or 0) + dtime - if player:get_pos() then mcl_potions._add_spawner(player, "#225533") end + if player:get_pos() then mcl_potions._add_spawner(player, "#4E9331") end if EF.poisoned[player].hit_timer >= EF.poisoned[player].step then if mcl_util.get_hp(player) - 1 > 0 then @@ -158,7 +158,7 @@ minetest.register_globalstep(function(dtime) EF.regenerating[player].timer = EF.regenerating[player].timer + dtime EF.regenerating[player].heal_timer = (EF.regenerating[player].heal_timer or 0) + dtime - if player:get_pos() then mcl_potions._add_spawner(player, "#A52BB2") end + if player:get_pos() then mcl_potions._add_spawner(player, "#CD5CAB") end if EF.regenerating[player].heal_timer >= EF.regenerating[player].step then @@ -192,7 +192,7 @@ minetest.register_globalstep(function(dtime) EF.water_breathing[player].timer = EF.water_breathing[player].timer + dtime - if player:get_pos() then mcl_potions._add_spawner(player, "#0000AA") end + if player:get_pos() then mcl_potions._add_spawner(player, "#2E5299") end if player:get_breath() then if player:get_breath() < 10 then player:set_breath(10) end @@ -217,7 +217,7 @@ minetest.register_globalstep(function(dtime) EF.leaping[player].timer = EF.leaping[player].timer + dtime - if player:get_pos() then mcl_potions._add_spawner(player, "#00CC33") end + if player:get_pos() then mcl_potions._add_spawner(player, "#22FF4C") end if EF.leaping[player].timer >= EF.leaping[player].dur then playerphysics.remove_physics_factor(player, "jump", "mcl_potions:leaping") @@ -239,7 +239,7 @@ minetest.register_globalstep(function(dtime) EF.swift[player].timer = EF.swift[player].timer + dtime - if player:get_pos() then mcl_potions._add_spawner(player, "#009999") end + if player:get_pos() then mcl_potions._add_spawner(player, "#7CAFC6") end if EF.swift[player].timer >= EF.swift[player].dur then playerphysics.remove_physics_factor(player, "speed", "mcl_potions:swiftness") @@ -261,7 +261,7 @@ minetest.register_globalstep(function(dtime) EF.night_vision[player].timer = EF.night_vision[player].timer + dtime - if player:get_pos() then mcl_potions._add_spawner(player, "#1010AA") end + if player:get_pos() then mcl_potions._add_spawner(player, "#1F1FA1") end if EF.night_vision[player].timer >= EF.night_vision[player].dur then EF.night_vision[player] = nil @@ -286,7 +286,7 @@ minetest.register_globalstep(function(dtime) EF.fire_proof[player].timer = EF.fire_proof[player].timer + dtime - if player:get_pos() then mcl_potions._add_spawner(player, "#E0B050") end + if player:get_pos() then mcl_potions._add_spawner(player, "#E49A3A") end if EF.fire_proof[player].timer >= EF.fire_proof[player].dur then EF.fire_proof[player] = nil @@ -307,7 +307,7 @@ minetest.register_globalstep(function(dtime) EF.weak[player].timer = EF.weak[player].timer + dtime - if player:get_pos() then mcl_potions._add_spawner(player, "#7700BB") end + if player:get_pos() then mcl_potions._add_spawner(player, "#484D48") end if EF.weak[player].timer >= EF.weak[player].dur then EF.weak[player] = nil @@ -328,7 +328,7 @@ minetest.register_globalstep(function(dtime) EF.strong[player].timer = EF.strong[player].timer + dtime - if player:get_pos() then mcl_potions._add_spawner(player, "#7700BB") end + if player:get_pos() then mcl_potions._add_spawner(player, "#932423") end if EF.strong[player].timer >= EF.strong[player].dur then EF.strong[player] = nil From 9e095980c8427da79da234723114fa053d9b725a Mon Sep 17 00:00:00 2001 From: NO11 Date: Fri, 14 May 2021 15:00:34 +0000 Subject: [PATCH 098/418] Simplify wooden planks crafting even more --- mods/ITEMS/mcl_core/crafting.lua | 43 +++++++++++--------------------- 1 file changed, 14 insertions(+), 29 deletions(-) diff --git a/mods/ITEMS/mcl_core/crafting.lua b/mods/ITEMS/mcl_core/crafting.lua index 44f49a4d4..f031c7ca2 100644 --- a/mods/ITEMS/mcl_core/crafting.lua +++ b/mods/ITEMS/mcl_core/crafting.lua @@ -13,36 +13,21 @@ local craft_planks = function(output, input) }) end -craft_planks("", "tree") -craft_planks("", "tree_bark") -craft_planks("", "stripped_oak") -craft_planks("", "stripped_oak_bark") - -craft_planks("dark", "darktree") -craft_planks("dark", "darktree_bark") -craft_planks("dark", "stripped_dark_oak") -craft_planks("dark", "stripped_dark_oak_bark") - -craft_planks("jungle", "jungletree") -craft_planks("jungle", "jungletree_bark") -craft_planks("jungle", "stripped_jungle") -craft_planks("jungle", "stripped_jungle_bark") - -craft_planks("acacia", "acaciatree") -craft_planks("acacia", "acaciatree_bark") -craft_planks("acacia", "stripped_acacia") -craft_planks("acacia", "stripped_acacia_bark") - -craft_planks("spruce", "sprucetree") -craft_planks("spruce", "sprucetree_bark") -craft_planks("spruce", "stripped_spruce") -craft_planks("spruce", "stripped_spruce_bark") - -craft_planks("birch", "birchtree") -craft_planks("birch", "birchtree_bark") -craft_planks("birch", "stripped_birch") -craft_planks("birch", "stripped_birch_bark") +local planks = { + {"", "oak"}, + {"dark", "dark_oak"}, + {"jungle", "jungle"}, + {"acacia", "acacia"}, + {"spruce", "spruce"}, + {"birch", "birch"} +} +for _, p in pairs(planks) do + craft_planks(p[1], p[1].."tree") + craft_planks(p[1], p[1].."tree_bark") + craft_planks(p[1], "stripped_"..p[2]) + craft_planks(p[1], "stripped_"..p[2].."_bark") +end minetest.register_craft({ type = 'shapeless', From 9ae11194386aedcdeae247d4aca2350fd8f23a03 Mon Sep 17 00:00:00 2001 From: kay27 Date: Sat, 15 May 2021 03:17:16 +0400 Subject: [PATCH 099/418] [mcl_mobs] Fix server crash for mobs in unloaded areas, https://git.minetest.land/MineClone2/MineClone2/issues/1703 --- mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua index eda7e8871..d75bda6c6 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua @@ -938,10 +938,13 @@ mobs.mob_step = function(self, dtime) end end - if self.burn_timer == 0 and minetest_get_node_light(pos) > 12 and minetest_get_node_light(pos, 0.5) == 15 then - mcl_burning.set_on_fire(self.object, 1) - self.burn_timer = 1 --1.7 seconds - self.pause_timer = 0.4 + if self.burn_timer == 0 then + local light_current, light_day = minetest_get_node_light(pos), minetest_get_node_light(pos, 0.5) + if light_current and light_day and light_current > 12 and light_day == 15 then + mcl_burning.set_on_fire(self.object, 1) + self.burn_timer = 1 --1.7 seconds + self.pause_timer = 0.4 + end end end From cb82e3c9c55f7f9dd3269c870419987f64772c37 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 16 May 2021 21:13:07 +0000 Subject: [PATCH 100/418] Make a cobweb protect from fall damage --- mods/PLAYER/mcl_playerplus/init.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 9436ae94d..7b7920ee0 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -549,6 +549,9 @@ mcl_damage.register_modifier(function(obj, damage, reason) end return 0 end + if node.name == "mcl_core:cobweb" then + return 0 + end end pos = vector.add(pos, step) node = minetest.get_node(pos) From 04436ea5f765edc26529122f3586b59058604f80 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 18 May 2021 16:34:20 +0200 Subject: [PATCH 101/418] Fix that fucking mending armor crash --- mods/HUD/mcl_experience/init.lua | 4 ---- 1 file changed, 4 deletions(-) diff --git a/mods/HUD/mcl_experience/init.lua b/mods/HUD/mcl_experience/init.lua index fd78534fc..b52611d5a 100644 --- a/mods/HUD/mcl_experience/init.lua +++ b/mods/HUD/mcl_experience/init.lua @@ -275,10 +275,6 @@ function mcl_experience.add_experience(player, experience) end stack:set_wear(math.floor(new_wear)) inv:set_stack(list, index, stack) - if can.list == "armor" then - local armor_inv = minetest.get_inventory({type = "detached", name = player:get_player_name() .. "_armor"}) - armor_inv:set_stack(list, index, stack) - end end local old_bar, old_xp, old_level = temp_pool.bar, temp_pool.xp, temp_pool.level From f7052943ec8ef4ddbde3e1bcf6b50487bd3cfa72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20=C3=85str=C3=B6m?= Date: Sat, 1 May 2021 15:37:14 +0200 Subject: [PATCH 102/418] Fix rays not being cast in a specific direction A bug was introduced in 679e2b1b which caused explosions to not cast rays for environment destruction in the (+X, +Y, +Z) direction. This commit fixes that. --- mods/CORE/mcl_explosions/init.lua | 76 +++++++++++++++---------------- 1 file changed, 37 insertions(+), 39 deletions(-) diff --git a/mods/CORE/mcl_explosions/init.lua b/mods/CORE/mcl_explosions/init.lua index e59e3ea12..d3fb882ce 100644 --- a/mods/CORE/mcl_explosions/init.lua +++ b/mods/CORE/mcl_explosions/init.lua @@ -66,46 +66,44 @@ local function compute_sphere_rays(radius) local rays = {} local sphere = {} - for i=1, 2 do + local function add_ray(pos) + sphere[hash_node_position(pos)] = pos + end + + for y = -radius, radius do + for z = -radius, radius do + for x = -radius, 0 do + local d = x * x + y * y + z * z + if d <= radius * radius then + add_ray(vector.new(x, y, z)) + add_ray(vector.new(-x, y, z)) + break + end + end + end + end + + for x = -radius, radius do + for z = -radius, radius do + for y = -radius, 0 do + local d = x * x + y * y + z * z + if d <= radius * radius then + add_ray(vector.new(x, y, z)) + add_ray(vector.new(x, -y, z)) + break + end + end + end + end + + for x = -radius, radius do for y = -radius, radius do - for z = -radius, radius do - for x = -radius, 0, 1 do - local d = x * x + y * y + z * z - if d <= radius * radius then - local pos = { x = x, y = y, z = z } - sphere[hash_node_position(pos)] = pos - break - end - end - end - end - end - - for i=1,2 do - for x = -radius, radius do - for z = -radius, radius do - for y = -radius, 0, 1 do - local d = x * x + y * y + z * z - if d <= radius * radius then - local pos = { x = x, y = y, z = z } - sphere[hash_node_position(pos)] = pos - break - end - end - end - end - end - - for i=1,2 do - for x = -radius, radius do - for y = -radius, radius do - for z = -radius, 0, 1 do - local d = x * x + y * y + z * z - if d <= radius * radius then - local pos = { x = x, y = y, z = z } - sphere[hash_node_position(pos)] = pos - break - end + for z = -radius, 0 do + local d = x * x + y * y + z * z + if d <= radius * radius then + add_ray(vector.new(x, y, z)) + add_ray(vector.new(x, y, -z)) + break end end end From 4d13eddcd6b2ee5321a42d1fe46e241fa7cfc631 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20=C3=85str=C3=B6m?= Date: Sat, 8 May 2021 19:59:48 +0200 Subject: [PATCH 103/418] Adjust explosion entity damage hitbox In mcl_explosions the hitbox used for calculating the damage of an entity is its collisionbox multiplied by two. This commit removes the multiplication by two because that makes explosion damage behave weirdly in some circumstances. It was most likely implemented that way because of a misinterpretation of the Minecraft wiki. --- mods/CORE/mcl_explosions/init.lua | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/mods/CORE/mcl_explosions/init.lua b/mods/CORE/mcl_explosions/init.lua index d3fb882ce..dfae884cd 100644 --- a/mods/CORE/mcl_explosions/init.lua +++ b/mods/CORE/mcl_explosions/init.lua @@ -258,12 +258,12 @@ local function trace_explode(pos, strength, raydirs, radius, info, direct, sourc if collisionbox then -- Create rays from random points in the collision box - local x1 = collisionbox[1] * 2 - local y1 = collisionbox[2] * 2 - local z1 = collisionbox[3] * 2 - local x2 = collisionbox[4] * 2 - local y2 = collisionbox[5] * 2 - local z2 = collisionbox[6] * 2 + local x1 = collisionbox[1] + local y1 = collisionbox[2] + local z1 = collisionbox[3] + local x2 = collisionbox[4] + local y2 = collisionbox[5] + local z2 = collisionbox[6] local x_len = math.abs(x2 - x1) local y_len = math.abs(y2 - y1) local z_len = math.abs(z2 - z1) From a9bf923df9cf228d5bce4a9d7027de7d4e9d8fed Mon Sep 17 00:00:00 2001 From: AFCMS Date: Wed, 19 May 2021 11:14:18 +0200 Subject: [PATCH 104/418] improve mcl_bucket API (on_take callback) --- mods/ITEMS/mcl_buckets/init.lua | 14 +++++++------- mods/ITEMS/mcl_buckets/register.lua | 6 ++++++ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index 0ba68b723..7e67eee8e 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -1,8 +1,7 @@ -local S = minetest.get_translator("mcl_buckets") -local modpath = minetest.get_modpath(minetest.get_current_modname()) - --- Minetest 0.4 mod: bucket -- See README.txt for licensing and other information. +local modname = minetest.get_current_modname() +local S = minetest.get_translator(modname) +local modpath = minetest.get_modpath(modname) minetest.register_alias("bucket:bucket_empty", "mcl_buckets:bucket_empty") minetest.register_alias("bucket:bucket_water", "mcl_buckets:bucket_water") @@ -51,6 +50,7 @@ function mcl_buckets.register_liquid(def) mcl_buckets.liquids[def.source_take[i]] = { source_place = def.source_place, source_take = def.source_take[i], + on_take = def.on_take, itemname = def.itemname, } if type(def.source_place) == "string" then @@ -207,9 +207,9 @@ minetest.register_craftitem("mcl_buckets:bucket_empty", { -- Fill bucket, but not in Creative Mode if not minetest.is_creative_enabled(user:get_player_name()) then new_bucket = ItemStack({name = liquiddef.itemname}) - if liquiddef.itemname == "mcl_buckets:bucket_lava" and awards and awards.unlock and user and user:is_player() then - awards.unlock(user:get_player_name(), "mcl:hotStuff") - end + if liquiddef.on_take then + liquiddef.on_take(user) + end end minetest.add_node(pointed_thing.under, {name="air"}) diff --git a/mods/ITEMS/mcl_buckets/register.lua b/mods/ITEMS/mcl_buckets/register.lua index b5d86ac0e..43156716c 100644 --- a/mods/ITEMS/mcl_buckets/register.lua +++ b/mods/ITEMS/mcl_buckets/register.lua @@ -1,6 +1,7 @@ local S = minetest.get_translator(minetest.get_current_modname()) local mod_mcl_core = minetest.get_modpath("mcl_core") local mod_mclx_core = minetest.get_modpath("mclx_core") +local has_awards = minetest.get_modpath("awards") local sound_place = function(itemname, pos) local def = minetest.registered_nodes[itemname] @@ -28,6 +29,11 @@ if mod_mcl_core then end end, source_take = {"mcl_core:lava_source", "mcl_nether:nether_lava_source"}, + on_take = function(user) + if has_awards and user and user:is_player() then + awards.unlock(user:get_player_name(), "mcl:hotStuff") + end + end, itemname = "mcl_buckets:bucket_lava", inventory_image = "bucket_lava.png", name = S("Lava Bucket"), From fb60bd0253a22a7e5575d26ebc758b1ec2fdf357 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Fri, 21 May 2021 20:45:53 +0200 Subject: [PATCH 105/418] Disable backface culling of fire entity --- mods/ENTITIES/mcl_burning/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ENTITIES/mcl_burning/init.lua b/mods/ENTITIES/mcl_burning/init.lua index e223b3566..e1943e1bc 100644 --- a/mods/ENTITIES/mcl_burning/init.lua +++ b/mods/ENTITIES/mcl_burning/init.lua @@ -68,6 +68,7 @@ minetest.register_entity("mcl_burning:fire", { visual = "cube", pointable = false, glow = -1, + backface_culling = false, }, animation_frame = 0, From e9f38c6b90ea33234a75a1a95dc03b94c760f602 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 22 May 2021 10:47:28 +0200 Subject: [PATCH 106/418] WIP raycast base buckets --- mods/ITEMS/mcl_buckets/init.lua | 320 +++++++++++++++++++++----------- 1 file changed, 211 insertions(+), 109 deletions(-) diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index 7e67eee8e..3103aeb4f 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -44,129 +44,166 @@ local place_liquid = function(pos, itemstring) sound_place(itemstring, pos) minetest.add_node(pos, {name=itemstring, param2=fullness}) end +local function give_bucket(new_bucket, itemstack, user) + if itemstack:get_count() == 1 then + return new_bucket + else + local inv = user:get_inventory() + if inv:room_for_item("main", new_bucket) then + inv:add_item("main", new_bucket) + else + minetest.add_item(user:get_pos(), new_bucket) + end + if not minetest.is_creative_enabled(user:get_player_name()) then + itemstack:take_item() + end + return itemstack + end +end + +local function bucket_raycast(user) + local pos = user:get_pos() + pos.y = pos.y + user:get_properties().eye_height + local look_dir = user:get_look_dir() + look_dir = vector.multiply(look_dir, 6) + local pos2 = vector.add(pos, look_dir) + + local ray = raycast(pos, pos2, false, true) + if ray then + for pointed_thing in ray do + if pointed_thing and get_node_group(get_node(pointed_thing.above).name, "_mcl_bucket_pointable") == 1 then + --minetest.chat_send_all("found!") + return {under=pointed_thing.under,above=pointed_thing.above} + end + end + end + return nil +end function mcl_buckets.register_liquid(def) - for i=1, #def.source_take do - mcl_buckets.liquids[def.source_take[i]] = { + for _,source in ipairs(def.source_take) do + mcl_buckets.liquids[source] = { source_place = def.source_place, - source_take = def.source_take[i], + source_take = source, on_take = def.on_take, itemname = def.itemname, } if type(def.source_place) == "string" then - mcl_buckets.liquids[def.source_place] = mcl_buckets.liquids[def.source_take[i]] + mcl_buckets.liquids[def.source_place] = mcl_buckets.liquids[source] end end - if def.itemname ~= nil then - minetest.register_craftitem(def.itemname, { - description = def.name, - _doc_items_longdesc = def.longdesc, - _doc_items_usagehelp = def.usagehelp, - _tt_help = def.tt_help, - inventory_image = def.inventory_image, - stack_max = 1, - groups = def.groups, - on_place = function(itemstack, user, pointed_thing) - -- Must be pointing to node - if pointed_thing.type ~= "node" then - return - end + if def.itemname == nil or def.itemname == "" then + error(string.format("[mcl_bucket] Invalid itemname then registering [%s]!", def.name)) + end - local node = minetest.get_node(pointed_thing.under) - local place_pos = pointed_thing.under - local nn = node.name - -- Call on_rightclick if the pointed node defines it - if user and not user:get_player_control().sneak then - if minetest.registered_nodes[nn] and minetest.registered_nodes[nn].on_rightclick then - return minetest.registered_nodes[nn].on_rightclick(place_pos, node, user, itemstack) or itemstack - end - end + minetest.register_craftitem(def.itemname, { + description = def.name, + _doc_items_longdesc = def.longdesc, + _doc_items_usagehelp = def.usagehelp, + _tt_help = def.tt_help, + inventory_image = def.inventory_image, + stack_max = 1, + groups = def.groups, + on_place = function(itemstack, user, pointed_thing) + -- Must be pointing to node + if pointed_thing.type ~= "node" then + return + end - local node_place - if type(def.source_place) == "function" then - node_place = def.source_place(place_pos) - else - node_place = def.source_place + local node = minetest.get_node(pointed_thing.under) + local place_pos = pointed_thing.under + local nn = node.name + -- Call on_rightclick if the pointed node defines it + if user and not user:get_player_control().sneak then + if minetest.registered_nodes[nn] and minetest.registered_nodes[nn].on_rightclick then + return minetest.registered_nodes[nn].on_rightclick(place_pos, node, user, itemstack) or itemstack end - -- Check if pointing to a buildable node - local item = itemstack:get_name() + end - if def.extra_check and def.extra_check(place_pos, user) == false then - -- Fail placement of liquid - elseif minetest.registered_nodes[nn] and minetest.registered_nodes[nn].buildable_to then - -- buildable; replace the node - local pns = user:get_player_name() - if minetest.is_protected(place_pos, pns) then - minetest.record_protection_violation(place_pos, pns) + local node_place + if type(def.source_place) == "function" then + node_place = def.source_place(place_pos) + else + node_place = def.source_place + end + -- Check if pointing to a buildable node + local item = itemstack:get_name() + + if def.extra_check and def.extra_check(place_pos, user) == false then + -- Fail placement of liquid + elseif minetest.registered_nodes[nn] and minetest.registered_nodes[nn].buildable_to then + -- buildable; replace the node + local pns = user:get_player_name() + if minetest.is_protected(place_pos, pns) then + minetest.record_protection_violation(place_pos, pns) + return itemstack + end + place_liquid(place_pos, node_place) + if mod_doc and doc.entry_exists("nodes", node_place) then + doc.mark_entry_as_revealed(user:get_player_name(), "nodes", node_place) + end + else + -- not buildable to; place the liquid above + -- check if the node above can be replaced + local abovenode = minetest.get_node(pointed_thing.above) + if minetest.registered_nodes[abovenode.name] and minetest.registered_nodes[abovenode.name].buildable_to then + local pn = user:get_player_name() + if minetest.is_protected(pointed_thing.above, pn) then + minetest.record_protection_violation(pointed_thing.above, pn) return itemstack end - place_liquid(place_pos, node_place) + place_liquid(pointed_thing.above, node_place) if mod_doc and doc.entry_exists("nodes", node_place) then doc.mark_entry_as_revealed(user:get_player_name(), "nodes", node_place) end else - -- not buildable to; place the liquid above - -- check if the node above can be replaced - local abovenode = minetest.get_node(pointed_thing.above) - if minetest.registered_nodes[abovenode.name] and minetest.registered_nodes[abovenode.name].buildable_to then - local pn = user:get_player_name() - if minetest.is_protected(pointed_thing.above, pn) then - minetest.record_protection_violation(pointed_thing.above, pn) - return itemstack - end - place_liquid(pointed_thing.above, node_place) - if mod_doc and doc.entry_exists("nodes", node_place) then - doc.mark_entry_as_revealed(user:get_player_name(), "nodes", node_place) - end - else - -- do not remove the bucket with the liquid - return - end - end - - -- Handle bucket item and inventory stuff - if not minetest.is_creative_enabled(user:get_player_name()) then - -- Add empty bucket and put it into inventory, if possible. - -- Drop empty bucket otherwise. - local new_bucket = ItemStack("mcl_buckets:bucket_empty") - if itemstack:get_count() == 1 then - return new_bucket - else - local inv = user:get_inventory() - if inv:room_for_item("main", new_bucket) then - inv:add_item("main", new_bucket) - else - minetest.add_item(user:get_pos(), new_bucket) - end - itemstack:take_item() - return itemstack - end - else + -- do not remove the bucket with the liquid return end - end, - _on_dispense = function(stack, pos, droppos, dropnode, dropdir) - local iname = stack:get_name() - local buildable = minetest.registered_nodes[dropnode.name].buildable_to or dropnode.name == "mcl_portals:portal" + end - if def.extra_check and def.extra_check(droppos, nil) == false then - -- Fail placement of liquid - elseif buildable then - -- buildable; replace the node - local node_place - if type(def.source_place) == "function" then - node_place = def.source_place(droppos) + -- Handle bucket item and inventory stuff + if not minetest.is_creative_enabled(user:get_player_name()) then + -- Add empty bucket and put it into inventory, if possible. + -- Drop empty bucket otherwise. + local new_bucket = ItemStack("mcl_buckets:bucket_empty") + if itemstack:get_count() == 1 then + return new_bucket + else + local inv = user:get_inventory() + if inv:room_for_item("main", new_bucket) then + inv:add_item("main", new_bucket) else - node_place = def.source_place + minetest.add_item(user:get_pos(), new_bucket) end - place_liquid(droppos, node_place) - stack:set_name("mcl_buckets:bucket_empty") + itemstack:take_item() + return itemstack end - return stack - end, - }) - end + else + return + end + end, + _on_dispense = function(stack, pos, droppos, dropnode, dropdir) + local iname = stack:get_name() + local buildable = minetest.registered_nodes[dropnode.name].buildable_to or dropnode.name == "mcl_portals:portal" + + if def.extra_check and def.extra_check(droppos, nil) == false then + -- Fail placement of liquid + elseif buildable then + -- buildable; replace the node + local node_place + if type(def.source_place) == "function" then + node_place = def.source_place(droppos) + else + node_place = def.source_place + end + place_liquid(droppos, node_place) + stack:set_name("mcl_buckets:bucket_empty") + end + return stack + end, + }) end minetest.register_craftitem("mcl_buckets:bucket_empty", { @@ -174,26 +211,25 @@ minetest.register_craftitem("mcl_buckets:bucket_empty", { _doc_items_longdesc = S("A bucket can be used to collect and release liquids."), _doc_items_usagehelp = S("Punch a liquid source to collect it. You can then use the filled bucket to place the liquid somewhere else."), _tt_help = S("Collects liquids"), - - liquids_pointable = true, + --liquids_pointable = true, inventory_image = "bucket.png", stack_max = 16, on_place = function(itemstack, user, pointed_thing) - -- Must be pointing to node + --[[-- Must be pointing to node if pointed_thing.type ~= "node" then return itemstack end -- Call on_rightclick if the pointed node defines it - local node = minetest.get_node(pointed_thing.under) - local nn = node.name - if user and not user:get_player_control().sneak then - if minetest.registered_nodes[nn] and minetest.registered_nodes[nn].on_rightclick then - return minetest.registered_nodes[nn].on_rightclick(pointed_thing.under, node, user, itemstack) or itemstack - end - end + + + local pointed_liquid = bucket_raycast(user) -- Can't steal liquids + if minetest.is_protected(pointed_liquid.above, user:get_player_name()) then + minetest.record_protection_violation(pointed_liquid.under, user:get_player_name()) + return itemstack + end if minetest.is_protected(pointed_thing.above, user:get_player_name()) then minetest.record_protection_violation(pointed_thing.under, user:get_player_name()) return itemstack @@ -208,8 +244,8 @@ minetest.register_craftitem("mcl_buckets:bucket_empty", { if not minetest.is_creative_enabled(user:get_player_name()) then new_bucket = ItemStack({name = liquiddef.itemname}) if liquiddef.on_take then - liquiddef.on_take(user) - end + liquiddef.on_take(user) + end end minetest.add_node(pointed_thing.under, {name="air"}) @@ -252,7 +288,73 @@ minetest.register_craftitem("mcl_buckets:bucket_empty", { end return itemstack end + end]] + if pointed_thing.type ~= "node" then + return itemstack end + local node = minetest.get_node(pointed_thing.under) + local nn = node.name + if user and not user:get_player_control().sneak then + if minetest.registered_nodes[nn] and minetest.registered_nodes[nn].on_rightclick then + return minetest.registered_nodes[nn].on_rightclick(pointed_thing.under, node, user, itemstack) or itemstack + end + end + + local liquid_node = bucket_raycast(user) + if liquid_node then + if minetest.is_protected(liquid_node.above, user:get_player_name()) then + minetest.record_protection_violation(liquid_node.above, user:get_player_name()) + end + local liquid_name = get_node(liquid_node.above).name + if liquid_name then + local liquid_def = mcl_buckets.liquids[liquid_name] + if liquid_def then + local new_bucket + --minetest.chat_send_all("test") + -- Fill bucket, but not in Creative Mode + -- FIXME: remove this line + --if not minetest.is_creative_enabled(user:get_player_name()) then + if not false then + new_bucket = ItemStack({name = liquid_def.itemname}) + if liquid_def.on_take then + liquid_def.on_take(user) + end + end + add_node(liquid_node.above, {name="air"}) + sound_take(nn, liquid_node.above) + + if mod_doc and doc.entry_exists("nodes", liquid_name) then + doc.mark_entry_as_revealed(user:get_player_name(), "nodes", liquid_name) + end + if new_bucket then + return give_bucket(new_bucket, itemstack, user) + end + else + minetest.log("error", string.format("[mcl_buckets] Node [%s] has invalid group [_mcl_bucket_pointable]!", liquid_name)) + end + end + return itemstack + else + -- FIXME: replace this ugly code by cauldrons API + if nn == "mcl_cauldrons:cauldron_3" then + -- Take water out of full cauldron + minetest.set_node(pointed_thing.under, {name="mcl_cauldrons:cauldron"}) + if not minetest.is_creative_enabled(user:get_player_name()) then + new_bucket = ItemStack("mcl_buckets:bucket_water") + end + sound_take("mcl_core:water_source", pointed_thing.under) + elseif nn == "mcl_cauldrons:cauldron_3r" then + -- Take river water out of full cauldron + minetest.set_node(pointed_thing.under, {name="mcl_cauldrons:cauldron"}) + if not minetest.is_creative_enabled(user:get_player_name()) then + new_bucket = ItemStack("mcl_buckets:bucket_river_water") + end + sound_take("mclx_core:river_water_source", pointed_thing.under) + end + if new_bucket then + return give_bucket(new_bucket, itemstack, user) + end + end end, _on_dispense = function(stack, pos, droppos, dropnode, dropdir) -- Fill empty bucket with liquid or drop bucket if no liquid From 5d65c8a3aa58da596befac454eae5ed205e2e510 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 22 May 2021 18:57:51 +0200 Subject: [PATCH 107/418] Working empty bucket --- mods/ITEMS/mcl_buckets/init.lua | 6 ++++++ mods/ITEMS/mcl_core/nodes_liquid.lua | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index 3103aeb4f..327d553c8 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -11,6 +11,11 @@ local mod_doc = minetest.get_modpath("doc") local mod_mcl_core = minetest.get_modpath("mcl_core") local mod_mclx_core = minetest.get_modpath("mclx_core") +local raycast = minetest.raycast +local get_node = minetest.get_node +local add_node = minetest.add_node +local get_node_group = minetest.get_node_group + if mod_mcl_core then minetest.register_craft({ output = 'mcl_buckets:bucket_empty 1', @@ -355,6 +360,7 @@ minetest.register_craftitem("mcl_buckets:bucket_empty", { return give_bucket(new_bucket, itemstack, user) end end + return itemstack end, _on_dispense = function(stack, pos, droppos, dropnode, dropdir) -- Fill empty bucket with liquid or drop bucket if no liquid diff --git a/mods/ITEMS/mcl_core/nodes_liquid.lua b/mods/ITEMS/mcl_core/nodes_liquid.lua index c49b685eb..47c22c7c6 100644 --- a/mods/ITEMS/mcl_core/nodes_liquid.lua +++ b/mods/ITEMS/mcl_core/nodes_liquid.lua @@ -100,7 +100,7 @@ S("• When water is directly below lava, the water turns into stone."), liquid_range = 7, post_effect_color = {a=209, r=0x03, g=0x3C, b=0x5C}, stack_max = 64, - groups = { water=3, liquid=3, puts_out_fire=1, freezes=1, not_in_creative_inventory=1, dig_by_piston=1}, + groups = { water=3, liquid=3, puts_out_fire=1, freezes=1, not_in_creative_inventory=1, dig_by_piston=1, _mcl_bucket_pointable=1}, _mcl_blast_resistance = 100, -- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode _mcl_hardness = -1, @@ -203,7 +203,7 @@ S("• When lava is directly above water, the water turns into stone."), _mcl_node_death_message = lava_death_messages, post_effect_color = {a=245, r=208, g=73, b=10}, stack_max = 64, - groups = { lava=3, lava_source=1, liquid=2, destroys_items=1, not_in_creative_inventory=1, dig_by_piston=1, set_on_fire=15, fire_damage=1}, + groups = { lava=3, lava_source=1, liquid=2, destroys_items=1, not_in_creative_inventory=1, dig_by_piston=1, set_on_fire=15, fire_damage=1, _mcl_bucket_pointable=1}, _mcl_blast_resistance = 100, -- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode _mcl_hardness = -1, From 17202115fa2e99fb825dcaf53c73bbaf9a47cb82 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 22 May 2021 18:58:58 +0200 Subject: [PATCH 108/418] cache general functions --- mods/ITEMS/mcl_buckets/init.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index 327d553c8..7f5ab2b16 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -11,6 +11,10 @@ local mod_doc = minetest.get_modpath("doc") local mod_mcl_core = minetest.get_modpath("mcl_core") local mod_mclx_core = minetest.get_modpath("mclx_core") +local vector = vector +local math = math +local string = string + local raycast = minetest.raycast local get_node = minetest.get_node local add_node = minetest.add_node From 84a800f22bb0cff6986fc7d9766129858b058bb9 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 22 May 2021 19:58:09 +0200 Subject: [PATCH 109/418] fix many warnings --- mods/PLAYER/mcl_hunger/hunger.lua | 2 +- mods/PLAYER/mcl_playerplus/init.lua | 2 -- mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.de.tr | 3 --- mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.es.tr | 3 --- mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.fr.tr | 3 --- mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.ru.tr | 3 --- mods/PLAYER/mcl_playerplus/locale/template.txt | 3 --- mods/PLAYER/mcl_skins/init.lua | 4 ++-- 8 files changed, 3 insertions(+), 20 deletions(-) delete mode 100644 mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.de.tr delete mode 100644 mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.es.tr delete mode 100644 mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.fr.tr delete mode 100644 mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.ru.tr delete mode 100644 mods/PLAYER/mcl_playerplus/locale/template.txt diff --git a/mods/PLAYER/mcl_hunger/hunger.lua b/mods/PLAYER/mcl_hunger/hunger.lua index 51d7fdaeb..cf422dbf0 100644 --- a/mods/PLAYER/mcl_hunger/hunger.lua +++ b/mods/PLAYER/mcl_hunger/hunger.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_hunger") +--local S = minetest.get_translator("mcl_hunger") -- wrapper for minetest.item_eat (this way we make sure other mods can't break this one) minetest.do_item_eat = function(hp_change, replace_with_item, itemstack, user, pointed_thing) diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 7b7920ee0..3ad6ba6e8 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -1,5 +1,3 @@ -local S = minetest.get_translator("mcl_playerplus") - mcl_playerplus = { elytra = {}, } diff --git a/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.de.tr b/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.de.tr deleted file mode 100644 index 44d486d08..000000000 --- a/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.de.tr +++ /dev/null @@ -1,3 +0,0 @@ -# textdomain: mcl_playerplus -@1 suffocated to death.=@1 erstickte zu Tode. -@1 was prickled to death by a cactus.=@1 wurde von einem Kaktus zu Tode gepiekst. diff --git a/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.es.tr b/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.es.tr deleted file mode 100644 index ef7705bce..000000000 --- a/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.es.tr +++ /dev/null @@ -1,3 +0,0 @@ -# textdomain: mcl_playerplus -@1 suffocated to death.=@1 ahogado hasta la muerte. -@1 was prickled to death by a cactus.=@1 fue herido de muerte por un cactus. diff --git a/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.fr.tr b/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.fr.tr deleted file mode 100644 index 6482bd736..000000000 --- a/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.fr.tr +++ /dev/null @@ -1,3 +0,0 @@ -# textdomain: mcl_playerplus -@1 suffocated to death.=@1 étouffé à mort. -@1 was prickled to death by a cactus.=@1 a été piqué à mort par un cactus. diff --git a/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.ru.tr b/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.ru.tr deleted file mode 100644 index a75bd4bd6..000000000 --- a/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.ru.tr +++ /dev/null @@ -1,3 +0,0 @@ -# textdomain: mcl_playerplus -@1 suffocated to death.=@1 задохнулся(ась). -@1 was prickled to death by a cactus.=@1 был(а) до смерти заколот(а) кактусом. diff --git a/mods/PLAYER/mcl_playerplus/locale/template.txt b/mods/PLAYER/mcl_playerplus/locale/template.txt deleted file mode 100644 index 49b1f96ac..000000000 --- a/mods/PLAYER/mcl_playerplus/locale/template.txt +++ /dev/null @@ -1,3 +0,0 @@ -# textdomain: mcl_playerplus -@1 suffocated to death.= -@1 was prickled to death by a cactus.= diff --git a/mods/PLAYER/mcl_skins/init.lua b/mods/PLAYER/mcl_skins/init.lua index 84f147da6..0f23519ab 100644 --- a/mods/PLAYER/mcl_skins/init.lua +++ b/mods/PLAYER/mcl_skins/init.lua @@ -87,7 +87,7 @@ mcl_skins.set_player_skin = function(player, skin_id) return false end local playername = player:get_player_name() - local skin, skin_file, preview + local skin, preview if skin_id == nil or type(skin_id) ~= "number" or skin_id < 0 or skin_id > mcl_skins.skin_count then return false elseif skin_id == 0 then @@ -109,7 +109,7 @@ mcl_skins.set_player_skin = function(player, skin_id) preview = "mcl_skins_player_dummy" end end - skin_file = skin .. ".png" + --local skin_file = skin .. ".png" mcl_skins.skins[playername] = skin mcl_skins.previews[playername] = preview player:get_meta():set_string("mcl_skins:skin_id", tostring(skin_id)) From 1b3763654e5801b33842e2d8441a33744f94a697 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 22 May 2021 20:00:59 +0200 Subject: [PATCH 110/418] comment unused local function --- mods/ITEMS/mcl_tnt/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_tnt/init.lua b/mods/ITEMS/mcl_tnt/init.lua index 19bd04a18..40455f8d0 100644 --- a/mods/ITEMS/mcl_tnt/init.lua +++ b/mods/ITEMS/mcl_tnt/init.lua @@ -114,7 +114,7 @@ function TNT:on_activate(staticdata) self.object:set_texture_mod("^mcl_tnt_blink.png") end -local function add_effects(pos, radius, drops) +--[[local function add_effects(pos, radius, drops) minetest.add_particlespawner({ amount = 64, time = 0.5, @@ -161,7 +161,7 @@ local function add_effects(pos, radius, drops) texture = texture, collisiondetection = true, }) -end +end]] function TNT:on_step(dtime) local pos = self.object:get_pos() From 1870a89af08f40a8dfd041108a3801e90571e3fe Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 22 May 2021 20:01:59 +0200 Subject: [PATCH 111/418] remove unused var --- mods/MAPGEN/mcl_mapgen_core/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/MAPGEN/mcl_mapgen_core/init.lua b/mods/MAPGEN/mcl_mapgen_core/init.lua index bdcdb1b4d..285da25c2 100644 --- a/mods/MAPGEN/mcl_mapgen_core/init.lua +++ b/mods/MAPGEN/mcl_mapgen_core/init.lua @@ -1904,7 +1904,7 @@ function mcl_mapgen_core.unregister_generator(id) if rec.vf then lvm = lvm - 1 end if rec.nf then nodes = nodes - 1 end if rec.needs_param2 then param2 = param2 - 1 end - if rec.needs_level0 then level0 = level0 - 1 end + --if rec.needs_level0 then level0 = level0 - 1 end end -- Generate basic layer-based nodes: void, bedrock, realm barrier, lava seas, etc. From a71a0e91611a758e5be4a7cd658792d9bd471304 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 22 May 2021 23:04:18 +0200 Subject: [PATCH 112/418] fix even more warnings (nether portals and potions) --- mods/ITEMS/mcl_portals/portal_nether.lua | 18 +++++++++++++++--- mods/ITEMS/mcl_potions/functions.lua | 16 ++++++++-------- mods/MAPGEN/mcl_biomes/init.lua | 7 ++++--- 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/mods/ITEMS/mcl_portals/portal_nether.lua b/mods/ITEMS/mcl_portals/portal_nether.lua index a121f719c..ec8e40d22 100644 --- a/mods/ITEMS/mcl_portals/portal_nether.lua +++ b/mods/ITEMS/mcl_portals/portal_nether.lua @@ -137,8 +137,20 @@ local function find_exit(p, dx, dy, dz) if not p or not p.y or not p.z or not p.x then return end local dx, dy, dz = dx or DISTANCE_MAX, dy or DISTANCE_MAX, dz or DISTANCE_MAX if dx < 1 or dy < 1 or dz < 1 then return false end - local x, y, z = floor(p.x), floor(p.y), floor(p.z) - local x1, y1, z1, x2, y2, z2 = x-dx+1, y-dy+1, z-dz+1, x+dx-1, y+dy-1, z+dz-1 + + --y values aren't used + local x = floor(p.x) + --local y = floor(p.y) + local z = floor(p.z) + + local x1 = x-dx+1 + --local y1 = y-dy+1 + local z1 = z-dz+1 + + local x2 = x+dx-1 + --local y2 = y+dy-1 + local z2 = z+dz-1 + local k1x, k2x = floor(x1/256), floor(x2/256) local k1z, k2z = floor(z1/256), floor(z2/256) @@ -371,7 +383,7 @@ local function finalize_teleport(obj, exit) if is_player then name = obj:get_player_name() end - local y, dim = mcl_worlds.y_to_layer(exit.y) + local _, dim = mcl_worlds.y_to_layer(exit.y) -- If player stands, player is at ca. something+0.5 which might cause precision problems, so we used ceil for objpos.y diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index b4e1d9448..09b95115a 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -558,8 +558,8 @@ function mcl_potions.make_invisible(player, toggle) local is_player = player:is_player() local entity = player:get_luaentity() - local playername = player:get_player_name() - local skin_file = "" + --local playername = player:get_player_name() + local skin_file if toggle then -- hide player @@ -567,22 +567,22 @@ function mcl_potions.make_invisible(player, toggle) if entity then EF.invisible[player].old_size = entity.visual_size - elseif not player:is_player() then -- if not a player or entity, do nothing + elseif not is_player then -- if not a player or entity, do nothing return end - if player:is_player() then - mcl_player.player_set_skin(player, "mobs_mc_empty.png") - elseif not player:is_player() then + if is_player then + mcl_player.player_set_skin(player, skin_file) + elseif not is_player then player:set_properties({visual_size = {x = 0, y = 0}}) end player:set_nametag_attributes({color = {a = 0}}) elseif EF.invisible[player] then -- show player - if player:is_player() then + if is_player then mcl_skins.update_player_skin(player) - elseif not player:is_player() then + elseif not is_player then player:set_properties({visual_size = EF.invisible[player].old_size}) end player:set_nametag_attributes({color = {r = 255, g = 255, b = 255, a = 255}}) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index d4ebe00d3..4e01df5f2 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -3580,7 +3580,8 @@ local function register_decorations() local fern_minimal = { "Jungle", "JungleM", "JungleEdge", "JungleEdgeM", "Taiga", "MegaTaiga", "MegaSpruceTaiga", "ColdTaiga" } local fern_low = { "Jungle", "JungleM", "JungleEdge", "JungleEdgeM", "Taiga", "MegaTaiga", "MegaSpruceTaiga" } local fern_Jungle = { "Jungle", "JungleM", "JungleEdge", "JungleEdgeM" } - local fern_JungleM = { "JungleM" }, + --local fern_JungleM = { "JungleM" }, + register_grass_decoration("fern", -0.03, 0.09, fern_minimal) register_grass_decoration("fern", -0.015, 0.075, fern_minimal) register_grass_decoration("fern", 0, 0.06, fern_minimal) @@ -3591,7 +3592,7 @@ local function register_decorations() register_grass_decoration("fern", 0.05, 0.01, fern_Jungle) register_grass_decoration("fern", 0.07, -0.01, fern_Jungle) register_grass_decoration("fern", 0.09, -0.03, fern_Jungle) - register_grass_decoration("fern", 0.12, -0.03, fern_JungleM) + register_grass_decoration("fern", 0.12, -0.03, {"JungleM"}) local b_seagrass = {"ColdTaiga_ocean","ExtremeHills_ocean","ExtremeHillsM_ocean","ExtremeHills+_ocean","Taiga_ocean","MegaTaiga_ocean","MegaSpruceTaiga_ocean","StoneBeach_ocean","Plains_ocean","SunflowerPlains_ocean","Forest_ocean","FlowerForest_ocean","BirchForest_ocean","BirchForestM_ocean","RoofedForest_ocean","Swampland_ocean","Jungle_ocean","JungleM_ocean","JungleEdge_ocean","JungleEdgeM_ocean","MushroomIsland_ocean","Desert_ocean","Savanna_ocean","SavannaM_ocean","Mesa_ocean","MesaBryce_ocean","MesaPlateauF_ocean","MesaPlateauFM_ocean", "ColdTaiga_deep_ocean","ExtremeHills_deep_ocean","ExtremeHillsM_deep_ocean","ExtremeHills+_deep_ocean","Taiga_deep_ocean","MegaTaiga_deep_ocean","MegaSpruceTaiga_deep_ocean","StoneBeach_deep_ocean","Plains_deep_ocean","SunflowerPlains_deep_ocean","Forest_deep_ocean","FlowerForest_deep_ocean","BirchForest_deep_ocean","BirchForestM_deep_ocean","RoofedForest_deep_ocean","Swampland_deep_ocean","Jungle_deep_ocean","JungleM_deep_ocean","JungleEdge_deep_ocean","JungleEdgeM_deep_ocean","MushroomIsland_deep_ocean","Desert_deep_ocean","Savanna_deep_ocean","SavannaM_deep_ocean","Mesa_deep_ocean","MesaBryce_deep_ocean","MesaPlateauF_deep_ocean","MesaPlateauFM_deep_ocean", @@ -3974,7 +3975,7 @@ if mg_name ~= "singlenode" then mcl_mapgen_core.register_generator("chorus_grow", nil, function(minp, maxp, blockseed) local gennotify = minetest.get_mapgen_object("gennotify") --local poslist = {} - pr = PseudoRandom(blockseed + 14) + local pr = PseudoRandom(blockseed + 14) for _, pos in ipairs(gennotify["decoration#"..deco_id_chorus_plant] or {}) do local x, y, z = pos.x, pos.y, pos.z if x < -2 or x > 2 or z < -2 or z > 2 then From c1a717238b06bc345c67aaf0197e70d428ba6f2e Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 22 May 2021 23:07:56 +0200 Subject: [PATCH 113/418] [mcl_portals] fix warnings --- mods/ITEMS/mcl_portals/portal_end.lua | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_portals/portal_end.lua b/mods/ITEMS/mcl_portals/portal_end.lua index 192f5001c..5b402bdc0 100644 --- a/mods/ITEMS/mcl_portals/portal_end.lua +++ b/mods/ITEMS/mcl_portals/portal_end.lua @@ -1,10 +1,14 @@ local S = minetest.get_translator("mcl_portals") --- Parameters -local SPAWN_MIN = mcl_vars.mg_end_min+70 -local SPAWN_MAX = mcl_vars.mg_end_min+98 +local table = table +local vector = vector +local math = math -local mg_name = minetest.get_mapgen_setting("mg_name") +-- Parameters +--local SPAWN_MIN = mcl_vars.mg_end_min+70 +--local SPAWN_MAX = mcl_vars.mg_end_min+98 + +--local mg_name = minetest.get_mapgen_setting("mg_name") local destroy_portal = function(pos) local neighbors = { @@ -196,7 +200,6 @@ function mcl_portals.end_teleport(obj, pos) end end - local platform build_end_portal_destination(platform_pos) check_and_build_end_portal_destination(platform_pos) From e91ee174a47c4aa162ad4811795d68d8a34501bc Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 22 May 2021 23:12:33 +0200 Subject: [PATCH 114/418] [mcl_ocean] fix warnings --- mods/ITEMS/mcl_ocean/kelp.lua | 5 ++--- mods/ITEMS/mcl_ocean/sea_pickle.lua | 2 +- mods/ITEMS/mcl_ocean/seagrass.lua | 4 ++-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/mcl_ocean/kelp.lua b/mods/ITEMS/mcl_ocean/kelp.lua index 326b08a81..fb6045e78 100644 --- a/mods/ITEMS/mcl_ocean/kelp.lua +++ b/mods/ITEMS/mcl_ocean/kelp.lua @@ -38,7 +38,7 @@ local mt_is_creative_enabled = minetest.is_creative_enabled local mt_sound_play = minetest.sound_play local math = math -local string = string +--local string = string local table = table -- DEBUG: functions @@ -422,7 +422,7 @@ end function kelp.surface_after_dig_node(pos, node) - return mt_set_node(pos, {name=registred_nodes[node.name].node_dig_prediction}) + return mt_set_node(pos, {name=minetest.registered_nodes[node.name].node_dig_prediction}) end @@ -759,7 +759,6 @@ minetest.register_craftitem("mcl_ocean:dried_kelp", { groups = { food = 2, eatable = 1 }, on_place = minetest.item_eat(1), on_secondary_use = minetest.item_eat(1), - groups = { food = 2, eatable = 1 }, _mcl_saturation = 0.6, }) diff --git a/mods/ITEMS/mcl_ocean/sea_pickle.lua b/mods/ITEMS/mcl_ocean/sea_pickle.lua index 45b934a92..067bb39a3 100644 --- a/mods/ITEMS/mcl_ocean/sea_pickle.lua +++ b/mods/ITEMS/mcl_ocean/sea_pickle.lua @@ -12,7 +12,7 @@ local function sea_pickle_on_place(itemstack, placer, pointed_thing) local node_under = minetest.get_node(pos_under) local node_above = minetest.get_node(pos_above) local def_under = minetest.registered_nodes[node_under.name] - local def_above = minetest.registered_nodes[node_above.name] + --local def_above = minetest.registered_nodes[node_above.name] if def_under and def_under.on_rightclick and not placer:get_player_control().sneak then return def_under.on_rightclick(pos_under, node_under, diff --git a/mods/ITEMS/mcl_ocean/seagrass.lua b/mods/ITEMS/mcl_ocean/seagrass.lua index 492205138..bd6400a32 100644 --- a/mods/ITEMS/mcl_ocean/seagrass.lua +++ b/mods/ITEMS/mcl_ocean/seagrass.lua @@ -105,7 +105,7 @@ for s=1, #surfaces do doc_longdesc = S("Seagrass grows inside water on top of dirt, sand or gravel.") desc = S("Seagrass") doc_create = true - doc_img = "mcl_ocean_seagrass.png" + doc_img = "mcl_ocean_seagrass.png^[verticalframe:12:0" else doc_create = false end @@ -113,7 +113,7 @@ for s=1, #surfaces do _doc_items_entry_name = desc, _doc_items_longdesc = doc_longdesc, _doc_items_create_entry = doc_create, - _doc_items_image = "mcl_ocean_seagrass.png^[verticalframe:12:0", + _doc_items_image = doc_img, drawtype = "plantlike_rooted", paramtype = "light", paramtype2 = "meshoptions", From 0113d290b79cbeea4153635b06d53d07d5363743 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 22 May 2021 23:19:31 +0200 Subject: [PATCH 115/418] [mcl_mobspawners] fix warnings --- mods/ITEMS/mcl_mobspawners/init.lua | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_mobspawners/init.lua b/mods/ITEMS/mcl_mobspawners/init.lua index fe01f4c52..bd9d0c53a 100644 --- a/mods/ITEMS/mcl_mobspawners/init.lua +++ b/mods/ITEMS/mcl_mobspawners/init.lua @@ -1,11 +1,14 @@ local S = minetest.get_translator("mcl_mobspawners") +local math = math +local table = table + mcl_mobspawners = {} local default_mob = "mobs_mc:pig" -- Mob spawner -local spawner_default = default_mob.." 0 15 4 15" +--local spawner_default = default_mob.." 0 15 4 15" local function get_mob_textures(mob) local list = minetest.registered_entities[mob].texture_list @@ -160,7 +163,7 @@ local spawn_mobs = function(pos, elapsed) -- check objects inside 8×8 area around spawner local objs = minetest.get_objects_inside_radius(pos, 8) local count = 0 - local ent = nil + local ent local timer = minetest.get_node_timer(pos) From 9edcc60ba243750bed8994b3896cb48b6a9206c6 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 22 May 2021 23:21:32 +0200 Subject: [PATCH 116/418] [mcl_maps] fix warnings --- mods/ITEMS/mcl_maps/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_maps/init.lua b/mods/ITEMS/mcl_maps/init.lua index b2c03b354..ccdaf6dfd 100644 --- a/mods/ITEMS/mcl_maps/init.lua +++ b/mods/ITEMS/mcl_maps/init.lua @@ -5,7 +5,7 @@ local storage = minetest.get_mod_storage() local modpath = minetest.get_modpath("mcl_maps") local worldpath = minetest.get_worldpath() local map_textures_path = worldpath .. "/mcl_maps/" -local last_finished_id = storage:get_int("next_id") - 1 +--local last_finished_id = storage:get_int("next_id") - 1 minetest.mkdir(map_textures_path) From 0cac8f3f4411a316d235f93fffa87372ef6c92fc Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 22 May 2021 23:22:09 +0200 Subject: [PATCH 117/418] [mcl_jukebox] fix warnings --- mods/ITEMS/mcl_jukebox/init.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/mods/ITEMS/mcl_jukebox/init.lua b/mods/ITEMS/mcl_jukebox/init.lua index 067848f50..249603b58 100644 --- a/mods/ITEMS/mcl_jukebox/init.lua +++ b/mods/ITEMS/mcl_jukebox/init.lua @@ -72,7 +72,6 @@ local function now_playing(player, name) active_huds[playername] = nil end end, {playername, id, hud_sequence_numbers[playername]}) - end minetest.register_on_leaveplayer(function(player) From a200252ab883aef1f79c3107e6ffc2a63403d7a9 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 22 May 2021 23:23:25 +0200 Subject: [PATCH 118/418] [mcl_itemframes] fix warnings --- mods/ITEMS/mcl_itemframes/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_itemframes/init.lua b/mods/ITEMS/mcl_itemframes/init.lua index e0f9f9043..fbd4d545a 100644 --- a/mods/ITEMS/mcl_itemframes/init.lua +++ b/mods/ITEMS/mcl_itemframes/init.lua @@ -276,12 +276,12 @@ minetest.register_node("mcl_itemframes:item_frame",{ on_rotate = function(pos, node, user, mode, param2) if mode == screwdriver.ROTATE_FACE then -- Rotate face - local meta = minetest.get_meta(pos) + --local meta = minetest.get_meta(pos) local node = minetest.get_node(pos) local objs = nil if node.name == "mcl_itemframes:item_frame" then - objs = minetest.get_objects_inside_radius(pos, .5) + objs = minetest.get_objects_inside_radius(pos, 0.5) end if objs then for _, obj in ipairs(objs) do From b58e61b98825132a898dc9bc0fb08c60e2420bdf Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 22 May 2021 23:25:28 +0200 Subject: [PATCH 119/418] [mcl_heads] fix warnings --- mods/ITEMS/mcl_heads/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_heads/init.lua b/mods/ITEMS/mcl_heads/init.lua index 0f41adb89..4bcee2279 100644 --- a/mods/ITEMS/mcl_heads/init.lua +++ b/mods/ITEMS/mcl_heads/init.lua @@ -91,7 +91,7 @@ local function addhead(name, texture, desc, longdesc, rangemob, rangefactor) local itemstring = itemstack:get_name() local fakestack = ItemStack(itemstack) - local idef = fakestack:get_definition() + --local idef = fakestack:get_definition() local retval if wdir == 0 or wdir == 1 then return minetest.item_place(itemstack, placer, pointed_thing) @@ -101,7 +101,7 @@ local function addhead(name, texture, desc, longdesc, rangemob, rangefactor) if not retval then return itemstack end - itemstack,_ = minetest.item_place(fakestack, placer, pointed_thing, wdir) + itemstack = minetest.item_place(fakestack, placer, pointed_thing, wdir) itemstack:set_name(itemstring) return itemstack end, From 45ab5c8e25a901e3c103df5f7f6c080b30de6f91 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 22 May 2021 23:29:51 +0200 Subject: [PATCH 120/418] [mcl_flowers] fix warnings --- mods/ITEMS/mcl_flowers/init.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_flowers/init.lua b/mods/ITEMS/mcl_flowers/init.lua index 7a2501f25..d07a125cb 100644 --- a/mods/ITEMS/mcl_flowers/init.lua +++ b/mods/ITEMS/mcl_flowers/init.lua @@ -180,12 +180,12 @@ local function add_large_plant(name, desc, longdesc, bottom_img, top_img, inv_im if not inv_img then inv_img = top_img end - local noncreative, create_entry, paramtype2, palette + local create_entry, paramtype2, palette if is_flower == nil then is_flower = true end - local bottom_groups = {flammable=2,fire_encouragement=60,fire_flammability=100, non_mycelium_plant=1,attached_node=1, dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1, plant=1,double_plant=1,deco_block=1,not_in_creative_inventory=noncreative} + local bottom_groups = {flammable=2, fire_encouragement=60, fire_flammability=100, non_mycelium_plant=1, attached_node=1, dig_by_water=1, destroy_by_lava_flow=1, dig_by_piston=1, plant=1, double_plant=1, deco_block=1} if is_flower then bottom_groups.flower = 1 bottom_groups.place_flowerlike = 1 @@ -200,7 +200,7 @@ local function add_large_plant(name, desc, longdesc, bottom_img, top_img, inv_im palette = "mcl_core_palette_grass.png" end if longdesc == nil then - noncreative = 1 + bottom_groups.not_in_creative_inventory = 1 create_entry = false end -- Drop itself by default From 82396bd994382fd4bd98bde770430c18ada01471 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 22 May 2021 23:31:16 +0200 Subject: [PATCH 121/418] [mcl_fireworks] fix warnings (1000 remainings) --- mods/ITEMS/mcl_fireworks/register.lua | 2 -- 1 file changed, 2 deletions(-) diff --git a/mods/ITEMS/mcl_fireworks/register.lua b/mods/ITEMS/mcl_fireworks/register.lua index 6ab55442c..c441254cb 100644 --- a/mods/ITEMS/mcl_fireworks/register.lua +++ b/mods/ITEMS/mcl_fireworks/register.lua @@ -1,7 +1,5 @@ local S = minetest.get_translator("mcl_fireworks") -local player_rocketing = {} - local tt_help = S("Flight Duration:") local description = S("Firework Rocket") From a1acf6d3c18c5e88a0e391447280a79bdc4c8565 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 22 May 2021 23:49:03 +0200 Subject: [PATCH 122/418] [mcl_fishing] fix warnings --- mods/ITEMS/mcl_fishing/init.lua | 281 +++++++++++++++----------------- 1 file changed, 133 insertions(+), 148 deletions(-) diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index 76526ee72..cc7c5cca5 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -2,6 +2,8 @@ local S = minetest.get_translator("mcl_fishing") +local math = math + local bobber_ENTITY={ physical = false, timer=0, @@ -31,143 +33,141 @@ local fish = function(itemstack, player, pointed_thing) end end - local pos = player:get_pos() + local pos = player:get_pos() - local objs = minetest.get_objects_inside_radius(pos, 125) - local num = 0 - local ent = nil - local noent = true - - local durability = 65 - local unbreaking = mcl_enchanting.get_enchantment(itemstack, "unbreaking") - if unbreaking > 0 then - durability = durability * (unbreaking + 1) - end + local objs = minetest.get_objects_inside_radius(pos, 125) + local ent + local noent = false - --Check for bobber if so handle. - for n = 1, #objs do - ent = objs[n]:get_luaentity() - if ent then - if ent.player and ent.objtype=="fishing" then - if (player:get_player_name() == ent.player) then - noent = false - if ent._dive == true then - local itemname - local items - local itemcount = 1 - local pr = PseudoRandom(os.time() * math.random(1, 100)) - local r = pr:next(1, 100) - local fish_values = {85, 84.8, 84.7, 84.5} - local junk_values = {10, 8.1, 6.1, 4.2} - local luck_of_the_sea = math.min(mcl_enchanting.get_enchantment(itemstack, "luck_of_the_sea"), 3) - local index = luck_of_the_sea + 1 - local fish_value = fish_values[index] - local junk_value = junk_values[index] + fish_value - if r <= fish_value then - -- Fish - items = mcl_loot.get_loot({ - items = { - { itemstring = "mcl_fishing:fish_raw", weight = 60 }, - { itemstring = "mcl_fishing:salmon_raw", weight = 25 }, - { itemstring = "mcl_fishing:clownfish_raw", weight = 2 }, - { itemstring = "mcl_fishing:pufferfish_raw", weight = 13 }, - } - }, pr) - elseif r <= junk_value then - -- Junk - items = mcl_loot.get_loot({ - items = { - { itemstring = "mcl_core:bowl", weight = 10 }, - { itemstring = "mcl_fishing:fishing_rod", weight = 2, wear_min = 6554, wear_max = 65535 }, -- 10%-100% damage - { itemstring = "mcl_mobitems:leather", weight = 10 }, - { itemstring = "mcl_armor:boots_leather", weight = 10, wear_min = 6554, wear_max = 65535 }, -- 10%-100% damage - { itemstring = "mcl_mobitems:rotten_flesh", weight = 10 }, - { itemstring = "mcl_core:stick", weight = 5 }, - { itemstring = "mcl_mobitems:string", weight = 5 }, - { itemstring = "mcl_potions:water", weight = 10 }, - { itemstring = "mcl_mobitems:bone", weight = 10 }, - { itemstring = "mcl_dye:black", weight = 1, amount_min = 10, amount_max = 10 }, - { itemstring = "mcl_mobitems:string", weight = 10 }, -- TODO: Tripwire Hook - } - }, pr) - else - -- Treasure - items = mcl_loot.get_loot({ - items = { - -- TODO: Enchanted Bow - { itemstring = "mcl_bows:bow", wear_min = 49144, wear_max = 65535 }, -- 75%-100% damage - { itemstack = mcl_enchanting.get_randomly_enchanted_book(30, true, true)}, - -- TODO: Enchanted Fishing Rod - { itemstring = "mcl_fishing:fishing_rod", wear_min = 49144, wear_max = 65535 }, -- 75%-100% damage - { itemstring = "mcl_mobs:nametag", }, - { itemstring = "mcl_mobitems:saddle", }, - { itemstring = "mcl_flowers:waterlily", }, - } - }, pr) - end - local item - if #items >= 1 then - item = ItemStack(items[1]) - else - item = ItemStack() - end - local inv = player:get_inventory() - if inv:room_for_item("main", item) then - inv:add_item("main", item) - else - minetest.add_item(pos, item) - end - if mcl_experience.throw_experience then - mcl_experience.throw_experience(pos, math.random(1,6)) - end + local durability = 65 + local unbreaking = mcl_enchanting.get_enchantment(itemstack, "unbreaking") + if unbreaking > 0 then + durability = durability * (unbreaking + 1) + end - if not minetest.is_creative_enabled(player:get_player_name()) then - local idef = itemstack:get_definition() - itemstack:add_wear(65535/durability) -- 65 uses - if itemstack:get_count() == 0 and idef.sound and idef.sound.breaks then - minetest.sound_play(idef.sound.breaks, {pos=player:get_pos(), gain=0.5}, true) - end + --Check for bobber if so handle. + for n = 1, #objs do + ent = objs[n]:get_luaentity() + if ent then + if ent.player and ent.objtype=="fishing" then + if (player:get_player_name() == ent.player) then + if ent._dive == true then + local items + local pr = PseudoRandom(os.time() * math.random(1, 100)) + local r = pr:next(1, 100) + local fish_values = {85, 84.8, 84.7, 84.5} + local junk_values = {10, 8.1, 6.1, 4.2} + local luck_of_the_sea = math.min(mcl_enchanting.get_enchantment(itemstack, "luck_of_the_sea"), 3) + local index = luck_of_the_sea + 1 + local fish_value = fish_values[index] + local junk_value = junk_values[index] + fish_value + if r <= fish_value then + -- Fish + items = mcl_loot.get_loot({ + items = { + { itemstring = "mcl_fishing:fish_raw", weight = 60 }, + { itemstring = "mcl_fishing:salmon_raw", weight = 25 }, + { itemstring = "mcl_fishing:clownfish_raw", weight = 2 }, + { itemstring = "mcl_fishing:pufferfish_raw", weight = 13 }, + } + }, pr) + elseif r <= junk_value then + -- Junk + items = mcl_loot.get_loot({ + items = { + { itemstring = "mcl_core:bowl", weight = 10 }, + { itemstring = "mcl_fishing:fishing_rod", weight = 2, wear_min = 6554, wear_max = 65535 }, -- 10%-100% damage + { itemstring = "mcl_mobitems:leather", weight = 10 }, + { itemstring = "mcl_armor:boots_leather", weight = 10, wear_min = 6554, wear_max = 65535 }, -- 10%-100% damage + { itemstring = "mcl_mobitems:rotten_flesh", weight = 10 }, + { itemstring = "mcl_core:stick", weight = 5 }, + { itemstring = "mcl_mobitems:string", weight = 5 }, + { itemstring = "mcl_potions:water", weight = 10 }, + { itemstring = "mcl_mobitems:bone", weight = 10 }, + { itemstring = "mcl_dye:black", weight = 1, amount_min = 10, amount_max = 10 }, + { itemstring = "mcl_mobitems:string", weight = 10 }, -- TODO: Tripwire Hook + } + }, pr) + else + -- Treasure + items = mcl_loot.get_loot({ + items = { + -- TODO: Enchanted Bow + { itemstring = "mcl_bows:bow", wear_min = 49144, wear_max = 65535 }, -- 75%-100% damage + { itemstack = mcl_enchanting.get_randomly_enchanted_book(30, true, true)}, + -- TODO: Enchanted Fishing Rod + { itemstring = "mcl_fishing:fishing_rod", wear_min = 49144, wear_max = 65535 }, -- 75%-100% damage + { itemstring = "mcl_mobs:nametag", }, + { itemstring = "mcl_mobitems:saddle", }, + { itemstring = "mcl_flowers:waterlily", }, + } + }, pr) + end + local item + if #items >= 1 then + item = ItemStack(items[1]) + else + item = ItemStack() + end + local inv = player:get_inventory() + if inv:room_for_item("main", item) then + inv:add_item("main", item) + else + minetest.add_item(pos, item) + end + if mcl_experience.throw_experience then + mcl_experience.throw_experience(pos, math.random(1,6)) + end + + if not minetest.is_creative_enabled(player:get_player_name()) then + local idef = itemstack:get_definition() + itemstack:add_wear(65535/durability) -- 65 uses + if itemstack:get_count() == 0 and idef.sound and idef.sound.breaks then + minetest.sound_play(idef.sound.breaks, {pos=player:get_pos(), gain=0.5}, true) end end - --Check if object is on land. - local epos = ent.object:get_pos() - epos.y = math.floor(epos.y) - local node = minetest.get_node(epos) - local def = minetest.registered_nodes[node.name] - if def.walkable then - if not minetest.is_creative_enabled(player:get_player_name()) then - local idef = itemstack:get_definition() - itemstack:add_wear((65535/durability)*2) -- if so and not creative then wear double like in MC. - if itemstack:get_count() == 0 and idef.sound and idef.sound.breaks then - minetest.sound_play(idef.sound.breaks, {pos=player:get_pos(), gain=0.5}, true) - end - end - end - --Destroy bobber. - ent.object:remove() - return itemstack end + --Check if object is on land. + local epos = ent.object:get_pos() + epos.y = math.floor(epos.y) + local node = minetest.get_node(epos) + local def = minetest.registered_nodes[node.name] + if def.walkable then + if not minetest.is_creative_enabled(player:get_player_name()) then + local idef = itemstack:get_definition() + itemstack:add_wear((65535/durability)*2) -- if so and not creative then wear double like in MC. + if itemstack:get_count() == 0 and idef.sound and idef.sound.breaks then + minetest.sound_play(idef.sound.breaks, {pos=player:get_pos(), gain=0.5}, true) + end + end + end + --Destroy bobber. + ent.object:remove() + noent = false + break end end end - --Check for flying bobber. - for n = 1, #objs do - ent = objs[n]:get_luaentity() - if ent then - if ent._thrower and ent.objtype=="fishing" then - if player:get_player_name() == ent._thrower then - noent = false - break - end + end + --Check for flying bobber. + for n = 1, #objs do + ent = objs[n]:get_luaentity() + if ent then + if ent._thrower and ent.objtype=="fishing" then + if player:get_player_name() == ent._thrower then + noent = false + break end end end - --If no bobber or flying_bobber exists then throw bobber. - if noent == true then - local playerpos = player:get_pos() - local dir = player:get_look_dir() - mcl_throwing.throw("mcl_fishing:flying_bobber", {x=playerpos.x, y=playerpos.y+1.5, z=playerpos.z}, dir, 15, player:get_player_name()) - end + end + --If no bobber or flying_bobber exists then throw bobber. + if noent then + local playerpos = player:get_pos() + local dir = player:get_look_dir() + mcl_throwing.throw("mcl_fishing:flying_bobber", {x=playerpos.x, y=playerpos.y+1.5, z=playerpos.z}, dir, 15, player:get_player_name()) + end + return itemstack end -- Movement function of bobber @@ -334,13 +334,11 @@ minetest.register_entity("mcl_fishing:flying_bobber_entity", flying_bobber_ENTIT mcl_throwing.register_throwable_object("mcl_fishing:flying_bobber", "mcl_fishing:flying_bobber_entity", 5) --- If player leaves area, remove bobber. -minetest.register_on_leaveplayer(function(player) +local function remove_bobber(player) local objs = minetest.get_objects_inside_radius(player:get_pos(), 250) - local ent = nil - local noent = true + for n = 1, #objs do - ent = objs[n]:get_luaentity() + local ent = objs[n]:get_luaentity() if ent then if ent.player and ent.objtype=="fishing" then ent.object:remove() @@ -349,26 +347,13 @@ minetest.register_on_leaveplayer(function(player) end end end -end) +end + +-- If player leaves area, remove bobber. +minetest.register_on_leaveplayer(remove_bobber) -- If player dies, remove bobber. -minetest.register_on_dieplayer(function(player) - local objs = minetest.get_objects_inside_radius(player:get_pos(), 250) - local num = 0 - local ent = nil - local noent = true - - for n = 1, #objs do - ent = objs[n]:get_luaentity() - if ent then - if ent.player and ent.objtype=="fishing" then - ent.object:remove() - elseif ent._thrower and ent.objtype=="fishing" then - ent.object:remove() - end - end - end -end) +minetest.register_on_dieplayer(remove_bobber) -- Fishing Rod minetest.register_tool("mcl_fishing:fishing_rod", { From fcc2087b9718c600f1de0d878a20391e06c54b65 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 22 May 2021 23:50:28 +0200 Subject: [PATCH 123/418] [mcl_farming] fix warnings --- mods/ITEMS/mcl_farming/shared_functions.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_farming/shared_functions.lua b/mods/ITEMS/mcl_farming/shared_functions.lua index c4cb2fd71..025894a11 100644 --- a/mods/ITEMS/mcl_farming/shared_functions.lua +++ b/mods/ITEMS/mcl_farming/shared_functions.lua @@ -161,7 +161,7 @@ function mcl_farming:place_seed(itemstack, placer, pointed_thing, plantname) if string.find(farmland.name, "mcl_farming:soil") and string.find(place_s.name, "air") then minetest.sound_play(minetest.registered_nodes[plantname].sounds.place, {pos = pos}, true) minetest.add_node(pos, {name=plantname, param2 = minetest.registered_nodes[plantname].place_param2}) - local intervals_counter = get_intervals_counter(pos, 1, 1) + --local intervals_counter = get_intervals_counter(pos, 1, 1) else return end @@ -190,7 +190,7 @@ end function mcl_farming:add_gourd(full_unconnected_stem, connected_stem_basename, stem_itemstring, stem_def, stem_drop, gourd_itemstring, gourd_def, grow_interval, grow_chance, connected_stem_texture, gourd_on_construct_extra) - local connected_stem_names = { + local connected_stem_names = { connected_stem_basename .. "_r", connected_stem_basename .. "_l", connected_stem_basename .. "_t", From 56310a3624bd41f50e6e14b8248e8af70be62e94 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sat, 22 May 2021 23:56:52 +0200 Subject: [PATCH 124/418] [mcl_end] fix some warnings --- mods/ITEMS/mcl_end/chorus_plant.lua | 13 ++++++------- mods/ITEMS/mcl_end/end_crystal.lua | 4 +++- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/mods/ITEMS/mcl_end/chorus_plant.lua b/mods/ITEMS/mcl_end/chorus_plant.lua index 597842867..b54259885 100644 --- a/mods/ITEMS/mcl_end/chorus_plant.lua +++ b/mods/ITEMS/mcl_end/chorus_plant.lua @@ -29,7 +29,7 @@ local no_detach = {} -- This detaches all chorus plants that are/were attached -- at start_pos. -mcl_end.detach_chorus_plant = function(start_pos, digger) +function mcl_end.detach_chorus_plant(start_pos, digger) -- This node should not call a detach function, do NOTHING local hash = minetest.hash_node_position(start_pos) if no_detach[hash] ~= nil then @@ -106,11 +106,11 @@ mcl_end.detach_chorus_plant = function(start_pos, digger) no_detach = {} end -mcl_end.check_detach_chorus_plant = function(pos, oldnode, oldmetadata, digger) +function mcl_end.check_detach_chorus_plant(pos, oldnode, oldmetadata, digger) mcl_end.detach_chorus_plant(pos, digger) end -mcl_end.check_blast_chorus_plant = function(pos) +function mcl_end.check_blast_chorus_plant(pos) minetest.remove_node(pos) mcl_end.detach_chorus_plant(pos) end @@ -139,7 +139,7 @@ minetest.register_node("mcl_end:chorus_flower", { node_placement_prediction = "", on_place = function(itemstack, placer, pointed_thing) local node_under = minetest.get_node(pointed_thing.under) - local node_above = minetest.get_node(pointed_thing.above) + --local node_above = minetest.get_node(pointed_thing.above) if placer and not placer:get_player_control().sneak then -- Use pointed node's on_rightclick function first, if present if minetest.registered_nodes[node_under.name] and minetest.registered_nodes[node_under.name].on_rightclick then @@ -309,7 +309,7 @@ minetest.register_node("mcl_end:chorus_plant", { }) -- Grow a complete chorus plant at pos -mcl_end.grow_chorus_plant = function(pos, node, pr) +function mcl_end.grow_chorus_plant(pos, node, pr) local flowers = { pos } -- Plant initial flower (if it isn't there already) if not node then @@ -340,7 +340,7 @@ end -- Grow a single step of a chorus plant at pos. -- Pos must be a chorus flower. -mcl_end.grow_chorus_plant_step = function(pos, node, pr) +function mcl_end.grow_chorus_plant_step(pos, node, pr) local new_flower_buds = {} local above = { x = pos.x, y = pos.y + 1, z = pos.z } local node_above = minetest.get_node(above) @@ -408,7 +408,6 @@ mcl_end.grow_chorus_plant_step = function(pos, node, pr) elseif branching == true then branches = pr:next(0, 3) end - local branch_grown = false for b=1, branches do local next_branch = pr:next(1, #around) local branch = vector.add(pos, around[next_branch]) diff --git a/mods/ITEMS/mcl_end/end_crystal.lua b/mods/ITEMS/mcl_end/end_crystal.lua index 78fcc0e21..a188be383 100644 --- a/mods/ITEMS/mcl_end/end_crystal.lua +++ b/mods/ITEMS/mcl_end/end_crystal.lua @@ -1,5 +1,7 @@ local S = minetest.get_translator("mcl_end") +local vector = vector + local explosion_strength = 6 local directions = { @@ -45,7 +47,7 @@ local function set_crystal_animation(self) end local function spawn_crystal(pos) - local crystal = minetest.add_entity(pos, "mcl_end:crystal") + minetest.add_entity(pos, "mcl_end:crystal") if not vector.equals(pos, vector.floor(pos)) then return end if mcl_worlds.pos_to_dimension(pos) ~= "end" then return end local portal_center From bbde3b551f08a3dbe8a727b5acd49e54f495df59 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 00:01:30 +0200 Subject: [PATCH 125/418] [mcl_enchanting] fix warnings --- mods/ITEMS/mcl_enchanting/engine.lua | 4 ++-- mods/ITEMS/mcl_enchanting/init.lua | 11 +++++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/mcl_enchanting/engine.lua b/mods/ITEMS/mcl_enchanting/engine.lua index 89fdc393d..47db36870 100644 --- a/mods/ITEMS/mcl_enchanting/engine.lua +++ b/mods/ITEMS/mcl_enchanting/engine.lua @@ -250,7 +250,7 @@ local function get_after_use_callback(itemdef) itemstack:add_wear(digparams.wear) end - local enchantments = mcl_enchanting.get_enchantments(itemstack) + --local enchantments = mcl_enchanting.get_enchantments(itemstack) mcl_enchanting.update_groupcaps(itemstack) end end @@ -292,7 +292,7 @@ end function mcl_enchanting.get_possible_enchantments(itemstack, enchantment_level, treasure) local possible_enchantments, weights, accum_weight = {}, {}, 0 for enchantment, enchantment_def in pairs(mcl_enchanting.enchantments) do - local supported, _, _, primary = mcl_enchanting.can_enchant(itemstack, enchantment, 1) + local _, _, _, primary = mcl_enchanting.can_enchant(itemstack, enchantment, 1) if primary or treasure then table.insert(possible_enchantments, enchantment) accum_weight = accum_weight + enchantment_def.weight diff --git a/mods/ITEMS/mcl_enchanting/init.lua b/mods/ITEMS/mcl_enchanting/init.lua index 26fd5e19d..06f9b0f75 100644 --- a/mods/ITEMS/mcl_enchanting/init.lua +++ b/mods/ITEMS/mcl_enchanting/init.lua @@ -1,6 +1,9 @@ local modpath = minetest.get_modpath("mcl_enchanting") local S = minetest.get_translator("mcl_enchanting") +local math = math +local vector = vector + mcl_enchanting = { book_offset = vector.new(0, 0.75, 0), book_animations = {["close"] = 1, ["opening"] = 2, ["open"] = 3, ["closing"] = 4}, @@ -122,7 +125,7 @@ minetest.register_chatcommand("forceenchant", { return false, S("Player '@1' cannot be found.", target_name) end local itemstack = target:get_wielded_item() - local can_enchant, errorstring, extra_info = mcl_enchanting.can_enchant(itemstack, enchantment, level) + local _, errorstring = mcl_enchanting.can_enchant(itemstack, enchantment, level) if errorstring == "enchantment invalid" then return false, S("There is no such enchantment '@1'.", enchantment) elseif errorstring == "item missing" then @@ -242,9 +245,9 @@ minetest.register_node("mcl_enchanting:table", { on_rotate = rotate, on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) local player_meta = clicker:get_meta() - local table_meta = minetest.get_meta(pos) - local num_bookshelves = table_meta:get_int("mcl_enchanting:num_bookshelves") - local table_name = table_meta:get_string("name") + --local table_meta = minetest.get_meta(pos) + --local num_bookshelves = table_meta:get_int("mcl_enchanting:num_bookshelves") + local table_name = minetest.get_meta(pos):get_string("name") if table_name == "" then table_name = S("Enchant") end From b3c0e7c1bd0c1ce7520b747722d7da40a4c2b597 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 00:01:53 +0200 Subject: [PATCH 126/418] [mcl_dye] fix warnings --- mods/ITEMS/mcl_dye/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_dye/init.lua b/mods/ITEMS/mcl_dye/init.lua index 2897e96ec..863abd3d2 100644 --- a/mods/ITEMS/mcl_dye/init.lua +++ b/mods/ITEMS/mcl_dye/init.lua @@ -327,7 +327,7 @@ minetest.register_craftitem("mcl_dye:white", { _doc_items_usagehelp = S("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."), stack_max = 64, groups = dyelocal.dyes[1][4], - on_place = function(itemstack, user, pointed_thing) + on_place = function(itemstack, user, pointed_thing) -- 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 From 30e83088d4dddf1349da06f87d8d1dbf669b4c3b Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 00:03:34 +0200 Subject: [PATCH 127/418] [mcl_doors] fix warnings --- mods/ITEMS/mcl_doors/api_trapdoors.lua | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/mods/ITEMS/mcl_doors/api_trapdoors.lua b/mods/ITEMS/mcl_doors/api_trapdoors.lua index c8f769c67..3999ad0bf 100644 --- a/mods/ITEMS/mcl_doors/api_trapdoors.lua +++ b/mods/ITEMS/mcl_doors/api_trapdoors.lua @@ -98,13 +98,11 @@ function mcl_doors:register_trapdoor(name, def) if not usagehelp and not def.only_redstone_can_open then usagehelp = S("To open or close this trapdoor, rightclick it or send a redstone signal to it.") end - if not tt_help then - if def.only_redstone_can_open then - tt_help = S("Openable by redstone power") - else - tt_help = S("Openable by players and redstone power") - end - end + if def.only_redstone_can_open then + tt_help = S("Openable by redstone power") + else + tt_help = S("Openable by players and redstone power") + end -- Closed trapdoor @@ -164,7 +162,7 @@ function mcl_doors:register_trapdoor(name, def) local fpos = get_fpos(placer, pointed_thing) - local origname = itemstack:get_name() + --local origname = itemstack:get_name() if p0.y - 1 == p1.y or (fpos > 0 and fpos < 0.5) or (fpos < -0.5 and fpos > -0.999999999) then param2 = param2 + 20 From f9a86947e58316d2e336740bc2765f0df0a78f03 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 00:09:07 +0200 Subject: [PATCH 128/418] [mcl_core] fix warnings --- mods/ITEMS/mcl_core/nodes_base.lua | 5 ++--- mods/ITEMS/mcl_core/nodes_climb.lua | 1 - mods/ITEMS/mcl_core/nodes_glass.lua | 4 ++-- mods/ITEMS/mcl_core/nodes_liquid.lua | 7 +++++-- mods/ITEMS/mcl_core/nodes_misc.lua | 5 ++--- mods/ITEMS/mcl_core/nodes_trees.lua | 5 ++--- 6 files changed, 13 insertions(+), 14 deletions(-) diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index 4477f0377..39015e53b 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -990,9 +990,8 @@ for i=1,8 do local itemcount = itemstack:get_count() local fakestack = ItemStack(itemstring.." "..itemcount) fakestack:set_name("mcl_core:snow_"..math.min(8, (i+g))) - local success - itemstack, success = minetest.item_place(fakestack, placer, pointed_thing) - minetest.sound_play(mcl_sounds.node_sound_snow_defaults().place, {pos = below}, true) + itemstack = minetest.item_place(fakestack, placer, pointed_thing) + minetest.sound_play(mcl_sounds.node_sound_snow_defaults().place, {pos = pointed_thing.under}, true) itemstack:set_name(itemstring) return itemstack end diff --git a/mods/ITEMS/mcl_core/nodes_climb.lua b/mods/ITEMS/mcl_core/nodes_climb.lua index d9ecd76d3..3b2d3ab60 100644 --- a/mods/ITEMS/mcl_core/nodes_climb.lua +++ b/mods/ITEMS/mcl_core/nodes_climb.lua @@ -120,7 +120,6 @@ minetest.register_node("mcl_core:vine", { local node = minetest.get_node(under) local def = minetest.registered_nodes[node.name] if not def then return itemstack end - local groups = def.groups -- Check special rightclick action of pointed node if def and def.on_rightclick then diff --git a/mods/ITEMS/mcl_core/nodes_glass.lua b/mods/ITEMS/mcl_core/nodes_glass.lua index 85bf614f4..8c12d8b93 100644 --- a/mods/ITEMS/mcl_core/nodes_glass.lua +++ b/mods/ITEMS/mcl_core/nodes_glass.lua @@ -20,7 +20,7 @@ minetest.register_node("mcl_core:glass", { }) ------------------------ --- Create Color Glass -- +-- Create Color Glass -- ------------------------ local canonical_color = "yellow" function mcl_core.add_stained_glass(desc, recipeitem, colorgroup, color) @@ -54,7 +54,7 @@ function mcl_core.add_stained_glass(desc, recipeitem, colorgroup, color) _mcl_hardness = 0.3, _mcl_silk_touch_drop = true, }) - + minetest.register_craft({ output = 'mcl_core:glass_'..color..' 8', recipe = { diff --git a/mods/ITEMS/mcl_core/nodes_liquid.lua b/mods/ITEMS/mcl_core/nodes_liquid.lua index c49b685eb..99d33cf59 100644 --- a/mods/ITEMS/mcl_core/nodes_liquid.lua +++ b/mods/ITEMS/mcl_core/nodes_liquid.lua @@ -3,7 +3,10 @@ local S = minetest.get_translator("mcl_core") local N = function(s) return s end -local WATER_ALPHA = 179 +local vector = vector +local math = math + +--local WATER_ALPHA = 179 local WATER_VISC = 1 local LAVA_VISC = 7 local LIGHT_LAVA = minetest.LIGHT_MAX @@ -215,7 +218,7 @@ local emit_lava_particle = function(pos) return end local ppos = vector.add(pos, { x = math.random(-7, 7)/16, y = 0.45, z = math.random(-7, 7)/16}) - local spos = vector.add(ppos, { x = 0, y = -0.2, z = 0 }) + --local spos = vector.add(ppos, { x = 0, y = -0.2, z = 0 }) local vel = { x = math.random(-3, 3)/10, y = math.random(4, 7), z = math.random(-3, 3)/10 } local acc = { x = 0, y = -9.81, z = 0 } -- Lava droplet diff --git a/mods/ITEMS/mcl_core/nodes_misc.lua b/mods/ITEMS/mcl_core/nodes_misc.lua index 8b36f0696..a8188350a 100644 --- a/mods/ITEMS/mcl_core/nodes_misc.lua +++ b/mods/ITEMS/mcl_core/nodes_misc.lua @@ -31,7 +31,7 @@ minetest.register_node("mcl_core:slimeblock", { node_box = { type = "fixed", fixed = { - {-0.25, -0.25, -0.25, 0.25, 0.25, 0.25}, + {-0.25, -0.25, -0.25, 0.25, 0.25, 0.25}, {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, } }, @@ -39,7 +39,6 @@ minetest.register_node("mcl_core:slimeblock", { type = "regular", }, tiles = {"mcl_core_slime.png"}, - paramtype = "light", use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "blend" or true, stack_max = 64, -- According to Minecraft Wiki, bouncing off a slime block from a height off 255 blocks should result in a bounce height of 50 blocks @@ -213,7 +212,7 @@ minetest.register_node("mcl_core:barrier", { -- Same as barrier, but non-pointable. This node is only to be used internally to separate realms. -- It must NOT be used for anything else. -- This node only exists because Minetest does not have support for “dimensions” yet and needs to --- be removed when support for this is implemented. +-- be removed when support for this is implemented. minetest.register_node("mcl_core:realm_barrier", { description = S("Realm Barrier"), _doc_items_create_entry = false, diff --git a/mods/ITEMS/mcl_core/nodes_trees.lua b/mods/ITEMS/mcl_core/nodes_trees.lua index 801810dbd..cc64cd9cf 100644 --- a/mods/ITEMS/mcl_core/nodes_trees.lua +++ b/mods/ITEMS/mcl_core/nodes_trees.lua @@ -81,7 +81,7 @@ local register_stripped_trunk = function(subname, description_stripped_trunk, de _mcl_blast_resistance = 2, _mcl_hardness = 2, }) - + minetest.register_craft({ output = "mcl_core:"..subname.."_bark 3", recipe = { @@ -107,13 +107,12 @@ local register_wooden_planks = function(subname, description, tiles) end local register_leaves = function(subname, description, longdesc, tiles, sapling, drop_apples, sapling_chances, leafdecay_distance) - local drop if leafdecay_distance == nil then leafdecay_distance = 4 end local apple_chances = {200, 180, 160, 120, 40} local stick_chances = {50, 45, 30, 35, 10} - + local function get_drops(fortune_level) local drop = { max_items = 1, From b8488ce55ea4cbfc92cd2ff3734f04ff996cf81f Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 00:12:54 +0200 Subject: [PATCH 129/418] [mcl_core] fix missing warnings --- mods/ITEMS/mcl_core/craftitems.lua | 2 -- mods/ITEMS/mcl_core/functions.lua | 16 +++++++--------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/mods/ITEMS/mcl_core/craftitems.lua b/mods/ITEMS/mcl_core/craftitems.lua index 2428bb5ea..886535473 100644 --- a/mods/ITEMS/mcl_core/craftitems.lua +++ b/mods/ITEMS/mcl_core/craftitems.lua @@ -28,7 +28,6 @@ minetest.register_craftitem("mcl_core:coal_lump", { description = S("Coal"), _doc_items_longdesc = S("“Coal” refers to coal lumps obtained by digging coal ore which can be found underground. Coal is your standard furnace fuel, but it can also be used to make torches, coal blocks and a few other things."), _doc_items_hidden = false, - groups = { coal=1 }, inventory_image = "default_coal_lump.png", stack_max = 64, groups = { craftitem=1, coal=1 }, @@ -38,7 +37,6 @@ minetest.register_craftitem("mcl_core:charcoal_lump", { description = S("Charcoal"), _doc_items_longdesc = S("Charcoal is an alternative furnace fuel created by cooking wood in a furnace. It has the same burning time as coal and also shares many of its crafting recipes, but it can not be used to create coal blocks."), _doc_items_hidden = false, - groups = { coal=1 }, inventory_image = "mcl_core_charcoal.png", stack_max = 64, groups = { craftitem=1, coal=1 }, diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index 732c386b0..a6c21302e 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -24,7 +24,7 @@ minetest.register_abm({ for w=1, #water do local waternode = minetest.get_node(water[w]) - local watertype = minetest.registered_nodes[waternode.name].liquidtype + --local watertype = minetest.registered_nodes[waternode.name].liquidtype -- Lava on top of water: Water turns into stone if water[w].y < pos.y and water[w].x == pos.x and water[w].z == pos.z then minetest.set_node(water[w], {name="mcl_core:stone"}) @@ -336,13 +336,12 @@ end -- oak tree. function mcl_core.generate_tree(pos, tree_type, options) pos.y = pos.y-1 - local nodename = minetest.get_node(pos).name + --local nodename = minetest.get_node(pos).name pos.y = pos.y+1 if not minetest.get_node_light(pos) then return end - local node local two_by_two = options and options.two_by_two local balloon = options and options.balloon @@ -390,7 +389,7 @@ end function mcl_core.generate_v6_oak_tree(pos) local trunk = "mcl_core:tree" local leaves = "mcl_core:leaves" - local node = {name = ""} + local node for dy=1,4 do pos.y = pos.y+dy if minetest.get_node(pos).name ~= "air" then @@ -409,10 +408,10 @@ function mcl_core.generate_v6_oak_tree(pos) node = {name = leaves} pos.y = pos.y+3 - local rarity = 0 + --[[local rarity = 0 if math.random(0, 10) == 3 then rarity = 1 - end + end]] for dx=-2,2 do for dz=-2,2 do for dy=0,3 do @@ -787,7 +786,6 @@ minetest.register_abm({ if pos == nil then return end - local can_change = false local above = {x=pos.x, y=pos.y+1, z=pos.z} local abovenode = minetest.get_node(above) if minetest.get_item_group(abovenode.name, "liquid") ~= 0 or minetest.get_item_group(abovenode.name, "opaque") == 1 then @@ -1021,7 +1019,7 @@ local sapling_grow_action = function(tree_id, soil_needed, one_by_one, two_by_tw if one_by_one and check_tree_growth(pos, tree_id) then -- Single sapling minetest.set_node(pos, {name="air"}) - local r = math.random(1, 12) + --local r = math.random(1, 12) mcl_core.generate_tree(pos, tree_id) return end @@ -1418,7 +1416,7 @@ minetest.register_abm({ for s=1, #surround do local spos = vector.add(p0, surround[s]) local maybe_vine = minetest.get_node(spos) - local surround_inverse = vector.multiply(surround[s], -1) + --local surround_inverse = vector.multiply(surround[s], -1) if maybe_vine.name == "mcl_core:vine" and (not mcl_core.check_vines_supported(spos, maybe_vine)) then minetest.remove_node(spos) vinedecay_particles(spos, maybe_vine) From 402a1d0088061138c65faa7a02fdeb7d56864a50 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 00:13:27 +0200 Subject: [PATCH 130/418] [mcl_core] fix last warning --- mods/ITEMS/mcl_core/functions.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index a6c21302e..7f9a83bc9 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -23,7 +23,7 @@ minetest.register_abm({ local lavatype = minetest.registered_nodes[node.name].liquidtype for w=1, #water do - local waternode = minetest.get_node(water[w]) + --local waternode = minetest.get_node(water[w]) --local watertype = minetest.registered_nodes[waternode.name].liquidtype -- Lava on top of water: Water turns into stone if water[w].y < pos.y and water[w].x == pos.x and water[w].z == pos.z then From 8ac5d32416124d23cb311d090d01b61e707d6d9c Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 00:17:12 +0200 Subject: [PATCH 131/418] [mcl_compass] fix warnings --- mods/ITEMS/mcl_compass/init.lua | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_compass/init.lua b/mods/ITEMS/mcl_compass/init.lua index 2c71eeac0..31944fa88 100644 --- a/mods/ITEMS/mcl_compass/init.lua +++ b/mods/ITEMS/mcl_compass/init.lua @@ -4,7 +4,8 @@ mcl_compass = {} local compass_frames = 32 -local default_spawn_settings = minetest.settings:get("static_spawnpoint") +--Not sure spawn point should be dymanic (is it in mc?) +--local default_spawn_settings = minetest.settings:get("static_spawnpoint") -- Timer for random compass spinning local random_timer = 0 @@ -79,7 +80,9 @@ for i,img in ipairs(images) do if i == stereotype_frame then inv = 0 end - local use_doc, longdesc, usagehelp, tt + local use_doc, longdesc, tt + --Why is there no usage help? This should be fixed. + --local usagehelp use_doc = i == stereotype_frame if use_doc then tt = S("Points to the world origin") @@ -91,7 +94,7 @@ for i,img in ipairs(images) do _tt_help = tt, _doc_items_create_entry = use_doc, _doc_items_longdesc = longdesc, - _doc_items_usagehelp = usagehelp, + --_doc_items_usagehelp = usagehelp, inventory_image = img, wield_image = img, stack_max = 64, From df1eeba6b61905c045c7ba658cf1c31950a39b4d Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 00:18:42 +0200 Subject: [PATCH 132/418] [mcl_clock] fix warnings --- mods/ITEMS/mcl_clock/init.lua | 2 -- 1 file changed, 2 deletions(-) diff --git a/mods/ITEMS/mcl_clock/init.lua b/mods/ITEMS/mcl_clock/init.lua index 0f6978447..0eb83ee80 100644 --- a/mods/ITEMS/mcl_clock/init.lua +++ b/mods/ITEMS/mcl_clock/init.lua @@ -96,8 +96,6 @@ minetest.register_globalstep(function(dtime) for p, player in pairs(minetest.get_connected_players()) do for s, stack in pairs(player:get_inventory():get_list("main")) do - local dim = mcl_worlds.pos_to_dimension(player:get_pos()) - local frame -- Clocks do not work in certain zones if not mcl_worlds.clock_works(player:get_pos()) then From 60736d04b8717e71459f29c5fd682a870094bb36 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 00:31:22 +0200 Subject: [PATCH 133/418] [mcl_chests] fix some warnings --- mods/ITEMS/mcl_chests/init.lua | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index 824530eb3..b92ed4c01 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -162,13 +162,14 @@ Value: Otherwise: nil ]] local open_chests = {} -local function back_is_blocked(pos, dir) +--[[local function back_is_blocked(pos, dir) pos = vector.add(pos, dir) local def = minetest.registered_nodes[minetest.get_node(pos).name] pos.y = pos.y + 1 local def2 = minetest.registered_nodes[minetest.get_node(pos).name] return not def or def.groups.opaque == 1 or not def2 or def2.groups.opaque == 1 -end +end]] + -- To be called if a player opened a chest local player_chest_open = function(player, pos, node_name, textures, param2, double, sound, mesh, shulker) local name = player:get_player_name() @@ -696,7 +697,6 @@ minetest.register_node("mcl_chests:"..basename.."_right", { minetest.swap_node(p, { name = small_name, param2 = param2 }) create_entity(p, small_name, small_textures, param2, false, "default_chest", "mcl_chests_chest", "chest") - local meta = minetest.get_meta(pos) end, after_dig_node = drop_items_chest, on_blast = on_chest_blast, @@ -898,7 +898,7 @@ register_chest("trapped_chest_on", "trapped_chest" ) -local function close_if_trapped_chest(pos, player) +--[[local function close_if_trapped_chest(pos, player) local node = minetest.get_node(pos) if node.name == "mcl_chests:trapped_chest_on_small" then @@ -928,7 +928,7 @@ local function close_if_trapped_chest(pos, player) player_chest_close(player) end -end +end]] -- Disable chest when it has been closed minetest.register_on_player_receive_fields(function(player, formname, fields) @@ -1330,7 +1330,6 @@ minetest.register_craft({ -- Save metadata of shulker box when used in crafting minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv) - local new = itemstack:get_name() if minetest.get_item_group(itemstack:get_name(), "shulker_box") ~= 1 then return end From 621a5a53a8e0ab6ac19c8015f342e589807490aa Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 00:32:04 +0200 Subject: [PATCH 134/418] [mcl_bucket] fix warnings --- mods/ITEMS/mcl_buckets/register.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_buckets/register.lua b/mods/ITEMS/mcl_buckets/register.lua index 43156716c..5e46b6ce0 100644 --- a/mods/ITEMS/mcl_buckets/register.lua +++ b/mods/ITEMS/mcl_buckets/register.lua @@ -10,12 +10,12 @@ local sound_place = function(itemname, pos) end end -local sound_take = function(itemname, pos) +--[[local sound_take = function(itemname, pos) local def = minetest.registered_nodes[itemname] if def and def.sounds and def.sounds.dug then minetest.sound_play(def.sounds.dug, {gain=1.0, pos = pos, pitch = 1 + math.random(-10, 10)*0.005}, true) end -end +end]] if mod_mcl_core then -- Lava bucket From ac459d3914a946d930ccf7025f2026fc452f2fe4 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 00:42:31 +0200 Subject: [PATCH 135/418] [mcl_bucket] fix warnings --- mods/ITEMS/mcl_buckets/init.lua | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index 7e67eee8e..fd07006b7 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -9,7 +9,7 @@ minetest.register_alias("bucket:bucket_lava", "mcl_buckets:bucket_lava") local mod_doc = minetest.get_modpath("doc") local mod_mcl_core = minetest.get_modpath("mcl_core") -local mod_mclx_core = minetest.get_modpath("mclx_core") +--local mod_mclx_core = minetest.get_modpath("mclx_core") if mod_mcl_core then minetest.register_craft({ @@ -76,10 +76,11 @@ function mcl_buckets.register_liquid(def) local node = minetest.get_node(pointed_thing.under) local place_pos = pointed_thing.under local nn = node.name + local nodedef = minetest.registered_nodes[nn] -- Call on_rightclick if the pointed node defines it if user and not user:get_player_control().sneak then - if minetest.registered_nodes[nn] and minetest.registered_nodes[nn].on_rightclick then - return minetest.registered_nodes[nn].on_rightclick(place_pos, node, user, itemstack) or itemstack + if nodedef and nodedef.on_rightclick then + return nodedef.on_rightclick(place_pos, node, user, itemstack) or itemstack end end @@ -90,11 +91,9 @@ function mcl_buckets.register_liquid(def) node_place = def.source_place end -- Check if pointing to a buildable node - local item = itemstack:get_name() + --local item = itemstack:get_name() - if def.extra_check and def.extra_check(place_pos, user) == false then - -- Fail placement of liquid - elseif minetest.registered_nodes[nn] and minetest.registered_nodes[nn].buildable_to then + if def.extra_check and def.extra_check(place_pos, user) == true and nodedef and nodedef.buildable_to then -- buildable; replace the node local pns = user:get_player_name() if minetest.is_protected(place_pos, pns) then @@ -147,12 +146,12 @@ function mcl_buckets.register_liquid(def) end end, _on_dispense = function(stack, pos, droppos, dropnode, dropdir) - local iname = stack:get_name() + --local iname = stack:get_name() local buildable = minetest.registered_nodes[dropnode.name].buildable_to or dropnode.name == "mcl_portals:portal" - if def.extra_check and def.extra_check(droppos, nil) == false then + --if def.extra_check and def.extra_check(droppos, nil) == false then -- Fail placement of liquid - elseif buildable then + if def.extra_check and def.extra_check(droppos, nil) == true and buildable then -- buildable; replace the node local node_place if type(def.source_place) == "function" then @@ -208,8 +207,8 @@ minetest.register_craftitem("mcl_buckets:bucket_empty", { if not minetest.is_creative_enabled(user:get_player_name()) then new_bucket = ItemStack({name = liquiddef.itemname}) if liquiddef.on_take then - liquiddef.on_take(user) - end + liquiddef.on_take(user) + end end minetest.add_node(pointed_thing.under, {name="air"}) From fdfb586b16cce2ad9134206e779f4367bb5e5561 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 00:58:30 +0200 Subject: [PATCH 136/418] [mcl_brewing] fix warnings --- mods/ITEMS/mcl_brewing/init.lua | 37 ++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua index 617929ff7..1724a982d 100644 --- a/mods/ITEMS/mcl_brewing/init.lua +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -61,14 +61,14 @@ local brewing_formspec = "size[9,8.75]".. "listring[context;stand]" -local function swap_node(pos, name) +--[[local function swap_node(pos, name) local node = minetest.get_node(pos) if node.name == name then return end node.name = name minetest.swap_node(pos, node) -end +end]] local function brewable(inv) @@ -110,12 +110,13 @@ local function brewing_stand_timer(pos, elapsed) local BREW_TIME = 20 -- all brews brew the same local BURN_TIME = BREW_TIME * 10 - local input_item = meta:get_string("input_item") or "" + --local input_item = meta:get_string("input_item") or "" local stand_timer = meta:get_float("stand_timer") or 0 local fuel = meta:get_float("fuel") or 0 local inv = meta:get_inventory() - local input_list, stand_list, fuel_list, brew_output, d + --local input_list, stand_list, fuel_list + local brew_output, d local input_count, fuel_name, fuel_count, formspec, fuel_percent, brew_percent local update = true @@ -124,9 +125,9 @@ local function brewing_stand_timer(pos, elapsed) update = false - input_list = inv:get_list("input") - stand_list = inv:get_list("stand") - fuel_list = inv:get_list("fuel") + --input_list = inv:get_list("input") + --stand_list = inv:get_list("stand") + --fuel_list = inv:get_list("fuel") -- TODO ... fix this. Goal is to reset the process if the stand changes -- for i=1, inv:get_size("stand", i) do -- reset the process due to change @@ -237,7 +238,7 @@ local function brewing_stand_timer(pos, elapsed) end -local function allow_metadata_inventory_put(pos, listname, index, stack, player) +--[[local function allow_metadata_inventory_put(pos, listname, index, stack, player) local name = player:get_player_name() if minetest.is_protected(pos, name) then minetest.record_protection_violation(pos, name) @@ -273,7 +274,7 @@ local function allow_metadata_inventory_put(pos, listname, index, stack, player) elseif listname == "stand" then return 0 end -end +end]] -- Drop input items of brewing_stand at pos with metadata meta @@ -315,12 +316,14 @@ local doc_string = S("When you have found a good combination, the brewing will commence automatically and steam starts to appear, using up the fuel and brewing material. The potions will soon be ready.").."\n".. S("Different combinations of brewing materials and liquids will give different results. Try to experiment!") -local tiles = {"mcl_brewing_top.png", --top - "mcl_brewing_base.png", --bottom - "mcl_brewing_side.png", --right - "mcl_brewing_side.png", --left - "mcl_brewing_side.png", --back - "mcl_brewing_side.png^[transformFX"} --front +local tiles = { + "mcl_brewing_top.png", --top + "mcl_brewing_base.png", --bottom + "mcl_brewing_side.png", --right + "mcl_brewing_side.png", --left + "mcl_brewing_side.png", --back + "mcl_brewing_side.png^[transformFX", --front +} local allow_put = function(pos, listname, index, stack, player) local name = player:get_player_name() @@ -349,11 +352,11 @@ local on_put = function(pos, listname, index, stack, player) --some code here to enforce only potions getting placed on stands end -local after_dig = function(pos, oldnode, oldmetadata, digger) +--[[local after_dig = function(pos, oldnode, oldmetadata, digger) local meta = minetest.get_meta(pos) meta:from_table(oldmetadata) drop_brewing_stand_items(pos, meta) -end +end]] local on_destruct = function(pos) local meta = minetest.get_meta(pos) From b7bf566190cb9a4336ab2cd4b83f54383ce77142 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 01:06:34 +0200 Subject: [PATCH 137/418] [mcl_bows] fix warnings --- mods/ITEMS/mcl_bows/arrow.lua | 27 +++++++++++++++------------ mods/ITEMS/mcl_bows/bow.lua | 9 ++++----- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/mods/ITEMS/mcl_bows/arrow.lua b/mods/ITEMS/mcl_bows/arrow.lua index c34e93479..a56b2e7cf 100644 --- a/mods/ITEMS/mcl_bows/arrow.lua +++ b/mods/ITEMS/mcl_bows/arrow.lua @@ -1,29 +1,32 @@ local S = minetest.get_translator("mcl_bows") +local math = math +local vector = vector + -- Time in seconds after which a stuck arrow is deleted local ARROW_TIMEOUT = 60 -- Time after which stuck arrow is rechecked for being stuck local STUCK_RECHECK_TIME = 5 -local GRAVITY = 9.81 +--local GRAVITY = 9.81 local YAW_OFFSET = -math.pi/2 -local dir_to_pitch = function(dir) - local dir2 = vector.normalize(dir) +local function dir_to_pitch(dir) + --local dir2 = vector.normalize(dir) local xz = math.abs(dir.x) + math.abs(dir.z) return -math.atan2(-dir.y, xz) end -local random_arrow_positions = function(positions, placement) - if positions == 'x' then +local function random_arrow_positions(positions, placement) + if positions == "x" then return math.random(-4, 4) - elseif positions == 'y' then + elseif positions == "y" then return math.random(0, 10) end - if placement == 'front' and positions == 'z' then + if placement == "front" and positions == "z" then return 3 - elseif placement == 'back' and positions == 'z' then + elseif placement == "back" and positions == "z" then return -3 end return 0 @@ -257,12 +260,12 @@ ARROW_ENTITY.on_step = function(self, dtime) damage_groups={fleshy=self._damage}, }, self.object:get_velocity()) if obj:is_player() then - local placement = '' + local placement self._placement = math.random(1, 2) if self._placement == 1 then - placement = 'front' + placement = "front" else - placement = 'back' + placement = "back" end self._in_player = true if self._placement == 2 then @@ -393,7 +396,7 @@ ARROW_ENTITY.on_step = function(self, dtime) if not v then v = 0 end - local old_v = self._viscosity + --local old_v = self._viscosity self._viscosity = v local vpenalty = math.max(0.1, 0.98 - 0.1 * v) if math.abs(vel.x) > 0.001 then diff --git a/mods/ITEMS/mcl_bows/bow.lua b/mods/ITEMS/mcl_bows/bow.lua index 2257fcc5e..f752142c2 100644 --- a/mods/ITEMS/mcl_bows/bow.lua +++ b/mods/ITEMS/mcl_bows/bow.lua @@ -228,11 +228,10 @@ end controls.register_on_release(function(player, key, time) if key~="RMB" then return end - local inv = minetest.get_inventory({type="player", name=player:get_player_name()}) + --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 wielditem:get_name()=="mcl_bows:bow_0_enchanted" or wielditem:get_name()=="mcl_bows:bow_1_enchanted" or wielditem:get_name()=="mcl_bows:bow_2_enchanted") then - local has_shot = false local enchanted = mcl_enchanting.is_enchanted(wielditem:get_name()) local speed, damage @@ -272,7 +271,7 @@ controls.register_on_release(function(player, key, time) damage = math.max(1, math.floor(9 * charge_ratio)) end - has_shot = player_shoot_arrow(wielditem, player, speed, damage, is_critical) + local has_shot = player_shoot_arrow(wielditem, player, speed, damage, is_critical) if enchanted then wielditem:set_name("mcl_bows:bow_enchanted") @@ -299,7 +298,7 @@ controls.register_on_hold(function(player, key, time) if key ~= "RMB" or not (creative or get_arrow(player)) then return end - local inv = minetest.get_inventory({type="player", name=name}) + --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()) @@ -346,7 +345,7 @@ minetest.register_globalstep(function(dtime) local name = player:get_player_name() local wielditem = player:get_wielded_item() local wieldindex = player:get_wield_index() - local controls = player:get_player_control() + --local controls = player:get_player_control() if type(bow_load[name]) == "number" and ((wielditem:get_name()~="mcl_bows:bow_0" and wielditem:get_name()~="mcl_bows:bow_1" and wielditem:get_name()~="mcl_bows:bow_2" and wielditem:get_name()~="mcl_bows:bow_0_enchanted" and wielditem:get_name()~="mcl_bows:bow_1_enchanted" and wielditem:get_name()~="mcl_bows:bow_2_enchanted") or wieldindex ~= bow_index[name]) then reset_bow_state(player, true) end From 892f4b96c94879929dd0261c5901098b671bb03d Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 01:07:10 +0200 Subject: [PATCH 138/418] [mcl_books] fix warnings --- mods/ITEMS/mcl_books/init.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/mods/ITEMS/mcl_books/init.lua b/mods/ITEMS/mcl_books/init.lua index 95b45e69e..86f896707 100644 --- a/mods/ITEMS/mcl_books/init.lua +++ b/mods/ITEMS/mcl_books/init.lua @@ -238,7 +238,6 @@ minetest.register_craft_predict(function(itemstack, player, old_craft_grid, craf end local original - local index for i = 1, player:get_inventory():get_size("craft") do if old_craft_grid[i]:get_name() == "mcl_books:written_book" then original = old_craft_grid[i] From 203c7e2c846666ce585ac7895c975894b3576b41 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 01:09:45 +0200 Subject: [PATCH 139/418] [mcl_beds] fix warnings --- mods/ITEMS/mcl_beds/api.lua | 6 ++++-- mods/ITEMS/mcl_beds/functions.lua | 6 +++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_beds/api.lua b/mods/ITEMS/mcl_beds/api.lua index c0b25b1c5..ee59bc34b 100644 --- a/mods/ITEMS/mcl_beds/api.lua +++ b/mods/ITEMS/mcl_beds/api.lua @@ -48,7 +48,9 @@ local function rotate(pos, node, user, mode, new_param2) return false end - local new_dir, newp = minetest_facedir_to_dir(new_param2) + local newp + local new_dir = minetest_facedir_to_dir(new_param2) + if bottom then newp = vector_add(pos, new_dir) else @@ -153,7 +155,7 @@ function mcl_beds.register_bed(name, def) paramtype2 = "facedir", is_ground_content = false, stack_max = 1, - groups = {handy=1, flammable = 3, bed = 1, dig_by_piston=1, bouncy=66, fall_damage_add_percent=-50, deco_block = 1, flammable=-1}, + groups = {handy=1, bed = 1, dig_by_piston=1, bouncy=66, fall_damage_add_percent=-50, deco_block = 1, flammable=-1}, _mcl_hardness = 0.2, _mcl_blast_resistance = 1, sounds = def.sounds or default_sounds, diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index ecd749603..f1bd096f4 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -319,14 +319,14 @@ function mcl_beds.on_rightclick(pos, player, is_top) -- move to bed if not mcl_beds.player[name] then - local success, message + local message if is_top then - success, message = lay_down(player, ppos, pos) + _, message = lay_down(player, ppos, pos) else local node = minetest.get_node(pos) local dir = minetest.facedir_to_dir(node.param2) local other = vector.add(pos, dir) - success, message = lay_down(player, ppos, other) + _, message = lay_down(player, ppos, other) end if message then mcl_tmp_message.message(player, message) From be5eb621fda50bbbdb93139f466d550cbbb39189 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 10:52:52 +0200 Subject: [PATCH 140/418] [mcl_books] fix warnings --- mods/ITEMS/mcl_books/init.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/mods/ITEMS/mcl_books/init.lua b/mods/ITEMS/mcl_books/init.lua index 86f896707..b7bd20d9a 100644 --- a/mods/ITEMS/mcl_books/init.lua +++ b/mods/ITEMS/mcl_books/init.lua @@ -241,7 +241,6 @@ minetest.register_craft_predict(function(itemstack, player, old_craft_grid, craf for i = 1, player:get_inventory():get_size("craft") do if old_craft_grid[i]:get_name() == "mcl_books:written_book" then original = old_craft_grid[i] - index = i end end if not original then From 8f6a97eefe32583fe8301174f2072f03df5790ab Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 10:57:07 +0200 Subject: [PATCH 141/418] [mcl_beds] fix warnings --- mods/ITEMS/mcl_beds/functions.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index f1bd096f4..fd156757b 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -321,12 +321,12 @@ function mcl_beds.on_rightclick(pos, player, is_top) if not mcl_beds.player[name] then local message if is_top then - _, message = lay_down(player, ppos, pos) + message = select(2, lay_down(player, ppos, pos)) else local node = minetest.get_node(pos) local dir = minetest.facedir_to_dir(node.param2) local other = vector.add(pos, dir) - _, message = lay_down(player, ppos, other) + message = select(2, lay_down(player, ppos, other)) end if message then mcl_tmp_message.message(player, message) From 4bc473bc29ccc262449e2cb27e260a35322dd3b6 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 10:59:07 +0200 Subject: [PATCH 142/418] [mcl_banners] fix some warnings --- mods/ITEMS/mcl_banners/patterncraft.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/mods/ITEMS/mcl_banners/patterncraft.lua b/mods/ITEMS/mcl_banners/patterncraft.lua index fbd0c9e33..516624301 100644 --- a/mods/ITEMS/mcl_banners/patterncraft.lua +++ b/mods/ITEMS/mcl_banners/patterncraft.lua @@ -426,7 +426,6 @@ local banner_pattern_craft = function(itemstack, player, old_craft_grid, craft_i if (pitem == d and minetest.get_item_group(itemname, "dye") == 0) or (pitem == e and itemname ~= e and inv_i ~= banner_index) then pattern_ok = false break - else end inv_i = inv_i + 1 if inv_i > max_i then From a9c49853aa023e8d2dbd1b56f962218ca18cbc29 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 11:01:29 +0200 Subject: [PATCH 143/418] [mesecons_pressureplates] fix warnings --- mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua b/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua index 2e161ae4d..34730760d 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua @@ -116,7 +116,7 @@ function mesecon.register_pressure_plate(basename, description, textures_off, te wield_image = image_w, paramtype = "light", walkable = false, - description = description, + description = description, on_timer = pp_on_timer, on_construct = function(pos) minetest.get_node_timer(pos):start(PRESSURE_PLATE_INTERVAL) From e75a2e3a671ed314adc60f8e0d1e82a146ef70b4 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 11:02:13 +0200 Subject: [PATCH 144/418] [mesecons_pistons] fix warnings --- mods/ITEMS/REDSTONE/mesecons_pistons/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua b/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua index 3230d9804..f37ffb761 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua @@ -124,7 +124,7 @@ local piston_off = function (pos, node) local dir = piston_get_direction(pistonspec.dir, node) local pullpos = vector.add(pos, vector.multiply(dir, 2)) local meta = minetest.get_meta(pos) - local success, stack, oldstack = mesecon.mvps_pull_single(pullpos, vector.multiply(dir, -1), PISTON_MAXIMUM_PUSH, meta:get_string("owner"), pos) + local success, stack = mesecon.mvps_pull_single(pullpos, vector.multiply(dir, -1), PISTON_MAXIMUM_PUSH, meta:get_string("owner"), pos) if success then mesecon.mvps_process_stack(pos, dir, stack) end From c580c1ccad64a2886970a659d47f29d6c974842c Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 11:17:19 +0200 Subject: [PATCH 145/418] [mesecons_pistons] unify code style --- mods/ITEMS/REDSTONE/mesecons_pistons/init.lua | 271 ++++++++++-------- 1 file changed, 151 insertions(+), 120 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua b/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua index f37ffb761..0073aeb48 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua @@ -2,29 +2,36 @@ local S = minetest.get_translator("mesecons_pistons") local PISTON_MAXIMUM_PUSH = 12 --- Get mesecon rules of pistons -local piston_rules = -{{x=0, y=0, z=1}, --everything apart from z- (pusher side) - {x=1, y=0, z=0}, - {x=-1, y=0, z=0}, - {x=0, y=1, z=0}, - {x=0, y=-1, z=0}} +--Get mesecon rules of pistons -local piston_up_rules = -{{x=0, y=0, z=-1}, --everything apart from y+ (pusher side) - {x=0, y=0, z=1}, - {x=-1, y=0, z=0}, - {x=1, y=0, z=0}, - {x=0, y=-1, z=0}} +--everything apart from z- (pusher side) +local piston_rules = { + {x=0, y=0, z=1}, + {x=1, y=0, z=0}, + {x=-1, y=0, z=0}, + {x=0, y=1, z=0}, + {x=0, y=-1, z=0}, +} -local piston_down_rules = -{{x=0, y=0, z=-1}, --everything apart from y- (pusher side) - {x=0, y=0, z=1}, - {x=-1, y=0, z=0}, - {x=1, y=0, z=0}, - {x=0, y=1, z=0}} +--everything apart from y+ (pusher side) +local piston_up_rules = { + {x=0, y=0, z=-1}, + {x=0, y=0, z=1}, + {x=-1, y=0, z=0}, + {x=1, y=0, z=0}, + {x=0, y=-1, z=0}, +} -local piston_get_rules = function (node) +--everything apart from y- (pusher side) +local piston_down_rules = { + {x=0, y=0, z=-1}, + {x=0, y=0, z=1}, + {x=-1, y=0, z=0}, + {x=1, y=0, z=0}, + {x=0, y=1, z=0}, +} + +local function piston_get_rules(node) local rules = piston_rules for i = 1, node.param2 do rules = mesecon.rotate_rules_left(rules) @@ -32,7 +39,7 @@ local piston_get_rules = function (node) return rules end -local piston_facedir_direction = function (node) +local function piston_facedir_direction(node) local rules = {{x = 0, y = 0, z = -1}} for i = 1, node.param2 do rules = mesecon.rotate_rules_left(rules) @@ -40,7 +47,7 @@ local piston_facedir_direction = function (node) return rules[1] end -local piston_get_direction = function (dir, node) +local function piston_get_direction(dir, node) if type(dir) == "function" then return dir(node) else @@ -50,7 +57,7 @@ end -- Remove pusher of piston. -- To be used when piston was destroyed or dug. -local piston_remove_pusher = function (pos, oldnode) +local function piston_remove_pusher(pos, oldnode) local pistonspec = minetest.registered_nodes[oldnode.name].mesecons_piston local dir = piston_get_direction(pistonspec.dir, oldnode) @@ -70,7 +77,7 @@ end -- Remove base node of piston. -- To be used when pusher was destroyed. -local piston_remove_base = function (pos, oldnode) +local function piston_remove_base(pos, oldnode) local basenodename = minetest.registered_nodes[oldnode.name].corresponding_piston local pistonspec = minetest.registered_nodes[basenodename].mesecons_piston @@ -89,7 +96,7 @@ local piston_remove_base = function (pos, oldnode) end end -local piston_on = function (pos, node) +local function piston_on(pos, node) local pistonspec = minetest.registered_nodes[node.name].mesecons_piston local dir = piston_get_direction(pistonspec.dir, node) @@ -113,7 +120,7 @@ local piston_on = function (pos, node) end end -local piston_off = function (pos, node) +local function piston_off(pos, node) local pistonspec = minetest.registered_nodes[node.name].mesecons_piston minetest.swap_node(pos, {param2 = node.param2, name = pistonspec.offname}) piston_remove_pusher (pos, node) @@ -130,7 +137,7 @@ local piston_off = function (pos, node) end end -local piston_orientate = function (pos, placer) +local function piston_orientate(pos, placer) mesecon.mvps_set_owner(pos, placer) -- not placed by player @@ -158,14 +165,14 @@ local piston_pusher_box = { fixed = { {-2/16, -2/16, -.5 + pt, 2/16, 2/16, .5 + pt}, {-.5 , -.5 , -.5 , .5 , .5 , -.5 + pt}, - } + }, } local piston_on_box = { type = "fixed", fixed = { {-.5, -.5, -.5 + pt, .5, .5, .5} - } + }, } @@ -195,18 +202,20 @@ minetest.register_node("mesecons_pistons:piston_normal_off", { "mesecons_piston_bottom.png^[transformR270", "mesecons_piston_back.png", "mesecons_piston_pusher_front.png" - }, - groups = {handy = 1, piston=1}, + }, + groups = {handy=1, piston=1}, paramtype = "light", paramtype2 = "facedir", is_ground_content = false, after_place_node = piston_orientate, mesecons_piston = pistonspec_normal, sounds = mcl_sounds.node_sound_stone_defaults(), - mesecons = {effector={ - action_on = piston_on, - rules = piston_get_rules - }}, + mesecons = { + effector = { + action_on = piston_on, + rules = piston_get_rules + }, + }, _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, on_rotate = function(pos, node, user, mode) @@ -227,8 +236,8 @@ minetest.register_node("mesecons_pistons:piston_normal_on", { "mesecons_piston_bottom.png^[transformR270", "mesecons_piston_back.png", "mesecons_piston_on_front.png" - }, - groups = {handy=1, piston=1, not_in_creative_inventory = 1}, + }, + groups = {handy=1, piston=1, not_in_creative_inventory=1}, paramtype = "light", paramtype2 = "facedir", is_ground_content = false, @@ -238,10 +247,12 @@ minetest.register_node("mesecons_pistons:piston_normal_on", { selection_box = piston_on_box, mesecons_piston = pistonspec_normal, sounds = mcl_sounds.node_sound_stone_defaults(), - mesecons = {effector={ - action_off = piston_off, - rules = piston_get_rules - }}, + mesecons = { + effector = { + action_off = piston_off, + rules = piston_get_rules + }, + }, _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, on_rotate = false, @@ -257,10 +268,10 @@ minetest.register_node("mesecons_pistons:piston_pusher_normal", { "mesecons_piston_pusher_right.png", "mesecons_piston_pusher_back.png", "mesecons_piston_pusher_front.png" - }, + }, paramtype = "light", paramtype2 = "facedir", - groups = { piston_pusher = 1 }, + groups = {piston_pusher=1}, is_ground_content = false, after_destruct = piston_remove_base, diggable = false, @@ -299,7 +310,7 @@ minetest.register_node("mesecons_pistons:piston_sticky_off", { "mesecons_piston_bottom.png^[transformR270", "mesecons_piston_back.png", "mesecons_piston_pusher_front_sticky.png" - }, + }, groups = {handy=1, piston=2}, paramtype = "light", paramtype2 = "facedir", @@ -307,10 +318,12 @@ minetest.register_node("mesecons_pistons:piston_sticky_off", { after_place_node = piston_orientate, mesecons_piston = pistonspec_sticky, sounds = mcl_sounds.node_sound_stone_defaults(), - mesecons = {effector={ - action_on = piston_on, - rules = piston_get_rules - }}, + mesecons = { + effector = { + action_on = piston_on, + rules = piston_get_rules + }, + }, _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, on_rotate = function(pos, node, user, mode) @@ -331,8 +344,8 @@ minetest.register_node("mesecons_pistons:piston_sticky_on", { "mesecons_piston_bottom.png^[transformR270", "mesecons_piston_back.png", "mesecons_piston_on_front.png" - }, - groups = {handy=1, piston=2, not_in_creative_inventory = 1}, + }, + groups = {handy=1, piston=2, not_in_creative_inventory=1}, paramtype = "light", paramtype2 = "facedir", is_ground_content = false, @@ -342,10 +355,12 @@ minetest.register_node("mesecons_pistons:piston_sticky_on", { selection_box = piston_on_box, mesecons_piston = pistonspec_sticky, sounds = mcl_sounds.node_sound_stone_defaults(), - mesecons = {effector={ - action_off = piston_off, - rules = piston_get_rules - }}, + mesecons = { + effector = { + action_off = piston_off, + rules = piston_get_rules + }, + }, _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, on_rotate = false, @@ -361,10 +376,10 @@ minetest.register_node("mesecons_pistons:piston_pusher_sticky", { "mesecons_piston_pusher_right.png", "mesecons_piston_pusher_back.png", "mesecons_piston_pusher_front_sticky.png" - }, + }, paramtype = "light", paramtype2 = "facedir", - groups = { piston_pusher = 2 }, + groups = {piston_pusher=2}, is_ground_content = false, after_destruct = piston_remove_base, diggable = false, @@ -388,14 +403,14 @@ local piston_up_pusher_box = { fixed = { {-2/16, -.5 - pt, -2/16, 2/16, .5 - pt, 2/16}, {-.5 , .5 - pt, -.5 , .5 , .5 , .5}, - } + }, } local piston_up_on_box = { type = "fixed", fixed = { {-.5, -.5, -.5 , .5, .5-pt, .5} - } + }, } -- Normal @@ -404,7 +419,7 @@ local pistonspec_normal_up = { offname = "mesecons_pistons:piston_up_normal_off", onname = "mesecons_pistons:piston_up_normal_on", dir = {x = 0, y = 1, z = 0}, - pusher = "mesecons_pistons:piston_up_pusher_normal" + pusher = "mesecons_pistons:piston_up_pusher_normal", } -- offstate @@ -416,17 +431,19 @@ minetest.register_node("mesecons_pistons:piston_up_normal_off", { "mesecons_piston_bottom.png", "mesecons_piston_bottom.png", "mesecons_piston_bottom.png", - }, - groups = {handy=1, piston=1, not_in_creative_inventory = 1}, + }, + groups = {handy=1, piston=1, not_in_creative_inventory=1}, paramtype = "light", paramtype2 = "facedir", is_ground_content = false, drop = "mesecons_pistons:piston_normal_off", mesecons_piston = pistonspec_normal_up, - mesecons = {effector={ - action_on = piston_on, - rules = piston_up_rules, - }}, + mesecons = { + effector = { + action_on = piston_on, + rules = piston_up_rules, + }, + }, sounds = mcl_sounds.node_sound_stone_defaults({ footstep = mcl_sounds.node_sound_wood_defaults().footstep }), @@ -451,8 +468,8 @@ minetest.register_node("mesecons_pistons:piston_up_normal_on", { "mesecons_piston_bottom.png", "mesecons_piston_bottom.png", "mesecons_piston_bottom.png", - }, - groups = {handy=1, piston_=1, not_in_creative_inventory = 1}, + }, + groups = {handy=1, piston_=1, not_in_creative_inventory=1}, paramtype = "light", paramtype2 = "facedir", is_ground_content = false, @@ -462,10 +479,12 @@ minetest.register_node("mesecons_pistons:piston_up_normal_on", { selection_box = piston_up_on_box, mesecons_piston = pistonspec_normal_up, sounds = mcl_sounds.node_sound_stone_defaults(), - mesecons = {effector={ - action_off = piston_off, - rules = piston_up_rules, - }}, + mesecons = { + effector = { + action_off = piston_off, + rules = piston_up_rules, + }, + }, _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, on_rotate = false, @@ -481,10 +500,10 @@ minetest.register_node("mesecons_pistons:piston_up_pusher_normal", { "mesecons_piston_pusher_right.png^[transformR90", "mesecons_piston_pusher_bottom.png", "mesecons_piston_pusher_top.png^[transformR180", - }, + }, paramtype = "light", paramtype2 = "facedir", - groups = { piston_pusher = 1 }, + groups = {piston_pusher=1}, is_ground_content = false, after_destruct = piston_remove_base, diggable = false, @@ -507,7 +526,7 @@ local pistonspec_sticky_up = { onname = "mesecons_pistons:piston_up_sticky_on", dir = {x = 0, y = 1, z = 0}, pusher = "mesecons_pistons:piston_up_pusher_sticky", - sticky = true + sticky = true, } -- offstate @@ -519,8 +538,8 @@ minetest.register_node("mesecons_pistons:piston_up_sticky_off", { "mesecons_piston_bottom.png", "mesecons_piston_bottom.png", "mesecons_piston_bottom.png", - }, - groups = {handy=1, piston=2, not_in_creative_inventory = 1}, + }, + groups = {handy=1, piston=2, not_in_creative_inventory=1}, paramtype = "light", paramtype2 = "facedir", is_ground_content = false, @@ -529,10 +548,12 @@ minetest.register_node("mesecons_pistons:piston_up_sticky_off", { sounds = mcl_sounds.node_sound_stone_defaults({ footstep = mcl_sounds.node_sound_wood_defaults().footstep }), - mesecons = {effector={ - action_on = piston_on, - rules = piston_up_rules, - }}, + mesecons = { + effector = { + action_on = piston_on, + rules = piston_up_rules, + }, + }, _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, on_rotate = function(pos, node, user, mode) @@ -554,8 +575,8 @@ minetest.register_node("mesecons_pistons:piston_up_sticky_on", { "mesecons_piston_bottom.png", "mesecons_piston_bottom.png", "mesecons_piston_bottom.png", - }, - groups = {handy=1, piston=2, not_in_creative_inventory = 1}, + }, + groups = {handy=1, piston=2, not_in_creative_inventory=1}, paramtype = "light", paramtype2 = "facedir", is_ground_content = false, @@ -565,10 +586,12 @@ minetest.register_node("mesecons_pistons:piston_up_sticky_on", { selection_box = piston_up_on_box, mesecons_piston = pistonspec_sticky_up, sounds = mcl_sounds.node_sound_stone_defaults(), - mesecons = {effector={ - action_off = piston_off, - rules = piston_up_rules, - }}, + mesecons = { + effector = { + action_off = piston_off, + rules = piston_up_rules, + }, + }, _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, on_rotate = false, @@ -584,10 +607,10 @@ minetest.register_node("mesecons_pistons:piston_up_pusher_sticky", { "mesecons_piston_pusher_right.png^[transformR90", "mesecons_piston_pusher_bottom.png", "mesecons_piston_pusher_top.png^[transformR180", - }, + }, paramtype = "light", paramtype2 = "facedir", - groups = { piston_pusher = 2 }, + groups = {piston_pusher=2}, is_ground_content = false, after_destruct = piston_remove_base, diggable = false, @@ -611,14 +634,14 @@ local piston_down_pusher_box = { fixed = { {-2/16, -.5 + pt, -2/16, 2/16, .5 + pt, 2/16}, {-.5 , -.5 , -.5 , .5 , -.5 + pt, .5}, - } + }, } local piston_down_on_box = { type = "fixed", fixed = { {-.5, -.5+pt, -.5 , .5, .5, .5} - } + }, } @@ -641,18 +664,20 @@ minetest.register_node("mesecons_pistons:piston_down_normal_off", { "mesecons_piston_bottom.png^[transformR180", "mesecons_piston_bottom.png^[transformR180", "mesecons_piston_bottom.png^[transformR180", - }, - groups = {handy=1, piston=1, not_in_creative_inventory = 1}, + }, + groups = {handy=1, piston=1, not_in_creative_inventory=1}, paramtype = "light", paramtype2 = "facedir", is_ground_content = false, drop = "mesecons_pistons:piston_normal_off", mesecons_piston = pistonspec_normal_down, sounds = mcl_sounds.node_sound_stone_defaults(), - mesecons = {effector={ - action_on = piston_on, - rules = piston_down_rules, - }}, + mesecons = { + effector = { + action_on = piston_on, + rules = piston_down_rules, + }, + }, _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, on_rotate = function(pos, node, user, mode) @@ -674,8 +699,8 @@ minetest.register_node("mesecons_pistons:piston_down_normal_on", { "mesecons_piston_bottom.png^[transformR180", "mesecons_piston_bottom.png^[transformR180", "mesecons_piston_bottom.png^[transformR180", - }, - groups = {handy=1, piston=1, not_in_creative_inventory = 1}, + }, + groups = {handy=1, piston=1, not_in_creative_inventory=1}, paramtype = "light", paramtype2 = "facedir", is_ground_content = false, @@ -685,10 +710,12 @@ minetest.register_node("mesecons_pistons:piston_down_normal_on", { selection_box = piston_down_on_box, mesecons_piston = pistonspec_normal_down, sounds = mcl_sounds.node_sound_stone_defaults(), - mesecons = {effector={ - action_off = piston_off, - rules = piston_down_rules, - }}, + mesecons = { + effector = { + action_off = piston_off, + rules = piston_down_rules, + }, + }, _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, on_rotate = false, @@ -704,10 +731,10 @@ minetest.register_node("mesecons_pistons:piston_down_pusher_normal", { "mesecons_piston_pusher_right.png^[transformR270", "mesecons_piston_pusher_bottom.png^[transformR180", "mesecons_piston_pusher_top.png", - }, + }, paramtype = "light", paramtype2 = "facedir", - groups = { piston_pusher = 1 }, + groups = {piston_pusher=1}, is_ground_content = false, after_destruct = piston_remove_base, diggable = false, @@ -727,7 +754,7 @@ local pistonspec_sticky_down = { offname = "mesecons_pistons:piston_down_sticky_off", dir = {x = 0, y = -1, z = 0}, pusher = "mesecons_pistons:piston_down_pusher_sticky", - sticky = true + sticky = true, } -- offstate @@ -739,7 +766,7 @@ minetest.register_node("mesecons_pistons:piston_down_sticky_off", { "mesecons_piston_bottom.png^[transformR180", "mesecons_piston_bottom.png^[transformR180", "mesecons_piston_bottom.png^[transformR180", - }, + }, groups = {handy=1, piston=2, not_in_creative_inventory = 1}, paramtype = "light", paramtype2 = "facedir", @@ -747,10 +774,12 @@ minetest.register_node("mesecons_pistons:piston_down_sticky_off", { drop = "mesecons_pistons:piston_sticky_off", mesecons_piston = pistonspec_sticky_down, sounds = mcl_sounds.node_sound_stone_defaults(), - mesecons = {effector={ - action_on = piston_on, - rules = piston_down_rules, - }}, + mesecons = { + effector = { + action_on = piston_on, + rules = piston_down_rules, + }, + }, _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, on_rotate = function(pos, node, user, mode) @@ -772,8 +801,8 @@ minetest.register_node("mesecons_pistons:piston_down_sticky_on", { "mesecons_piston_bottom.png^[transformR180", "mesecons_piston_bottom.png^[transformR180", "mesecons_piston_bottom.png^[transformR180", - }, - groups = {handy=1, piston=1, not_in_creative_inventory = 1}, + }, + groups = {handy=1, piston=1, not_in_creative_inventory=1}, paramtype = "light", paramtype2 = "facedir", is_ground_content = false, @@ -783,10 +812,12 @@ minetest.register_node("mesecons_pistons:piston_down_sticky_on", { selection_box = piston_down_on_box, mesecons_piston = pistonspec_sticky_down, sounds = mcl_sounds.node_sound_stone_defaults(), - mesecons = {effector={ - action_off = piston_off, - rules = piston_down_rules, - }}, + mesecons = { + effector = { + action_off = piston_off, + rules = piston_down_rules, + }, + }, _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, on_rotate = false, @@ -802,10 +833,10 @@ minetest.register_node("mesecons_pistons:piston_down_pusher_sticky", { "mesecons_piston_pusher_right.png^[transformR270", "mesecons_piston_pusher_bottom.png^[transformR180", "mesecons_piston_pusher_top.png", - }, + }, paramtype = "light", paramtype2 = "facedir", - groups = { piston_pusher = 2 }, + groups = {piston_pusher=2}, is_ground_content = false, after_destruct = piston_remove_base, diggable = false, @@ -839,7 +870,7 @@ minetest.register_craft({ {"group:wood", "group:wood", "group:wood"}, {"mcl_core:cobble", "mcl_core:iron_ingot", "mcl_core:cobble"}, {"mcl_core:cobble", "mesecons:redstone", "mcl_core:cobble"}, - } + }, }) minetest.register_craft({ @@ -847,7 +878,7 @@ minetest.register_craft({ recipe = { {"mcl_mobitems:slimeball"}, {"mesecons_pistons:piston_normal_off"}, - } + }, }) -- Add entry aliases for the Help From 21fdf492e26a2ad35261c89f4c07478d279eb3d2 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 11:20:21 +0200 Subject: [PATCH 146/418] [mcl_anvils] fix warnings --- mods/ITEMS/mcl_anvils/init.lua | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/mods/ITEMS/mcl_anvils/init.lua b/mods/ITEMS/mcl_anvils/init.lua index c3c238e7f..09f4d954c 100644 --- a/mods/ITEMS/mcl_anvils/init.lua +++ b/mods/ITEMS/mcl_anvils/init.lua @@ -41,7 +41,7 @@ end -- needs to be used up to repair the tool. local function get_consumed_materials(tool, material) local wear = tool:get_wear() - local health = (MAX_WEAR - wear) + --local health = (MAX_WEAR - wear) local matsize = material:get_count() local materials_used = 0 for m=1, math.min(4, matsize) do @@ -74,10 +74,9 @@ end local function update_anvil_slots(meta) local inv = meta:get_inventory() local new_name = meta:get_string("set_name") - local input1, input2, output - input1 = inv:get_stack("input", 1) - input2 = inv:get_stack("input", 2) - output = inv:get_stack("output", 1) + local input1 = inv:get_stack("input", 1) + local input2 = inv:get_stack("input", 2) + --local output = inv:get_stack("output", 1) local new_output, name_item local just_rename = false @@ -243,7 +242,6 @@ end -- Returns true if anvil was destroyed. local function damage_anvil(pos) local node = minetest.get_node(pos) - local new if node.name == "mcl_anvils:anvil" then minetest.swap_node(pos, {name="mcl_anvils:anvil_damage_1", param2=node.param2}) damage_particles(pos, node) @@ -278,7 +276,6 @@ local function damage_anvil_by_using(pos) end local function damage_anvil_by_falling(pos, distance) - local chance local r = math.random(1, 100) if distance > 1 then if r <= (5*distance) then From 43f418c6c0ac2d3b2298ff496d005733652d7d5d Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 11:22:45 +0200 Subject: [PATCH 147/418] [mesecons_wire] fix warnings --- mods/ITEMS/REDSTONE/mesecons_wires/init.lua | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_wires/init.lua b/mods/ITEMS/REDSTONE/mesecons_wires/init.lua index e0c5ac531..3d00e5f20 100644 --- a/mods/ITEMS/REDSTONE/mesecons_wires/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_wires/init.lua @@ -33,7 +33,7 @@ local wire_getconnect = function (from_pos, self_pos) if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].mesecons then -- rules of node to possibly connect to - local rules = {} + local rules if (minetest.registered_nodes[node.name].mesecon_wire) then rules = wire_rules else @@ -214,8 +214,7 @@ local function register_wires() local dot_off = "redstone_redstone_dust_dot.png^[colorize:#FF0000:"..ratio_off local dot_on = "redstone_redstone_dust_dot.png^[colorize:#FF0000:"..ratio_on - local tiles_off = { crossing_off, crossing_off, straight0_off, straight1_off, straight0_off, straight1_off } - local tiles_on = { crossing_on, crossing_on, straight0_on, straight1_on, straight0_on, straight1_on } + local tiles_off, tiles_on local wirehelp, tt, longdesc, usagehelp, img, desc_off, desc_on if nodeid == "00000000" then @@ -238,8 +237,8 @@ S("Read the help entries on the other redstone components to learn how redstone else -- Connected redstone wire table.insert(nodebox, box_center) - tiles_off = { crossing_off, crossing_off, straight0_off, straight1_off, straight0_off, straight1_off, } - tiles_on = { crossing_on, crossing_on, straight0_on, straight1_on, straight0_on, straight1_on, } + tiles_off = { crossing_off, crossing_off, straight0_off, straight1_off, straight0_off, straight1_off } + tiles_on = { crossing_on, crossing_on, straight0_on, straight1_on, straight0_on, straight1_on } wirehelp = false desc_off = S("Redstone Trail (@1)", nodeid) desc_on = S("Powered Redstone Trail (@1)", nodeid) From dc10448c6e35235e339725bf956d57595a907039 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 11:25:22 +0200 Subject: [PATCH 148/418] [mesecons_mvps] fix warnings --- mods/ITEMS/REDSTONE/mesecons_mvps/init.lua | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_mvps/init.lua b/mods/ITEMS/REDSTONE/mesecons_mvps/init.lua index 8cd5ae872..fedb8fa5d 100644 --- a/mods/ITEMS/REDSTONE/mesecons_mvps/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_mvps/init.lua @@ -1,3 +1,5 @@ +local table = table + --register stoppers for movestones/pistons mesecon.mvps_stoppers = {} @@ -6,8 +8,6 @@ mesecon.mvps_droppers = {} mesecon.on_mvps_move = {} mesecon.mvps_unmov = {} -local is_protected = minetest.is_protected - --- Objects (entities) that cannot be moved function mesecon.register_mvps_unmov(objectname) mesecon.mvps_unmov[objectname] = true; @@ -151,6 +151,7 @@ function mesecon.mvps_get_stack(pos, dir, maximum, piston_pos) -- add connected nodes to frontiers, connected is a vector list -- the vectors must be absolute positions local connected = {} + local has_loop if minetest.registered_nodes[nn.name] and minetest.registered_nodes[nn.name].mvps_sticky then connected, has_loop = minetest.registered_nodes[nn.name].mvps_sticky(np, nn, piston_pos) @@ -258,7 +259,7 @@ function mesecon.mvps_push_or_pull(pos, stackdir, movedir, maximum, player_name, n.meta = minetest.get_meta(n.pos):to_table() local is_dropper = mesecon.is_mvps_dropper(n.node, movedir, nodes, id) if is_dropper then - local drops = minetest.get_node_drops(n.node.name, "") + --local drops = minetest.get_node_drops(n.node.name, "") minetest.dig_node(n.pos) else minetest.remove_node(n.pos) From e6f72e0c60967a152d0485f46fe161b526487af0 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 11:29:32 +0200 Subject: [PATCH 149/418] [mesecons_delayer] fix warnings --- mods/ITEMS/REDSTONE/mesecons_delayer/init.lua | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua b/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua index caf5e9652..7fba42179 100644 --- a/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua @@ -145,8 +145,8 @@ end -- Register the 2 (states) x 4 (delay times) delayers for i = 1, 4 do -local groups = {} -if i == 1 then +local groups +if i == 1 then groups = {dig_immediate=3,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,attached_node=1,redstone_repeater=i} else groups = {dig_immediate=3,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,attached_node=1,redstone_repeater=i,not_in_creative_inventory=1} @@ -156,29 +156,29 @@ local delaytime = DELAYS[i] local boxes if i == 1 then -boxes = { - { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 }, -- the main slab - { -1/16, -6/16, 6/16, 1/16, -1/16, 4/16}, -- still torch - { -1/16, -6/16, 0/16, 1/16, -1/16, 2/16}, -- moved torch -} + boxes = { + { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 }, -- the main slab + { -1/16, -6/16, 6/16, 1/16, -1/16, 4/16}, -- still torch + { -1/16, -6/16, 0/16, 1/16, -1/16, 2/16}, -- moved torch + } elseif i == 2 then -boxes = { - { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 }, -- the main slab - { -1/16, -6/16, 6/16, 1/16, -1/16, 4/16}, -- still torch - { -1/16, -6/16, -2/16, 1/16, -1/16, 0/16}, -- moved torch -} + boxes = { + { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 }, -- the main slab + { -1/16, -6/16, 6/16, 1/16, -1/16, 4/16}, -- still torch + { -1/16, -6/16, -2/16, 1/16, -1/16, 0/16}, -- moved torch + } elseif i == 3 then -boxes = { - { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 }, -- the main slab - { -1/16, -6/16, 6/16, 1/16, -1/16, 4/16}, -- still torch - { -1/16, -6/16, -4/16, 1/16, -1/16, -2/16}, -- moved torch -} + boxes = { + { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 }, -- the main slab + { -1/16, -6/16, 6/16, 1/16, -1/16, 4/16}, -- still torch + { -1/16, -6/16, -4/16, 1/16, -1/16, -2/16}, -- moved torch + } elseif i == 4 then -boxes = { - { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 }, -- the main slab - { -1/16, -6/16, 6/16, 1/16, -1/16, 4/16}, -- still torch - { -1/16, -6/16, -6/16, 1/16, -1/16, -4/16}, -- moved torch -} + boxes = { + { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 }, -- the main slab + { -1/16, -6/16, 6/16, 1/16, -1/16, 4/16}, -- still torch + { -1/16, -6/16, -6/16, 1/16, -1/16, -4/16}, -- moved torch + } end local help, tt, longdesc, usagehelp, icon, on_construct @@ -248,7 +248,7 @@ minetest.register_node("mesecons_delayer:delayer_off_"..tostring(i), { "mesecons_delayer_ends_off.png", }, use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false, - wield_image = "mesecons_delayer_off.png", + --wield_image = "mesecons_delayer_off.png", walkable = true, selection_box = { type = "fixed", From 4fd0ea8a880980349acb9e09ebe625a3842ade0c Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 11:36:30 +0200 Subject: [PATCH 150/418] [mesecons_delayer] fix code style issues --- mods/ITEMS/REDSTONE/mesecons_delayer/init.lua | 444 +++++++++--------- 1 file changed, 218 insertions(+), 226 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua b/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua index 7fba42179..0a330ef2c 100644 --- a/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua @@ -4,7 +4,7 @@ local DELAYS = { 0.1, 0.2, 0.3, 0.4 } local DEFAULT_DELAY = DELAYS[1] -- Function that get the input/output rules of the delayer -local delayer_get_output_rules = function(node) +local function delayer_get_output_rules(node) local rules = {{x = -1, y = 0, z = 0, spread=true}} for i = 0, node.param2 do rules = mesecon.rotate_rules_left(rules) @@ -12,7 +12,7 @@ local delayer_get_output_rules = function(node) return rules end -local delayer_get_input_rules = function(node) +local function delayer_get_input_rules(node) local rules = {{x = 1, y = 0, z = 0}} for i = 0, node.param2 do rules = mesecon.rotate_rules_left(rules) @@ -22,7 +22,7 @@ end -- Return the sides of a delayer. -- Those are used to toggle the lock state. -local delayer_get_sides = function(node) +local function delayer_get_sides(node) local rules = { {x = 0, y = 0, z = -1}, {x = 0, y = 0, z = 1}, @@ -35,7 +35,7 @@ end -- Make the repeater at pos try to lock any repeater it faces. -- Returns true if a repeater was locked. -local check_lock_repeater = function(pos, node) +local function check_lock_repeater(pos, node) -- Check the repeater at pos and look if it faces -- a repeater placed sideways. -- If yes, lock the second repeater. @@ -67,7 +67,7 @@ end -- Make the repeater at pos try to unlock any repeater it faces. -- Returns true if a repeater was unlocked. -local check_unlock_repeater = function(pos, node) +local function check_unlock_repeater(pos, node) -- Check the repeater at pos and look if it faces -- a repeater placed sideways. -- If yes, also check if the second repeater doesn't receive @@ -119,21 +119,19 @@ local check_unlock_repeater = function(pos, node) end -- Functions that are called after the delay time -local delayer_activate = function(pos, node) +local function delayer_activate(pos, node) local def = minetest.registered_nodes[node.name] local time = def.delayer_time minetest.set_node(pos, {name=def.delayer_onstate, param2=node.param2}) mesecon.queue:add_action(pos, "receptor_on", {delayer_get_output_rules(node)}, time, nil) - check_lock_repeater(pos, node) end -local delayer_deactivate = function(pos, node) +local function delayer_deactivate(pos, node) local def = minetest.registered_nodes[node.name] local time = def.delayer_time minetest.set_node(pos, {name=def.delayer_offstate, param2=node.param2}) mesecon.queue:add_action(pos, "receptor_off", {delayer_get_output_rules(node)}, time, nil) - check_unlock_repeater(pos, node) end @@ -145,236 +143,230 @@ end -- Register the 2 (states) x 4 (delay times) delayers for i = 1, 4 do -local groups -if i == 1 then - groups = {dig_immediate=3,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,attached_node=1,redstone_repeater=i} -else - groups = {dig_immediate=3,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,attached_node=1,redstone_repeater=i,not_in_creative_inventory=1} -end + local groups + if i == 1 then + groups = {dig_immediate=3,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,attached_node=1,redstone_repeater=i} + else + groups = {dig_immediate=3,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,attached_node=1,redstone_repeater=i,not_in_creative_inventory=1} + end -local delaytime = DELAYS[i] + local delaytime = DELAYS[i] -local boxes -if i == 1 then - boxes = { - { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 }, -- the main slab - { -1/16, -6/16, 6/16, 1/16, -1/16, 4/16}, -- still torch - { -1/16, -6/16, 0/16, 1/16, -1/16, 2/16}, -- moved torch - } -elseif i == 2 then - boxes = { - { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 }, -- the main slab - { -1/16, -6/16, 6/16, 1/16, -1/16, 4/16}, -- still torch - { -1/16, -6/16, -2/16, 1/16, -1/16, 0/16}, -- moved torch - } -elseif i == 3 then - boxes = { - { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 }, -- the main slab - { -1/16, -6/16, 6/16, 1/16, -1/16, 4/16}, -- still torch - { -1/16, -6/16, -4/16, 1/16, -1/16, -2/16}, -- moved torch - } -elseif i == 4 then - boxes = { - { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 }, -- the main slab - { -1/16, -6/16, 6/16, 1/16, -1/16, 4/16}, -- still torch - { -1/16, -6/16, -6/16, 1/16, -1/16, -4/16}, -- moved torch - } -end + local boxes + if i == 1 then + boxes = { + { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 }, -- the main slab + { -1/16, -6/16, 6/16, 1/16, -1/16, 4/16}, -- still torch + { -1/16, -6/16, 0/16, 1/16, -1/16, 2/16}, -- moved torch + } + elseif i == 2 then + boxes = { + { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 }, -- the main slab + { -1/16, -6/16, 6/16, 1/16, -1/16, 4/16}, -- still torch + { -1/16, -6/16, -2/16, 1/16, -1/16, 0/16}, -- moved torch + } + elseif i == 3 then + boxes = { + { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 }, -- the main slab + { -1/16, -6/16, 6/16, 1/16, -1/16, 4/16}, -- still torch + { -1/16, -6/16, -4/16, 1/16, -1/16, -2/16}, -- moved torch + } + elseif i == 4 then + boxes = { + { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 }, -- the main slab + { -1/16, -6/16, 6/16, 1/16, -1/16, 4/16}, -- still torch + { -1/16, -6/16, -6/16, 1/16, -1/16, -4/16}, -- moved torch + } + end -local help, tt, longdesc, usagehelp, icon, on_construct -if i == 1 then - help = true - tt = S("Transmits redstone power only in one direction").."\n".. - S("Delays signal").."\n".. - S("Output locks when getting active redstone repeater signal from the side") - longdesc = S("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.") - usagehelp = S("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.").."\n".. - S("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.") - icon = "mesecons_delayer_item.png" - - -- Check sides of constructed repeater and lock it, if required - on_construct = function(pos) - local node = minetest.get_node(pos) - local sides = delayer_get_sides(node) - for s=1, #sides do - local spos = vector.add(pos, sides[s]) - local snode = minetest.get_node(spos) - -- Is there a powered repeater at one of our sides? - local g = minetest.get_item_group(snode.name, "redstone_repeater") - if g ~= 0 and mesecon.is_receptor_on(snode.name) then - -- The other repeater must also face towards the constructed node - local sface = delayer_get_output_rules(snode)[1] - local sface_pos = vector.add(spos, sface) - if vector.equals(sface_pos, pos) then - -- Repeater is facing towards us! Now we just need to lock the costructed node - if mesecon.is_powered(pos, delayer_get_input_rules(node)[1]) ~= false then - local newnode = {name="mesecons_delayer:delayer_on_locked", param2 = node.param2} - minetest.set_node(pos, newnode) - mesecon.queue:add_action(pos, "receptor_on", {delayer_get_output_rules(newnode)}, DEFAULT_DELAY, nil) - else - minetest.set_node(pos, {name="mesecons_delayer:delayer_off_locked", param2 = node.param2}) + local help, tt, longdesc, usagehelp, icon, on_construct + if i == 1 then + help = true + tt = S("Transmits redstone power only in one direction").."\n".. + S("Delays signal").."\n".. + S("Output locks when getting active redstone repeater signal from the side") + longdesc = S("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.") + usagehelp = S("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.").."\n".. + S("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.") + icon = "mesecons_delayer_item.png" + -- Check sides of constructed repeater and lock it, if required + on_construct = function(pos) + local node = minetest.get_node(pos) + local sides = delayer_get_sides(node) + for s=1, #sides do + local spos = vector.add(pos, sides[s]) + local snode = minetest.get_node(spos) + -- Is there a powered repeater at one of our sides? + local g = minetest.get_item_group(snode.name, "redstone_repeater") + if g ~= 0 and mesecon.is_receptor_on(snode.name) then + -- The other repeater must also face towards the constructed node + local sface = delayer_get_output_rules(snode)[1] + local sface_pos = vector.add(spos, sface) + if vector.equals(sface_pos, pos) then + -- Repeater is facing towards us! Now we just need to lock the costructed node + if mesecon.is_powered(pos, delayer_get_input_rules(node)[1]) ~= false then + local newnode = {name="mesecons_delayer:delayer_on_locked", param2 = node.param2} + minetest.set_node(pos, newnode) + mesecon.queue:add_action(pos, "receptor_on", {delayer_get_output_rules(newnode)}, DEFAULT_DELAY, nil) + else + minetest.set_node(pos, {name="mesecons_delayer:delayer_off_locked", param2 = node.param2}) + end + break end - break end end end + else + help = false end -else - help = false -end -local desc_off -if i == 1 then - desc_off = S("Redstone Repeater") -else - desc_off = S("Redstone Repeater (Delay @1)", i) -end + local desc_off + if i == 1 then + desc_off = S("Redstone Repeater") + else + desc_off = S("Redstone Repeater (Delay @1)", i) + end -minetest.register_node("mesecons_delayer:delayer_off_"..tostring(i), { - description = desc_off, - inventory_image = icon, - wield_image = icon, - _tt_help = tt, - _doc_items_create_entry = help, - _doc_items_longdesc = longdesc, - _doc_items_usagehelp = usagehelp, - drawtype = "nodebox", - tiles = { - "mesecons_delayer_off.png", - "mcl_stairs_stone_slab_top.png", - "mesecons_delayer_sides_off.png", - "mesecons_delayer_sides_off.png", - "mesecons_delayer_ends_off.png", - "mesecons_delayer_ends_off.png", - }, - use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false, - --wield_image = "mesecons_delayer_off.png", - walkable = true, - selection_box = { - type = "fixed", - fixed = { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 }, - }, - collision_box = { - type = "fixed", - fixed = { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 }, - }, - node_box = { - type = "fixed", - fixed = boxes - }, - groups = groups, - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = false, - is_ground_content = false, - drop = 'mesecons_delayer:delayer_off_1', - on_rightclick = function (pos, node, clicker) - local protname = clicker:get_player_name() - if minetest.is_protected(pos, protname) then - minetest.record_protection_violation(pos, protname) - return - end - if node.name=="mesecons_delayer:delayer_off_1" then - minetest.set_node(pos, {name="mesecons_delayer:delayer_off_2", param2=node.param2}) - elseif node.name=="mesecons_delayer:delayer_off_2" then - minetest.set_node(pos, {name="mesecons_delayer:delayer_off_3", param2=node.param2}) - elseif node.name=="mesecons_delayer:delayer_off_3" then - minetest.set_node(pos, {name="mesecons_delayer:delayer_off_4", param2=node.param2}) - elseif node.name=="mesecons_delayer:delayer_off_4" then - minetest.set_node(pos, {name="mesecons_delayer:delayer_off_1", param2=node.param2}) - end - end, - on_construct = on_construct, - delayer_time = delaytime, - delayer_onstate = "mesecons_delayer:delayer_on_"..tostring(i), - delayer_lockstate = "mesecons_delayer:delayer_off_locked", - sounds = mcl_sounds.node_sound_stone_defaults(), - mesecons = { - receptor = - { - state = mesecon.state.off, - rules = delayer_get_output_rules + minetest.register_node("mesecons_delayer:delayer_off_"..tostring(i), { + description = desc_off, + inventory_image = icon, + wield_image = icon, + _tt_help = tt, + _doc_items_create_entry = help, + _doc_items_longdesc = longdesc, + _doc_items_usagehelp = usagehelp, + drawtype = "nodebox", + tiles = { + "mesecons_delayer_off.png", + "mcl_stairs_stone_slab_top.png", + "mesecons_delayer_sides_off.png", + "mesecons_delayer_sides_off.png", + "mesecons_delayer_ends_off.png", + "mesecons_delayer_ends_off.png", }, - effector = - { - rules = delayer_get_input_rules, - action_on = delayer_activate - } - }, - on_rotate = on_rotate, -}) - - -minetest.register_node("mesecons_delayer:delayer_on_"..tostring(i), { - description = S("Redstone Repeater (Delay @1, Powered)", i), - _doc_items_create_entry = false, - drawtype = "nodebox", - tiles = { - "mesecons_delayer_on.png", - "mcl_stairs_stone_slab_top.png", - "mesecons_delayer_sides_on.png", - "mesecons_delayer_sides_on.png", - "mesecons_delayer_ends_on.png", - "mesecons_delayer_ends_on.png", - }, - use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false, - walkable = true, - selection_box = { - type = "fixed", - fixed = { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 }, - }, - collision_box = { - type = "fixed", - fixed = { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 }, - }, - node_box = { - type = "fixed", - fixed = boxes - }, - groups = {dig_immediate = 3, dig_by_water=1,destroy_by_lava_flow=1, dig_by_piston=1, attached_node=1, redstone_repeater=i, not_in_creative_inventory = 1}, - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = false, - is_ground_content = false, - drop = 'mesecons_delayer:delayer_off_1', - on_rightclick = function (pos, node, clicker) - local protname = clicker:get_player_name() - if minetest.is_protected(pos, protname) then - minetest.record_protection_violation(pos, protname) - return - end - if node.name=="mesecons_delayer:delayer_on_1" then - minetest.set_node(pos, {name="mesecons_delayer:delayer_on_2",param2=node.param2}) - elseif node.name=="mesecons_delayer:delayer_on_2" then - minetest.set_node(pos, {name="mesecons_delayer:delayer_on_3",param2=node.param2}) - elseif node.name=="mesecons_delayer:delayer_on_3" then - minetest.set_node(pos, {name="mesecons_delayer:delayer_on_4",param2=node.param2}) - elseif node.name=="mesecons_delayer:delayer_on_4" then - minetest.set_node(pos, {name="mesecons_delayer:delayer_on_1",param2=node.param2}) - end - end, - after_dig_node = function(pos, oldnode) - check_unlock_repeater(pos, oldnode) - end, - delayer_time = delaytime, - delayer_offstate = "mesecons_delayer:delayer_off_"..tostring(i), - delayer_lockstate = "mesecons_delayer:delayer_on_locked", - sounds = mcl_sounds.node_sound_stone_defaults(), - mesecons = { - receptor = - { - state = mesecon.state.on, - rules = delayer_get_output_rules + use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false, + --wield_image = "mesecons_delayer_off.png", + walkable = true, + selection_box = { + type = "fixed", + fixed = { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 }, }, - effector = - { - rules = delayer_get_input_rules, - action_off = delayer_deactivate - } - }, - on_rotate = on_rotate, -}) + collision_box = { + type = "fixed", + fixed = { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 }, + }, + node_box = { + type = "fixed", + fixed = boxes + }, + groups = groups, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = false, + is_ground_content = false, + drop = 'mesecons_delayer:delayer_off_1', + on_rightclick = function (pos, node, clicker) + local protname = clicker:get_player_name() + if minetest.is_protected(pos, protname) then + minetest.record_protection_violation(pos, protname) + return + end + if node.name=="mesecons_delayer:delayer_off_1" then + minetest.set_node(pos, {name="mesecons_delayer:delayer_off_2", param2=node.param2}) + elseif node.name=="mesecons_delayer:delayer_off_2" then + minetest.set_node(pos, {name="mesecons_delayer:delayer_off_3", param2=node.param2}) + elseif node.name=="mesecons_delayer:delayer_off_3" then + minetest.set_node(pos, {name="mesecons_delayer:delayer_off_4", param2=node.param2}) + elseif node.name=="mesecons_delayer:delayer_off_4" then + minetest.set_node(pos, {name="mesecons_delayer:delayer_off_1", param2=node.param2}) + end + end, + on_construct = on_construct, + delayer_time = delaytime, + delayer_onstate = "mesecons_delayer:delayer_on_"..tostring(i), + delayer_lockstate = "mesecons_delayer:delayer_off_locked", + sounds = mcl_sounds.node_sound_stone_defaults(), + mesecons = { + receptor = { + state = mesecon.state.off, + rules = delayer_get_output_rules, + }, + effector = { + rules = delayer_get_input_rules, + action_on = delayer_activate, + }, + }, + on_rotate = on_rotate, + }) + minetest.register_node("mesecons_delayer:delayer_on_"..tostring(i), { + description = S("Redstone Repeater (Delay @1, Powered)", i), + _doc_items_create_entry = false, + drawtype = "nodebox", + tiles = { + "mesecons_delayer_on.png", + "mcl_stairs_stone_slab_top.png", + "mesecons_delayer_sides_on.png", + "mesecons_delayer_sides_on.png", + "mesecons_delayer_ends_on.png", + "mesecons_delayer_ends_on.png", + }, + use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false, + walkable = true, + selection_box = { + type = "fixed", + fixed = { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 }, + }, + collision_box = { + type = "fixed", + fixed = { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 }, + }, + node_box = { + type = "fixed", + fixed = boxes + }, + groups = {dig_immediate = 3, dig_by_water=1,destroy_by_lava_flow=1, dig_by_piston=1, attached_node=1, redstone_repeater=i, not_in_creative_inventory = 1}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = false, + is_ground_content = false, + drop = 'mesecons_delayer:delayer_off_1', + on_rightclick = function (pos, node, clicker) + local protname = clicker:get_player_name() + if minetest.is_protected(pos, protname) then + minetest.record_protection_violation(pos, protname) + return + end + --HACK! we already know the node name, so we should generate the function to avoid multiple checks + if node.name=="mesecons_delayer:delayer_on_1" then + minetest.set_node(pos, {name="mesecons_delayer:delayer_on_2",param2=node.param2}) + elseif node.name=="mesecons_delayer:delayer_on_2" then + minetest.set_node(pos, {name="mesecons_delayer:delayer_on_3",param2=node.param2}) + elseif node.name=="mesecons_delayer:delayer_on_3" then + minetest.set_node(pos, {name="mesecons_delayer:delayer_on_4",param2=node.param2}) + elseif node.name=="mesecons_delayer:delayer_on_4" then + minetest.set_node(pos, {name="mesecons_delayer:delayer_on_1",param2=node.param2}) + end + end, + after_dig_node = function(pos, oldnode) + check_unlock_repeater(pos, oldnode) + end, + delayer_time = delaytime, + delayer_offstate = "mesecons_delayer:delayer_off_"..tostring(i), + delayer_lockstate = "mesecons_delayer:delayer_on_locked", + sounds = mcl_sounds.node_sound_stone_defaults(), + mesecons = { + receptor = { + state = mesecon.state.on, + rules = delayer_get_output_rules, + }, + effector = { + rules = delayer_get_input_rules, + action_off = delayer_deactivate, + }, + }, + on_rotate = on_rotate, + }) end From ddc157acbf495de0bdbf624874a293a11b8e69f0 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 11:37:51 +0200 Subject: [PATCH 151/418] [mesecons_commandblock] fix warnings --- mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua b/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua index 1928f809c..9c0914efb 100644 --- a/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua @@ -72,7 +72,7 @@ end local function check_commands(commands, player_name) for _, command in pairs(commands:split("\n")) do local pos = command:find(" ") - local cmd, param = command, "" + local cmd = command if pos then cmd = command:sub(1, pos - 1) end @@ -103,10 +103,10 @@ local function commandblock_action_on(pos, node) if node.name ~= "mesecons_commandblock:commandblock_off" then return end - + local meta = minetest.get_meta(pos) local commander = meta:get_string("commander") - + if not command_blocks_activated then --minetest.chat_send_player(commander, msg_not_activated) return From 962ae359af048f9e23bf4e38aafd99580db59d1a Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 11:41:01 +0200 Subject: [PATCH 152/418] [mesecons] fix warnings --- mods/ITEMS/REDSTONE/mesecons/internal.lua | 12 ++++-------- mods/ITEMS/REDSTONE/mesecons/services.lua | 2 +- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mesecons/internal.lua b/mods/ITEMS/REDSTONE/mesecons/internal.lua index f4ed9df4e..a5bcb80e8 100644 --- a/mods/ITEMS/REDSTONE/mesecons/internal.lua +++ b/mods/ITEMS/REDSTONE/mesecons/internal.lua @@ -329,7 +329,7 @@ function mesecon.get_conductor_on(node_off, rulename) return conductor.states[tonumber(binstate,2)+1] end end - return offstate + return conductor.offstate end function mesecon.get_conductor_off(node_on, rulename) @@ -345,7 +345,7 @@ function mesecon.get_conductor_off(node_on, rulename) return conductor.states[tonumber(binstate,2)+1] end end - return onstate + return conductor.onstate end function mesecon.conductor_get_rules(node) @@ -391,9 +391,7 @@ function mesecon.turnon(pos, link) local f = table.remove(frontiers, 1) local node = get_node_force(f.pos) - if not node then - -- Area does not exist; do nothing - elseif mesecon.is_conductor_off(node, f.link) then + if node and mesecon.is_conductor_off(node, f.link) then local rules = mesecon.conductor_get_rules(node) -- Call turnon on neighbors @@ -453,9 +451,7 @@ function mesecon.turnoff(pos, link) local f = table.remove(frontiers, 1) local node = get_node_force(f.pos) - if not node then - -- No-op - elseif mesecon.is_conductor_on(node, f.link) then + if node and mesecon.is_conductor_on(node, f.link) then local rules = mesecon.conductor_get_rules(node) for _, r in pairs(mesecon.rule2meta(f.link, rules)) do local np = vector.add(f.pos, r) diff --git a/mods/ITEMS/REDSTONE/mesecons/services.lua b/mods/ITEMS/REDSTONE/mesecons/services.lua index 9addda8bd..1e3e6237b 100644 --- a/mods/ITEMS/REDSTONE/mesecons/services.lua +++ b/mods/ITEMS/REDSTONE/mesecons/services.lua @@ -77,7 +77,7 @@ mesecon.on_dignode = function(pos, node) mesecon.receptor_off(pos, mesecon.receptor_get_rules(node)) end if minetest.get_item_group(node.name, "opaque") == 1 then - local sources = mesecon.is_powered(pos) + --local sources = mesecon.is_powered(pos) local neighbors = mesecon.mcl_get_neighbors(pos) for n=1, #neighbors do local npos = neighbors[n].pos From b814fe47f9b5a2ca21501988b968feac01bada34 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 11:47:59 +0200 Subject: [PATCH 153/418] [mcl_observers] fix warnings --- mods/ITEMS/REDSTONE/mcl_observers/init.lua | 317 +++++++++++---------- 1 file changed, 161 insertions(+), 156 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mcl_observers/init.lua b/mods/ITEMS/REDSTONE/mcl_observers/init.lua index 932f4f643..8f7f6c262 100644 --- a/mods/ITEMS/REDSTONE/mcl_observers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_observers/init.lua @@ -11,7 +11,7 @@ local realtime = true local rules_flat = { { x = 0, y = 0, z = -1, spread = true }, } -local get_rules_flat = function(node) +local function get_rules_flat(node) local rules = rules_flat for i=1, node.param2 do rules = mesecon.rotate_rules_left(rules) @@ -46,7 +46,7 @@ end -- and update the observer state if needed. -- TODO: Also scan metadata changes. -- TODO: Ignore some node changes. -local observer_scan = function(pos, initialize) +local function observer_scan(pos, initialize) local node = minetest.get_node(pos) local front if node.name == "mcl_observers:observer_up_off" or node.name == "mcl_observers:observer_up_on" then @@ -87,14 +87,14 @@ local observer_scan = function(pos, initialize) end -- Vertical orientation (CURRENTLY DISABLED) -local observer_orientate = function(pos, placer) +local function observer_orientate(pos, placer) -- Not placed by player if not placer then return end -- Placer pitch in degrees local pitch = placer:get_look_vertical() * (180 / math.pi) - local node = minetest.get_node(pos) + --local node = minetest.get_node(pos) if pitch > 55 then -- player looking upwards -- Observer looking downwards minetest.set_node(pos, {name="mcl_observers:observer_down_off"}) @@ -104,162 +104,167 @@ local observer_orientate = function(pos, placer) end end -mesecon.register_node("mcl_observers:observer", -{ - is_ground_content = false, - sounds = mcl_sounds.node_sound_stone_defaults(), - paramtype2 = "facedir", - on_rotate = false, - _mcl_blast_resistance = 3.5, - _mcl_hardness = 3.5, -}, -{ - description = S("Observer"), - _tt_help = S("Emits redstone pulse when block in front changes"), - _doc_items_longdesc = S("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."), - _doc_items_usagehelp = S("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."), +mesecon.register_node("mcl_observers:observer", { + is_ground_content = false, + sounds = mcl_sounds.node_sound_stone_defaults(), + paramtype2 = "facedir", + on_rotate = false, + _mcl_blast_resistance = 3.5, + _mcl_hardness = 3.5, + }, { + description = S("Observer"), + _tt_help = S("Emits redstone pulse when block in front changes"), + _doc_items_longdesc = S("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."), + _doc_items_usagehelp = S("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."), - groups = {pickaxey=1, material_stone=1, not_opaque=1, }, - tiles = { - "mcl_observers_observer_top.png^[transformR180", "default_furnace_bottom.png", - "mcl_observers_observer_side.png", "mcl_observers_observer_side.png", - "mcl_observers_observer_front.png", "mcl_observers_observer_back.png", - }, - mesecons = { receptor = { - state = mesecon.state.off, - rules = get_rules_flat, - }}, - on_construct = function(pos) - if not realtime then - observer_scan(pos, true) - end - end, - after_place_node = observer_orientate, -}, -{ - _doc_items_create_entry = false, - groups = {pickaxey=1, material_stone=1, not_opaque=1, not_in_creative_inventory=1 }, - tiles = { - "mcl_observers_observer_top.png^[transformR180", "default_furnace_bottom.png", - "mcl_observers_observer_side.png", "mcl_observers_observer_side.png", - "mcl_observers_observer_front.png", "mcl_observers_observer_back_lit.png", - }, - mesecons = { receptor = { - state = mesecon.state.on, - rules = get_rules_flat, - }}, + groups = {pickaxey=1, material_stone=1, not_opaque=1, }, + tiles = { + "mcl_observers_observer_top.png^[transformR180", "default_furnace_bottom.png", + "mcl_observers_observer_side.png", "mcl_observers_observer_side.png", + "mcl_observers_observer_front.png", "mcl_observers_observer_back.png", + }, + mesecons = { + receptor = { + state = mesecon.state.off, + rules = get_rules_flat, + }, + }, + on_construct = function(pos) + if not realtime then + observer_scan(pos, true) + end + end, + after_place_node = observer_orientate, + }, { + _doc_items_create_entry = false, + groups = {pickaxey=1, material_stone=1, not_opaque=1, not_in_creative_inventory=1 }, + tiles = { + "mcl_observers_observer_top.png^[transformR180", "default_furnace_bottom.png", + "mcl_observers_observer_side.png", "mcl_observers_observer_side.png", + "mcl_observers_observer_front.png", "mcl_observers_observer_back_lit.png", + }, + mesecons = { + receptor = { + state = mesecon.state.on, + rules = get_rules_flat, + } + }, - -- VERY quickly disable observer after construction - on_construct = function(pos) - local timer = minetest.get_node_timer(pos) - timer:start(mcl_vars.redstone_tick) - end, - on_timer = function(pos, elapsed) - local node = minetest.get_node(pos) - minetest.set_node(pos, {name = "mcl_observers:observer_off", param2 = node.param2}) - mesecon.receptor_off(pos, get_rules_flat(node)) - end, -} + -- VERY quickly disable observer after construction + on_construct = function(pos) + local timer = minetest.get_node_timer(pos) + timer:start(mcl_vars.redstone_tick) + end, + on_timer = function(pos, elapsed) + local node = minetest.get_node(pos) + minetest.set_node(pos, {name = "mcl_observers:observer_off", param2 = node.param2}) + mesecon.receptor_off(pos, get_rules_flat(node)) + end, + } ) -mesecon.register_node("mcl_observers:observer_down", -{ - is_ground_content = false, - sounds = mcl_sounds.node_sound_stone_defaults(), - groups = {pickaxey=1, material_stone=1, not_opaque=1, not_in_creative_inventory=1 }, - on_rotate = false, - _mcl_blast_resistance = 3.5, - _mcl_hardness = 3.5, - drop = "mcl_observers:observer_off", -}, -{ - tiles = { - "mcl_observers_observer_back.png", "mcl_observers_observer_front.png", - "mcl_observers_observer_side.png^[transformR90", "mcl_observers_observer_side.png^[transformR90", - "mcl_observers_observer_top.png", "mcl_observers_observer_top.png", - }, - mesecons = { receptor = { - state = mesecon.state.off, - rules = rules_down, - }}, - on_construct = function(pos) - if not realtime then - observer_scan(pos, true) - end - end, -}, -{ - _doc_items_create_entry = false, - tiles = { - "mcl_observers_observer_back_lit.png", "mcl_observers_observer_front.png", - "mcl_observers_observer_side.png^[transformR90", "mcl_observers_observer_side.png^[transformR90", - "mcl_observers_observer_top.png", "mcl_observers_observer_top.png", - }, - mesecons = { receptor = { - state = mesecon.state.on, - rules = rules_down, - }}, +mesecon.register_node("mcl_observers:observer_down", { + is_ground_content = false, + sounds = mcl_sounds.node_sound_stone_defaults(), + groups = {pickaxey=1, material_stone=1, not_opaque=1, not_in_creative_inventory=1 }, + on_rotate = false, + _mcl_blast_resistance = 3.5, + _mcl_hardness = 3.5, + drop = "mcl_observers:observer_off", + }, { + tiles = { + "mcl_observers_observer_back.png", "mcl_observers_observer_front.png", + "mcl_observers_observer_side.png^[transformR90", "mcl_observers_observer_side.png^[transformR90", + "mcl_observers_observer_top.png", "mcl_observers_observer_top.png", + }, + mesecons = { + receptor = { + state = mesecon.state.off, + rules = rules_down, + }, + }, + on_construct = function(pos) + if not realtime then + observer_scan(pos, true) + end + end, + }, { + _doc_items_create_entry = false, + tiles = { + "mcl_observers_observer_back_lit.png", "mcl_observers_observer_front.png", + "mcl_observers_observer_side.png^[transformR90", "mcl_observers_observer_side.png^[transformR90", + "mcl_observers_observer_top.png", "mcl_observers_observer_top.png", + }, + mesecons = { + receptor = { + state = mesecon.state.on, + rules = rules_down, + }, + }, - -- VERY quickly disable observer after construction - on_construct = function(pos) - local timer = minetest.get_node_timer(pos) - timer:start(mcl_vars.redstone_tick) - end, - on_timer = function(pos, elapsed) - local node = minetest.get_node(pos) - minetest.set_node(pos, {name = "mcl_observers:observer_down_off", param2 = node.param2}) - mesecon.receptor_off(pos, rules_down) - end, -}) + -- VERY quickly disable observer after construction + on_construct = function(pos) + local timer = minetest.get_node_timer(pos) + timer:start(mcl_vars.redstone_tick) + end, + on_timer = function(pos, elapsed) + local node = minetest.get_node(pos) + minetest.set_node(pos, {name = "mcl_observers:observer_down_off", param2 = node.param2}) + mesecon.receptor_off(pos, rules_down) + end, + } +) -mesecon.register_node("mcl_observers:observer_up", -{ - is_ground_content = false, - sounds = mcl_sounds.node_sound_stone_defaults(), - groups = {pickaxey=1, material_stone=1, not_opaque=1, not_in_creative_inventory=1 }, - on_rotate = false, - _mcl_blast_resistance = 3.5, - _mcl_hardness = 3.5, - drop = "mcl_observers:observer_off", -}, -{ - tiles = { - "mcl_observers_observer_front.png", "mcl_observers_observer_back.png", - "mcl_observers_observer_side.png^[transformR270", "mcl_observers_observer_side.png^[transformR270", - "mcl_observers_observer_top.png^[transformR180", "mcl_observers_observer_top.png^[transformR180", - }, - mesecons = { receptor = { - state = mesecon.state.off, - rules = rules_up, - }}, - on_construct = function(pos) - if not realtime then - observer_scan(pos, true) - end - end, -}, -{ - _doc_items_create_entry = false, - tiles = { - "mcl_observers_observer_front.png", "mcl_observers_observer_back_lit.png", - "mcl_observers_observer_side.png^[transformR270", "mcl_observers_observer_side.png^[transformR270", - "mcl_observers_observer_top.png^[transformR180", "mcl_observers_observer_top.png^[transformR180", - }, - mesecons = { receptor = { - state = mesecon.state.on, - rules = rules_up, - }}, +mesecon.register_node("mcl_observers:observer_up", { + is_ground_content = false, + sounds = mcl_sounds.node_sound_stone_defaults(), + groups = {pickaxey=1, material_stone=1, not_opaque=1, not_in_creative_inventory=1 }, + on_rotate = false, + _mcl_blast_resistance = 3.5, + _mcl_hardness = 3.5, + drop = "mcl_observers:observer_off", + }, { + tiles = { + "mcl_observers_observer_front.png", "mcl_observers_observer_back.png", + "mcl_observers_observer_side.png^[transformR270", "mcl_observers_observer_side.png^[transformR270", + "mcl_observers_observer_top.png^[transformR180", "mcl_observers_observer_top.png^[transformR180", + }, + mesecons = { + receptor = { + state = mesecon.state.off, + rules = rules_up, + }, + }, + on_construct = function(pos) + if not realtime then + observer_scan(pos, true) + end + end, + }, { + _doc_items_create_entry = false, + tiles = { + "mcl_observers_observer_front.png", "mcl_observers_observer_back_lit.png", + "mcl_observers_observer_side.png^[transformR270", "mcl_observers_observer_side.png^[transformR270", + "mcl_observers_observer_top.png^[transformR180", "mcl_observers_observer_top.png^[transformR180", + }, + mesecons = { + receptor = { + state = mesecon.state.on, + rules = rules_up, + }, + }, - -- VERY quickly disable observer after construction - on_construct = function(pos) - local timer = minetest.get_node_timer(pos) - timer:start(mcl_vars.redstone_tick) - end, - on_timer = function(pos, elapsed) - minetest.set_node(pos, {name = "mcl_observers:observer_up_off"}) - mesecon.receptor_off(pos, rules_up) - end, -}) + -- VERY quickly disable observer after construction + on_construct = function(pos) + local timer = minetest.get_node_timer(pos) + timer:start(mcl_vars.redstone_tick) + end, + on_timer = function(pos, elapsed) + minetest.set_node(pos, {name = "mcl_observers:observer_up_off"}) + mesecon.receptor_off(pos, rules_up) + end, + } +) minetest.register_craft({ output = "mcl_observers:observer_off", @@ -267,7 +272,7 @@ minetest.register_craft({ { "mcl_core:cobble", "mcl_core:cobble", "mcl_core:cobble" }, { "mcl_nether:quartz", "mesecons:redstone", "mesecons:redstone" }, { "mcl_core:cobble", "mcl_core:cobble", "mcl_core:cobble" }, - } + }, }) minetest.register_craft({ output = "mcl_observers:observer_off", @@ -275,7 +280,7 @@ minetest.register_craft({ { "mcl_core:cobble", "mcl_core:cobble", "mcl_core:cobble" }, { "mesecons:redstone", "mesecons:redstone", "mcl_nether:quartz" }, { "mcl_core:cobble", "mcl_core:cobble", "mcl_core:cobble" }, - } + }, }) if realtime then @@ -454,7 +459,7 @@ minetest.register_lbm({ "mcl_observers:observer_down_on", "mcl_observers:observer_up_on", }, - run_at_every_load = true, + run_at_every_load = true, action = function(pos) minetest.after(1, mcl_observers.observer_activate, {x=pos.x, y=pos.y, z=pos.z}) end, From d43b2149e6b07883c9443d1ef26375ddd7205699 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 11:50:16 +0200 Subject: [PATCH 154/418] [mcl_dispensers] fix warnings --- mods/ITEMS/REDSTONE/mcl_dispensers/init.lua | 200 ++++++++++---------- 1 file changed, 101 insertions(+), 99 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua index 02ed70aed..73bc1f0da 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua @@ -96,125 +96,127 @@ local dispenserdef = { end, _mcl_blast_resistance = 3.5, _mcl_hardness = 3.5, - mesecons = {effector = { - -- Dispense random item when triggered - action_on = function (pos, node) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - local droppos, dropdir - if node.name == "mcl_dispensers:dispenser" then - dropdir = vector.multiply(minetest.facedir_to_dir(node.param2), -1) - droppos = vector.add(pos, dropdir) - elseif node.name == "mcl_dispensers:dispenser_up" then - dropdir = {x=0, y=1, z=0} - droppos = {x=pos.x, y=pos.y+1, z=pos.z} - elseif node.name == "mcl_dispensers:dispenser_down" then - dropdir = {x=0, y=-1, z=0} - droppos = {x=pos.x, y=pos.y-1, z=pos.z} - end - local dropnode = minetest.get_node(droppos) - local dropnodedef = minetest.registered_nodes[dropnode.name] - local stacks = {} - for i=1,inv:get_size("main") do - local stack = inv:get_stack("main", i) - if not stack:is_empty() then - table.insert(stacks, {stack = stack, stackpos = i}) + mesecons = { + effector = { + -- Dispense random item when triggered + action_on = function (pos, node) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local droppos, dropdir + if node.name == "mcl_dispensers:dispenser" then + dropdir = vector.multiply(minetest.facedir_to_dir(node.param2), -1) + droppos = vector.add(pos, dropdir) + elseif node.name == "mcl_dispensers:dispenser_up" then + dropdir = {x=0, y=1, z=0} + droppos = {x=pos.x, y=pos.y+1, z=pos.z} + elseif node.name == "mcl_dispensers:dispenser_down" then + dropdir = {x=0, y=-1, z=0} + droppos = {x=pos.x, y=pos.y-1, z=pos.z} end - end - if #stacks >= 1 then - local r = math.random(1, #stacks) - local stack = stacks[r].stack - local dropitem = ItemStack(stack) - dropitem:set_count(1) - local stack_id = stacks[r].stackpos - local stackdef = stack:get_definition() - local iname = stack:get_name() - local igroups = minetest.registered_items[iname].groups + local dropnode = minetest.get_node(droppos) + local dropnodedef = minetest.registered_nodes[dropnode.name] + local stacks = {} + for i=1,inv:get_size("main") do + local stack = inv:get_stack("main", i) + if not stack:is_empty() then + table.insert(stacks, {stack = stack, stackpos = i}) + end + end + if #stacks >= 1 then + local r = math.random(1, #stacks) + local stack = stacks[r].stack + local dropitem = ItemStack(stack) + dropitem:set_count(1) + local stack_id = stacks[r].stackpos + local stackdef = stack:get_definition() + local iname = stack:get_name() + local igroups = minetest.registered_items[iname].groups - --[===[ Dispense item ]===] + --[===[ Dispense item ]===] - -- Hardcoded dispensions -- + -- Hardcoded dispensions -- - -- Armor, mob heads and pumpkins - if igroups.armor then - local droppos_below = {x = droppos.x, y = droppos.y - 1, z = droppos.z} + -- Armor, mob heads and pumpkins + if igroups.armor then + local droppos_below = {x = droppos.x, y = droppos.y - 1, z = droppos.z} - for _, objs in ipairs({minetest.get_objects_inside_radius(droppos, 1), minetest.get_objects_inside_radius(droppos_below, 1)}) do - for _, obj in ipairs(objs) do - stack = mcl_armor.equip(stack, obj) + for _, objs in ipairs({minetest.get_objects_inside_radius(droppos, 1), minetest.get_objects_inside_radius(droppos_below, 1)}) do + for _, obj in ipairs(objs) do + stack = mcl_armor.equip(stack, obj) + if stack:is_empty() then + break + end + end if stack:is_empty() then break end end - if stack:is_empty() then - break - end - end - -- Place head or pumpkin as node, if equipping it as armor has failed - if not stack:is_empty() then - if igroups.head or iname == "mcl_farming:pumpkin_face" then - if dropnodedef.buildable_to then - minetest.set_node(droppos, {name = iname, param2 = node.param2}) - stack:take_item() + -- Place head or pumpkin as node, if equipping it as armor has failed + if not stack:is_empty() then + if igroups.head or iname == "mcl_farming:pumpkin_face" then + if dropnodedef.buildable_to then + minetest.set_node(droppos, {name = iname, param2 = node.param2}) + stack:take_item() + end end end - end - inv:set_stack("main", stack_id, stack) - -- Spawn Egg - elseif igroups.spawn_egg then - -- Spawn mob - if not dropnodedef.walkable then - pointed_thing = { above = droppos, under = { x=droppos.x, y=droppos.y-1, z=droppos.z } } - minetest.add_entity(droppos, stack:get_name()) - - stack:take_item() inv:set_stack("main", stack_id, stack) - end + -- Spawn Egg + elseif igroups.spawn_egg then + -- Spawn mob + if not dropnodedef.walkable then + --pointed_thing = { above = droppos, under = { x=droppos.x, y=droppos.y-1, z=droppos.z } } + minetest.add_entity(droppos, stack:get_name()) - -- Generalized dispension - elseif (not dropnodedef.walkable or stackdef._dispense_into_walkable) then - --[[ _on_dispense(stack, pos, droppos, dropnode, dropdir) - * stack: Itemstack which is dispense - * pos: Position of dispenser - * droppos: Position to which to dispense item - * dropnode: Node of droppos - * dropdir: Drop direction - - _dispense_into_walkable: If true, can dispense into walkable nodes - ]] - if stackdef._on_dispense then - -- Item-specific dispension (if defined) - local od_ret = stackdef._on_dispense(dropitem, pos, droppos, dropnode, dropdir) - if od_ret then - local newcount = stack:get_count() - 1 - stack:set_count(newcount) - inv:set_stack("main", stack_id, stack) - if newcount == 0 then - inv:set_stack("main", stack_id, od_ret) - elseif inv:room_for_item("main", od_ret) then - inv:add_item("main", od_ret) - else - minetest.add_item(droppos, dropitem) - end - else stack:take_item() inv:set_stack("main", stack_id, stack) end - else - -- Drop item otherwise - minetest.add_item(droppos, dropitem) - stack:take_item() - inv:set_stack("main", stack_id, stack) + + -- Generalized dispension + elseif (not dropnodedef.walkable or stackdef._dispense_into_walkable) then + --[[ _on_dispense(stack, pos, droppos, dropnode, dropdir) + * stack: Itemstack which is dispense + * pos: Position of dispenser + * droppos: Position to which to dispense item + * dropnode: Node of droppos + * dropdir: Drop direction + + _dispense_into_walkable: If true, can dispense into walkable nodes + ]] + if stackdef._on_dispense then + -- Item-specific dispension (if defined) + local od_ret = stackdef._on_dispense(dropitem, pos, droppos, dropnode, dropdir) + if od_ret then + local newcount = stack:get_count() - 1 + stack:set_count(newcount) + inv:set_stack("main", stack_id, stack) + if newcount == 0 then + inv:set_stack("main", stack_id, od_ret) + elseif inv:room_for_item("main", od_ret) then + inv:add_item("main", od_ret) + else + minetest.add_item(droppos, dropitem) + end + else + stack:take_item() + inv:set_stack("main", stack_id, stack) + end + else + -- Drop item otherwise + minetest.add_item(droppos, dropitem) + stack:take_item() + inv:set_stack("main", stack_id, stack) + end end + + end - - - end - end, - rules = mesecon.rules.alldirs, - }}, + end, + rules = mesecon.rules.alldirs, + }, + }, on_rotate = on_rotate, } From 3fbcacac3bb2270ab7db60adfc9bf393687a35fc Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 11:50:58 +0200 Subject: [PATCH 155/418] [show_wielded_item] fix warnings --- mods/HUD/show_wielded_item/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/HUD/show_wielded_item/init.lua b/mods/HUD/show_wielded_item/init.lua index bc06bee43..456dc23e0 100644 --- a/mods/HUD/show_wielded_item/init.lua +++ b/mods/HUD/show_wielded_item/init.lua @@ -11,7 +11,7 @@ local xp_mod = minetest.get_modpath("mcl_experience") local function set_hud(player) if not player:is_player() then return end - local player_name = player:get_player_name() + local player_name = player:get_player_name() -- Fixed offset in config file local fixed = tonumber(minetest.settings:get("show_wielded_item_y_offset")) local off @@ -84,7 +84,7 @@ minetest.register_globalstep(function(dtime) wield[player_name] = wname dtimes[player_name] = 0 - if huds[player_name] then + if huds[player_name] then local def = minetest.registered_items[wname] local meta = wstack:get_meta() From 52b147365706979ce1544926218a08193708eb75 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 11:53:05 +0200 Subject: [PATCH 156/418] [mcl_comparators] fix warnings --- mods/ITEMS/REDSTONE/mcl_comparators/init.lua | 168 +++++++++---------- 1 file changed, 84 insertions(+), 84 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mcl_comparators/init.lua b/mods/ITEMS/REDSTONE/mcl_comparators/init.lua index cd194b0d1..a76821543 100644 --- a/mods/ITEMS/REDSTONE/mcl_comparators/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_comparators/init.lua @@ -217,94 +217,94 @@ if minetest.get_modpath("screwdriver") then end for _, mode in pairs{"comp", "sub"} do -for _, state in pairs{mesecon.state.on, mesecon.state.off} do - local state_str = state_strs[state] - local nodename = - "mcl_comparators:comparator_"..state_strs[state].."_"..mode + for _, state in pairs{mesecon.state.on, mesecon.state.off} do + local state_str = state_strs[state] + local nodename = + "mcl_comparators:comparator_"..state_str.."_"..mode - -- Help - local longdesc, usagehelp, use_help - if state_strs[state] == "off" and mode == "comp" then - longdesc = S("Redstone comparators are multi-purpose redstone components.").."\n".. - S("They can transmit a redstone signal, detect whether a block contains any items and compare multiple signals.") + -- Help + local longdesc, usagehelp, use_help + if state_str == "off" and mode == "comp" then + longdesc = S("Redstone comparators are multi-purpose redstone components.").."\n".. + S("They can transmit a redstone signal, detect whether a block contains any items and compare multiple signals.") - usagehelp = S("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.").."\n".. - S("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.").."\n".. - S("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.").."\n\n".. - S("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.").."\n".. - S("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.") - else - use_help = false - end + usagehelp = S("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.").."\n".. + S("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.").."\n".. + S("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.").."\n\n".. + S("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.").."\n".. + S("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.") + else + use_help = false + end - local nodedef = { - description = S("Redstone Comparator"), - inventory_image = icon, - wield_image = icon, - _doc_items_create_entry = use_help, - _doc_items_longdesc = longdesc, - _doc_items_usagehelp = usagehelp, - drawtype = "nodebox", - tiles = get_tiles(state_strs[state], mode), - use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false, - wield_image = "mcl_comparators_off.png", - walkable = true, - selection_box = collision_box, - collision_box = collision_box, - node_box = { - type = "fixed", - fixed = node_boxes[mode], - }, - groups = groups, - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = false, - is_ground_content = false, - drop = 'mcl_comparators:comparator_off_comp', - on_construct = update_self, - on_rightclick = - make_rightclick_handler(state_strs[state], mode), - comparator_mode = mode, - comparator_onstate = "mcl_comparators:comparator_on_"..mode, - comparator_offstate = "mcl_comparators:comparator_off_"..mode, - sounds = mcl_sounds.node_sound_stone_defaults(), - mesecons = { - receptor = { - state = state, - rules = comparator_get_output_rules, + local nodedef = { + description = S("Redstone Comparator"), + inventory_image = icon, + wield_image = icon, + _doc_items_create_entry = use_help, + _doc_items_longdesc = longdesc, + _doc_items_usagehelp = usagehelp, + drawtype = "nodebox", + tiles = get_tiles(state_str, mode), + use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false, + --wield_image = "mcl_comparators_off.png", + walkable = true, + selection_box = collision_box, + collision_box = collision_box, + node_box = { + type = "fixed", + fixed = node_boxes[mode], }, - effector = { - rules = comparator_get_input_rules, - action_change = update_self, - } - }, - on_rotate = on_rotate, - } + groups = groups, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = false, + is_ground_content = false, + drop = 'mcl_comparators:comparator_off_comp', + on_construct = update_self, + on_rightclick = + make_rightclick_handler(state_str, mode), + comparator_mode = mode, + comparator_onstate = "mcl_comparators:comparator_on_"..mode, + comparator_offstate = "mcl_comparators:comparator_off_"..mode, + sounds = mcl_sounds.node_sound_stone_defaults(), + mesecons = { + receptor = { + state = state, + rules = comparator_get_output_rules, + }, + effector = { + rules = comparator_get_input_rules, + action_change = update_self, + } + }, + on_rotate = on_rotate, + } - if mode == "comp" and state == mesecon.state.off then - -- This is the prototype - nodedef._doc_items_create_entry = true - else - nodedef.groups = table.copy(nodedef.groups) - nodedef.groups.not_in_creative_inventory = 1 - local extra_desc = {} - if mode == "sub" or state == mesecon.state.on then - nodedef.inventory_image = nil + if mode == "comp" and state == mesecon.state.off then + -- This is the prototype + nodedef._doc_items_create_entry = true + else + nodedef.groups = table.copy(nodedef.groups) + nodedef.groups.not_in_creative_inventory = 1 + --local extra_desc = {} + if mode == "sub" or state == mesecon.state.on then + nodedef.inventory_image = nil + end + local desc = nodedef.description + if mode ~= "sub" and state == mesecon.state.on then + desc = S("Redstone Comparator (Powered)") + elseif mode == "sub" and state ~= mesecon.state.on then + desc = S("Redstone Comparator (Subtract)") + elseif mode == "sub" and state == mesecon.state.on then + desc = S("Redstone Comparator (Subtract, Powered)") + end + nodedef.description = desc end - local desc = nodedef.description - if mode ~= "sub" and state == mesecon.state.on then - desc = S("Redstone Comparator (Powered)") - elseif mode == "sub" and state ~= mesecon.state.on then - desc = S("Redstone Comparator (Subtract)") - elseif mode == "sub" and state == mesecon.state.on then - desc = S("Redstone Comparator (Subtract, Powered)") - end - nodedef.description = desc + + minetest.register_node(nodename, nodedef) + mcl_wip.register_wip_item(nodename) end - - minetest.register_node(nodename, nodedef) - mcl_wip.register_wip_item(nodename) -end end -- Register recipies @@ -351,9 +351,9 @@ minetest.register_abm({ -- Add entry aliases for the Help if minetest.get_modpath("doc") then doc.add_entry_alias("nodes", "mcl_comparators:comparator_off_comp", - "nodes", "mcl_comparators:comparator_off_sub") + "nodes", "mcl_comparators:comparator_off_sub") doc.add_entry_alias("nodes", "mcl_comparators:comparator_off_comp", - "nodes", "mcl_comparators:comparator_on_comp") + "nodes", "mcl_comparators:comparator_on_comp") doc.add_entry_alias("nodes", "mcl_comparators:comparator_off_comp", - "nodes", "mcl_comparators:comparator_on_sub") + "nodes", "mcl_comparators:comparator_on_sub") end From 8baea02f2401e0b896dfb4be1e255bf1f4a06a03 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 13:20:00 +0200 Subject: [PATCH 157/418] [mcl_inventory] fix warnings --- mods/HUD/mcl_inventory/creative.lua | 26 ++++++++++++-------------- mods/HUD/mcl_inventory/init.lua | 8 +++----- mods/HUD/mcl_inventory/mod.conf | 4 ++-- 3 files changed, 17 insertions(+), 21 deletions(-) diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index 61ba39b10..4d73aca35 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -7,7 +7,7 @@ local players = {} -- Containing all the items for each Creative Mode tab local inventory_lists = {} -local mod_player = minetest.get_modpath("mcl_player") ~= nil +--local mod_player = minetest.get_modpath("mcl_player") ~= nil -- Create tables local builtin_filter_ids = {"blocks","deco","redstone","rail","food","tools","combat","mobs","brew","matr","misc","all"} @@ -161,7 +161,7 @@ end local function init(player) local playername = player:get_player_name() - local inv = minetest.create_detached_inventory("creative_"..playername, { + minetest.create_detached_inventory("creative_"..playername, { allow_move = function(inv, from_list, from_index, to_list, to_index, count, player) if minetest.is_creative_enabled(playername) then return count @@ -203,7 +203,7 @@ local offset = {} -- string offset: local boffset = {} -- local hoch = {} local filtername = {} -local bg = {} +--local bg = {} local noffset_x_start = -0.24 local noffset_x = noffset_x_start @@ -257,7 +257,6 @@ hoch["mobs"] = "_down" hoch["matr"] = "_down" hoch["inv"] = "_down" -filtername = {} filtername["blocks"] = S("Building Blocks") filtername["deco"] = S("Decoration Blocks") filtername["redstone"] = S("Redstone") @@ -272,9 +271,9 @@ filtername["brew"] = S("Brewing") filtername["matr"] = S("Materials") filtername["inv"] = S("Survival Inventory") -local dark_bg = "crafting_creative_bg_dark.png" +--local dark_bg = "crafting_creative_bg_dark.png" -local function reset_menu_item_bg() +--[[local function reset_menu_item_bg() bg["blocks"] = dark_bg bg["deco"] = dark_bg bg["redstone"] = dark_bg @@ -289,11 +288,11 @@ local function reset_menu_item_bg() bg["matr"] = dark_bg bg["inv"] = dark_bg bg["default"] = dark_bg -end +end]] mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_size, show, page, filter) - reset_menu_item_bg() + --reset_menu_item_bg() pagenum = math.floor(pagenum) or 1 local playername = player:get_player_name() @@ -310,7 +309,6 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz end local pagemax = math.max(1, math.floor((inv_size-1) / (9*5) + 1)) local name = "nix" - local formspec = "" local main_list local listrings = "listring[detached:creative_"..playername..";main]".. "listring[current_player;main]".. @@ -322,7 +320,7 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz players[playername].page = page end end - bg[name] = "crafting_creative_bg.png" + --bg[name] = "crafting_creative_bg.png" local inv_bg = "crafting_inventory_creative.png" if name == "inv" then @@ -428,7 +426,7 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz caption = "label[0,1.2;"..F(minetest.colorize("#313131", filtername[name])).."]" end - formspec = "size[10,9.3]".. + local formspec = "size[10,9.3]".. "no_prepend[]".. mcl_vars.gui_nonbg..mcl_vars.gui_bg_color.. "background[-0.19,-0.25;10.5,9.87;"..inv_bg.."]".. @@ -560,7 +558,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end -- Figure out current scroll bar from formspec - local formspec = player:get_inventory_formspec() + --local formspec = player:get_inventory_formspec() local start_i = players[name].start_i @@ -628,7 +626,7 @@ if minetest.is_creative_enabled("") then end mcl_inventory.update_inventory_formspec = function(player) - local page = nil + local page local name = player:get_player_name() @@ -639,7 +637,7 @@ if minetest.is_creative_enabled("") then end -- Figure out current scroll bar from formspec - local formspec = player:get_inventory_formspec() + --local formspec = player:get_inventory_formspec() local start_i = players[name].start_i local inv_size diff --git a/mods/HUD/mcl_inventory/init.lua b/mods/HUD/mcl_inventory/init.lua index 1744ec089..4c50a6c13 100644 --- a/mods/HUD/mcl_inventory/init.lua +++ b/mods/HUD/mcl_inventory/init.lua @@ -3,8 +3,8 @@ local F = minetest.formspec_escape mcl_inventory = {} -local mod_player = minetest.get_modpath("mcl_player") ~= nil -local mod_craftguide = minetest.get_modpath("mcl_craftguide") ~= nil +--local mod_player = minetest.get_modpath("mcl_player") ~= nil +--local mod_craftguide = minetest.get_modpath("mcl_craftguide") ~= nil -- Returns a single itemstack in the given inventory to the main inventory, or drop it when there's no space left function return_item(itemstack, dropper, pos, inv) @@ -60,8 +60,6 @@ local function set_inventory(player, armor_change_only) inv:set_width("craft", 2) inv:set_size("craft", 4) - local player_name = player:get_player_name() - -- Show armor and player image local player_preview if minetest.settings:get_bool("3d_player_preview", true) then @@ -180,6 +178,6 @@ minetest.register_on_joinplayer(function(player) end) if minetest.is_creative_enabled("") then - dofile(minetest.get_modpath("mcl_inventory").."/creative.lua") + dofile(minetest.get_modpath(minetest.get_current_modname()).."/creative.lua") end diff --git a/mods/HUD/mcl_inventory/mod.conf b/mods/HUD/mcl_inventory/mod.conf index fa6b2c2f4..7585d9f70 100644 --- a/mods/HUD/mcl_inventory/mod.conf +++ b/mods/HUD/mcl_inventory/mod.conf @@ -1,6 +1,6 @@ name = mcl_inventory author = BlockMen description = Adds the player inventory and creative inventory. -depends = mcl_init, mcl_formspec -optional_depends = mcl_player, _mcl_autogroup, mcl_armor, mcl_brewing, mcl_potions, mcl_enchanting +depends = mcl_init, mcl_formspec, mcl_player +optional_depends = _mcl_autogroup, mcl_armor, mcl_brewing, mcl_potions, mcl_enchanting, mcl_craftguide From 8536e2c033cf51ef99989d56e7c400fdc444f2f8 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 13:33:36 +0200 Subject: [PATCH 158/418] [mcl_experience] fix warnings --- mods/HUD/mcl_experience/init.lua | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/mods/HUD/mcl_experience/init.lua b/mods/HUD/mcl_experience/init.lua index b52611d5a..53376c63f 100644 --- a/mods/HUD/mcl_experience/init.lua +++ b/mods/HUD/mcl_experience/init.lua @@ -1,5 +1,11 @@ local S = minetest.get_translator("mcl_experience") + mcl_experience = {} + +local vector = vector +local math = math +local string = string + local pool = {} local registered_nodes local max_xp = 2^31-1 @@ -262,7 +268,6 @@ function mcl_experience.add_experience(player, experience) if #final_candidates > 0 then local can = final_candidates[math.random(#final_candidates)] local stack, list, index, wear = can.stack, can.list, can.index, can.wear - local unbreaking_level = mcl_enchanting.get_enchantment(stack, "unbreaking") local uses = mcl_util.calculate_durability(stack) local multiplier = 2 * 65535 / uses local repair = experience * multiplier @@ -329,14 +334,12 @@ minetest.register_on_dieplayer(function(player) mcl_experience.throw_experience(player:get_pos(), xp_amount) end) - -local name local collector, pos, pos2 local direction, distance, player_velocity, goal local currentvel, acceleration, multiplier, velocity local node, vel, def local is_moving, is_slippery, slippery, slip_factor -local size, data +local size local function xp_step(self, dtime) --if item set to be collected then only execute go to player if self.collected == true then From ce9258b7647f5b20db044a5e926dea4a6010e5a7 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 13:43:59 +0200 Subject: [PATCH 159/418] [awards] fix warnings --- .luacheckrc | 9 +++++++++ mods/HUD/awards/triggers.lua | 16 ++++------------ mods/HUD/awards/unified_inventory.lua | 5 ++--- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.luacheckrc b/.luacheckrc index 556b2e8f0..2497a10ff 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -40,4 +40,13 @@ read_globals = { "factorial" } }, + ------ + --MODS + ------ + + --GENERAL + "default", + + --HUD + "sfinv", "unified_inventory", } \ No newline at end of file diff --git a/mods/HUD/awards/triggers.lua b/mods/HUD/awards/triggers.lua index 318a4b281..995dd005c 100644 --- a/mods/HUD/awards/triggers.lua +++ b/mods/HUD/awards/triggers.lua @@ -250,9 +250,7 @@ minetest.register_on_dignode(function(pos, oldnode, digger) local tnodedug = string.split(entry.node, ":") local tmod = tnodedug[1] local titem = tnodedug[2] - if not tmod or not titem or not data.count[tmod] or not data.count[tmod][titem] then - -- table running failed! - elseif data.count[tmod][titem] > entry.target-1 then + if tmod and titem and data.count[tmod] and data.count[tmod][titem] and data.count[tmod][titem] > entry.target-1 then return entry.award end elseif awards.get_total_item_count(data, "count") > entry.target-1 then @@ -277,9 +275,7 @@ minetest.register_on_placenode(function(pos, node, digger) local tnodedug = string.split(entry.node, ":") local tmod = tnodedug[1] local titem = tnodedug[2] - if not tmod or not titem or not data.place[tmod] or not data.place[tmod][titem] then - -- table running failed! - elseif data.place[tmod][titem] > entry.target-1 then + if tmod and titem and data.place[tmod] and data.place[tmod][titem] and data.place[tmod][titem] > entry.target-1 then return entry.award end elseif awards.get_total_item_count(data, "place") > entry.target-1 then @@ -303,9 +299,7 @@ minetest.register_on_item_eat(function(hp_change, replace_with_item, itemstack, local titemstring = string.split(entry.item, ":") local tmod = titemstring[1] local titem = titemstring[2] - if not tmod or not titem or not data.eat[tmod] or not data.eat[tmod][titem] then - -- table running failed! - elseif data.eat[tmod][titem] > entry.target-1 then + if tmod and titem and data.eat[tmod] and data.eat[tmod][titem] and data.eat[tmod][titem] > entry.target-1 then return entry.award end elseif awards.get_total_item_count(data, "eat") > entry.target-1 then @@ -331,9 +325,7 @@ minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv local titemcrafted = string.split(entry.item, ":") local tmod = titemcrafted[1] local titem = titemcrafted[2] - if not tmod or not titem or not data.craft[tmod] or not data.craft[tmod][titem] then - -- table running failed! - elseif data.craft[tmod][titem] > entry.target-1 then + if tmod and titem and data.craft[tmod] and data.craft[tmod][titem] and data.craft[tmod][titem] > entry.target-1 then return entry.award end elseif awards.get_total_item_count(data, "craft") > entry.target-1 then diff --git a/mods/HUD/awards/unified_inventory.lua b/mods/HUD/awards/unified_inventory.lua index be5ca5f94..3dc238e1a 100644 --- a/mods/HUD/awards/unified_inventory.lua +++ b/mods/HUD/awards/unified_inventory.lua @@ -1,6 +1,5 @@ -if minetest.get_modpath("unified_inventory") ~= nil then - local S = minetest.get_translator("awards") - +if minetest.get_modpath("unified_inventory") then + local S = minetest.get_translator(minetest.get_current_modname()) unified_inventory.register_button("awards", { type = "image", image = "awards_ui_icon.png", From c19c05443e27bd3a552e1b9fc0d8838b2aefe462 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 13:46:08 +0200 Subject: [PATCH 160/418] [mcl_craftguide] fix warnings --- mods/HELP/mcl_craftguide/init.lua | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/mods/HELP/mcl_craftguide/init.lua b/mods/HELP/mcl_craftguide/init.lua index d05d8b3d0..bfaef6011 100644 --- a/mods/HELP/mcl_craftguide/init.lua +++ b/mods/HELP/mcl_craftguide/init.lua @@ -417,9 +417,9 @@ local function get_tooltip(item, groups, cooktime, burntime) -- and just print the normal item name without special formatting if groups[1] == "compass" or groups[1] == "clock" then groupstr = reg_items[item].description - elseif group_names[groups[1]] then + elseif g then -- Use the special group name string - groupstr = minetest.colorize(gcol, group_names[groups[1]]) + groupstr = minetest.colorize(gcol, g) else --[[ Fallback: Generic group explanation: This always works, but the internally used group name (which @@ -545,7 +545,7 @@ local function get_recipe_fs(data, iY) if custom_recipe or shapeless or recipe.type == "cooking" then local icon = custom_recipe and custom_recipe.icon or - shapeless and "shapeless" or "furnace" + shapeless and "shapeless" or "furnace" if recipe.type == "cooking" then icon = "default_furnace_front_active.png" @@ -638,7 +638,7 @@ local function make_formspec(name) fs[#fs + 1] = "background9[1,1;1,1;mcl_base_textures_background9.png;true;7]" fs[#fs + 1] = fmt([[ tooltip[size_inc;%s] - tooltip[size_dec;%s] ]], + tooltip[size_dec;%s] ]], ESC(S("Increase window size")), ESC(S("Decrease window size"))) @@ -656,9 +656,9 @@ local function make_formspec(name) ]] fs[#fs + 1] = fmt([[ tooltip[search;%s] - tooltip[clear;%s] - tooltip[prev;%s] - tooltip[next;%s] ]], + tooltip[clear;%s] + tooltip[prev;%s] + tooltip[next;%s] ]], ESC(S("Search")), ESC(S("Reset")), ESC(S("Previous page")), From 58510b00ee4eca35a4c0c49192b913a30bdad172 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 13:51:54 +0200 Subject: [PATCH 161/418] [mcl_tt] fix some warnings --- mods/HELP/mcl_tt/snippets_base.lua | 10 +++++----- mods/HELP/mcl_tt/snippets_mcl.lua | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/mods/HELP/mcl_tt/snippets_base.lua b/mods/HELP/mcl_tt/snippets_base.lua index 8242f2c19..bd5495721 100644 --- a/mods/HELP/mcl_tt/snippets_base.lua +++ b/mods/HELP/mcl_tt/snippets_base.lua @@ -1,6 +1,6 @@ local S = minetest.get_translator("mcl_tt") -local function get_min_digtime(caps) +--[[local function get_min_digtime(caps) local mintime local unique = true local maxlevel = caps.maxlevel @@ -25,7 +25,7 @@ local function get_min_digtime(caps) end end return mintime, unique -end +end]] local function newline(str) if str ~= "" then @@ -47,7 +47,7 @@ tt.register_snippet(function(itemstring, toolcaps) local minestring = "" local capstr = "" local caplines = 0 - for k,v in pairs(groupcaps) do + for _,v in pairs(groupcaps) do local speedstr = "" local miningusesstr = "" -- Mining capabilities @@ -153,9 +153,9 @@ tt.register_snippet(function(itemstring, toolcaps) end) -- Weapon stats -tt.register_snippet(function(itemstring) +--[[tt.register_snippet(function(itemstring) local def = minetest.registered_items[itemstring] -end) +end)]] -- Food tt.register_snippet(function(itemstring) diff --git a/mods/HELP/mcl_tt/snippets_mcl.lua b/mods/HELP/mcl_tt/snippets_mcl.lua index 3d13df751..b10021640 100644 --- a/mods/HELP/mcl_tt/snippets_mcl.lua +++ b/mods/HELP/mcl_tt/snippets_mcl.lua @@ -2,7 +2,7 @@ local S = minetest.get_translator("mcl_tt") -- Armor tt.register_snippet(function(itemstring) - local def = minetest.registered_items[itemstring] + --local def = minetest.registered_items[itemstring] local s = "" local head = minetest.get_item_group(itemstring, "armor_head") local torso = minetest.get_item_group(itemstring, "armor_torso") @@ -26,7 +26,7 @@ tt.register_snippet(function(itemstring) return s end) tt.register_snippet(function(itemstring, _, itemstack) - local def = minetest.registered_items[itemstring] + --local def = minetest.registered_items[itemstring] local s = "" local use = minetest.get_item_group(itemstring, "mcl_armor_uses") local pts = minetest.get_item_group(itemstring, "mcl_armor_points") @@ -75,7 +75,7 @@ tt.register_snippet(function(itemstring) end) tt.register_snippet(function(itemstring) - local def = minetest.registered_items[itemstring] + --local def = minetest.registered_items[itemstring] if minetest.get_item_group(itemstring, "crush_after_fall") == 1 then return S("Deals damage when falling"), mcl_colors.YELLOW end From 5975b20cffc3843d501ba14c42571b8a9c04596b Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 14:02:47 +0200 Subject: [PATCH 162/418] [mcl_doc] fix warnings --- mods/HELP/mcl_doc/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/HELP/mcl_doc/init.lua b/mods/HELP/mcl_doc/init.lua index d926550f8..fa6ae6c05 100644 --- a/mods/HELP/mcl_doc/init.lua +++ b/mods/HELP/mcl_doc/init.lua @@ -154,7 +154,7 @@ doc.sub.items.register_factoid(nil, "use", function(itemstring, def) return s end) doc.sub.items.register_factoid(nil, "groups", function(itemstring, def) - local def = minetest.registered_items[itemstring] + --local def = minetest.registered_items[itemstring] local s = "" local use = minetest.get_item_group(itemstring, "mcl_armor_uses") local pts = minetest.get_item_group(itemstring, "mcl_armor_points") @@ -289,7 +289,7 @@ doc.sub.items.register_factoid("nodes", "drops", function(itemstring, def) local itemname = item:get_name() local itemcount = item:get_count() local idef = minetest.registered_items[itemname] - local text = "" + local text if idef.description and idef.description ~= "" then text = idef.description else From 4fd0bf2c3fb0961e765aebf3bc6798725c9c7aa6 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 14:12:19 +0200 Subject: [PATCH 163/418] [doc_items] fix warnings --- mods/HELP/doc/doc_items/init.lua | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/mods/HELP/doc/doc_items/init.lua b/mods/HELP/doc/doc_items/init.lua index ec4da620e..edba0dae3 100644 --- a/mods/HELP/doc/doc_items/init.lua +++ b/mods/HELP/doc/doc_items/init.lua @@ -164,7 +164,7 @@ local factoid_toolcaps = function(tool_capabilities, check_uses) local useslines = 0 for k,v in pairs(groupcaps) do -- Mining capabilities - local minrating, maxrating + --[[local minrating, maxrating if v.times then for rating, time in pairs(v.times) do if minrating == nil then minrating = rating else @@ -177,7 +177,7 @@ local factoid_toolcaps = function(tool_capabilities, check_uses) else minrating = 1 maxrating = 1 - end + end]] local maxlevel = v.maxlevel if not maxlevel then -- Default from tool.h @@ -577,11 +577,8 @@ doc.add_category("nodes", { description = S("Item reference of blocks and other things which are capable of occupying space"), build_formspec = function(data, playername) if data then - local formstring = "" - local datastring = "" - - formstring = entry_image(data) - datastring = factoids_header(data, "nodes") + local formstring = entry_image(data) + local datastring = factoids_header(data, "nodes") local liquid = data.def.liquidtype ~= "none" and minetest.get_item_group(data.itemstring, "fake_liquid") == 0 if not forbidden_core_factoids.basics then @@ -834,7 +831,7 @@ doc.add_category("nodes", { elseif type(data.def.drop) == "table" and data.def.drop.items ~= nil then local max = data.def.drop.max_items local dropstring = "" - local dropstring_base = "" + local dropstring_base if max == nil then dropstring_base = N("This block will drop the following items when mined: @1.") elseif max == 1 then @@ -852,7 +849,7 @@ doc.add_category("nodes", { local rarity_history = {} for i=1,#data.def.drop.items do local local_rarity = data.def.drop.items[i].rarity - local chance = 1 + local chance local rarity = 1 if local_rarity == nil then local_rarity = 1 @@ -937,7 +934,6 @@ doc.add_category("nodes", { end local rarity = probtable.rarity - local raritystring = "" -- No percentage if there's only one possible guaranteed drop if not(rarity == 1 and #data.def.drop.items == 1) then local chance = (1/rarity)*100 @@ -1086,11 +1082,8 @@ doc.add_category("tools", { end, build_formspec = function(data, playername) if data then - local formstring = "" - local datastring = "" - - formstring = entry_image(data) - datastring = factoids_header(data, "tools") + local formstring = entry_image(data) + local datastring = factoids_header(data, "tools") -- Overwritten durability info if type(data.def._doc_items_durability) == "number" then @@ -1120,11 +1113,8 @@ doc.add_category("craftitems", { description = S("Item reference of items which are neither blocks, tools or weapons (esp. crafting items)"), build_formspec = function(data, playername) if data then - local formstring = "" - local datastring = "" - - formstring = entry_image(data) - datastring = factoids_header(data, "craftitems") + local formstring = entry_image(data) + local datastring = factoids_header(data, "craftitems") datastring = datastring .. factoids_footer(data, playername, "craftitems") formstring = formstring .. doc.widgets.text(datastring, nil, nil, doc.FORMSPEC.ENTRY_WIDTH - 1.2) From 21b7647731fce4a11ce99dd47e3fdbd3d43fd56a Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 14:23:37 +0200 Subject: [PATCH 164/418] [doc] fix warnings --- .luacheckrc | 2 +- mods/HELP/doc/doc/init.lua | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/.luacheckrc b/.luacheckrc index 2497a10ff..910d73a11 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -48,5 +48,5 @@ read_globals = { "default", --HUD - "sfinv", "unified_inventory", + "sfinv", "sfinv_buttons", "unified_inventory", "cmsg", "inventory_plus", } \ No newline at end of file diff --git a/mods/HELP/doc/doc/init.lua b/mods/HELP/doc/doc/init.lua index 029914a53..a04d83bda 100644 --- a/mods/HELP/doc/doc/init.lua +++ b/mods/HELP/doc/doc/init.lua @@ -233,7 +233,7 @@ end -- Returns true if the specified entry has been viewed by the player function doc.entry_viewed(playername, category_id, entry_id) - local entry, category_id, entry_id = get_entry(category_id, entry_id) + local _, category_id, entry_id = get_entry(category_id, entry_id) if doc.data.players[playername].stored_data.viewed[category_id] == nil then return false else @@ -243,7 +243,7 @@ end -- Returns true if the specified entry is hidden from the player function doc.entry_revealed(playername, category_id, entry_id) - local entry, category_id, entry_id = get_entry(category_id, entry_id) + local _, category_id, entry_id = get_entry(category_id, entry_id) local hidden = doc.data.categories[category_id].entries[entry_id].hidden if doc.data.players[playername].stored_data.revealed[category_id] == nil then return not hidden @@ -302,7 +302,7 @@ function doc.show_entry(playername, category_id, entry_id, ignore_hidden) minetest.show_formspec(playername, "doc:error_no_categories", doc.formspec_error_no_categories()) return end - local entry, category_id, entry_id = get_entry(category_id, entry_id) + local _, category_id, entry_id = get_entry(category_id, entry_id) if ignore_hidden or doc.entry_revealed(playername, category_id, entry_id) then local playerdata = doc.data.players[playername] playerdata.category = category_id @@ -587,8 +587,6 @@ doc.widgets.gallery = function(imagedata, playername, x, y, aspect_ratio, width, formstring = formstring .. "label["..nx..","..ny..";"..i.."]" pos = pos + 1 end - local bw, bh - return formstring, ih end From 5f8d79b37ab4c0e02634ae5e19d5f18e07d49cd4 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 14:44:50 +0200 Subject: [PATCH 165/418] [mcl_weather] fix warnings --- mods/ENVIRONMENT/mcl_weather/rain.lua | 4 +- mods/ENVIRONMENT/mcl_weather/skycolor.lua | 6 +- mods/ENVIRONMENT/mcl_weather/snow.lua | 118 +++++++++--------- mods/ENVIRONMENT/mcl_weather/thunder.lua | 88 +++++++------ mods/ENVIRONMENT/mcl_weather/weather_core.lua | 30 ++--- 5 files changed, 122 insertions(+), 124 deletions(-) diff --git a/mods/ENVIRONMENT/mcl_weather/rain.lua b/mods/ENVIRONMENT/mcl_weather/rain.lua index d8425784a..786e08fa9 100644 --- a/mods/ENVIRONMENT/mcl_weather/rain.lua +++ b/mods/ENVIRONMENT/mcl_weather/rain.lua @@ -249,7 +249,7 @@ if mcl_weather.allow_abm then end end end - }) + }) -- Wetten the soil minetest.register_abm({ @@ -264,7 +264,7 @@ if mcl_weather.allow_abm then end end end - }) + }) end if mcl_weather.reg_weathers.rain == nil then diff --git a/mods/ENVIRONMENT/mcl_weather/skycolor.lua b/mods/ENVIRONMENT/mcl_weather/skycolor.lua index 061634fcb..488f6b1a1 100644 --- a/mods/ENVIRONMENT/mcl_weather/skycolor.lua +++ b/mods/ENVIRONMENT/mcl_weather/skycolor.lua @@ -11,7 +11,7 @@ mcl_weather.skycolor = { -- Update interval. update_interval = 15, - -- Main sky colors: starts from midnight to midnight. + -- Main sky colors: starts from midnight to midnight. -- Please do not set directly. Use add_layer instead. colors = {}, @@ -205,8 +205,8 @@ mcl_weather.skycolor = { -- Returns first player sky color. I assume that all players are in same color layout. get_current_bg_color = function() local players = mcl_weather.skycolor.utils.get_players(nil) - for _, player in ipairs(players) do - return player:get_sky() + if players[1] then + return players[1]:get_sky() end return nil end diff --git a/mods/ENVIRONMENT/mcl_weather/snow.lua b/mods/ENVIRONMENT/mcl_weather/snow.lua index 3a0c539e3..9ec9fbac1 100644 --- a/mods/ENVIRONMENT/mcl_weather/snow.lua +++ b/mods/ENVIRONMENT/mcl_weather/snow.lua @@ -5,80 +5,80 @@ mcl_weather.snow = {} mcl_weather.snow.particles_count = 15 mcl_weather.snow.init_done = false --- calculates coordinates and draw particles for snow weather +-- calculates coordinates and draw particles for snow weather mcl_weather.snow.add_snow_particles = function(player) - mcl_weather.rain.last_rp_count = 0 - for i=mcl_weather.snow.particles_count, 1,-1 do - local random_pos_x, random_pos_y, random_pos_z = mcl_weather.get_random_pos_by_player_look_dir(player) - random_pos_y = math.random() + math.random(player:get_pos().y - 1, player:get_pos().y + 7) - if minetest.get_node_light({x=random_pos_x, y=random_pos_y, z=random_pos_z}, 0.5) == 15 then - mcl_weather.rain.last_rp_count = mcl_weather.rain.last_rp_count + 1 - minetest.add_particle({ - pos = {x=random_pos_x, y=random_pos_y, z=random_pos_z}, - velocity = {x = math.random(-100,100)*0.001, y = math.random(-300,-100)*0.004, z = math.random(-100,100)*0.001}, - acceleration = {x = 0, y=0, z = 0}, - expirationtime = 8.0, - size = 1, - collisiondetection = true, - collision_removal = true, - object_collision = false, - vertical = false, - texture = mcl_weather.snow.get_texture(), - playername = player:get_player_name() - }) - end - end + mcl_weather.rain.last_rp_count = 0 + for i=mcl_weather.snow.particles_count, 1,-1 do + local random_pos_x, _, random_pos_z = mcl_weather.get_random_pos_by_player_look_dir(player) + local random_pos_y = math.random() + math.random(player:get_pos().y - 1, player:get_pos().y + 7) + if minetest.get_node_light({x=random_pos_x, y=random_pos_y, z=random_pos_z}, 0.5) == 15 then + mcl_weather.rain.last_rp_count = mcl_weather.rain.last_rp_count + 1 + minetest.add_particle({ + pos = {x=random_pos_x, y=random_pos_y, z=random_pos_z}, + velocity = {x = math.random(-100,100)*0.001, y = math.random(-300,-100)*0.004, z = math.random(-100,100)*0.001}, + acceleration = {x = 0, y=0, z = 0}, + expirationtime = 8.0, + size = 1, + collisiondetection = true, + collision_removal = true, + object_collision = false, + vertical = false, + texture = mcl_weather.snow.get_texture(), + playername = player:get_player_name() + }) + end + end end mcl_weather.snow.set_sky_box = function() - mcl_weather.skycolor.add_layer( - "weather-pack-snow-sky", - {{r=0, g=0, b=0}, - {r=85, g=86, b=86}, - {r=135, g=135, b=135}, - {r=85, g=86, b=86}, - {r=0, g=0, b=0}}) - mcl_weather.skycolor.active = true - for _, player in pairs(get_connected_players()) do - player:set_clouds({color="#ADADADE8"}) - end - mcl_weather.skycolor.active = true + mcl_weather.skycolor.add_layer( + "weather-pack-snow-sky", + {{r=0, g=0, b=0}, + {r=85, g=86, b=86}, + {r=135, g=135, b=135}, + {r=85, g=86, b=86}, + {r=0, g=0, b=0}}) + mcl_weather.skycolor.active = true + for _, player in pairs(get_connected_players()) do + player:set_clouds({color="#ADADADE8"}) + end + mcl_weather.skycolor.active = true end -mcl_weather.snow.clear = function() - mcl_weather.skycolor.remove_layer("weather-pack-snow-sky") - mcl_weather.snow.init_done = false +function mcl_weather.snow.clear() + mcl_weather.skycolor.remove_layer("weather-pack-snow-sky") + mcl_weather.snow.init_done = false end -- Simple random texture getter -mcl_weather.snow.get_texture = function() - return "weather_pack_snow_snowflake"..math.random(1,2)..".png" +function mcl_weather.snow.get_texture() + return "weather_pack_snow_snowflake"..math.random(1,2)..".png" end local timer = 0 minetest.register_globalstep(function(dtime) - if mcl_weather.state ~= "snow" then - return false - end - - timer = timer + dtime; - if timer >= 0.5 then - timer = 0 - else - return - end + if mcl_weather.state ~= "snow" then + return false + end - if mcl_weather.snow.init_done == false then - mcl_weather.snow.set_sky_box() - mcl_weather.snow.init_done = true - end + timer = timer + dtime; + if timer >= 0.5 then + timer = 0 + else + return + end - for _, player in pairs(get_connected_players()) do - if (mcl_weather.is_underwater(player) or not mcl_worlds.has_weather(player:get_pos())) then - return false - end - mcl_weather.snow.add_snow_particles(player) - end + if mcl_weather.snow.init_done == false then + mcl_weather.snow.set_sky_box() + mcl_weather.snow.init_done = true + end + + for _, player in pairs(get_connected_players()) do + if (mcl_weather.is_underwater(player) or not mcl_worlds.has_weather(player:get_pos())) then + return false + end + mcl_weather.snow.add_snow_particles(player) + end end) -- register snow weather diff --git a/mods/ENVIRONMENT/mcl_weather/thunder.lua b/mods/ENVIRONMENT/mcl_weather/thunder.lua index ece673170..f8e5a0371 100644 --- a/mods/ENVIRONMENT/mcl_weather/thunder.lua +++ b/mods/ENVIRONMENT/mcl_weather/thunder.lua @@ -4,60 +4,58 @@ local get_connected_players = minetest.get_connected_players lightning.auto = false mcl_weather.thunder = { - next_strike = 0, - min_delay = 3, - max_delay = 12, - init_done = false, + next_strike = 0, + min_delay = 3, + max_delay = 12, + init_done = false, } minetest.register_globalstep(function(dtime) - if mcl_weather.get_weather() ~= "thunder" then - return false - end - - mcl_weather.rain.set_particles_mode("thunder") - mcl_weather.rain.make_weather() + if mcl_weather.get_weather() ~= "thunder" then + return false + end - if mcl_weather.thunder.init_done == false then - mcl_weather.skycolor.add_layer( - "weather-pack-thunder-sky", - {{r=0, g=0, b=0}, - {r=40, g=40, b=40}, - {r=85, g=86, b=86}, - {r=40, g=40, b=40}, - {r=0, g=0, b=0}}) - mcl_weather.skycolor.active = true - for _, player in pairs(get_connected_players()) do - player:set_clouds({color="#3D3D3FE8"}) - end - mcl_weather.thunder.init_done = true - end - - if (mcl_weather.thunder.next_strike <= minetest.get_gametime()) then - lightning.strike() - local delay = math.random(mcl_weather.thunder.min_delay, mcl_weather.thunder.max_delay) - mcl_weather.thunder.next_strike = minetest.get_gametime() + delay - end + mcl_weather.rain.set_particles_mode("thunder") + mcl_weather.rain.make_weather() + if mcl_weather.thunder.init_done == false then + mcl_weather.skycolor.add_layer("weather-pack-thunder-sky", { + {r=0, g=0, b=0}, + {r=40, g=40, b=40}, + {r=85, g=86, b=86}, + {r=40, g=40, b=40}, + {r=0, g=0, b=0}, + }) + mcl_weather.skycolor.active = true + for _, player in pairs(get_connected_players()) do + player:set_clouds({color="#3D3D3FE8"}) + end + mcl_weather.thunder.init_done = true + end + if (mcl_weather.thunder.next_strike <= minetest.get_gametime()) then + lightning.strike() + local delay = math.random(mcl_weather.thunder.min_delay, mcl_weather.thunder.max_delay) + mcl_weather.thunder.next_strike = minetest.get_gametime() + delay + end end) -mcl_weather.thunder.clear = function() - mcl_weather.rain.clear() - mcl_weather.skycolor.remove_layer("weather-pack-thunder-sky") - mcl_weather.skycolor.remove_layer("lightning") - mcl_weather.thunder.init_done = false +function mcl_weather.thunder.clear() + mcl_weather.rain.clear() + mcl_weather.skycolor.remove_layer("weather-pack-thunder-sky") + mcl_weather.skycolor.remove_layer("lightning") + mcl_weather.thunder.init_done = false end -- register thunderstorm weather if mcl_weather.reg_weathers.thunder == nil then - mcl_weather.reg_weathers.thunder = { - clear = mcl_weather.thunder.clear, - light_factor = 0.33333, - -- 10min - 20min - min_duration = 600, - max_duration = 1200, - transitions = { - [100] = "rain", - } - } + mcl_weather.reg_weathers.thunder = { + clear = mcl_weather.thunder.clear, + light_factor = 0.33333, + -- 10min - 20min + min_duration = 600, + max_duration = 1200, + transitions = { + [100] = "rain", + }, + } end diff --git a/mods/ENVIRONMENT/mcl_weather/weather_core.lua b/mods/ENVIRONMENT/mcl_weather/weather_core.lua index d3772dc7e..b8deba318 100644 --- a/mods/ENVIRONMENT/mcl_weather/weather_core.lua +++ b/mods/ENVIRONMENT/mcl_weather/weather_core.lua @@ -1,27 +1,29 @@ local S = minetest.get_translator("mcl_weather") +local math = math + -- weather states, 'none' is default, other states depends from active mods mcl_weather.state = "none" - + -- player list for saving player meta info mcl_weather.players = {} - + -- default weather check interval for global step mcl_weather.check_interval = 5 - + -- weather min duration mcl_weather.min_duration = 600 - + -- weather max duration mcl_weather.max_duration = 9000 -- weather calculated end time mcl_weather.end_time = nil - + -- registered weathers mcl_weather.reg_weathers = {} --- global flag to disable/enable ABM logic. +-- global flag to disable/enable ABM logic. mcl_weather.allow_abm = true mcl_weather.reg_weathers["none"] = { @@ -51,7 +53,7 @@ mcl_weather.get_rand_end_time = function(min_duration, max_duration) r = math.random(min_duration, max_duration) else r = math.random(mcl_weather.min_duration, mcl_weather.max_duration) - end + end return minetest.get_gametime() + r end @@ -80,8 +82,8 @@ end mcl_weather.is_underwater = function(player) local ppos = player:get_pos() local offset = player:get_eye_offset() - local player_eye_pos = {x = ppos.x + offset.x, - y = ppos.y + offset.y + 1.5, + local player_eye_pos = {x = ppos.x + offset.x, + y = ppos.y + offset.y + 1.5, z = ppos.z + offset.z} local node_level = minetest.get_node_level(player_eye_pos) if node_level == 8 or node_level == 7 then @@ -91,14 +93,12 @@ mcl_weather.is_underwater = function(player) end -- trying to locate position for particles by player look direction for performance reason. --- it is costly to generate many particles around player so goal is focus mainly on front view. +-- it is costly to generate many particles around player so goal is focus mainly on front view. mcl_weather.get_random_pos_by_player_look_dir = function(player) local look_dir = player:get_look_dir() local player_pos = player:get_pos() - local random_pos_x = 0 - local random_pos_y = 0 - local random_pos_z = 0 + local random_pos_x, random_pos_y, random_pos_z if look_dir.x > 0 then if look_dir.z > 0 then @@ -208,7 +208,7 @@ minetest.register_privilege("weather_manager", { give_to_singleplayer = false }) --- Weather command definition. Set +-- Weather command definition. Set minetest.register_chatcommand("weather", { params = "(clear | rain | snow | thunder) []", description = S("Changes the weather to the specified parameter."), @@ -270,7 +270,7 @@ minetest.register_chatcommand("toggledownfall", { local weather_allow_abm = minetest.settings:get_bool("weather_allow_abm") if weather_allow_abm ~= nil and weather_allow_abm == false then mcl_weather.allow_abm = false -end +end local load_weather = function() From 36dc18e9da888db5f01c9730c5ef28e900aeab80 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 14:46:13 +0200 Subject: [PATCH 166/418] [mcl_void_damage] fix warnings --- mods/ENVIRONMENT/mcl_void_damage/init.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/ENVIRONMENT/mcl_void_damage/init.lua b/mods/ENVIRONMENT/mcl_void_damage/init.lua index 24f7d0e4b..c3819c1da 100644 --- a/mods/ENVIRONMENT/mcl_void_damage/init.lua +++ b/mods/ENVIRONMENT/mcl_void_damage/init.lua @@ -1,5 +1,5 @@ local S = minetest.get_translator("mcl_void_damage") -local enable_damage = minetest.settings:get_bool("enable_damage") +--local enable_damage = minetest.settings:get_bool("enable_damage") local pos_to_dim = mcl_worlds.pos_to_dimension local dim_change = mcl_worlds.dimension_change @@ -39,9 +39,9 @@ minetest.register_on_mods_loaded(function() end self._void_timer = 0 - local void, void_deadly = is_in_void(pos) + local _, void_deadly = is_in_void(pos) if void_deadly then - local ent = obj:get_luaentity() + --local ent = obj:get_luaentity() obj:remove() return end @@ -61,7 +61,7 @@ minetest.register_globalstep(function(dtime) for p=1, #players do local player = players[p] local pos = player:get_pos() - local void, void_deadly = is_in_void(pos) + local _, void_deadly = is_in_void(pos) if void_deadly then local immortal_val = player:get_armor_groups().immortal local is_immortal = false From 9f41c6fc64b1255bd87dce954708187dc54f9e91 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 14:48:52 +0200 Subject: [PATCH 167/418] [mcl_moon] fix warnings --- mods/ENVIRONMENT/mcl_moon/init.lua | 2 -- 1 file changed, 2 deletions(-) diff --git a/mods/ENVIRONMENT/mcl_moon/init.lua b/mods/ENVIRONMENT/mcl_moon/init.lua index 4ee2623a6..1a5030b4e 100644 --- a/mods/ENVIRONMENT/mcl_moon/init.lua +++ b/mods/ENVIRONMENT/mcl_moon/init.lua @@ -4,11 +4,9 @@ local SHEET_W = 4 local SHEET_H = 2 -- Randomize initial moon phase, based on map seed -local phase_offset local mg_seed = minetest.get_mapgen_setting("seed") local rand = PseudoRandom(mg_seed) local phase_offset = rand:next(0, MOON_PHASES - 1) -rand = nil minetest.log("info", "[mcl_moon] Moon phase offset of this world: "..phase_offset) From b0a3cffad0414ced64bdb32b049b77ae2439c869 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 14:50:38 +0200 Subject: [PATCH 168/418] [lightning] fix warnings --- mods/ENVIRONMENT/lightning/init.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mods/ENVIRONMENT/lightning/init.lua b/mods/ENVIRONMENT/lightning/init.lua index 4a58866f9..2b79bf5ce 100644 --- a/mods/ENVIRONMENT/lightning/init.lua +++ b/mods/ENVIRONMENT/lightning/init.lua @@ -134,6 +134,7 @@ lightning.strike = function(pos) sound_play({ name = "lightning_thunder", gain = 10 }, { pos = pos, max_hear_distance = 500 }, true) -- damage nearby objects, transform mobs + -- TODO: use an API insteed of hardcoding this behaviour local objs = get_objects_inside_radius(pos2, 3.5) for o=1, #objs do local obj = objs[o] @@ -153,7 +154,7 @@ lightning.strike = function(pos) end obj:set_properties({textures = lua.base_texture}) -- villager → witch (no damage) - elseif lua and lua.name == "mobs_mc:villager" then + --elseif lua and lua.name == "mobs_mc:villager" then -- Witches are incomplete, this code is unused -- TODO: Enable this code when witches are working. --[[ From 470f7b70bcf44b93f26dde66b836759a5371b8ff Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 14:54:20 +0200 Subject: [PATCH 169/418] [mobs_mc_gameconfig] fix warning --- mods/ENTITIES/mobs_mc_gameconfig/init.lua | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/mods/ENTITIES/mobs_mc_gameconfig/init.lua b/mods/ENTITIES/mobs_mc_gameconfig/init.lua index 06d7eb87f..27cb4b4bf 100644 --- a/mods/ENTITIES/mobs_mc_gameconfig/init.lua +++ b/mods/ENTITIES/mobs_mc_gameconfig/init.lua @@ -200,14 +200,14 @@ end mobs_mc.override.enderman_block_texture_overrides = { ["mcl_core:cactus"] = ctable, -- FIXME: replace colorize colors with colors from palette - ["mcl_core:dirt_with_grass"] = - { - "mcl_core_grass_block_top.png^[colorize:green:90", - "default_dirt.png", - "default_dirt.png^(mcl_core_grass_block_side_overlay.png^[colorize:green:90)", - "default_dirt.png^(mcl_core_grass_block_side_overlay.png^[colorize:green:90)", - "default_dirt.png^(mcl_core_grass_block_side_overlay.png^[colorize:green:90)", - "default_dirt.png^(mcl_core_grass_block_side_overlay.png^[colorize:green:90)"} + ["mcl_core:dirt_with_grass"] = { + "mcl_core_grass_block_top.png^[colorize:green:90", + "default_dirt.png", + "default_dirt.png^(mcl_core_grass_block_side_overlay.png^[colorize:green:90)", + "default_dirt.png^(mcl_core_grass_block_side_overlay.png^[colorize:green:90)", + "default_dirt.png^(mcl_core_grass_block_side_overlay.png^[colorize:green:90)", + "default_dirt.png^(mcl_core_grass_block_side_overlay.png^[colorize:green:90)", + }, } -- List of nodes on which mobs can spawn From 335405f1310d9bc0bcc6d8ef9ccf8ffe618ee3cd Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 15:10:20 +0200 Subject: [PATCH 170/418] [mobs_mc] fix warnings --- mods/ENTITIES/mobs_mc/0_gameconfig.lua | 3 +-- mods/ENTITIES/mobs_mc/2_throwing.lua | 2 +- mods/ENTITIES/mobs_mc/4_heads.lua | 3 ++- mods/ENTITIES/mobs_mc/blaze.lua | 2 +- mods/ENTITIES/mobs_mc/cow+mooshroom.lua | 4 ++-- mods/ENTITIES/mobs_mc/ender_dragon.lua | 13 ++++++------- mods/ENTITIES/mobs_mc/enderman.lua | 4 ++-- mods/ENTITIES/mobs_mc/guardian.lua | 3 +-- mods/ENTITIES/mobs_mc/guardian_elder.lua | 1 - mods/ENTITIES/mobs_mc/horse.lua | 6 +++--- mods/ENTITIES/mobs_mc/iron_golem.lua | 2 +- mods/ENTITIES/mobs_mc/llama.lua | 12 ++++++------ mods/ENTITIES/mobs_mc/ocelot.lua | 2 +- mods/ENTITIES/mobs_mc/parrot.lua | 2 +- mods/ENTITIES/mobs_mc/pig.lua | 4 ++-- mods/ENTITIES/mobs_mc/sheep.lua | 5 ++--- mods/ENTITIES/mobs_mc/silverfish.lua | 1 - mods/ENTITIES/mobs_mc/skeleton+stray.lua | 6 +----- mods/ENTITIES/mobs_mc/vex.lua | 3 +-- mods/ENTITIES/mobs_mc/wither.lua | 3 +-- mods/ENTITIES/mobs_mc/wolf.lua | 4 ++-- 21 files changed, 37 insertions(+), 48 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/0_gameconfig.lua b/mods/ENTITIES/mobs_mc/0_gameconfig.lua index c947e9185..f21d946fe 100644 --- a/mods/ENTITIES/mobs_mc/0_gameconfig.lua +++ b/mods/ENTITIES/mobs_mc/0_gameconfig.lua @@ -83,7 +83,7 @@ mobs_mc.items = { water_source = "default:water_source", water_flowing = "default:water_flowing", river_water_source = "default:river_water_source", - water_flowing = "default:river_water_flowing", + --water_flowing = "default:river_water_flowing", black_dye = "dye:black", poppy = "flowers:rose", dandelion = "flowers:dandelion_yellow", @@ -128,7 +128,6 @@ mobs_mc.items = { nether_portal = "nether:portal", netherrack = "nether:rack", - nether_brick_block = "nether:brick", -- Wool (Minecraft color scheme) wool_white = "wool:white", diff --git a/mods/ENTITIES/mobs_mc/2_throwing.lua b/mods/ENTITIES/mobs_mc/2_throwing.lua index 23ae86d80..6f01ae6e6 100644 --- a/mods/ENTITIES/mobs_mc/2_throwing.lua +++ b/mods/ENTITIES/mobs_mc/2_throwing.lua @@ -6,7 +6,7 @@ -- NOTE: Strings intentionally not marked for translation, other mods already have these items. -- TODO: Remove this file eventually, all items here are already outsourced in other mods. -local S = minetest.get_translator("mobs_mc") +--local S = minetest.get_translator("mobs_mc") --maikerumines throwing code --arrow (weapon) diff --git a/mods/ENTITIES/mobs_mc/4_heads.lua b/mods/ENTITIES/mobs_mc/4_heads.lua index 01b8ee577..2ba0d548b 100644 --- a/mods/ENTITIES/mobs_mc/4_heads.lua +++ b/mods/ENTITIES/mobs_mc/4_heads.lua @@ -3,8 +3,9 @@ -- NOTE: Strings intentionally not marked for translation, other mods already have these items. -- TODO: Remove this file eventually, all items here are already outsourced in other mods. +-- TODO: Add translation. -local S = minetest.get_translator("mobs_mc") +--local S = minetest.get_translator("mobs_mc") -- Heads system diff --git a/mods/ENTITIES/mobs_mc/blaze.lua b/mods/ENTITIES/mobs_mc/blaze.lua index 146e8da70..a5e6f2bd3 100644 --- a/mods/ENTITIES/mobs_mc/blaze.lua +++ b/mods/ENTITIES/mobs_mc/blaze.lua @@ -20,7 +20,7 @@ mobs:register_mob("mobs_mc:blaze", { xp_max = 10, tilt_fly = false, hostile = true, - rotate = 270, + --rotate = 270, collisionbox = {-0.3, -0.01, -0.3, 0.3, 1.79, 0.3}, rotate = -180, visual = "mesh", diff --git a/mods/ENTITIES/mobs_mc/cow+mooshroom.lua b/mods/ENTITIES/mobs_mc/cow+mooshroom.lua index 0d6d31ffe..6100e5899 100644 --- a/mods/ENTITIES/mobs_mc/cow+mooshroom.lua +++ b/mods/ENTITIES/mobs_mc/cow+mooshroom.lua @@ -89,7 +89,7 @@ local cow_def = { --head code has_head = true, head_bone = "head", - + swap_y_with_x = false, reverse_head_yaw = false, @@ -168,7 +168,7 @@ mooshroom_def.on_rightclick = function(self, clicker) pos.y = pos.y + 0.5 minetest.add_item(pos, {name = mobs_mc.items.mushroom_stew}) end - end + end end mobs:register_mob("mobs_mc:mooshroom", mooshroom_def) diff --git a/mods/ENTITIES/mobs_mc/ender_dragon.lua b/mods/ENTITIES/mobs_mc/ender_dragon.lua index 2111105d3..d2d040ad2 100644 --- a/mods/ENTITIES/mobs_mc/ender_dragon.lua +++ b/mods/ENTITIES/mobs_mc/ender_dragon.lua @@ -16,7 +16,7 @@ mobs:register_mob("mobs_mc:enderdragon", { shoot_arrow = function(self, pos, dir) -- 2-4 damage per arrow local dmg = math.random(2,4) - mobs.shoot_projectile_handling("mobs_mc:dragon_fireball", pos, dir, self.object:get_yaw(), self.object, nil, dmg) + mobs.shoot_projectile_handling("mobs_mc:dragon_fireball", pos, dir, self.object:get_yaw(), self.object, nil, dmg) end, hp_max = 200, hp_min = 200, @@ -24,7 +24,6 @@ mobs:register_mob("mobs_mc:enderdragon", { xp_max = 500, collisionbox = {-2, 0, -2, 2, 2, 2}, eye_height = 1, - physical = false, visual = "mesh", mesh = "mobs_mc_dragon.b3d", textures = { @@ -60,8 +59,6 @@ mobs:register_mob("mobs_mc:enderdragon", { arrow = "mobs_mc:dragon_fireball", shoot_interval = 0.5, shoot_offset = -1.0, - xp_min = 500, - xp_max = 500, animation = { fly_speed = 8, stand_speed = 8, stand_start = 0, stand_end = 20, @@ -114,8 +111,8 @@ mobs:register_mob("mobs_mc:enderdragon", { fire_resistant = true, }) - -local mobs_griefing = minetest.settings:get_bool("mobs_griefing") ~= false +--TODO: replace this setting by a proper gamerules system +local mobs_griefing = minetest.settings:get_bool("mobs_griefing", true) -- dragon fireball (projectile) mobs:register_arrow("mobs_mc:dragon_fireball", { @@ -143,7 +140,9 @@ mobs:register_arrow("mobs_mc:dragon_fireball", { -- node hit, explode hit_node = function(self, pos, node) --mobs:boom(self, pos, 2) - mcl_explosions.explode(self.object:get_pos(), 2,{ drop_chance = 1.0 }) + if mobs_griefing then + mcl_explosions.explode(self.object:get_pos(), 2, { drop_chance = 1.0 }) + end end }) diff --git a/mods/ENTITIES/mobs_mc/enderman.lua b/mods/ENTITIES/mobs_mc/enderman.lua index 9ebc3d6fa..0b6985711 100644 --- a/mods/ENTITIES/mobs_mc/enderman.lua +++ b/mods/ENTITIES/mobs_mc/enderman.lua @@ -318,12 +318,12 @@ mobs:register_mob("mobs_mc:enderman", { for n = 1, #objs do local obj = objs[n] if obj then - if minetest.is_player(obj) then + --if minetest.is_player(obj) then -- Warp from players during day. --if (minetest.get_timeofday() * 24000) > 5001 and (minetest.get_timeofday() * 24000) < 19000 then -- self:teleport(nil) --end - else + if not obj:is_player() then local lua = obj:get_luaentity() if lua then if lua.name == "mcl_bows:arrow_entity" or lua.name == "mcl_throwing:snowball_entity" then diff --git a/mods/ENTITIES/mobs_mc/guardian.lua b/mods/ENTITIES/mobs_mc/guardian.lua index 241ac3444..0916010d2 100644 --- a/mods/ENTITIES/mobs_mc/guardian.lua +++ b/mods/ENTITIES/mobs_mc/guardian.lua @@ -13,7 +13,7 @@ mobs:register_mob("mobs_mc:guardian", { xp_min = 10, xp_max = 10, breath_max = -1, - passive = false, + passive = false, attack_type = "punch", pathfinding = 1, view_range = 16, @@ -94,7 +94,6 @@ mobs:register_mob("mobs_mc:guardian", { makes_footstep_sound = false, fly_in = { mobs_mc.items.water_source, mobs_mc.items.river_water_source }, jump = false, - view_range = 16, }) -- Spawning disabled due to size issues diff --git a/mods/ENTITIES/mobs_mc/guardian_elder.lua b/mods/ENTITIES/mobs_mc/guardian_elder.lua index e44796bad..0c871da7a 100644 --- a/mods/ENTITIES/mobs_mc/guardian_elder.lua +++ b/mods/ENTITIES/mobs_mc/guardian_elder.lua @@ -104,7 +104,6 @@ mobs:register_mob("mobs_mc:guardian_elder", { makes_footstep_sound = false, fly_in = { mobs_mc.items.water_source, mobs_mc.items.river_water_source }, jump = false, - view_range = 16, }) -- Spawning disabled due to size issues <- what do you mean? -j4i diff --git a/mods/ENTITIES/mobs_mc/horse.lua b/mods/ENTITIES/mobs_mc/horse.lua index 461c60efd..db23d410b 100644 --- a/mods/ENTITIES/mobs_mc/horse.lua +++ b/mods/ENTITIES/mobs_mc/horse.lua @@ -38,9 +38,9 @@ end local can_equip_horse_armor = function(entity_id) return entity_id == "mobs_mc:horse" or entity_id == "mobs_mc:skeleton_horse" or entity_id == "mobs_mc:zombie_horse" end -local can_equip_chest = function(entity_id) +--[[local can_equip_chest = function(entity_id) return entity_id == "mobs_mc:mule" or entity_id == "mobs_mc:donkey" -end +end]] local can_breed = function(entity_id) return entity_id == "mobs_mc:horse" or "mobs_mc:mule" or entity_id == "mobs_mc:donkey" end @@ -314,7 +314,7 @@ local horse = { -- Make sure tamed horse is mature and being clicked by owner only if self.tamed and not self.child and self.owner == clicker:get_player_name() then - local inv = clicker:get_inventory() + --local inv = clicker:get_inventory() -- detatch player already riding horse if self.driver and clicker == self.driver then diff --git a/mods/ENTITIES/mobs_mc/iron_golem.lua b/mods/ENTITIES/mobs_mc/iron_golem.lua index 48e573e13..d68dc157b 100644 --- a/mods/ENTITIES/mobs_mc/iron_golem.lua +++ b/mods/ENTITIES/mobs_mc/iron_golem.lua @@ -18,7 +18,7 @@ mobs:register_mob("mobs_mc:iron_golem", { passive = true, rotate = 270, hp_min = 100, - hp_max = 100, + hp_max = 100, protect = true, neutral = true, breath_max = -1, diff --git a/mods/ENTITIES/mobs_mc/llama.lua b/mods/ENTITIES/mobs_mc/llama.lua index 58f565ec1..9803b582b 100644 --- a/mods/ENTITIES/mobs_mc/llama.lua +++ b/mods/ENTITIES/mobs_mc/llama.lua @@ -35,7 +35,7 @@ mobs:register_mob("mobs_mc:llama", { shoot_arrow = function(self, pos, dir) -- 2-4 damage per arrow local dmg = 1 - mobs.shoot_projectile_handling("mobs_mc:spit", pos, dir, self.object:get_yaw(), self.object, nil, dmg) + mobs.shoot_projectile_handling("mobs_mc:spit", pos, dir, self.object:get_yaw(), self.object, nil, dmg) end, hp_min = 15, hp_max = 30, @@ -146,7 +146,7 @@ mobs:register_mob("mobs_mc:llama", { self.tamed = true self.owner = clicker:get_player_name() return - end + end --ignore other logic --make baby grow faster @@ -307,19 +307,19 @@ mobs:register_arrow("mobs_mc:spit", { tail_distance_divider = 4, hit_player = function(self, player) - if rawget(_G, "armor") and armor.last_damage_types then + --[[if rawget(_G, "armor") and armor.last_damage_types then armor.last_damage_types[player:get_player_name()] = "spit" - end + end]] player:punch(self.object, 1.0, { full_punch_interval = 1.0, damage_groups = {fleshy = self._damage}, }, nil) end, - hit_mob = function(self, mob) + hit_mob = function(self, mob) mob:punch(self.object, 1.0, { full_punch_interval = 1.0, - damage_groups = {fleshy = _damage}, + damage_groups = {fleshy = self._damage}, }, nil) end, diff --git a/mods/ENTITIES/mobs_mc/ocelot.lua b/mods/ENTITIES/mobs_mc/ocelot.lua index e36abec77..933d7aad4 100644 --- a/mods/ENTITIES/mobs_mc/ocelot.lua +++ b/mods/ENTITIES/mobs_mc/ocelot.lua @@ -151,7 +151,7 @@ end mobs:register_mob("mobs_mc:cat", cat) -local base_spawn_chance = 5000 +--local base_spawn_chance = 5000 -- Spawn ocelot --they get the same as the llama because I'm trying to rework so much of this code right now -j4i diff --git a/mods/ENTITIES/mobs_mc/parrot.lua b/mods/ENTITIES/mobs_mc/parrot.lua index de52c6252..88ab54ff5 100644 --- a/mods/ENTITIES/mobs_mc/parrot.lua +++ b/mods/ENTITIES/mobs_mc/parrot.lua @@ -44,7 +44,7 @@ mobs:register_mob("mobs_mc:parrot", { max = 2, looting = "common",}, }, - animation = { + animation = { stand_speed = 50, walk_speed = 50, fly_speed = 50, diff --git a/mods/ENTITIES/mobs_mc/pig.lua b/mods/ENTITIES/mobs_mc/pig.lua index d7433a092..14c9595b6 100644 --- a/mods/ENTITIES/mobs_mc/pig.lua +++ b/mods/ENTITIES/mobs_mc/pig.lua @@ -130,7 +130,7 @@ mobs:register_mob("mobs_mc:pig", { -- Put saddle on pig local item = clicker:get_wielded_item() local wielditem = item - + if item:get_name() == mobs_mc.items.saddle and self.saddle ~= "yes" then self.base_texture = { "blank.png", -- baby @@ -163,7 +163,7 @@ mobs:register_mob("mobs_mc:pig", { end -- Mount or detach player - local name = clicker:get_player_name() + --local name = clicker:get_player_name() if self.driver and clicker == self.driver then -- Detach if already attached mobs.detach(clicker, {x=1, y=0, z=0}) diff --git a/mods/ENTITIES/mobs_mc/sheep.lua b/mods/ENTITIES/mobs_mc/sheep.lua index 1527fd6da..7e01a1403 100644 --- a/mods/ENTITIES/mobs_mc/sheep.lua +++ b/mods/ENTITIES/mobs_mc/sheep.lua @@ -79,11 +79,11 @@ mobs:register_mob("mobs_mc:sheep", { makes_footstep_sound = true, walk_velocity = 1, run_velocity = 3, - + --head code has_head = true, head_bone = "head", - + swap_y_with_x = false, reverse_head_yaw = false, @@ -150,7 +150,6 @@ mobs:register_mob("mobs_mc:sheep", { do_custom = function(self, dtime) if not self.initial_color_set then local r = math.random(0,100000) - local textures if r <= 81836 then -- 81.836% self.color = "unicolor_white" diff --git a/mods/ENTITIES/mobs_mc/silverfish.lua b/mods/ENTITIES/mobs_mc/silverfish.lua index 148c4c722..05485bc51 100644 --- a/mods/ENTITIES/mobs_mc/silverfish.lua +++ b/mods/ENTITIES/mobs_mc/silverfish.lua @@ -46,7 +46,6 @@ mobs:register_mob("mobs_mc:silverfish", { view_range = 16, attack_type = "punch", damage = 1, - reach = 1, }) mobs:register_egg("mobs_mc:silverfish", S("Silverfish"), "mobs_mc_spawn_icon_silverfish.png", 0) diff --git a/mods/ENTITIES/mobs_mc/skeleton+stray.lua b/mods/ENTITIES/mobs_mc/skeleton+stray.lua index 37b1fc6dd..e0aaef215 100644 --- a/mods/ENTITIES/mobs_mc/skeleton+stray.lua +++ b/mods/ENTITIES/mobs_mc/skeleton+stray.lua @@ -31,12 +31,8 @@ local skeleton = { group_attack = true, visual = "mesh", mesh = "mobs_mc_skeleton.b3d", - textures = { { - "mcl_bows_bow_0.png", -- bow - "mobs_mc_skeleton.png", -- skeleton - } }, - --head code + --head code has_head = false, head_bone = "head", diff --git a/mods/ENTITIES/mobs_mc/vex.lua b/mods/ENTITIES/mobs_mc/vex.lua index c23643cda..da162e5bf 100644 --- a/mods/ENTITIES/mobs_mc/vex.lua +++ b/mods/ENTITIES/mobs_mc/vex.lua @@ -15,7 +15,7 @@ mobs:register_mob("mobs_mc:vex", { spawn_class = "hostile", pathfinding = 1, passive = false, - attack_type = "punch", + attack_type = "dogfight", physical = false, hp_min = 14, hp_max = 14, @@ -36,7 +36,6 @@ mobs:register_mob("mobs_mc:vex", { view_range = 16, walk_velocity = 3.2, run_velocity = 5.9, - attack_type = "dogfight", sounds = { -- TODO: random death = "mobs_mc_vex_death", diff --git a/mods/ENTITIES/mobs_mc/wither.lua b/mods/ENTITIES/mobs_mc/wither.lua index 7c9072f43..8bd8f5341 100644 --- a/mods/ENTITIES/mobs_mc/wither.lua +++ b/mods/ENTITIES/mobs_mc/wither.lua @@ -26,7 +26,6 @@ mobs:register_mob("mobs_mc:wither", { {"mobs_mc_wither.png"}, }, visual_size = {x=4, y=4}, - makes_footstep_sound = true, view_range = 16, fear_height = 4, walk_velocity = 2, @@ -81,7 +80,7 @@ mobs:register_mob("mobs_mc:wither", { end, }) -local mobs_griefing = minetest.settings:get_bool("mobs_griefing") ~= false +--local mobs_griefing = minetest.settings:get_bool("mobs_griefing") ~= false mobs:register_arrow("mobs_mc:wither_skull", { visual = "sprite", diff --git a/mods/ENTITIES/mobs_mc/wolf.lua b/mods/ENTITIES/mobs_mc/wolf.lua index 89a4b4629..2ce142c33 100644 --- a/mods/ENTITIES/mobs_mc/wolf.lua +++ b/mods/ENTITIES/mobs_mc/wolf.lua @@ -35,7 +35,7 @@ local wolf = { --head code has_head = false, head_bone = "head", - + swap_y_with_x = false, reverse_head_yaw = false, @@ -186,7 +186,7 @@ dog.on_rightclick = function(self, clicker) if is_food(item:get_name()) then -- Feed to increase health local hp = self.health - local hp_add = 0 + local hp_add -- Use eatable group to determine health boost local eatable = minetest.get_item_group(item, "eatable") if eatable > 0 then From b6dd8d5c44db47fd04cadc3ca180e6d8c38f9c39 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 23 May 2021 15:13:44 +0200 Subject: [PATCH 171/418] [mcl_paintings] fix warnings --- mods/ENTITIES/mcl_paintings/init.lua | 20 +++++++++++--------- mods/ENTITIES/mcl_paintings/paintings.lua | 6 +++--- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/mods/ENTITIES/mcl_paintings/init.lua b/mods/ENTITIES/mcl_paintings/init.lua index cb85ee5f8..be210c74c 100644 --- a/mods/ENTITIES/mcl_paintings/init.lua +++ b/mods/ENTITIES/mcl_paintings/init.lua @@ -4,9 +4,11 @@ dofile(minetest.get_modpath(minetest.get_current_modname()).."/paintings.lua") local S = minetest.get_translator("mcl_paintings") +local math = math + local wood = "[combine:16x16:-192,0=mcl_paintings_paintings.png" -local is_protected = function(pos, name) +local function is_protected(pos, name) if minetest.is_protected(pos, name) then minetest.record_protection_violation(pos, name) return true @@ -17,7 +19,7 @@ end -- Check if there's a painting for provided painting size. -- If yes, returns the arguments. -- If not, returns the next smaller available painting. -local shrink_painting = function(x, y) +local function shrink_painting(x, y) if x > 4 or y > 4 then return nil end @@ -43,7 +45,7 @@ local shrink_painting = function(x, y) end end -local get_painting = function(x, y, motive) +local function get_painting(x, y, motive) local painting = mcl_paintings.paintings[y] and mcl_paintings.paintings[y][x] and mcl_paintings.paintings[y][x][motive] if not painting then return nil @@ -53,7 +55,7 @@ local get_painting = function(x, y, motive) return "[combine:"..sx.."x"..sy..":"..px..","..py.."=mcl_paintings_paintings.png" end -local get_random_painting = function(x, y) +local function get_random_painting(x, y) if not mcl_paintings.paintings[y] or not mcl_paintings.paintings[y][x] then return nil end @@ -65,7 +67,7 @@ local get_random_painting = function(x, y) return get_painting(x, y, r), r end -local size_to_minmax = function(size) +--[[local function size_to_minmax(size) local min, max if size == 2 then min = -0.5 @@ -81,13 +83,13 @@ local size_to_minmax = function(size) max = 0.5 end return min, max -end +end]] -local size_to_minmax_entity = function(size) +local function size_to_minmax_entity(size) return -size/2, size/2 end -local set_entity = function(object) +local function set_entity(object) local ent = object:get_luaentity() local wallm = ent._facing local xsize = ent._xsize @@ -169,7 +171,7 @@ minetest.register_entity("mcl_paintings:painting", { on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, dir, damage) -- Drop as item on punch if puncher and puncher:is_player() then - kname = puncher:get_player_name() + local kname = puncher:get_player_name() local pos = self._pos if not pos then pos = self.object:get_pos() diff --git a/mods/ENTITIES/mcl_paintings/paintings.lua b/mods/ENTITIES/mcl_paintings/paintings.lua index d606306c2..ccf584364 100644 --- a/mods/ENTITIES/mcl_paintings/paintings.lua +++ b/mods/ENTITIES/mcl_paintings/paintings.lua @@ -3,7 +3,7 @@ local TS = 16 -- texture size mcl_paintings.paintings = { [1] = { [1] = { - { cx = 0, cy = 0 }, + { cx = 0, cy = 0 }, { cx = TS, cy = 0 }, { cx = 2*TS, cy = 0 }, { cx = 3*TS, cy = 0 }, @@ -26,7 +26,7 @@ mcl_paintings.paintings = { { cx = 0, cy = 4*TS }, { cx = TS, cy = 4*TS }, }, - [2] = { + [2] = { { cx = 0, cy = 8*TS }, { cx = 2*TS, cy = 8*TS }, { cx = 4*TS, cy = 8*TS }, @@ -35,7 +35,7 @@ mcl_paintings.paintings = { { cx = 10*TS, cy = 8*TS }, }, [3] = 2, - [4] = { + [4] = { { cx = 0, cy = 6*TS }, }, }, From 973a8201adc6f6344affc40351d219c6e71b94e2 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 23 May 2021 16:44:01 +0000 Subject: [PATCH 172/418] Pumpkin blur texture --- .../textures/mcl_farming_pumpkin_hud.png | Bin 0 -> 20377 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/mcl_farming/textures/mcl_farming_pumpkin_hud.png diff --git a/mods/ITEMS/mcl_farming/textures/mcl_farming_pumpkin_hud.png b/mods/ITEMS/mcl_farming/textures/mcl_farming_pumpkin_hud.png new file mode 100644 index 0000000000000000000000000000000000000000..48f47253b9d6cdda13c6303fbbc0dcf36af5144c GIT binary patch literal 20377 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 Ax&QzG literal 0 HcmV?d00001 From dddaed42b62f6a05c073b8cf5ba3f66b55531d81 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 23 May 2021 16:50:09 +0000 Subject: [PATCH 173/418] Obstruct the view of the player when wearing a pumpkin --- mods/ITEMS/mcl_farming/pumpkin.lua | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/mods/ITEMS/mcl_farming/pumpkin.lua b/mods/ITEMS/mcl_farming/pumpkin.lua index 86ddf707b..1c6850f57 100644 --- a/mods/ITEMS/mcl_farming/pumpkin.lua +++ b/mods/ITEMS/mcl_farming/pumpkin.lua @@ -120,8 +120,38 @@ pumpkin_face_base_def._mcl_armor_mob_range_mob = "mobs_mc:enderman" pumpkin_face_base_def._mcl_armor_element = "head" pumpkin_face_base_def._mcl_armor_texture = "mcl_farming_pumpkin_face.png" pumpkin_face_base_def._mcl_armor_preview = "mcl_farming_pumpkin_face_preview.png" + if minetest.get_modpath("mcl_armor") then + local pumpkin_hud = {} + local add_pumpkin_hud = function(player) + pumpkin_hud = player:hud_add({ + hud_elem_type = "image", + position = {x = 0.5, y = 0.5}, + scale = {x = -100, y = -100}, + text = "mcl_farming_pumpkin_hud.png", + }) + end + local remove_pumpkin_hud = function(player) + local player_name = player:get_player_name() + if pumpkin_hud then + player:hud_remove(pumpkin_hud) + end + end + pumpkin_face_base_def.on_secondary_use = mcl_armor.equip_on_use + pumpkin_face_base_def._on_equip = add_pumpkin_hud + pumpkin_face_base_def._on_unequip = remove_pumpkin_hud + + minetest.register_on_joinplayer(function(player) + pumpkin_head = player:get_inventory():get_stack("armor", 2):get_name() == "mcl_farming:pumpkin_face" + if pumpkin_head then + add_pumpkin_hud(player) + end + end) + + minetest.register_on_dieplayer(function(player) + remove_pumpkin_hud(player) + end) end -- Register stem growth From d5a2e5e5144117cb53106aa2845b1f5b2def499b Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 23 May 2021 17:38:53 +0000 Subject: [PATCH 174/418] Add "fake" crosshair when the player is wearing a pumpkin --- mods/ITEMS/mcl_farming/pumpkin.lua | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_farming/pumpkin.lua b/mods/ITEMS/mcl_farming/pumpkin.lua index 1c6850f57..abb698802 100644 --- a/mods/ITEMS/mcl_farming/pumpkin.lua +++ b/mods/ITEMS/mcl_farming/pumpkin.lua @@ -129,6 +129,16 @@ if minetest.get_modpath("mcl_armor") then position = {x = 0.5, y = 0.5}, scale = {x = -100, y = -100}, text = "mcl_farming_pumpkin_hud.png", + z_index = -200 + }) + --this is a fake crosshair, because hotbar and crosshair doesn't support z_index + --TODO: remove this and add correct z_index values when this is fixed: https://github.com/minetest/minetest/issues/9270 + player:hud_add({ + hud_elem_type = "image", + position = {x = 0.5, y = 0.5}, + scale = {x = 1, y = 1}, + text = "crosshair.png", + z_index = -100 }) end local remove_pumpkin_hud = function(player) @@ -137,7 +147,7 @@ if minetest.get_modpath("mcl_armor") then player:hud_remove(pumpkin_hud) end end - + pumpkin_face_base_def.on_secondary_use = mcl_armor.equip_on_use pumpkin_face_base_def._on_equip = add_pumpkin_hud pumpkin_face_base_def._on_unequip = remove_pumpkin_hud From 9b9ec13967192459ee02b67f037005cf660f42cd Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 23 May 2021 19:38:49 +0000 Subject: [PATCH 175/418] =?UTF-8?q?=E2=80=9Emods/ITEMS/mcl=5Ffarming/pumpk?= =?UTF-8?q?in.lua=E2=80=9C=20=C3=A4ndern?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_farming/pumpkin.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/mods/ITEMS/mcl_farming/pumpkin.lua b/mods/ITEMS/mcl_farming/pumpkin.lua index abb698802..6e878e97b 100644 --- a/mods/ITEMS/mcl_farming/pumpkin.lua +++ b/mods/ITEMS/mcl_farming/pumpkin.lua @@ -142,7 +142,6 @@ if minetest.get_modpath("mcl_armor") then }) end local remove_pumpkin_hud = function(player) - local player_name = player:get_player_name() if pumpkin_hud then player:hud_remove(pumpkin_hud) end From 8b11e2fec8668a4caec00e110042f6e7e1649bd5 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 23 May 2021 22:31:13 +0000 Subject: [PATCH 176/418] Add multiplayer support for pumpkin hud --- mods/ITEMS/mcl_farming/pumpkin.lua | 46 ++++++++++++++++++------------ 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/mods/ITEMS/mcl_farming/pumpkin.lua b/mods/ITEMS/mcl_farming/pumpkin.lua index 6e878e97b..43ee77cf6 100644 --- a/mods/ITEMS/mcl_farming/pumpkin.lua +++ b/mods/ITEMS/mcl_farming/pumpkin.lua @@ -124,26 +124,32 @@ pumpkin_face_base_def._mcl_armor_preview = "mcl_farming_pumpkin_face_preview.png if minetest.get_modpath("mcl_armor") then local pumpkin_hud = {} local add_pumpkin_hud = function(player) - pumpkin_hud = player:hud_add({ - hud_elem_type = "image", - position = {x = 0.5, y = 0.5}, - scale = {x = -100, y = -100}, - text = "mcl_farming_pumpkin_hud.png", - z_index = -200 - }) - --this is a fake crosshair, because hotbar and crosshair doesn't support z_index - --TODO: remove this and add correct z_index values when this is fixed: https://github.com/minetest/minetest/issues/9270 - player:hud_add({ - hud_elem_type = "image", - position = {x = 0.5, y = 0.5}, - scale = {x = 1, y = 1}, - text = "crosshair.png", - z_index = -100 - }) + local name = player:get_player_name() + pumpkin_hud[name] = { + pumpkin_blur = player:hud_add({ + hud_elem_type = "image", + position = {x = 0.5, y = 0.5}, + scale = {x = -100, y = -100}, + text = "mcl_farming_pumpkin_hud.png", + z_index = -200 + }), + --this is a fake crosshair, because hotbar and crosshair doesn't support z_index + --TODO: remove this and add correct z_index values + fake_crosshair = player:hud_add({ + hud_elem_type = "image", + position = {x = 0.5, y = 0.5}, + scale = {x = 1, y = 1}, + text = "crosshair.png", + z_index = -100 + }) + } end local remove_pumpkin_hud = function(player) - if pumpkin_hud then - player:hud_remove(pumpkin_hud) + local name = player:get_player_name() + if pumpkin_hud[name] then + player:hud_remove(pumpkin_hud[name].pumpkin_blur) + player:hud_remove(pumpkin_hud[name].fake_crosshair) + pumpkin_hud[name] = nil end end @@ -157,10 +163,12 @@ if minetest.get_modpath("mcl_armor") then add_pumpkin_hud(player) end end) - minetest.register_on_dieplayer(function(player) remove_pumpkin_hud(player) end) + minetest.register_on_leaveplayer(function(player) + remove_pumpkin_hud(player) + end) end -- Register stem growth From 66f132a645bee3be6913a7ccb0b407b06078462f Mon Sep 17 00:00:00 2001 From: cora Date: Mon, 24 May 2021 12:41:16 +0200 Subject: [PATCH 177/418] fix crash on creeper explosion ( #1755 ) --- .../mcl_mobs/api/mob_functions/movement.lua | 53 ++++++++++--------- 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/movement.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/movement.lua index 9a5fd9ea1..04e3e370c 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/movement.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/movement.lua @@ -22,7 +22,7 @@ local DEFAULT_CLIMB_SPEED = 3 mobs.stick_in_cobweb = function(self) local current_velocity = self.object:get_velocity() - + local goal_velocity = vector_multiply(vector_normalize(current_velocity), 0.4) goal_velocity.y = -0.5 @@ -38,8 +38,11 @@ end --this is a generic float function mobs.float = function(self) - if self.object:get_acceleration().y ~= 0 then + local acceleration = self.object:get_acceleration() + if acceleration and acceleration.y ~= 0 then self.object:set_acceleration(vector_new(0,0,0)) + else + return end local current_velocity = self.object:get_velocity() @@ -86,10 +89,10 @@ end --[[ - _ _ + _ _ | | | | | | __ _ _ __ __| | -| | / _` | '_ \ / _` | +| | / _` | '_ \ / _` | | |___| (_| | | | | (_| | \_____/\__,_|_| |_|\__,_| ]] @@ -100,7 +103,7 @@ end --internal = lua (self.yaw) --engine = c++ (self.object:get_yaw()) mobs.set_velocity = function(self, v) - + local yaw = (self.yaw or 0) local current_velocity = self.object:get_velocity() @@ -152,7 +155,7 @@ mobs.jump = function(self, velocity) --fallback velocity to allow modularity velocity = velocity or DEFAULT_JUMP_HEIGHT - self.object:add_velocity(vector_new(0,velocity,0)) + self.object:add_velocity(vector_new(0,velocity,0)) end --make mobs fall slowly @@ -188,10 +191,10 @@ end --[[ - _____ _ -/ ___| (_) -\ `--.__ ___ _ __ ___ - `--. \ \ /\ / / | '_ ` _ \ + _____ _ +/ ___| (_) +\ `--.__ ___ _ __ ___ + `--. \ \ /\ / / | '_ ` _ \ /\__/ /\ V V /| | | | | | | \____/ \_/\_/ |_|_| |_| |_| ]]-- @@ -221,7 +224,7 @@ mobs.flop = function(self, velocity) local final_additional_force = vector_multiply(minetest_yaw_to_dir(dir), force) --place in the "flop" velocity to make the mob flop - final_additional_force.y = velocity + final_additional_force.y = velocity self.object:add_velocity(final_additional_force) @@ -235,7 +238,7 @@ end --internal = lua (self.yaw) --engine = c++ (self.object:get_yaw()) mobs.set_swim_velocity = function(self, v) - + local yaw = (self.yaw or 0) local pitch = (self.pitch or 0) @@ -265,14 +268,14 @@ mobs.set_swim_velocity = function(self, v) end --[[ -______ _ -| ___| | -| |_ | |_ _ +______ _ +| ___| | +| |_ | |_ _ | _| | | | | | | | | | |_| | \_| |_|\__, | __/ | - |___/ + |___/ ]]-- -- move mob in facing direction @@ -280,7 +283,7 @@ ______ _ --internal = lua (self.yaw) --engine = c++ (self.object:get_yaw()) mobs.set_fly_velocity = function(self, v) - + local yaw = (self.yaw or 0) local pitch = (self.pitch or 0) @@ -332,14 +335,14 @@ end --[[ - ___ - |_ | - | |_ _ _ __ ___ _ __ - | | | | | '_ ` _ \| '_ \ + ___ + |_ | + | |_ _ _ __ ___ _ __ + | | | | | '_ ` _ \| '_ \ /\__/ / |_| | | | | | | |_) | -\____/ \__,_|_| |_| |_| .__/ - | | - |_| +\____/ \__,_|_| |_| |_| .__/ + | | + |_| ]]-- --special mob jump movement @@ -388,4 +391,4 @@ mobs.swap_auto_step_height_adjust = function(self) elseif y_vel ~= 0 and self.stepheight ~= 0 then self.stepheight = 0 end -end \ No newline at end of file +end From ba38f787e2f22c3e10d392bf94bd85bf3f712022 Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 24 May 2021 11:09:47 +0000 Subject: [PATCH 178/418] Fix local function code style --- mods/ITEMS/mcl_farming/pumpkin.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_farming/pumpkin.lua b/mods/ITEMS/mcl_farming/pumpkin.lua index 43ee77cf6..d9e2b59c5 100644 --- a/mods/ITEMS/mcl_farming/pumpkin.lua +++ b/mods/ITEMS/mcl_farming/pumpkin.lua @@ -123,7 +123,7 @@ pumpkin_face_base_def._mcl_armor_preview = "mcl_farming_pumpkin_face_preview.png if minetest.get_modpath("mcl_armor") then local pumpkin_hud = {} - local add_pumpkin_hud = function(player) + local function add_pumpkin_hud(player) local name = player:get_player_name() pumpkin_hud[name] = { pumpkin_blur = player:hud_add({ @@ -144,7 +144,7 @@ if minetest.get_modpath("mcl_armor") then }) } end - local remove_pumpkin_hud = function(player) + local function remove_pumpkin_hud(player) local name = player:get_player_name() if pumpkin_hud[name] then player:hud_remove(pumpkin_hud[name].pumpkin_blur) From f76b66eec6e596cab2ecaf310c8e2dd6d6820cf1 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 25 May 2021 00:37:02 +0200 Subject: [PATCH 179/418] [mcl_mobs] fix some warnings (131 remaining!) --- .luacheckrc | 3 + mods/ENTITIES/mcl_mobs/api/api.lua | 16 +- .../mcl_mobs/api/mob_functions/ai.lua | 221 +++++++----------- .../mcl_mobs/api/mob_functions/animation.lua | 20 +- .../attack_type_instructions.lua | 55 +++-- ...ackup_code_api.lua => backup_code_api.txt} | 74 +++--- .../mcl_mobs/api/mob_functions/breeding.lua | 53 ++--- .../mcl_mobs/api/mob_functions/collision.lua | 15 +- .../api/mob_functions/death_logic.lua | 16 +- .../api/mob_functions/environment.lua | 20 +- .../mcl_mobs/api/mob_functions/head_logic.lua | 176 +++++++------- .../api/mob_functions/interaction.lua | 51 ++-- .../api/mob_functions/mob_effects.lua | 12 +- .../mcl_mobs/api/mob_functions/movement.lua | 87 ++++--- .../mcl_mobs/api/mob_functions/set_up.lua | 10 +- mods/ENTITIES/mcl_mobs/api/mount.lua | 34 +-- mods/ENTITIES/mcl_mobs/api/spawning.lua | 10 +- 17 files changed, 387 insertions(+), 486 deletions(-) rename mods/ENTITIES/mcl_mobs/api/mob_functions/{backup_code_api.lua => backup_code_api.txt} (97%) diff --git a/.luacheckrc b/.luacheckrc index 910d73a11..9d0b8cb2a 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -47,6 +47,9 @@ read_globals = { --GENERAL "default", + --ENTITIES + "cmi", + --HUD "sfinv", "sfinv_buttons", "unified_inventory", "cmsg", "inventory_plus", } \ No newline at end of file diff --git a/mods/ENTITIES/mcl_mobs/api/api.lua b/mods/ENTITIES/mcl_mobs/api/api.lua index d413bae72..878474cf1 100644 --- a/mods/ENTITIES/mcl_mobs/api/api.lua +++ b/mods/ENTITIES/mcl_mobs/api/api.lua @@ -92,13 +92,13 @@ local node_snowblock = "mcl_core:snowblock" local node_snow = "mcl_core:snow" mobs.fallback_node = minetest.registered_aliases["mapgen_dirt"] or "mcl_core:dirt" -local mod_weather = minetest_get_modpath("mcl_weather") ~= nil -local mod_explosions = minetest_get_modpath("mcl_explosions") ~= nil -local mod_mobspawners = minetest_get_modpath("mcl_mobspawners") ~= nil -local mod_hunger = minetest_get_modpath("mcl_hunger") ~= nil -local mod_worlds = minetest_get_modpath("mcl_worlds") ~= nil -local mod_armor = minetest_get_modpath("mcl_armor") ~= nil -local mod_experience = minetest_get_modpath("mcl_experience") ~= nil +local mod_weather = minetest_get_modpath("mcl_weather") +local mod_explosions = minetest_get_modpath("mcl_explosions") +local mod_mobspawners = minetest_get_modpath("mcl_mobspawners") +local mod_hunger = minetest_get_modpath("mcl_hunger") +local mod_worlds = minetest_get_modpath("mcl_worlds") +local mod_armor = minetest_get_modpath("mcl_armor") +local mod_experience = minetest_get_modpath("mcl_experience") -- random locals I found @@ -743,7 +743,7 @@ function mobs:register_egg(mob, desc, background, addegg, no_creative) nametag = string.sub(nametag, 1, MAX_MOB_NAME_LENGTH) end ent.nametag = nametag - update_tag(ent) + --update_tag(ent) end -- if not in creative then take item diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua index d75bda6c6..df2ccade2 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua @@ -1,12 +1,8 @@ -local math_random = math.random -local math_pi = math.pi -local math_floor = math.floor -local math_round = math.round +local math = math +local vector = vector +local string = string -local vector_multiply = vector.multiply -local vector_add = vector.add -local vector_new = vector.new -local vector_distance = vector.distance +local tonumber = tonumber local minetest_yaw_to_dir = minetest.yaw_to_dir local minetest_get_item_group = minetest.get_item_group @@ -28,16 +24,16 @@ end --a simple helper function for rounding --http://lua-users.org/wiki/SimpleRound -function round2(num, numDecimalPlaces) +local function round2(num, numDecimalPlaces) return tonumber(string.format("%." .. (numDecimalPlaces or 0) .. "f", num)) end --[[ - _ _ + _ _ | | | | | | __ _ _ __ __| | -| | / _` | '_ \ / _` | +| | / _` | '_ \ / _` | | |___| (_| | | | | (_| | \_____/\__,_|_| |_|\__,_| ]]-- @@ -50,24 +46,23 @@ local cliff_check = function(self,dtime) end local pos = self.object:get_pos() - local dir = minetest_yaw_to_dir(self.yaw) + local dir = minetest_yaw_to_dir(self.yaw) local collisionbox = self.object:get_properties().collisionbox local radius = collisionbox[4] + 0.5 - dir = vector_multiply(dir,radius) + dir = vector.multiply(dir,radius) - local free_fall, blocker = minetest_line_of_sight( + local free_fall = minetest_line_of_sight( {x = pos.x + dir.x, y = pos.y, z = pos.z + dir.z}, {x = pos.x + dir.x, y = pos.y - self.fear_height, z = pos.z + dir.z}) return free_fall end - -- state switching logic (stand, walk, run, attacks) local land_state_list_wandering = {"stand", "walk"} -local land_state_switch = function(self, dtime) +local function land_state_switch(self, dtime) --do math before sure not attacking, following, or running away so continue --doing random walking for mobs if all states are not met @@ -93,8 +88,8 @@ local land_state_switch = function(self, dtime) end --ignore everything else if following - if mobs.check_following(self) and - (not self.breed_lookout_timer or (self.breed_lookout_timer and self.breed_lookout_timer == 0)) and + if mobs.check_following(self) and + (not self.breed_lookout_timer or (self.breed_lookout_timer and self.breed_lookout_timer == 0)) and (not self.breed_timer or (self.breed_timer and self.breed_timer == 0)) then self.state = "follow" return @@ -136,7 +131,6 @@ local land_state_execution = function(self,dtime) if not self.object:get_properties() then return end - --timer to time out looking for mate if self.breed_lookout_timer and self.breed_lookout_timer > 0 then @@ -176,12 +170,12 @@ local land_state_execution = function(self,dtime) if velocity.y < 0 then --lua is acting really weird so we have to help it if round2(self.object:get_acceleration().y, 1) == -self.gravity then - self.object:set_acceleration(vector_new(0,0,0)) + self.object:set_acceleration(vector.new(0,0,0)) mobs.mob_fall_slow(self) end else if round2(self.object:get_acceleration().y, 1) == 0 then - self.object:set_acceleration(vector_new(0,-self.gravity,0)) + self.object:set_acceleration(vector.new(0,-self.gravity,0)) end end end @@ -206,15 +200,13 @@ local land_state_execution = function(self,dtime) end mobs.lock_yaw(self) - elseif self.state == "follow" then - + elseif self.state == "follow" then --always look at players mobs.set_yaw_while_following(self) --check distance - local distance_from_follow_person = vector_distance(self.object:get_pos(), self.following_person:get_pos()) + local distance_from_follow_person = vector.distance(self.object:get_pos(), self.following_person:get_pos()) local distance_2d = mobs.get_2d_distance(self.object:get_pos(), self.following_person:get_pos()) - --don't push the player if too close --don't spin around randomly if self.follow_distance < distance_from_follow_person and self.minimum_follow_distance < distance_2d then @@ -240,7 +232,7 @@ local land_state_execution = function(self,dtime) self.walk_timer = math.random(1,6) + math.random() --set the mob into a random direction - self.yaw = (math_random() * (math.pi * 2)) + self.yaw = (math.random() * (math.pi * 2)) end --do animation @@ -253,15 +245,13 @@ local land_state_execution = function(self,dtime) local node_in_front_of = mobs.jump_check(self) if node_in_front_of == 1 then - mobs.jump(self) - - --turn if on the edge of cliff - --(this is written like this because unlike - --jump_check which simply tells the mob to jump - --this requires a mob to turn, removing the - --ease of a full implementation for it in a single - --function) + --turn if on the edge of cliff + --(this is written like this because unlike + --jump_check which simply tells the mob to jump + --this requires a mob to turn, removing the + --ease of a full implementation for it in a single + --function) elseif node_in_front_of == 2 or (self.fear_height ~= 0 and cliff_check(self,dtime)) then --turn 45 degrees if so quick_rotate(self,dtime) @@ -292,9 +282,7 @@ local land_state_execution = function(self,dtime) local node_in_front_of = mobs.jump_check(self) if node_in_front_of == 1 then - mobs.jump(self) - --turn if on the edge of cliff --(this is written like this because unlike --jump_check which simply tells the mob to jump @@ -342,7 +330,7 @@ local land_state_execution = function(self,dtime) mobs.set_velocity(self, self.walk_velocity) --smoosh together basically - if vector_distance(self.object:get_pos(), mate:get_pos()) <= self.breed_distance then + if vector.distance(self.object:get_pos(), mate:get_pos()) <= self.breed_distance then mobs.set_mob_animation(self, "stand") if self.special_breed_timer == 0 then self.special_breed_timer = 2 --breeding takes 2 seconds @@ -353,7 +341,7 @@ local land_state_execution = function(self,dtime) --pop a baby out, it's a miracle! local baby_pos = vector.divide(vector.add(self.object:get_pos(), mate:get_pos()), 2) - local baby_mob = minetest.add_entity(pos, self.name, minetest.serialize({baby = true, grow_up_timer = self.grow_up_goal, bred = true})) + minetest.add_entity(baby_pos, self.name, minetest.serialize({baby = true, grow_up_timer = self.grow_up_goal, bred = true})) mobs.play_sound_specific(self,"item_drop_pickup") @@ -375,14 +363,13 @@ local land_state_execution = function(self,dtime) mobs.set_velocity(self,0) end - end - + end if float_now then mobs.float(self) else local acceleration = self.object:get_acceleration() if acceleration and acceleration.y == 0 then - self.object:set_acceleration(vector_new(0,-self.gravity,0)) + self.object:set_acceleration(vector.new(0,-self.gravity,0)) end end end @@ -391,10 +378,10 @@ end --[[ - _____ _ -/ ___| (_) -\ `--.__ ___ _ __ ___ - `--. \ \ /\ / / | '_ ` _ \ + _____ _ +/ ___| (_) +\ `--.__ ___ _ __ ___ + `--. \ \ /\ / / | '_ ` _ \ /\__/ /\ V V /| | | | | | | \____/ \_/\_/ |_|_| |_| |_| ]]-- @@ -416,16 +403,16 @@ end --check if a mob needs to turn while swimming local swim_turn_check = function(self,dtime) - local pos = self.object:get_pos() - pos.y = pos.y + 0.1 - local dir = minetest_yaw_to_dir(self.yaw) + local pos = self.object:get_pos() + pos.y = pos.y + 0.1 + local dir = minetest_yaw_to_dir(self.yaw) - local collisionbox = self.object:get_properties().collisionbox + local collisionbox = self.object:get_properties().collisionbox local radius = collisionbox[4] + 0.5 - vector_multiply(dir, radius) + vector.multiply(dir, radius) - local test_dir = vector.add(pos,dir) + local test_dir = vector.add(pos,dir) local green_flag_1 = minetest_get_item_group(minetest_get_node(test_dir).name, "solid") ~= 0 @@ -437,11 +424,11 @@ local swim_physics_swapper = function(self,inside_swim_node) --should be swimming, gravity is applied, switch to floating if inside_swim_node and self.object:get_acceleration().y ~= 0 then - self.object:set_acceleration(vector_new(0,0,0)) + self.object:set_acceleration(vector.new(0,0,0)) --not be swim, gravity isn't applied, switch to falling elseif not inside_swim_node and self.object:get_acceleration().y == 0 then self.pitch = 0 - self.object:set_acceleration(vector_new(0,-self.gravity,0)) + self.object:set_acceleration(vector.new(0,-self.gravity,0)) end end @@ -482,22 +469,17 @@ local swim_state_execution = function(self,dtime) end mobs.lock_yaw(self) - elseif self.state == "swim" then - self.walk_timer = self.walk_timer - dtime - --reset the walk timer if self.walk_timer <= 0 then - --re-randomize the walk timer self.walk_timer = math.random(1,6) + math.random() - --set the mob into a random direction - self.yaw = (math_random() * (math.pi * 2)) + self.yaw = (math.random() * (math.pi * 2)) --create a truly random pitch, since there is no easy access to pitch math that I can find - self.pitch = math_random() * math.random(1,3) * random_pitch_multiplier[math_random(1,2)] + self.pitch = math.random() * math.random(1,3) * random_pitch_multiplier[math.random(1,2)] end --do animation @@ -535,14 +517,14 @@ end --[[ -______ _ -| ___| | -| |_ | |_ _ +______ _ +| ___| | +| |_ | |_ _ | _| | | | | | | | | | |_| | \_| |_|\__, | - __/ | - |___/ + __/ | + |___/ ]]-- -- state switching logic (stand, walk, run, attacks) @@ -566,16 +548,16 @@ end --check if a mob needs to turn while flying local fly_turn_check = function(self,dtime) - local pos = self.object:get_pos() - pos.y = pos.y + 0.1 - local dir = minetest_yaw_to_dir(self.yaw) + local pos = self.object:get_pos() + pos.y = pos.y + 0.1 + local dir = minetest_yaw_to_dir(self.yaw) - local collisionbox = self.object:get_properties().collisionbox + local collisionbox = self.object:get_properties().collisionbox local radius = collisionbox[4] + 0.5 - vector_multiply(dir, radius) + vector.multiply(dir, radius) - local test_dir = vector.add(pos,dir) + local test_dir = vector.add(pos,dir) local green_flag_1 = minetest_get_item_group(minetest_get_node(test_dir).name, "solid") ~= 0 @@ -587,11 +569,11 @@ local fly_physics_swapper = function(self,inside_fly_node) --should be flyming, gravity is applied, switch to floating if inside_fly_node and self.object:get_acceleration().y ~= 0 then - self.object:set_acceleration(vector_new(0,0,0)) + self.object:set_acceleration(vector.new(0,0,0)) --not be fly, gravity isn't applied, switch to falling elseif not inside_fly_node and self.object:get_acceleration().y == 0 then self.pitch = 0 - self.object:set_acceleration(vector_new(0,-self.gravity,0)) + self.object:set_acceleration(vector.new(0,-self.gravity,0)) end end @@ -635,15 +617,13 @@ local fly_state_execution = function(self,dtime) --reset the walk timer if self.walk_timer <= 0 then - --re-randomize the walk timer self.walk_timer = math.random(1,6) + math.random() - --set the mob into a random direction - self.yaw = (math_random() * (math.pi * 2)) + self.yaw = (math.random() * (math.pi * 2)) --create a truly random pitch, since there is no easy access to pitch math that I can find - self.pitch = math_random() * math.random(1,3) * random_pitch_multiplier[math_random(1,2)] + self.pitch = math.random() * math.random(1,3) * random_pitch_multiplier[math.random(1,2)] end --do animation @@ -663,9 +643,7 @@ local fly_state_execution = function(self,dtime) --enable rotation locking mobs.movement_rotation_lock(self) - elseif self.state == "attack" then - --execute mob attack type --if self.attack_type == "explode" then @@ -697,40 +675,39 @@ end --[[ - ___ - |_ | - | |_ _ _ __ ___ _ __ - | | | | | '_ ` _ \| '_ \ + ___ + |_ | + | |_ _ _ __ ___ _ __ + | | | | | '_ ` _ \| '_ \ /\__/ / |_| | | | | | | |_) | -\____/ \__,_|_| |_| |_| .__/ - | | - |_| +\____/ \__,_|_| |_| |_| .__/ + | | + |_| ]]-- --check if a mob needs to turn while jumping -local jump_turn_check = function(self,dtime) +--[[local function jump_turn_check(self, dtime) + local pos = self.object:get_pos() + pos.y = pos.y + 0.1 + local dir = minetest_yaw_to_dir(self.yaw) - local pos = self.object:get_pos() - pos.y = pos.y + 0.1 - local dir = minetest_yaw_to_dir(self.yaw) - - local collisionbox = self.object:get_properties().collisionbox + local collisionbox = self.object:get_properties().collisionbox local radius = collisionbox[4] + 0.5 - vector_multiply(dir, radius) + vector.multiply(dir, radius) - local test_dir = vector.add(pos,dir) + local test_dir = vector.add(pos,dir) local green_flag_1 = minetest_get_item_group(minetest_get_node(test_dir).name, "solid") ~= 0 - return(green_flag_1) -end + return green_flag_1 +end]] -- state switching logic (stand, jump, run, attacks) local jump_state_list_wandering = {"stand", "jump"} -local jump_state_switch = function(self, dtime) +local function jump_state_switch(self, dtime) self.state_timer = self.state_timer - dtime if self.state_timer <= 0 then self.state_timer = math.random(4,10) + math.random() @@ -739,8 +716,8 @@ local jump_state_switch = function(self, dtime) end -- states are executed here -local jump_state_execution = function(self,dtime) - +local function jump_state_execution(self, dtime) + local node_in_front_of = mobs.jump_check(self) local pos = self.object:get_pos() local collisionbox = self.object:get_properties().collisionbox --get the center of the mob @@ -775,7 +752,7 @@ local jump_state_execution = function(self,dtime) self.walk_timer = math.random(1,6) + math.random() --set the mob into a random direction - self.yaw = (math_random() * (math.pi * 2)) + self.yaw = (math.random() * (math.pi * 2)) end --do animation @@ -793,15 +770,10 @@ local jump_state_execution = function(self,dtime) mobs.jump_move(self,self.walk_velocity) elseif self.state == "run" then - print("run") - elseif self.state == "attack" then - print("attack") - - end - + end if float_now then mobs.float(self) end @@ -811,14 +783,14 @@ end --[[ -___ ___ _ _ _ -| \/ | (_) | | (_) -| . . | __ _ _ _ __ | | ___ __ _ _ ___ +___ ___ _ _ _ +| \/ | (_) | | (_) +| . . | __ _ _ _ __ | | ___ __ _ _ ___ | |\/| |/ _` | | '_ \ | | / _ \ / _` | |/ __| -| | | | (_| | | | | | | |___| (_) | (_| | | (__ +| | | | (_| | | | | | | |___| (_) | (_| | | (__ \_| |_/\__,_|_|_| |_| \_____/\___/ \__, |_|\___| - __/ | - |___/ + __/ | + |___/ ]]-- --the main loop @@ -859,13 +831,13 @@ mobs.mob_step = function(self, dtime) end --color modifier which coincides with the pause_timer - if self.old_health and self.health < self.old_health then + if self.old_health and self.health < self.old_health then self.object:set_texture_mod("^[colorize:red:120") --fix double death sound if self.health > 0 then mobs.play_sound(self,"damage") end - end + end self.old_health = self.health --do death logic (animation, poof, explosion, etc) @@ -916,7 +888,6 @@ mobs.mob_step = function(self, dtime) elseif self.breath < self.breath_max then self.breath = self.breath + dtime - --clean timer reset if self.breath > self.breath_max then self.breath = self.breath_max @@ -948,10 +919,6 @@ mobs.mob_step = function(self, dtime) end end - - - - --baby grows up if self.baby then --print(self.grow_up_timer) @@ -968,8 +935,6 @@ mobs.mob_step = function(self, dtime) mobs.baby_grow_up(self) end end - - --do custom mob instructions if self.do_custom then @@ -1015,7 +980,7 @@ mobs.mob_step = function(self, dtime) self.memory = self.memory - dtime --get if memory player is within viewing range if self.attacking and self.attacking:is_player() then - local distance = vector_distance(self.object:get_pos(), self.attacking:get_pos()) + local distance = vector.distance(self.object:get_pos(), self.attacking:get_pos()) if distance > self.view_range then self.memory = 0 end @@ -1090,7 +1055,7 @@ mobs.mob_step = function(self, dtime) --jump only (like slimes) if self.jump_only then jump_state_switch(self, dtime) - jump_state_execution(self, dtime) + jump_state_execution(self, dtime) --swimming elseif self.swim then swim_state_switch(self, dtime) @@ -1124,28 +1089,22 @@ mobs.mob_step = function(self, dtime) --overrides absolutely everything --mobs get stuck in cobwebs like players if not self.ignores_cobwebs then - local pos = self.object:get_pos() local node = pos and minetest_get_node(pos).name - if node == "mcl_core:cobweb" then - --fight the rest of the api if self.object:get_acceleration().y ~= 0 then - self.object:set_acceleration(vector_new(0,0,0)) + self.object:set_acceleration(vector.new(0,0,0)) end - mobs.stick_in_cobweb(self) - self.was_stuck_in_cobweb = true - else --do not override other functions if self.was_stuck_in_cobweb == true then --return the mob back to normal self.was_stuck_in_cobweb = nil if self.object:get_acceleration().y == 0 and not self.swim and not self.fly then - self.object:set_acceleration(vector_new(0,-self.gravity,0)) + self.object:set_acceleration(vector.new(0,-self.gravity,0)) end end end diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/animation.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/animation.lua index c26d33089..8f2ea9e31 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/animation.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/animation.lua @@ -1,7 +1,7 @@ -local math_pi = math.pi -local math_floor = math.floor -local math_random = math.random -local HALF_PI = math_pi/2 +local math = math +local vector = vector + +local HALF_PI = math.pi/2 local vector_direction = vector.direction @@ -48,8 +48,7 @@ mobs.set_mob_animation = function(self, anim, fixed_frame) self.animation[anim .. "_speed"] or self.animation.speed_normal or 15, 0, self.animation[anim .. "_loop"] ~= false) - - self.current_animation = anim + self.current_animation = anim end @@ -65,14 +64,14 @@ mobs.death_effect = function(pos, yaw, collisionbox, rotate) max = { x = 0.5, y = 0.5, z = 0.5 } end if rotate then - min = vector.rotate(min, {x=0, y=yaw, z=math_pi/2}) - max = vector.rotate(max, {x=0, y=yaw, z=math_pi/2}) + min = vector.rotate(min, {x=0, y=yaw, z=math.pi/2}) + max = vector.rotate(max, {x=0, y=yaw, z=math.pi/2}) min, max = vector.sort(min, max) min = vector.multiply(min, 0.5) max = vector.multiply(max, 0.5) end - minetest_add_particlespawner({ + minetest.add_particlespawner({ amount = 50, time = 0.001, minpos = vector.add(pos, min), @@ -88,7 +87,7 @@ mobs.death_effect = function(pos, yaw, collisionbox, rotate) texture = "mcl_particles_mob_death.png^[colorize:#000000:255", }) - minetest_sound_play("mcl_mobs_mob_poof", { + minetest.sound_play("mcl_mobs_mob_poof", { pos = pos, gain = 1.0, max_hear_distance = 8, @@ -99,7 +98,6 @@ end --this allows auto facedir rotation while making it so mobs --don't look like wet noodles flopping around mobs.movement_rotation_lock = function(self) - local current_engine_yaw = self.object:get_yaw() local current_lua_yaw = self.yaw diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/attack_type_instructions.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/attack_type_instructions.lua index c973f3d1b..f5d33def4 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/attack_type_instructions.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/attack_type_instructions.lua @@ -1,11 +1,11 @@ local vector_direction = vector.direction -local minetest_dir_to_yaw = minetest.dir_to_yaw +--local minetest_dir_to_yaw = minetest.dir_to_yaw local vector_distance = vector.distance local vector_multiply = vector.multiply local math_random = math.random --[[ - _ _ _ _ + _ _ _ _ | | | | | | | | | | | | __ _ _ __ __| | | | | | | | / _` | '_ \ / _` | | | @@ -16,14 +16,14 @@ local math_random = math.random --[[ - _____ _ _ -| ___| | | | | -| |____ ___ __ | | ___ __| | ___ + _____ _ _ +| ___| | | | | +| |____ ___ __ | | ___ __| | ___ | __\ \/ / '_ \| |/ _ \ / _` |/ _ \ | |___> <| |_) | | (_) | (_| | __/ \____/_/\_\ .__/|_|\___/ \__,_|\___| - | | - |_| + | | + |_| ]]-- mobs.explode_attack_walk = function(self,dtime) @@ -74,7 +74,6 @@ mobs.explode_attack_walk = function(self,dtime) if node_in_front_of == 1 then mobs.jump(self) end - --do biggening explosion thing if self.explosion_animation and self.explosion_animation > self.explosion_timer then @@ -102,10 +101,10 @@ end --[[ -______ _ -| ___ \ | | -| |_/ / _ _ __ ___| |__ -| __/ | | | '_ \ / __| '_ \ +______ _ +| ___ \ | | +| |_/ / _ _ __ ___| |__ +| __/ | | | '_ \ / __| '_ \ | | | |_| | | | | (__| | | | \_| \__,_|_| |_|\___|_| |_| ]]-- @@ -113,7 +112,6 @@ ______ _ mobs.punch_attack_walk = function(self,dtime) - --this needs an exception if self.attacking == nil or not self.attacking:is_player() then self.attacking = nil @@ -187,14 +185,14 @@ end --[[ -______ _ _ _ _ -| ___ \ (_) | | (_) | -| |_/ / __ ___ _ ___ ___| |_ _| | ___ +______ _ _ _ _ +| ___ \ (_) | | (_) | +| |_/ / __ ___ _ ___ ___| |_ _| | ___ | __/ '__/ _ \| |/ _ \/ __| __| | |/ _ \ | | | | | (_) | | __/ (__| |_| | | __/ \_| |_| \___/| |\___|\___|\__|_|_|\___| - _/ | - |__/ + _/ | + |__/ ]]-- @@ -255,40 +253,39 @@ end --[[ - _ ______ _ _ + _ ______ _ _ | | | ___| | | | | | | |_ | |_ _ | | | | | _| | | | | | | | |_| | | | | |_| | |_| (_) \_| |_|\__, | (_) - __/ | - |___/ + __/ | + |___/ ]]-- --[[ -______ _ _ _ _ -| ___ \ (_) | | (_) | -| |_/ / __ ___ _ ___ ___| |_ _| | ___ +______ _ _ _ _ +| ___ \ (_) | | (_) | +| |_/ / __ ___ _ ___ ___| |_ _| | ___ | __/ '__/ _ \| |/ _ \/ __| __| | |/ _ \ | | | | | (_) | | __/ (__| |_| | | __/ \_| |_| \___/| |\___|\___|\__|_|_|\___| - _/ | - |__/ + _/ | + |__/ ]]-- local random_pitch_multiplier = {-1,1} mobs.projectile_attack_fly = function(self, dtime) - --this needs an exception if self.attacking == nil or not self.attacking:is_player() then self.attacking = nil return end - + --this is specifically for random ghast movement if self.fly_random_while_attack then @@ -315,7 +312,7 @@ mobs.projectile_attack_fly = function(self, dtime) local distance_from_attacking = vector_distance(self.object:get_pos(), self.attacking:get_pos()) - if distance_from_attacking >= self.reach then + if distance_from_attacking >= self.reach then mobs.set_pitch_while_attacking(self) mobs.set_fly_velocity(self, self.run_velocity) mobs.set_mob_animation(self,"run") diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/backup_code_api.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/backup_code_api.txt similarity index 97% rename from mods/ENTITIES/mcl_mobs/api/mob_functions/backup_code_api.lua rename to mods/ENTITIES/mcl_mobs/api/mob_functions/backup_code_api.txt index 76c062a40..48233d0b4 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/backup_code_api.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/backup_code_api.txt @@ -1,4 +1,7 @@ -local disable_physics = function(object, luaentity, ignore_check, reset_movement) +local math = math +local vector = vector + +local function disable_physics(object, luaentity, ignore_check, reset_movement) if luaentity.physical_state == true or ignore_check == true then luaentity.physical_state = false object:set_properties({ @@ -12,7 +15,7 @@ local disable_physics = function(object, luaentity, ignore_check, reset_movement end ----For Water Flowing: -local enable_physics = function(object, luaentity, ignore_check) +local function enable_physics(object, luaentity, ignore_check) if luaentity.physical_state == false or ignore_check == true then luaentity.physical_state = true object:set_properties({ @@ -272,7 +275,7 @@ local falling = function(self, pos) self.object:set_acceleration({ x = 0, - y = -self.fall_speed / (math_max(1, v.y) ^ 2), + y = -self.fall_speed / (math.max(1, v.y) ^ 2), z = 0 }) end @@ -503,9 +506,9 @@ local follow_flop = function(self) if sdef and sdef.walkable then mob_sound(self, "flop") self.object:set_velocity({ - x = math_random(-FLOP_HOR_SPEED, FLOP_HOR_SPEED), + x = math.random(-FLOP_HOR_SPEED, FLOP_HOR_SPEED), y = FLOP_HEIGHT, - z = math_random(-FLOP_HOR_SPEED, FLOP_HOR_SPEED), + z = math.random(-FLOP_HOR_SPEED, FLOP_HOR_SPEED), }) end @@ -987,7 +990,7 @@ local check_for_death = function(self, cause, cmi_cause) item_drop(self, cooked, looting) if mod_experience and ((not self.child) or self.type ~= "animal") and (minetest_get_us_time() - self.xp_timestamp <= 5000000) then - mcl_experience.throw_experience(self.object:get_pos(), math_random(self.xp_min, self.xp_max)) + mcl_experience.throw_experience(self.object:get_pos(), math.random(self.xp_min, self.xp_max)) end end end @@ -1361,7 +1364,7 @@ local do_attack = function(self, player) self.state = "attack" -- TODO: Implement war_cry sound without being annoying - --if math_random(0, 100) < 90 then + --if math.random(0, 100) < 90 then --mob_sound(self, "war_cry", true) --end end @@ -1396,7 +1399,7 @@ local mob_sound = function(self, soundname, is_opinion, fixed_pitch) pitch = base_pitch end -- randomize the pitch a bit - pitch = pitch + math_random(-10, 10) * 0.005 + pitch = pitch + math.random(-10, 10) * 0.005 end minetest_sound_play(sound, { object = self.object, @@ -1699,7 +1702,7 @@ local do_env_damage = function(self) end if drowning then - self.breath = math_max(0, self.breath - 1) + self.breath = math.max(0, self.breath - 1) effect(pos, 2, "bubble.png", nil, nil, 1, nil) if self.breath <= 0 then @@ -2044,7 +2047,7 @@ local breed = function(self) -- Give XP if mod_experience then - mcl_experience.throw_experience(pos, math_random(1, 7)) + mcl_experience.throw_experience(pos, math.random(1, 7)) end -- custom breed function @@ -2061,7 +2064,7 @@ local breed = function(self) -- Use texture of one of the parents - local p = math_random(1, 2) + local p = math.random(1, 2) if p == 1 then ent_c.base_texture = parent1.base_texture else @@ -2091,7 +2094,7 @@ local replace = function(self, pos) or not self.replace_what or self.child == true or self.object:get_velocity().y ~= 0 - or math_random(1, self.replace_rate) > 1 then + or math.random(1, self.replace_rate) > 1 then return end @@ -2099,7 +2102,7 @@ local replace = function(self, pos) if type(self.replace_what[1]) == "table" then - local num = math_random(#self.replace_what) + local num = math.random(#self.replace_what) what = self.replace_what[num][1] or "" with = self.replace_what[num][2] or "" @@ -2163,7 +2166,7 @@ function do_states(self) if self.state == "stand" then - if math_random(1, 4) == 1 then + if math.random(1, 4) == 1 then local lp = nil local s = self.object:get_pos() @@ -2189,7 +2192,7 @@ function do_states(self) if lp.x > s.x then yaw = yaw + math_pi end else - yaw = yaw + math_random(-0.5, 0.5) + yaw = yaw + math.random(-0.5, 0.5) end yaw = set_yaw(self, yaw, 8) @@ -2204,7 +2207,7 @@ function do_states(self) if self.walk_chance ~= 0 and self.facing_fence ~= true - and math_random(1, 100) <= self.walk_chance + and math.random(1, 100) <= self.walk_chance and is_at_cliff_or_danger(self) == false then set_velocity(self, self.walk_velocity) @@ -2254,7 +2257,7 @@ function do_states(self) {x = s.x + 5, y = s.y + 1, z = s.z + 5}, {"group:solid"}) - lp = #lp > 0 and lp[math_random(#lp)] + lp = #lp > 0 and lp[math.random(#lp)] -- did we find land? if lp then @@ -2280,8 +2283,8 @@ function do_states(self) else -- Randomly turn - if math_random(1, 100) <= 30 then - yaw = yaw + math_random(-0.5, 0.5) + if math.random(1, 100) <= 30 then + yaw = yaw + math.random(-0.5, 0.5) yaw = set_yaw(self, yaw, 8) end end @@ -2289,9 +2292,9 @@ function do_states(self) yaw = set_yaw(self, yaw, 8) -- otherwise randomly turn - elseif math_random(1, 100) <= 30 then + elseif math.random(1, 100) <= 30 then - yaw = yaw + math_random(-0.5, 0.5) + yaw = yaw + math.random(-0.5, 0.5) yaw = set_yaw(self, yaw, 8) end @@ -2302,7 +2305,7 @@ function do_states(self) end if self.facing_fence == true or cliff_or_danger - or math_random(1, 100) <= 30 then + or math.random(1, 100) <= 30 then set_velocity(self, 0) self.state = "stand" @@ -2602,7 +2605,7 @@ function do_states(self) self.timer = 0 if self.double_melee_attack - and math_random(1, 2) == 1 then + and math.random(1, 2) == 1 then set_animation(self, "punch2") else set_animation(self, "punch") @@ -2669,7 +2672,7 @@ function do_states(self) if self.shoot_interval and self.timer > self.shoot_interval and not minetest_raycast(p, self.attack:get_pos(), false, false):next() - and math_random(1, 100) <= 60 then + and math.random(1, 100) <= 60 then self.timer = 0 set_animation(self, "shoot") @@ -2759,7 +2762,7 @@ end -- Code to execute before custom on_rightclick handling -local on_rightclick_prefix = function(self, clicker) +local function on_rightclick_prefix(self, clicker) local item = clicker:get_wielded_item() -- Name mob with nametag @@ -2785,17 +2788,17 @@ local on_rightclick_prefix = function(self, clicker) return false end -local create_mob_on_rightclick = function(on_rightclick) +--[[local function create_mob_on_rightclick(on_rightclick) return function(self, clicker) local stop = on_rightclick_prefix(self, clicker) if (not stop) and (on_rightclick) then on_rightclick(self, clicker) end end -end +end]] -- set and return valid yaw -local set_yaw = function(self, yaw, delay, dtime) +local function set_yaw(self, yaw, delay, dtime) if not yaw or yaw ~= yaw then yaw = 0 @@ -2805,7 +2808,7 @@ local set_yaw = function(self, yaw, delay, dtime) if delay == 0 then if self.shaking and dtime then - yaw = yaw + (math_random() * 2 - 1) * 5 * dtime + yaw = yaw + (math.random() * 2 - 1) * 5 * dtime end self.yaw(yaw) update_roll(self) @@ -2825,8 +2828,7 @@ function mobs:yaw(self, yaw, delay, dtime) end -mob_step = function() - +--mob_step = function() --if self.state == "die" then -- print("need custom die stop moving thing") -- return @@ -2901,7 +2903,7 @@ mob_step = function() --end -- mob plays random sound at times - --if math_random(1, 70) == 1 then + --if math.random(1, 70) == 1 then -- mob_sound(self, "random", true) --end @@ -2934,11 +2936,11 @@ mob_step = function() --if is_at_water_danger(self) and self.state ~= "attack" then - -- if math_random(1, 10) <= 6 then + -- if math.random(1, 10) <= 6 then -- set_velocity(self, 0) -- self.state = "stand" -- set_animation(self, "stand") - -- yaw = yaw + math_random(-0.5, 0.5) + -- yaw = yaw + math.random(-0.5, 0.5) -- yaw = set_yaw(self, yaw, 8) -- end --end @@ -2982,7 +2984,7 @@ mob_step = function() mcl_burning.extinguish(self.object) self.object:remove() elseif self.lifetimer <= 10 then - if math_random(10) < 4 then + if math.random(10) < 4 then self.despawn_immediately = true else self.lifetimer = 20 @@ -2991,4 +2993,4 @@ mob_step = function() end ]]-- -end +--end diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/breeding.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/breeding.lua index 5dc0b8884..57650a9c9 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/breeding.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/breeding.lua @@ -1,14 +1,13 @@ local minetest_get_objects_inside_radius = minetest.get_objects_inside_radius -local vector_distance = vector.distance +local vector = vector --check to see if someone nearby has some tasty food mobs.check_following = function(self) -- returns true or false - --ignore if not self.follow then self.following_person = nil - return(false) + return false end --hey look, this thing works for passive mobs too! @@ -20,20 +19,20 @@ mobs.check_following = function(self) -- returns true or false --safety check if not stack then self.following_person = nil - return(false) + return false end local item_name = stack:get_name() --all checks have passed, that guy has some good looking food if item_name == self.follow then self.following_person = follower - return(true) + return true end end --everything failed self.following_person = nil - return(false) + return false end --a function which attempts to make mobs enter @@ -42,30 +41,30 @@ mobs.enter_breed_state = function(self,clicker) --do not breed if baby if self.baby then - return(false) + return false end --do not do anything if looking for mate or --if cooling off from breeding if self.breed_lookout_timer > 0 or self.breed_timer > 0 then - return(false) + return false end --if this is caught, that means something has gone --seriously wrong if not clicker or not clicker:is_player() then - return(false) + return false end local stack = clicker:get_wielded_item() --safety check if not stack then - return(false) + return false end local item_name = stack:get_name() --all checks have passed, that guy has some good looking food - if item_name == self.follow then + if item_name == self.follow then if not minetest.is_creative_enabled(clicker:get_player_name()) then stack:take_item() clicker:set_wielded_item(stack) @@ -73,11 +72,11 @@ mobs.enter_breed_state = function(self,clicker) self.breed_lookout_timer = self.breed_lookout_timer_goal self.bred = true mobs.play_sound_specific(self,"mobs_mc_animal_eat_generic") - return(true) + return true end --everything failed - return(false) + return false end @@ -96,23 +95,23 @@ mobs.look_for_mate = function(self) for _,mate in pairs(minetest_get_objects_inside_radius(pos1, radius)) do --look for a breeding mate - if mate and mate:get_luaentity() - and mate:get_luaentity()._cmi_is_mob - and mate:get_luaentity().name == self.name + if mate and mate:get_luaentity() + and mate:get_luaentity()._cmi_is_mob + and mate:get_luaentity().name == self.name and mate:get_luaentity().breed_lookout_timer > 0 and mate:get_luaentity() ~= self then local pos2 = mate:get_pos() - local distance = vector_distance(pos1,pos2) + local distance = vector.distance(pos1,pos2) if distance <= radius then - if line_of_sight then + if minetest.line_of_sight then --must add eye height or stuff breaks randomly because of --seethrough nodes being a blocker (like grass) - if minetest_line_of_sight( - vector_new(pos1.x, pos1.y, pos1.z), - vector_new(pos2.x, pos2.y + mate:get_properties().eye_height, pos2.z) + if minetest.line_of_sight( + vector.new(pos1.x, pos1.y, pos1.z), + vector.new(pos2.x, pos2.y + mate:get_properties().eye_height, pos2.z) ) then mates_detected = mates_detected + 1 mates_in_area[mate] = distance @@ -160,14 +159,14 @@ mobs.make_baby_grow_faster = function(self,clicker) if clicker and clicker:is_player() then local stack = clicker:get_wielded_item() --safety check - if not stack then - return(false) + if not stack then + return false end local item_name = stack:get_name() --all checks have passed, that guy has some good looking food if item_name == self.follow then - self.grow_up_timer = self.grow_up_timer - (self.grow_up_timer * 0.10) --take 10 percent off - diminishing returns + self.grow_up_timer = self.grow_up_timer - (self.grow_up_timer * 0.10) --take 10 percent off - diminishing returns if not minetest.is_creative_enabled(clicker:get_player_name()) then stack:take_item() @@ -175,10 +174,8 @@ mobs.make_baby_grow_faster = function(self,clicker) end mobs.play_sound_specific(self,"mobs_mc_animal_eat_generic") - - return(true) + return true end end - - return(false) + return false end \ No newline at end of file diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/collision.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/collision.lua index 44f43f20f..ed9aec6cd 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/collision.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/collision.lua @@ -8,10 +8,8 @@ local vector_direction = vector.direction local integer_test = {-1,1} mobs.collision = function(self) - local pos = self.object:get_pos() - if not self or not self.object or not self.object:get_luaentity() then return end @@ -20,7 +18,7 @@ mobs.collision = function(self) local collisionbox = self.object:get_properties().collisionbox pos.y = pos.y + collisionbox[2] - + local collision_boundary = collisionbox[4] local radius = collision_boundary @@ -41,7 +39,7 @@ mobs.collision = function(self) for _,object in ipairs(minetest_get_objects_inside_radius(pos, radius*1.25)) do if object and object ~= self.object and (object:is_player() or (object:get_luaentity() and object:get_luaentity()._cmi_is_mob == true and object:get_luaentity().health > 0)) and --don't collide with rider, rider don't collide with thing - (not object:get_attach() or (object:get_attach() and object:get_attach() ~= self.object)) and + (not object:get_attach() or (object:get_attach() and object:get_attach() ~= self.object)) and (not self.object:get_attach() or (self.object:get_attach() and self.object:get_attach() ~= object)) then --stop infinite loop collision_count = collision_count + 1 @@ -52,7 +50,7 @@ mobs.collision = function(self) end local pos2 = object:get_pos() - + local object_collisionbox = object:get_properties().collisionbox pos2.y = pos2.y + object_collisionbox[2] @@ -74,7 +72,7 @@ mobs.collision = function(self) local dir = vector.direction(pos,pos2) dir.y = 0 - + --eliminate mob being stuck in corners if dir.x == 0 and dir.z == 0 then --slightly adjust mob position to prevent equal length @@ -84,7 +82,7 @@ mobs.collision = function(self) end local velocity = dir - + --0.5 is the max force multiplier local force = 0.5 - (0.5 * distance / (collision_boundary + object_collision_boundary)) @@ -104,11 +102,9 @@ mobs.collision = function(self) end end end - self.object:add_velocity(vel1) object:add_velocity(vel2) end - end end end @@ -116,7 +112,6 @@ end --this is used for arrow collisions mobs.arrow_hit = function(self, player) - player:punch(self.object, 1.0, { full_punch_interval = 1.0, damage_groups = {fleshy = self._damage} diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/death_logic.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/death_logic.lua index 57cb6e4e5..45e46d3db 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/death_logic.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/death_logic.lua @@ -1,5 +1,5 @@ local minetest_add_item = minetest.add_item -local minetest_sound_play = minetest.sound_play +--local minetest_sound_play = minetest.sound_play local math_pi = math.pi local math_random = math.random @@ -19,7 +19,7 @@ local item_drop = function(self, cooked, looting_level) return end - local obj, item, num + local obj, item local pos = self.object:get_pos() self.drops = self.drops or {} -- nil check @@ -56,8 +56,11 @@ local item_drop = function(self, cooked, looting_level) -- cook items when true if cooked then - local output = minetest_get_craft_result({ - method = "cooking", width = 1, items = {item}}) + local output = minetest.get_craft_result({ + method = "cooking", + width = 1, + items = {item}, + }) if output and output.item and not output.item:is_empty() then item = output.item:get_name() @@ -117,15 +120,10 @@ mobs.death_logic = function(self, dtime) --the final POOF of a mob despawning if self.death_animation_timer >= 1.25 then - item_drop(self,false,1) - mobs.death_effect(self) - mcl_experience.throw_experience(self.object:get_pos(), math_random(self.xp_min, self.xp_max)) - self.object:remove() - return end diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/environment.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/environment.lua index 7c709c09e..3b204a4bf 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/environment.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/environment.lua @@ -1,5 +1,5 @@ local minetest_line_of_sight = minetest.line_of_sight -local minetest_dir_to_yaw = minetest.dir_to_yaw +--local minetest_dir_to_yaw = minetest.dir_to_yaw local minetest_yaw_to_dir = minetest.yaw_to_dir local minetest_get_node = minetest.get_node local minetest_get_item_group = minetest.get_item_group @@ -18,19 +18,16 @@ local table_copy = table.copy local math_abs = math.abs -- default function when mobs are blown up with TNT -local do_tnt = function(obj, damage) - +--[[local function do_tnt(obj, damage) obj.object:punch(obj.object, 1.0, { full_punch_interval = 1.0, damage_groups = {fleshy = damage}, }, nil) - return false, true, {} -end +end]] --a fast function to be able to detect only players without using objects_in_radius mobs.detect_closest_player_within_radius = function(self, line_of_sight, radius, object_height_adder) - local pos1 = self.object:get_pos() local players_in_area = {} local winner_player = nil @@ -49,7 +46,7 @@ mobs.detect_closest_player_within_radius = function(self, line_of_sight, radius, --must add eye height or stuff breaks randomly because of --seethrough nodes being a blocker (like grass) if minetest_line_of_sight( - vector_new(pos1.x, pos1.y + object_height_adder, pos1.z), + vector_new(pos1.x, pos1.y + object_height_adder, pos1.z), vector_new(pos2.x, pos2.y + player:get_properties().eye_height, pos2.z) ) then players_detected = players_detected + 1 @@ -108,7 +105,7 @@ mobs.jump_check = function(self,dtime) if green_flag_1 and green_flag_2 then --can jump over node return(1) - elseif green_flag_1 and not green_flag_2 then + elseif green_flag_1 and not green_flag_2 then --wall in front of mob return(2) end @@ -180,15 +177,10 @@ end -- check if within physical map limits (-30911 to 30927) -- within_limits, wmin, wmax = nil, -30913, 30928 mobs.within_limits = function(pos, radius) + local wmin, wmax if mcl_vars then if mcl_vars.mapgen_edge_min and mcl_vars.mapgen_edge_max then wmin, wmax = mcl_vars.mapgen_edge_min, mcl_vars.mapgen_edge_max - within_limits = function(pos, radius) - return pos - and (pos.x - radius) > wmin and (pos.x + radius) < wmax - and (pos.y - radius) > wmin and (pos.y + radius) < wmax - and (pos.z - radius) > wmin and (pos.z + radius) < wmax - end end end return pos diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/head_logic.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/head_logic.lua index 0fc94ffe6..13bc6584d 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/head_logic.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/head_logic.lua @@ -1,112 +1,98 @@ -local vector_new = vector.new - +local math = math +local vector = vector --converts yaw to degrees local degrees = function(yaw) return(yaw*180.0/math.pi) end - mobs.do_head_logic = function(self,dtime) - local player = minetest.get_player_by_name("singleplayer") + local player = minetest.get_player_by_name("singleplayer") - local look_at = player:get_pos() - look_at.y = look_at.y + player:get_properties().eye_height + local look_at = player:get_pos() + look_at.y = look_at.y + player:get_properties().eye_height + + local pos = self.object:get_pos() + + local body_yaw = self.object:get_yaw() + + local body_dir = minetest.yaw_to_dir(body_yaw) + + pos.y = pos.y + self.head_height_offset + + local head_offset = vector.multiply(body_dir, self.head_direction_offset) + + pos = vector.add(pos, head_offset) + + minetest.add_particle({ + pos = pos, + velocity = {x=0, y=0, z=0}, + acceleration = {x=0, y=0, z=0}, + expirationtime = 0.2, + size = 1, + texture = "default_dirt.png", + }) + + local bone_pos = vector.new(0,0,0) + + --(horizontal) + bone_pos.y = self.head_bone_pos_y + + --(vertical) + bone_pos.z = self.head_bone_pos_z + + --print(yaw) + + --local _, bone_rot = self.object:get_bone_position("head") + + --bone_rot.x = bone_rot.x + (dtime * 10) + --bone_rot.z = bone_rot.z + (dtime * 10) + + local head_yaw = minetest.dir_to_yaw(vector.direction(pos,look_at)) - body_yaw + + if self.reverse_head_yaw then + head_yaw = head_yaw * -1 + end + + --over rotation protection + --stops radians from going out of spec + if head_yaw > math.pi then + head_yaw = head_yaw - (math.pi * 2) + elseif head_yaw < -math.pi then + head_yaw = head_yaw + (math.pi * 2) + end + local check_failed = false + --upper check + 90 degrees or upper math.radians (3.14/2) + if head_yaw > math.pi - (math.pi/2) then + head_yaw = 0 + check_failed = true + --lower check - 90 degrees or lower negative math.radians (-3.14/2) + elseif head_yaw < -math.pi + (math.pi/2) then + head_yaw = 0 + check_failed = true + end + local head_pitch = 0 - local pos = self.object:get_pos() + --DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG + --head_yaw = 0 + --DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG - local body_yaw = self.object:get_yaw() + if not check_failed then + head_pitch = minetest.dir_to_yaw(vector.new(vector.distance(vector.new(pos.x,0,pos.z),vector.new(look_at.x,0,look_at.z)),0,pos.y-look_at.y))+(math.pi/2) + end - local body_dir = minetest.yaw_to_dir(body_yaw) + if self.head_pitch_modifier then + head_pitch = head_pitch + self.head_pitch_modifier + end - - pos.y = pos.y + self.head_height_offset - - local head_offset = vector.multiply(body_dir, self.head_direction_offset) - - pos = vector.add(pos, head_offset) - - - - - minetest.add_particle({ - pos = pos, - velocity = {x=0, y=0, z=0}, - acceleration = {x=0, y=0, z=0}, - expirationtime = 0.2, - size = 1, - texture = "default_dirt.png", - }) - - - local bone_pos = vector_new(0,0,0) - - - --(horizontal) - bone_pos.y = self.head_bone_pos_y - - --(vertical) - bone_pos.z = self.head_bone_pos_z - - --print(yaw) - - --local _, bone_rot = self.object:get_bone_position("head") - - --bone_rot.x = bone_rot.x + (dtime * 10) - --bone_rot.z = bone_rot.z + (dtime * 10) - - - local head_yaw - head_yaw = minetest.dir_to_yaw(vector.direction(pos,look_at)) - body_yaw - - if self.reverse_head_yaw then - head_yaw = head_yaw * -1 - end - - --over rotation protection - --stops radians from going out of spec - if head_yaw > math.pi then - head_yaw = head_yaw - (math.pi * 2) - elseif head_yaw < -math.pi then - head_yaw = head_yaw + (math.pi * 2) - end - - - local check_failed = false - --upper check + 90 degrees or upper math.radians (3.14/2) - if head_yaw > math.pi - (math.pi/2) then - head_yaw = 0 - check_failed = true - --lower check - 90 degrees or lower negative math.radians (-3.14/2) - elseif head_yaw < -math.pi + (math.pi/2) then - head_yaw = 0 - check_failed = true - end - - local head_pitch = 0 - - --DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG - --head_yaw = 0 - --DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG - - if not check_failed then - head_pitch = minetest.dir_to_yaw(vector.new(vector.distance(vector.new(pos.x,0,pos.z),vector.new(look_at.x,0,look_at.z)),0,pos.y-look_at.y))+(math.pi/2) - end - - if self.head_pitch_modifier then - head_pitch = head_pitch + self.head_pitch_modifier - end - - if self.swap_y_with_x then - self.object:set_bone_position(self.head_bone, bone_pos, vector_new(degrees(head_pitch),degrees(head_yaw),0)) - else - self.object:set_bone_position(self.head_bone, bone_pos, vector_new(degrees(head_pitch),0,degrees(head_yaw))) - end - - - --set_bone_position([bone, position, rotation]) + if self.swap_y_with_x then + self.object:set_bone_position(self.head_bone, bone_pos, vector.new(degrees(head_pitch),degrees(head_yaw),0)) + else + self.object:set_bone_position(self.head_bone, bone_pos, vector.new(degrees(head_pitch),0,degrees(head_yaw))) + end + --set_bone_position([bone, position, rotation]) end \ No newline at end of file diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/interaction.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/interaction.lua index 6b23d2fe7..fa5b31210 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/interaction.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/interaction.lua @@ -2,22 +2,19 @@ local minetest_after = minetest.after local minetest_sound_play = minetest.sound_play local minetest_dir_to_yaw = minetest.dir_to_yaw -local math_floor = math.floor -local math_min = math.min -local math_random = math.random - -local vector_direction = vector.direction -local vector_multiply = vector.multiply +local math = math +local vector = vector local MAX_MOB_NAME_LENGTH = 30 +local mod_hunger = minetest.get_modpath("mcl_hunger") + mobs.feed_tame = function(self) return nil end -- Code to execute before custom on_rightclick handling -local on_rightclick_prefix = function(self, clicker) - +local function on_rightclick_prefix(self, clicker) local item = clicker:get_wielded_item() -- Name mob with nametag @@ -60,7 +57,6 @@ end -- deal damage and effects when mob punched mobs.mob_punch = function(self, hitter, tflp, tool_capabilities, dir) - --don't do anything if the mob is already dead if self.health <= 0 then return @@ -94,14 +90,13 @@ mobs.mob_punch = function(self, hitter, tflp, tool_capabilities, dir) pos2.y = 0 - local dir = vector_direction(pos2,pos1) + local dir = vector.direction(pos2,pos1) local yaw = minetest_dir_to_yaw(dir) self.yaw = yaw end - -- custom punch function if self.do_punch then -- when false skip going any further @@ -113,23 +108,20 @@ mobs.mob_punch = function(self, hitter, tflp, tool_capabilities, dir) --don't do damage until pause timer resets if self.pause_timer > 0 then return - end + end - -- error checking when mod profiling is enabled if not tool_capabilities then minetest.log("warning", "[mobs_mc] Mod profiling enabled, damage not enabled") return end - local is_player = hitter:is_player() - -- punch interval local weapon = hitter:get_wielded_item() - local punch_interval = 1.4 + --local punch_interval = 1.4 -- exhaust attacker if mod_hunger and is_player then @@ -139,7 +131,6 @@ mobs.mob_punch = function(self, hitter, tflp, tool_capabilities, dir) -- calculate mob damage local damage = 0 local armor = self.object:get_armor_groups() or {} - local tmp --calculate damage groups for group,_ in pairs( (tool_capabilities.damage_groups or {}) ) do @@ -163,13 +154,13 @@ mobs.mob_punch = function(self, hitter, tflp, tool_capabilities, dir) -- healing if damage <= -1 then - self.health = self.health - math_floor(damage) + self.health = self.health - math.floor(damage) return end - if tool_capabilities then - punch_interval = tool_capabilities.full_punch_interval or 1.4 - end + --if tool_capabilities then + -- punch_interval = tool_capabilities.full_punch_interval or 1.4 + --end -- add weapon wear manually -- Required because we have custom health handling ("health" property) @@ -183,7 +174,7 @@ mobs.mob_punch = function(self, hitter, tflp, tool_capabilities, dir) local weapon = hitter:get_wielded_item(player) local def = weapon:get_definition() if def.tool_capabilities and def.tool_capabilities.punch_attack_uses then - local wear = math_floor(65535/tool_capabilities.punch_attack_uses) + local wear = math.floor(65535/tool_capabilities.punch_attack_uses) weapon:add_wear(wear) hitter:set_wielded_item(weapon) end @@ -224,7 +215,7 @@ mobs.mob_punch = function(self, hitter, tflp, tool_capabilities, dir) -- knock back effect local velocity = self.object:get_velocity() - + --2d direction local pos1 = self.object:get_pos() pos1.y = 0 @@ -240,9 +231,8 @@ mobs.mob_punch = function(self, hitter, tflp, tool_capabilities, dir) up = 0 end - --0.75 for perfect distance to not be too easy, and not be too hard - local multiplier = 0.75 + local multiplier = 0.75 -- check if tool already has specific knockback value local knockback_enchant = mcl_enchanting.get_enchantment(hitter:get_wielded_item(), "knockback") @@ -254,21 +244,16 @@ mobs.mob_punch = function(self, hitter, tflp, tool_capabilities, dir) --it's coming for you if self.hostile then multiplier = multiplier + 2 - end - - dir = vector_multiply(dir,multiplier) - + end + dir = vector.multiply(dir,multiplier) dir.y = up - --add the velocity self.object:add_velocity(dir) - end end --do internal per mob projectile calculations mobs.shoot_projectile = function(self) - local pos1 = self.object:get_pos() --add mob eye height pos1.y = pos1.y + self.eye_height @@ -278,7 +263,7 @@ mobs.shoot_projectile = function(self) pos2.y = pos2.y + self.attacking:get_properties().eye_height --get direction - local dir = vector_direction(pos1,pos2) + local dir = vector.direction(pos1,pos2) --call internal shoot_arrow function self.shoot_arrow(self,pos1,dir) diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/mob_effects.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/mob_effects.lua index 847315ff1..83df80992 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/mob_effects.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/mob_effects.lua @@ -1,9 +1,8 @@ local minetest_add_particlespawner = minetest.add_particlespawner mobs.death_effect = function(self) - local pos = self.object:get_pos() - local yaw = self.object:get_yaw() + --local yaw = self.object:get_yaw() local collisionbox = self.object:get_properties().collisionbox local min, max @@ -33,7 +32,7 @@ end mobs.critical_effect = function(self) local pos = self.object:get_pos() - local yaw = self.object:get_yaw() + --local yaw = self.object:get_yaw() local collisionbox = self.object:get_properties().collisionbox local min, max @@ -62,9 +61,8 @@ end --when feeding a mob mobs.feed_effect = function(self) - local pos = self.object:get_pos() - local yaw = self.object:get_yaw() + --local yaw = self.object:get_yaw() local collisionbox = self.object:get_properties().collisionbox local min, max @@ -94,7 +92,7 @@ end --hearts when tamed mobs.tamed_effect = function(self) local pos = self.object:get_pos() - local yaw = self.object:get_yaw() + --local yaw = self.object:get_yaw() local collisionbox = self.object:get_properties().collisionbox local min, max @@ -124,7 +122,7 @@ end --hearts when breeding mobs.breeding_effect = function(self) local pos = self.object:get_pos() - local yaw = self.object:get_yaw() + --local yaw = self.object:get_yaw() local collisionbox = self.object:get_properties().collisionbox local min, max diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/movement.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/movement.lua index 04e3e370c..72612b1eb 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/movement.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/movement.lua @@ -1,16 +1,10 @@ -local math_pi = math.pi -local math_sin = math.sin -local math_cos = math.cos -local math_random = math.random -local HALF_PI = math_pi / 2 -local DOUBLE_PI = math_pi * 2 +-- localize math functions +local math = math +local HALF_PI = math.pi / 2 +local DOUBLE_PI = math.pi * 2 -- localize vector functions -local vector_new = vector.new -local vector_length = vector.length -local vector_multiply = vector.multiply -local vector_distance = vector.distance -local vector_normalize = vector.normalize +local vector = vector local minetest_yaw_to_dir = minetest.yaw_to_dir local minetest_dir_to_yaw = minetest.dir_to_yaw @@ -19,18 +13,17 @@ local DEFAULT_JUMP_HEIGHT = 5 local DEFAULT_FLOAT_SPEED = 4 local DEFAULT_CLIMB_SPEED = 3 - mobs.stick_in_cobweb = function(self) local current_velocity = self.object:get_velocity() - local goal_velocity = vector_multiply(vector_normalize(current_velocity), 0.4) + local goal_velocity = vector.multiply(vector.normalize(current_velocity), 0.4) goal_velocity.y = -0.5 local new_velocity_addition = vector.subtract(goal_velocity,current_velocity) --smooths out mobs a bit - if vector_length(new_velocity_addition) >= 0.0001 then + if vector.length(new_velocity_addition) >= 0.0001 then self.object:add_velocity(new_velocity_addition) end end @@ -40,7 +33,7 @@ mobs.float = function(self) local acceleration = self.object:get_acceleration() if acceleration and acceleration.y ~= 0 then - self.object:set_acceleration(vector_new(0,0,0)) + self.object:set_acceleration(vector.new(0,0,0)) else return end @@ -59,7 +52,7 @@ mobs.float = function(self) new_velocity_addition.z = 0 --smooths out mobs a bit - if vector_length(new_velocity_addition) >= 0.0001 then + if vector.length(new_velocity_addition) >= 0.0001 then self.object:add_velocity(new_velocity_addition) end end @@ -81,7 +74,7 @@ mobs.climb = function(self) new_velocity_addition.z = 0 --smooths out mobs a bit - if vector_length(new_velocity_addition) >= 0.0001 then + if vector.length(new_velocity_addition) >= 0.0001 then self.object:add_velocity(new_velocity_addition) end end @@ -109,22 +102,22 @@ mobs.set_velocity = function(self, v) local current_velocity = self.object:get_velocity() local goal_velocity = { - x = (math_sin(yaw) * -v), + x = (math.sin(yaw) * -v), y = 0, - z = (math_cos(yaw) * v), + z = (math.cos(yaw) * v), } local new_velocity_addition = vector.subtract(goal_velocity,current_velocity) - if vector_length(new_velocity_addition) > vector_length(goal_velocity) then - vector.multiply(new_velocity_addition, (vector_length(goal_velocity) / vector_length(new_velocity_addition))) + if vector.length(new_velocity_addition) > vector.length(goal_velocity) then + vector.multiply(new_velocity_addition, (vector.length(goal_velocity) / vector.length(new_velocity_addition))) end new_velocity_addition.y = 0 --smooths out mobs a bit - if vector_length(new_velocity_addition) >= 0.0001 then + if vector.length(new_velocity_addition) >= 0.0001 then self.object:add_velocity(new_velocity_addition) end end @@ -139,7 +132,7 @@ mobs.get_velocity = function(self) v.y = 0 if v then - return vector_length(v) + return vector.length(v) end return 0 @@ -155,7 +148,7 @@ mobs.jump = function(self, velocity) --fallback velocity to allow modularity velocity = velocity or DEFAULT_JUMP_HEIGHT - self.object:add_velocity(vector_new(0,velocity,0)) + self.object:add_velocity(vector.new(0,velocity,0)) end --make mobs fall slowly @@ -175,15 +168,15 @@ mobs.mob_fall_slow = function(self) new_velocity_addition.x = 0 new_velocity_addition.z = 0 - if vector_length(new_velocity_addition) > vector_length(goal_velocity) then - vector.multiply(new_velocity_addition, (vector_length(goal_velocity) / vector_length(new_velocity_addition))) + if vector.length(new_velocity_addition) > vector.length(goal_velocity) then + vector.multiply(new_velocity_addition, (vector.length(goal_velocity) / vector.length(new_velocity_addition))) end new_velocity_addition.x = 0 new_velocity_addition.z = 0 --smooths out mobs a bit - if vector_length(new_velocity_addition) >= 0.0001 then + if vector.length(new_velocity_addition) >= 0.0001 then self.object:add_velocity(new_velocity_addition) end @@ -215,13 +208,13 @@ mobs.flop = function(self, velocity) velocity = velocity or DEFAULT_JUMP_HEIGHT --create a random direction (2d yaw) - local dir = DOUBLE_PI * math_random() + local dir = DOUBLE_PI * math.random() --create a random force value - local force = math_random(0,3) + math_random() + local force = math.random(0,3) + math.random() --convert the yaw to a direction vector then multiply it times the force - local final_additional_force = vector_multiply(minetest_yaw_to_dir(dir), force) + local final_additional_force = vector.multiply(minetest_yaw_to_dir(dir), force) --place in the "flop" velocity to make the mob flop final_additional_force.y = velocity @@ -249,20 +242,20 @@ mobs.set_swim_velocity = function(self, v) local current_velocity = self.object:get_velocity() local goal_velocity = { - x = (math_sin(yaw) * -v), + x = (math.sin(yaw) * -v), y = pitch, - z = (math_cos(yaw) * v), + z = (math.cos(yaw) * v), } local new_velocity_addition = vector.subtract(goal_velocity,current_velocity) - if vector_length(new_velocity_addition) > vector_length(goal_velocity) then - vector.multiply(new_velocity_addition, (vector_length(goal_velocity) / vector_length(new_velocity_addition))) + if vector.length(new_velocity_addition) > vector.length(goal_velocity) then + vector.multiply(new_velocity_addition, (vector.length(goal_velocity) / vector.length(new_velocity_addition))) end --smooths out mobs a bit - if vector_length(new_velocity_addition) >= 0.0001 then + if vector.length(new_velocity_addition) >= 0.0001 then self.object:add_velocity(new_velocity_addition) end end @@ -294,20 +287,20 @@ mobs.set_fly_velocity = function(self, v) local current_velocity = self.object:get_velocity() local goal_velocity = { - x = (math_sin(yaw) * -v), + x = (math.sin(yaw) * -v), y = pitch, - z = (math_cos(yaw) * v), + z = (math.cos(yaw) * v), } local new_velocity_addition = vector.subtract(goal_velocity,current_velocity) - if vector_length(new_velocity_addition) > vector_length(goal_velocity) then - vector.multiply(new_velocity_addition, (vector_length(goal_velocity) / vector_length(new_velocity_addition))) + if vector.length(new_velocity_addition) > vector.length(goal_velocity) then + vector.multiply(new_velocity_addition, (vector.length(goal_velocity) / vector.length(new_velocity_addition))) end --smooths out mobs a bit - if vector_length(new_velocity_addition) >= 0.0001 then + if vector.length(new_velocity_addition) >= 0.0001 then self.object:add_velocity(new_velocity_addition) end end @@ -319,7 +312,7 @@ mobs.calculate_pitch = function(pos1, pos2) return false end - return(minetest_dir_to_yaw(vector_new(vector_distance(vector_new(pos1.x,0,pos1.z),vector_new(pos2.x,0,pos2.z)),0,pos1.y - pos2.y)) + HALF_PI) + return(minetest_dir_to_yaw(vector.new(vector.distance(vector.new(pos1.x,0,pos1.z),vector.new(pos2.x,0,pos2.z)),0,pos1.y - pos2.y)) + HALF_PI) end --make mobs fly up or down based on their y difference @@ -356,27 +349,27 @@ mobs.jump_move = function(self, velocity) mobs.set_velocity(self,0) --fallback velocity to allow modularity - jump_height = DEFAULT_JUMP_HEIGHT + local jump_height = DEFAULT_JUMP_HEIGHT local yaw = (self.yaw or 0) local current_velocity = self.object:get_velocity() local goal_velocity = { - x = (math_sin(yaw) * -velocity), + x = (math.sin(yaw) * -velocity), y = jump_height, - z = (math_cos(yaw) * velocity), + z = (math.cos(yaw) * velocity), } local new_velocity_addition = vector.subtract(goal_velocity,current_velocity) - if vector_length(new_velocity_addition) > vector_length(goal_velocity) then - vector.multiply(new_velocity_addition, (vector_length(goal_velocity) / vector_length(new_velocity_addition))) + if vector.length(new_velocity_addition) > vector.length(goal_velocity) then + vector.multiply(new_velocity_addition, (vector.length(goal_velocity) / vector.length(new_velocity_addition))) end --smooths out mobs a bit - if vector_length(new_velocity_addition) >= 0.0001 then + if vector.length(new_velocity_addition) >= 0.0001 then self.object:add_velocity(new_velocity_addition) end end diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua index dfef98ee8..65ba764f6 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua @@ -1,10 +1,12 @@ local math_random = math.random -local minetest_settings = minetest.settings +local minetest_settings = minetest.settings + +-- CMI support check +local use_cmi = minetest.global_exists("cmi") -- get entity staticdata mobs.mob_staticdata = function(self) - --despawn mechanism --don't despawned tamed or bred mobs if not self.tamed and not self.bred then @@ -142,8 +144,6 @@ mobs.mob_activate = function(self, staticdata, def, dtime) self.health = math_random (self.hp_min, self.hp_max) end - - if not self.random_sound_timer then self.random_sound_timer = math_random(self.random_sound_timer_min,self.random_sound_timer_max) end @@ -185,7 +185,6 @@ mobs.mob_activate = function(self, staticdata, def, dtime) self.opinion_sound_cooloff = 0 -- used to prevent sound spam of particular sound types self.texture_mods = {} - self.v_start = false self.timer = 0 @@ -199,7 +198,6 @@ mobs.mob_activate = function(self, staticdata, def, dtime) else self.object:set_texture_mod("") end - -- set anything changed above self.object:set_properties(self) diff --git a/mods/ENTITIES/mcl_mobs/api/mount.lua b/mods/ENTITIES/mcl_mobs/api/mount.lua index 8ee45f299..0ed54a46e 100644 --- a/mods/ENTITIES/mcl_mobs/api/mount.lua +++ b/mods/ENTITIES/mcl_mobs/api/mount.lua @@ -1,8 +1,11 @@ -- lib_mount by Blert2112 (edited by TenPlus1) -local enable_crash = false -local crash_threshold = 6.5 -- ignored if enable_crash=false +--local enable_crash = false +--local crash_threshold = 6.5 -- ignored if enable_crash=false + +local math = math +local vector = vector ------------------------------------------------------------------------------ @@ -10,7 +13,7 @@ local crash_threshold = 6.5 -- ignored if enable_crash=false -- Helper functions -- -local node_ok = function(pos, fallback) +--[[local function node_ok(pos, fallback) fallback = fallback or mobs.fallback_node @@ -21,10 +24,10 @@ local node_ok = function(pos, fallback) end return {name = fallback} -end +end]] -local function node_is(pos) +--[[local function node_is(pos) local node = node_ok(pos) @@ -45,7 +48,7 @@ local function node_is(pos) end return "other" -end +end]] local function get_sign(i) @@ -60,13 +63,11 @@ local function get_sign(i) end -local function get_velocity(v, yaw, y) - +--[[local function get_velocity(v, yaw, y) local x = -math.sin(yaw) * v local z = math.cos(yaw) * v - return {x = x, y = y, z = z} -end +end]] local function get_v(v) @@ -172,7 +173,7 @@ function mobs.detach(player, offset) --pos = {x = pos.x + offset.x, y = pos.y + 0.2 + offset.y, z = pos.z + offset.z} - player:add_velocity(vector.new(math.random(-6,6),math.random(5,8),math.random(-6,6))) --throw the rider off + player:add_velocity(vector.new(math.random(-6,6), math.random(5,8), math.random(-6,6))) --throw the rider off --[[ minetest.after(0.1, function(name, pos) @@ -187,13 +188,13 @@ end function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime) - local rot_view = 0 + --local rot_view = 0 - if entity.player_rotation.y == 90 then - rot_view = math.pi/2 - end + --if entity.player_rotation.y == 90 then + -- rot_view = math.pi/2 + --end - local acce_y = 0 + --local acce_y = 0 local velo = entity.object:get_velocity() entity.v = get_v(velo) * get_sign(entity.v) @@ -388,7 +389,6 @@ end -- directional flying routine by D00Med (edited by TenPlus1) function mobs.fly(entity, dtime, speed, shoots, arrow, moving_anim, stand_anim) - if true then print("succ") return diff --git a/mods/ENTITIES/mcl_mobs/api/spawning.lua b/mods/ENTITIES/mcl_mobs/api/spawning.lua index ca4dc1e4f..08b161527 100644 --- a/mods/ENTITIES/mcl_mobs/api/spawning.lua +++ b/mods/ENTITIES/mcl_mobs/api/spawning.lua @@ -9,9 +9,9 @@ local get_objects_inside_radius = minetest.get_objects_inside_radius local math_random = math.random local math_floor = math.floor -local max = math.max +--local max = math.max -local vector_distance = vector.distance +--local vector_distance = vector.distance local vector_new = vector.new local vector_floor = vector.floor @@ -573,10 +573,10 @@ if mobs_spawn then local spawning_position = spawning_position_list[math_random(1,#spawning_position_list)] --Prevent strange behavior --- this is commented out: /too close to player --fixed with inner circle - if not spawning_position then -- or vector_distance(player_pos, spawning_position) < 15 + if not spawning_position then -- or vector_distance(player_pos, spawning_position) < 15 break end - + --hard code mob limit in area to 5 for now if count_mobs(spawning_position) >= 5 then break @@ -606,7 +606,7 @@ if mobs_spawn then local is_lava = get_item_group(gotten_node, "lava") ~= 0 local mob_def = nil - + --create a disconnected clone of the spawn dictionary --prevents memory leak local mob_library_worker_table = table_copy(spawn_dictionary) From 8286fd2a4dc5efb81e58fd38d0770344c9ec76ed Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 25 May 2021 00:43:08 +0200 Subject: [PATCH 180/418] [mcl_minecarts] fix warnings --- mods/ENTITIES/mcl_minecarts/init.lua | 46 +++++++++++++--------------- 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/mods/ENTITIES/mcl_minecarts/init.lua b/mods/ENTITIES/mcl_minecarts/init.lua index 70bf16477..e741fb0bc 100644 --- a/mods/ENTITIES/mcl_minecarts/init.lua +++ b/mods/ENTITIES/mcl_minecarts/init.lua @@ -486,7 +486,6 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick, o if update.pos then self.object:set_pos(pos) end - update = nil end function cart:get_staticdata() @@ -817,31 +816,30 @@ minetest.register_craft({ }) -- TODO: Re-enable crafting of special minecarts when they have been implemented -if false then - minetest.register_craft({ - output = "mcl_minecarts:furnace_minecart", - recipe = { - {"mcl_furnaces:furnace"}, - {"mcl_minecarts:minecart"}, - }, - }) +--[[minetest.register_craft({ + output = "mcl_minecarts:furnace_minecart", + recipe = { + {"mcl_furnaces:furnace"}, + {"mcl_minecarts:minecart"}, + }, +}) - minetest.register_craft({ - output = "mcl_minecarts:hopper_minecart", - recipe = { - {"mcl_hoppers:hopper"}, - {"mcl_minecarts:minecart"}, - }, - }) +minetest.register_craft({ + output = "mcl_minecarts:hopper_minecart", + recipe = { + {"mcl_hoppers:hopper"}, + {"mcl_minecarts:minecart"}, + }, +}) + +minetest.register_craft({ + output = "mcl_minecarts:chest_minecart", + recipe = { + {"mcl_chests:chest"}, + {"mcl_minecarts:minecart"}, + }, +})]] - minetest.register_craft({ - output = "mcl_minecarts:chest_minecart", - recipe = { - {"mcl_chests:chest"}, - {"mcl_minecarts:minecart"}, - }, - }) -end if has_mcl_wip then mcl_wip.register_wip_item("mcl_minecarts:chest_minecart") From fddaacdeaea953d7cf73a73214dd4329325e5cc3 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 25 May 2021 00:43:42 +0200 Subject: [PATCH 181/418] [mcl_item_entity] fix warnings --- mods/ENTITIES/mcl_item_entity/init.lua | 4 ---- mods/ENTITIES/mcl_minecarts/functions.lua | 23 ++++++++++------------- 2 files changed, 10 insertions(+), 17 deletions(-) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index 895bfc892..0c26c38c8 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -426,13 +426,9 @@ minetest.register_entity(":__builtin:item", { if itemtable then itemname = stack:to_table().name end - local item_texture = nil - local item_type = "" local glow local def = minetest.registered_items[itemname] if def then - item_texture = def.inventory_image - item_type = def.type description = def.description glow = def.light_source end diff --git a/mods/ENTITIES/mcl_minecarts/functions.lua b/mods/ENTITIES/mcl_minecarts/functions.lua index 42cdecd12..2f0dfe0ae 100644 --- a/mods/ENTITIES/mcl_minecarts/functions.lua +++ b/mods/ENTITIES/mcl_minecarts/functions.lua @@ -1,3 +1,5 @@ +local vector = vector + function mcl_minecarts:get_sign(z) if z == 0 then return 0 @@ -38,11 +40,9 @@ end function mcl_minecarts:check_front_up_down(pos, dir_, check_down, railtype) local dir = vector.new(dir_) - local cur = nil - -- Front dir.y = 0 - cur = vector.add(pos, dir) + local cur = vector.add(pos, dir) if mcl_minecarts:is_rail(cur, railtype) then return dir end @@ -65,9 +65,9 @@ end function mcl_minecarts:get_rail_direction(pos_, dir, ctrl, old_switch, railtype) local pos = vector.round(pos_) - local cur = nil + local cur local left_check, right_check = true, true - + -- Check left and right local left = {x=0, y=0, z=0} local right = {x=0, y=0, z=0} @@ -78,7 +78,7 @@ function mcl_minecarts:get_rail_direction(pos_, dir, ctrl, old_switch, railtype) left.z = dir.x right.z = -dir.x end - + if ctrl then if old_switch == 1 then left_check = false @@ -100,13 +100,13 @@ function mcl_minecarts:get_rail_direction(pos_, dir, ctrl, old_switch, railtype) right_check = true end end - + -- Normal cur = mcl_minecarts:check_front_up_down(pos, dir, true, railtype) if cur then return cur end - + -- Left, if not already checked if left_check then cur = mcl_minecarts:check_front_up_down(pos, left, false, railtype) @@ -114,7 +114,7 @@ function mcl_minecarts:get_rail_direction(pos_, dir, ctrl, old_switch, railtype) return cur end end - + -- Right, if not already checked if right_check then cur = mcl_minecarts:check_front_up_down(pos, right, false, railtype) @@ -122,7 +122,6 @@ function mcl_minecarts:get_rail_direction(pos_, dir, ctrl, old_switch, railtype) return cur end end - -- Backwards if not old_switch then cur = mcl_minecarts:check_front_up_down(pos, { @@ -134,7 +133,5 @@ function mcl_minecarts:get_rail_direction(pos_, dir, ctrl, old_switch, railtype) return cur end end - return {x=0, y=0, z=0} -end - +end \ No newline at end of file From dd3b5a98ae36bbdffec0d846e44a9ce72643abfe Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 25 May 2021 00:46:39 +0200 Subject: [PATCH 182/418] [mcl_falling_nodes] fix warnings --- mods/ENTITIES/mcl_falling_nodes/init.lua | 22 +++++-------------- .../locale/mcl_falling_nodes.de.tr | 3 --- .../locale/mcl_falling_nodes.es.tr | 3 --- .../locale/mcl_falling_nodes.fr.tr | 3 --- .../locale/mcl_falling_nodes.ru.tr | 3 --- .../mcl_falling_nodes/locale/template.txt | 3 --- 6 files changed, 6 insertions(+), 31 deletions(-) delete mode 100644 mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.de.tr delete mode 100644 mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.es.tr delete mode 100644 mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.fr.tr delete mode 100644 mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.ru.tr delete mode 100644 mods/ENTITIES/mcl_falling_nodes/locale/template.txt diff --git a/mods/ENTITIES/mcl_falling_nodes/init.lua b/mods/ENTITIES/mcl_falling_nodes/init.lua index af2c06703..01681a159 100644 --- a/mods/ENTITIES/mcl_falling_nodes/init.lua +++ b/mods/ENTITIES/mcl_falling_nodes/init.lua @@ -1,7 +1,4 @@ -local S = minetest.get_translator("mcl_falling_nodes") -local has_mcl_armor = minetest.get_modpath("mcl_armor") - -local get_falling_depth = function(self) +local function get_falling_depth(self) if not self._startpos then -- Fallback self._startpos = self.object:get_pos() @@ -9,7 +6,7 @@ local get_falling_depth = function(self) return self._startpos.y - vector.round(self.object:get_pos()).y end -local deal_falling_damage = function(self, dtime) +local function deal_falling_damage(self, dtime) if minetest.get_item_group(self.node.name, "falling_node_damage") == 0 then return end @@ -38,7 +35,7 @@ local deal_falling_damage = function(self, dtime) inv:set_stack("armor", 2, helmet) end end - local deathmsg, dmg_type + local dmg_type if minetest.get_item_group(self.node.name, "anvil") ~= 0 then dmg_type = "anvil" else @@ -60,10 +57,8 @@ minetest.register_entity(":__builtin:falling_node", { collide_with_objects = false, collisionbox = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, }, - node = {}, meta = {}, - set_node = function(self, node, meta) local def = minetest.registered_nodes[node.name] -- Change falling node if definition tells us to @@ -90,7 +85,6 @@ minetest.register_entity(":__builtin:falling_node", { glow = glow, }) end, - get_staticdata = function(self) local meta = self.meta -- Workaround: Save inventory seperately from metadata. @@ -111,7 +105,6 @@ minetest.register_entity(":__builtin:falling_node", { } return minetest.serialize(ds) end, - on_activate = function(self, staticdata) self.object:set_armor_groups({immortal = 1}) @@ -134,7 +127,6 @@ minetest.register_entity(":__builtin:falling_node", { end self._startpos = vector.round(self._startpos) end, - on_step = function(self, dtime) -- Set gravity local acceleration = self.object:get_acceleration() @@ -186,10 +178,9 @@ minetest.register_entity(":__builtin:falling_node", { return end local nd = minetest.registered_nodes[n2.name] - if n2.name == "mcl_portals:portal_end" then - -- TODO: Teleport falling node. - - elseif (nd and nd.buildable_to == true) or minetest.get_item_group(self.node.name, "crush_after_fall") ~= 0 then + --if n2.name == "mcl_portals:portal_end" then + -- TODO: Teleport falling node. + if (nd and nd.buildable_to == true) or minetest.get_item_group(self.node.name, "crush_after_fall") ~= 0 then -- Replace destination node if it's buildable to minetest.remove_node(np) -- Run script hook @@ -256,7 +247,6 @@ minetest.register_entity(":__builtin:falling_node", { self.object:set_pos(npos) end end - deal_falling_damage(self, dtime) end }) diff --git a/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.de.tr b/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.de.tr deleted file mode 100644 index 71dfa4be9..000000000 --- a/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.de.tr +++ /dev/null @@ -1,3 +0,0 @@ -# textdomain: mcl_falling_nodes -@1 was smashed by a falling anvil.=@1 wurde von einem fallenden Amboss zerschmettert. -@1 was smashed by a falling block.=@1 wurde von einem fallenden Block zerschmettert. diff --git a/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.es.tr b/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.es.tr deleted file mode 100644 index 41cbf61b4..000000000 --- a/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.es.tr +++ /dev/null @@ -1,3 +0,0 @@ -# textdomain: mcl_falling_nodes -@1 was smashed by a falling anvil.=@1 fue aplastado por la caída de un yunque. -@1 was smashed by a falling block.=@1 fue aplastado por la caída de un bloque. diff --git a/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.fr.tr b/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.fr.tr deleted file mode 100644 index 781cd7048..000000000 --- a/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.fr.tr +++ /dev/null @@ -1,3 +0,0 @@ -# textdomain: mcl_falling_nodes -@1 was smashed by a falling anvil.=@1 a été écrasé par une enclume qui tombait. -@1 was smashed by a falling block.=@1 a été écrasé par un bloc qui tombait. diff --git a/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.ru.tr b/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.ru.tr deleted file mode 100644 index 6c8b9375a..000000000 --- a/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.ru.tr +++ /dev/null @@ -1,3 +0,0 @@ -# textdomain: mcl_falling_nodes -@1 was smashed by a falling anvil.=@1 придавило падающей наковальней. -@1 was smashed by a falling block.=@1 раздавило падающим блоком. diff --git a/mods/ENTITIES/mcl_falling_nodes/locale/template.txt b/mods/ENTITIES/mcl_falling_nodes/locale/template.txt deleted file mode 100644 index 4adabaf01..000000000 --- a/mods/ENTITIES/mcl_falling_nodes/locale/template.txt +++ /dev/null @@ -1,3 +0,0 @@ -# textdomain: mcl_falling_nodes -@1 was smashed by a falling anvil.= -@1 was smashed by a falling block.= From ad16fe70726807ff5c5cbcc9a8ba8bd28c8d137d Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 25 May 2021 00:48:46 +0200 Subject: [PATCH 183/418] [mcl_burning] fix warnings --- mods/ENTITIES/mcl_burning/api.lua | 4 +--- mods/ENTITIES/mcl_burning/init.lua | 6 +----- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/mods/ENTITIES/mcl_burning/api.lua b/mods/ENTITIES/mcl_burning/api.lua index 78814a2c7..4cb19cca1 100644 --- a/mods/ENTITIES/mcl_burning/api.lua +++ b/mods/ENTITIES/mcl_burning/api.lua @@ -1,5 +1,3 @@ -local S = minetest.get_translator("mcl_burning") - function mcl_burning.get_storage(obj) return obj:is_player() and mcl_burning.storage[obj] or obj:get_luaentity() end @@ -145,4 +143,4 @@ function mcl_burning.tick(obj, dtime, storage) end end end -end +end \ No newline at end of file diff --git a/mods/ENTITIES/mcl_burning/init.lua b/mods/ENTITIES/mcl_burning/init.lua index e1943e1bc..5cf0d85fe 100644 --- a/mods/ENTITIES/mcl_burning/init.lua +++ b/mods/ENTITIES/mcl_burning/init.lua @@ -1,5 +1,4 @@ -local S = minetest.get_translator("mcl_burning") -local modpath = minetest.get_modpath("mcl_burning") +local modpath = minetest.get_modpath(minetest.get_current_modname()) mcl_burning = { storage = {}, @@ -56,7 +55,6 @@ minetest.register_on_leaveplayer(function(player) local storage = mcl_burning.storage[player] storage.fire_hud_id = nil player:get_meta():set_string("mcl_burning:data", minetest.serialize(storage)) - mcl_burning.storage[player] = nil end) @@ -70,10 +68,8 @@ minetest.register_entity("mcl_burning:fire", { glow = -1, backface_culling = false, }, - animation_frame = 0, animation_timer = 0, - on_step = function(self, dtime) local parent, storage = self:sanity_check() From be9fff4fe25d15c642f62027fc64f02b2db78f5a Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 25 May 2021 00:50:04 +0200 Subject: [PATCH 184/418] [mcl_boats] fix warnings --- mods/ENTITIES/mcl_boats/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/mcl_boats/init.lua b/mods/ENTITIES/mcl_boats/init.lua index 5facec28a..8c187617c 100644 --- a/mods/ENTITIES/mcl_boats/init.lua +++ b/mods/ENTITIES/mcl_boats/init.lua @@ -328,10 +328,10 @@ function boat.on_step(self, dtime, moveresult) p.y = p.y - boat_y_offset local new_velo - local new_acce = {x = 0, y = 0, z = 0} + local new_acce if not is_water(p) and not on_ice then -- Not on water or inside water: Free fall - local nodedef = minetest.registered_nodes[minetest.get_node(p).name] + --local nodedef = minetest.registered_nodes[minetest.get_node(p).name] new_acce = {x = 0, y = -9.8, z = 0} new_velo = get_velocity(self._v, self.object:get_yaw(), self.object:get_velocity().y) From 0d13e1ffdd2169730427865fc4b3fc0df90eadf4 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 25 May 2021 00:54:12 +0200 Subject: [PATCH 185/418] [drippingwater] fix warnings --- mods/ENTITIES/drippingwater/init.lua | 85 ++++++++++++---------------- 1 file changed, 37 insertions(+), 48 deletions(-) diff --git a/mods/ENTITIES/drippingwater/init.lua b/mods/ENTITIES/drippingwater/init.lua index 730cb7b77..e17bdda40 100644 --- a/mods/ENTITIES/drippingwater/init.lua +++ b/mods/ENTITIES/drippingwater/init.lua @@ -1,6 +1,8 @@ --Dripping Water Mod --by kddekadenz +local math = math + -- License of code, textures & sounds: CC0 --Drop entities @@ -20,26 +22,21 @@ minetest.register_entity("drippingwater:drop_water", { spritediv = {x=1, y=1}, initial_sprite_basepos = {x=0, y=0}, static_save = false, - on_activate = function(self, staticdata) self.object:set_sprite({x=0,y=0}, 1, 1, true) end, - on_step = function(self, dtime) - local k = math.random(1,222) - local ownpos = self.object:get_pos() - - if k==1 then - self.object:set_acceleration({x=0, y=-5, z=0}) - end - - if minetest.get_node({x=ownpos.x, y=ownpos.y +0.5, z=ownpos.z}).name == "air" then - self.object:set_acceleration({x=0, y=-5, z=0}) - end - + local k = math.random(1,222) + local ownpos = self.object:get_pos() + if k==1 then + self.object:set_acceleration({x=0, y=-5, z=0}) + end + if minetest.get_node({x=ownpos.x, y=ownpos.y +0.5, z=ownpos.z}).name == "air" then + self.object:set_acceleration({x=0, y=-5, z=0}) + end if minetest.get_node({x=ownpos.x, y=ownpos.y -0.5, z=ownpos.z}).name ~= "air" then - self.object:remove() - minetest.sound_play({name="drippingwater_drip"}, {pos = ownpos, gain = 0.5, max_hear_distance = 8}, true) + self.object:remove() + minetest.sound_play({name="drippingwater_drip"}, {pos = ownpos, gain = 0.5, max_hear_distance = 8}, true) end end, }) @@ -61,27 +58,21 @@ minetest.register_entity("drippingwater:drop_lava", { spritediv = {x=1, y=1}, initial_sprite_basepos = {x=0, y=0}, static_save = false, - on_activate = function(self, staticdata) self.object:set_sprite({x=0,y=0}, 1, 0, true) end, - on_step = function(self, dtime) - local k = math.random(1,222) - local ownpos = self.object:get_pos() - - if k==1 then - self.object:set_acceleration({x=0, y=-5, z=0}) - end - - if minetest.get_node({x=ownpos.x, y=ownpos.y +0.5, z=ownpos.z}).name == "air" then - self.object:set_acceleration({x=0, y=-5, z=0}) - end - - + local k = math.random(1,222) + local ownpos = self.object:get_pos() + if k == 1 then + self.object:set_acceleration({x=0, y=-5, z=0}) + end + if minetest.get_node({x=ownpos.x, y=ownpos.y +0.5, z=ownpos.z}).name == "air" then + self.object:set_acceleration({x=0, y=-5, z=0}) + end if minetest.get_node({x=ownpos.x, y=ownpos.y -0.5, z=ownpos.z}).name ~= "air" then - self.object:remove() - minetest.sound_play({name="drippingwater_lavadrip"}, {pos = ownpos, gain = 0.5, max_hear_distance = 8}, true) + self.object:remove() + minetest.sound_play({name="drippingwater_lavadrip"}, {pos = ownpos, gain = 0.5, max_hear_distance = 8}, true) end end, }) @@ -90,36 +81,34 @@ minetest.register_entity("drippingwater:drop_lava", { --Create drop -minetest.register_abm( - { +minetest.register_abm({ label = "Create water drops", nodenames = {"group:opaque", "group:leaves"}, neighbors = {"group:water"}, - interval = 2, - chance = 22, - action = function(pos) - if minetest.get_item_group(minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name, "water") ~= 0 and - minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name == "air" then + interval = 2, + chance = 22, + action = function(pos) + if minetest.get_item_group(minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name, "water") ~= 0 + and minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name == "air" then local i = math.random(-45,45) / 100 minetest.add_entity({x=pos.x + i, y=pos.y - 0.501, z=pos.z + i}, "drippingwater:drop_water") end - end, + end, }) --Create lava drop -minetest.register_abm( - { +minetest.register_abm({ label = "Create lava drops", nodenames = {"group:opaque"}, neighbors = {"group:lava"}, - interval = 2, - chance = 22, - action = function(pos) - if minetest.get_item_group(minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name, "lava") ~= 0 and - minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name == "air" then + interval = 2, + chance = 22, + action = function(pos) + if minetest.get_item_group(minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name, "lava") ~= 0 + and minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name == "air" then local i = math.random(-45,45) / 100 minetest.add_entity({x=pos.x + i, y=pos.y - 0.501, z=pos.z + i}, "drippingwater:drop_lava") end - end, -}) + end, +}) \ No newline at end of file From 36f3c26139dabd3e0a902c6a1b5406dc95bf7f0d Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 25 May 2021 00:55:14 +0200 Subject: [PATCH 186/418] [walkover] fix warnings --- mods/CORE/walkover/init.lua | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/mods/CORE/walkover/init.lua b/mods/CORE/walkover/init.lua index 220157c8b..6260b43e0 100644 --- a/mods/CORE/walkover/init.lua +++ b/mods/CORE/walkover/init.lua @@ -31,24 +31,21 @@ minetest.register_globalstep(function(dtime) timer = timer + dtime; if timer >= 0.3 then for _,player in pairs(get_connected_players()) do - local pp = player:get_pos() - pp.y = ceil(pp.y) - local loc = vector_add(pp, {x=0,y=-1,z=0}) - if loc ~= nil then - - local nodeiamon = get_node(loc) - - if nodeiamon ~= nil then - if on_walk[nodeiamon.name] then - on_walk[nodeiamon.name](loc, nodeiamon, player) - end - for i = 1, #registered_globals do + local pp = player:get_pos() + pp.y = ceil(pp.y) + local loc = vector_add(pp, {x=0,y=-1,z=0}) + if loc ~= nil then + local nodeiamon = get_node(loc) + if nodeiamon ~= nil then + if on_walk[nodeiamon.name] then + on_walk[nodeiamon.name](loc, nodeiamon, player) + end + for i = 1, #registered_globals do registered_globals[i](loc, nodeiamon, player) - end - end - end - end - + end + end + end + end timer = 0 end end) From 03c9c0b830c139aa89422032c9a587757d756bde Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 25 May 2021 00:57:42 +0200 Subject: [PATCH 187/418] [mcl_explosion] fix warnings --- mods/CORE/mcl_explosions/init.lua | 11 +++-------- mods/CORE/mcl_explosions/locale/mcl_explosions.de.tr | 2 -- mods/CORE/mcl_explosions/locale/mcl_explosions.fr.tr | 2 -- mods/CORE/mcl_explosions/locale/mcl_explosions.ru.tr | 2 -- mods/CORE/mcl_explosions/locale/template.txt | 2 -- 5 files changed, 3 insertions(+), 16 deletions(-) delete mode 100644 mods/CORE/mcl_explosions/locale/mcl_explosions.de.tr delete mode 100644 mods/CORE/mcl_explosions/locale/mcl_explosions.fr.tr delete mode 100644 mods/CORE/mcl_explosions/locale/mcl_explosions.ru.tr delete mode 100644 mods/CORE/mcl_explosions/locale/template.txt diff --git a/mods/CORE/mcl_explosions/init.lua b/mods/CORE/mcl_explosions/init.lua index dfae884cd..3a60f2f37 100644 --- a/mods/CORE/mcl_explosions/init.lua +++ b/mods/CORE/mcl_explosions/init.lua @@ -13,9 +13,7 @@ under the LGPLv2.1 license. mcl_explosions = {} local mod_fire = minetest.get_modpath("mcl_fire") ~= nil -local CONTENT_FIRE = minetest.get_content_id("mcl_fire:fire") - -local S = minetest.get_translator("mcl_explosions") +--local CONTENT_FIRE = minetest.get_content_id("mcl_fire:fire") local hash_node_position = minetest.hash_node_position local get_objects_inside_radius = minetest.get_objects_inside_radius @@ -174,14 +172,11 @@ local function trace_explode(pos, strength, raydirs, radius, info, direct, sourc local ystride = (emax.x - emin_x + 1) local zstride = ystride * (emax.y - emin_y + 1) - local pos_x = pos.x - local pos_y = pos.y - local pos_z = pos.z - local area = VoxelArea:new { + --[[local area = VoxelArea:new { MinEdge = emin, MaxEdge = emax - } + }]] local data = vm:get_data() local destroy = {} diff --git a/mods/CORE/mcl_explosions/locale/mcl_explosions.de.tr b/mods/CORE/mcl_explosions/locale/mcl_explosions.de.tr deleted file mode 100644 index 4abbc64bf..000000000 --- a/mods/CORE/mcl_explosions/locale/mcl_explosions.de.tr +++ /dev/null @@ -1,2 +0,0 @@ -# textdomain:mcl_explosions -@1 was caught in an explosion.=@1 wurde Opfer einer Explosion. diff --git a/mods/CORE/mcl_explosions/locale/mcl_explosions.fr.tr b/mods/CORE/mcl_explosions/locale/mcl_explosions.fr.tr deleted file mode 100644 index cb9a0f38e..000000000 --- a/mods/CORE/mcl_explosions/locale/mcl_explosions.fr.tr +++ /dev/null @@ -1,2 +0,0 @@ -# textdomain:mcl_explosions -@1 was caught in an explosion.=@1 a été pris dans une explosion. \ No newline at end of file diff --git a/mods/CORE/mcl_explosions/locale/mcl_explosions.ru.tr b/mods/CORE/mcl_explosions/locale/mcl_explosions.ru.tr deleted file mode 100644 index 2c885845f..000000000 --- a/mods/CORE/mcl_explosions/locale/mcl_explosions.ru.tr +++ /dev/null @@ -1,2 +0,0 @@ -# textdomain:mcl_explosions -@1 was caught in an explosion.=@1 не удалось пережить взрыва. diff --git a/mods/CORE/mcl_explosions/locale/template.txt b/mods/CORE/mcl_explosions/locale/template.txt deleted file mode 100644 index 6a9348ddf..000000000 --- a/mods/CORE/mcl_explosions/locale/template.txt +++ /dev/null @@ -1,2 +0,0 @@ -# textdomain:mcl_explosions -@1 was caught in an explosion.= From 540508638c400288ed15345b7fa16bdbaf716e6d Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 25 May 2021 01:22:25 +0200 Subject: [PATCH 188/418] rewrite flowlib to be more efficient --- mods/CORE/flowlib/init.lua | 144 ++++++++++++++++++------------------- 1 file changed, 71 insertions(+), 73 deletions(-) diff --git a/mods/CORE/flowlib/init.lua b/mods/CORE/flowlib/init.lua index e4e22a20e..ab710e476 100644 --- a/mods/CORE/flowlib/init.lua +++ b/mods/CORE/flowlib/init.lua @@ -1,95 +1,100 @@ +local math = math + +local get_node = minetest.get_node +local get_item_group = minetest.get_item_group + +local registered_nodes = minetest.registered_nodes + flowlib = {} --sum of direction vectors must match an array index + +--(sum,root) +--(0,1), (1,1+0=1), (2,1+1=2), (3,1+2^2=5), (4,2^2+2^2=8) + +local inv_roots = { + [0] = 1, + [1] = 1, + [2] = 0.70710678118655, + [4] = 0.5, + [5] = 0.44721359549996, + [8] = 0.35355339059327, +} + local function to_unit_vector(dir_vector) - --(sum,root) - -- (0,1), (1,1+0=1), (2,1+1=2), (3,1+2^2=5), (4,2^2+2^2=8) - local inv_roots = {[0] = 1, [1] = 1, [2] = 0.70710678118655, [4] = 0.5 - , [5] = 0.44721359549996, [8] = 0.35355339059327} - local sum = dir_vector.x*dir_vector.x + dir_vector.z*dir_vector.z - return {x=dir_vector.x*inv_roots[sum],y=dir_vector.y - ,z=dir_vector.z*inv_roots[sum]} + local sum = dir_vector.x * dir_vector.x + dir_vector.z * dir_vector.z + return {x = dir_vector.x * inv_roots[sum], y = dir_vector.y, z = dir_vector.z * inv_roots[sum]} end -local is_touching = function(realpos,nodepos,radius) +local function is_touching(realpos,nodepos,radius) local boarder = 0.5 - radius - return (math.abs(realpos - nodepos) > (boarder)) + return math.abs(realpos - nodepos) > (boarder) end flowlib.is_touching = is_touching -local is_water = function(pos) - return (minetest.get_item_group(minetest.get_node( - {x=pos.x,y=pos.y,z=pos.z}).name - , "water") ~= 0) +local function is_water(pos) + return get_item_group(get_node(pos).name, "water") ~= 0 end flowlib.is_water = is_water -local node_is_water = function(node) - return (minetest.get_item_group(node.name, "water") ~= 0) +local function node_is_water(node) + return get_item_group(node.name, "water") ~= 0 end flowlib.node_is_water = node_is_water -local is_lava = function(pos) - return (minetest.get_item_group(minetest.get_node( - {x=pos.x,y=pos.y,z=pos.z}).name - , "lava") ~= 0) +local function is_lava(pos) + return get_item_group(get_node(pos).name, "lava") ~= 0 end flowlib.is_lava = is_lava -local node_is_lava = function(node) - return (minetest.get_item_group(node.name, "lava") ~= 0) +local function node_is_lava(node) + return get_item_group(node.name, "lava") ~= 0 end flowlib.node_is_lava = node_is_lava -local is_liquid = function(pos) - return (minetest.get_item_group(minetest.get_node( - {x=pos.x,y=pos.y,z=pos.z}).name - , "liquid") ~= 0) +local function is_liquid(pos) + return get_item_group(get_node(pos).name, "liquid") ~= 0 end flowlib.is_liquid = is_liquid -local node_is_liquid = function(node) - return (minetest.get_item_group(node.name, "liquid") ~= 0) +local function node_is_liquid(node) + return minetest.get_item_group(node.name, "liquid") ~= 0 end flowlib.node_is_liquid = node_is_liquid --This code is more efficient -local function quick_flow_logic(node,pos_testing,direction) +local function quick_flow_logic(node, pos_testing, direction) local name = node.name - if not minetest.registered_nodes[name] then + if not registered_nodes[name] then return 0 end - if minetest.registered_nodes[name].liquidtype == "source" then - local node_testing = minetest.get_node(pos_testing) - local param2_testing = node_testing.param2 - if not minetest.registered_nodes[node_testing.name] then + if registered_nodes[name].liquidtype == "source" then + local node_testing = get_node(pos_testing) + if not registered_nodes[node_testing.name] then return 0 end - if minetest.registered_nodes[node_testing.name].liquidtype - ~= "flowing" then + if registered_nodes[node_testing.name].liquidtype ~= "flowing" then return 0 else return direction end - elseif minetest.registered_nodes[name].liquidtype == "flowing" then - local node_testing = minetest.get_node(pos_testing) + elseif registered_nodes[name].liquidtype == "flowing" then + local node_testing = get_node(pos_testing) local param2_testing = node_testing.param2 - if not minetest.registered_nodes[node_testing.name] then + if not registered_nodes[node_testing.name] then return 0 end - if minetest.registered_nodes[node_testing.name].liquidtype - == "source" then + if registered_nodes[node_testing.name].liquidtype == "source" then return -direction - elseif minetest.registered_nodes[node_testing.name].liquidtype - == "flowing" then + elseif registered_nodes[node_testing.name].liquidtype == "flowing" then if param2_testing < node.param2 then if (node.param2 - param2_testing) > 6 then return -direction @@ -108,48 +113,41 @@ local function quick_flow_logic(node,pos_testing,direction) return 0 end -local quick_flow = function(pos,node) - local x = 0 - local z = 0 - +local function quick_flow(pos, node) if not node_is_liquid(node) then - return {x=0,y=0,z=0} + return {x = 0, y = 0, z = 0} end - - x = x + quick_flow_logic(node,{x=pos.x-1,y=pos.y,z=pos.z},-1) - x = x + quick_flow_logic(node,{x=pos.x+1,y=pos.y,z=pos.z}, 1) - z = z + quick_flow_logic(node,{x=pos.x,y=pos.y,z=pos.z-1},-1) - z = z + quick_flow_logic(node,{x=pos.x,y=pos.y,z=pos.z+1}, 1) - - return to_unit_vector({x=x,y=0,z=z}) + local x = quick_flow_logic(node,{x = pos.x-1, y = pos.y, z = pos.z},-1) + quick_flow_logic(node,{x = pos.x+1, y = pos.y, z = pos.z}, 1) + local z = quick_flow_logic(node,{x = pos.x, y = pos.y, z = pos.z-1},-1) + quick_flow_logic(node,{x = pos.x, y = pos.y, z = pos.z+1}, 1) + return to_unit_vector({x = x, y = 0, z = z}) end flowlib.quick_flow = quick_flow +--if not in water but touching, move centre to touching block +--x has higher precedence than z +--if pos changes with x, it affects z - --if not in water but touching, move centre to touching block - --x has higher precedence than z - --if pos changes with x, it affects z -local move_centre = function(pos,realpos,node,radius) - if is_touching(realpos.x,pos.x,radius) then - if is_liquid({x=pos.x-1,y=pos.y,z=pos.z}) then - node = minetest.get_node({x=pos.x-1,y=pos.y,z=pos.z}) - pos = {x=pos.x-1,y=pos.y,z=pos.z} - elseif is_liquid({x=pos.x+1,y=pos.y,z=pos.z}) then - node = minetest.get_node({x=pos.x+1,y=pos.y,z=pos.z}) - pos = {x=pos.x+1,y=pos.y,z=pos.z} +local function move_centre(pos, realpos, node, radius) + if is_touching(realpos.x, pos.x, radius) then + if is_liquid({x = pos.x-1, y = pos.y, z = pos.z}) then + node = get_node({x=pos.x-1, y = pos.y, z = pos.z}) + pos = {x = pos.x-1, y = pos.y, z = pos.z} + elseif is_liquid({x = pos.x+1, y = pos.y, z = pos.z}) then + node = get_node({x = pos.x+1, y = pos.y, z = pos.z}) + pos = {x = pos.x+1, y = pos.y, z = pos.z} end end - if is_touching(realpos.z,pos.z,radius) then - if is_liquid({x=pos.x,y=pos.y,z=pos.z-1}) then - node = minetest.get_node({x=pos.x,y=pos.y,z=pos.z-1}) - pos = {x=pos.x,y=pos.y,z=pos.z-1} - elseif is_liquid({x=pos.x,y=pos.y,z=pos.z+1}) then - node = minetest.get_node({x=pos.x,y=pos.y,z=pos.z+1}) - pos = {x=pos.x,y=pos.y,z=pos.z+1} + if is_touching(realpos.z, pos.z, radius) then + if is_liquid({x = pos.x, y = pos.y, z = pos.z - 1}) then + node = get_node({x = pos.x, y = pos.y, z = pos.z - 1}) + pos = {x = pos.x, y = pos.y, z = pos.z - 1} + elseif is_liquid({x = pos.x, y = pos.y, z = pos.z + 1}) then + node = get_node({x = pos.x, y = pos.y, z = pos.z + 1}) + pos = {x = pos.x, y = pos.y, z = pos.z + 1} end end - return pos,node + return pos, node end flowlib.move_centre = move_centre From f5a91f7c24520dfd385f8048d215bb271dd36b6e Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 25 May 2021 01:23:41 +0200 Subject: [PATCH 189/418] [biomeinfo] fix warnings --- mods/CORE/biomeinfo/init.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mods/CORE/biomeinfo/init.lua b/mods/CORE/biomeinfo/init.lua index 5013647ed..950925f9d 100644 --- a/mods/CORE/biomeinfo/init.lua +++ b/mods/CORE/biomeinfo/init.lua @@ -81,11 +81,11 @@ if v6_use_snow_biomes then end local v6_freq_desert = tonumber(minetest.get_mapgen_setting("mgv6_freq_desert") or 0.45) -local NOISE_MAGIC_X = 1619 -local NOISE_MAGIC_Y = 31337 -local NOISE_MAGIC_Z = 52591 -local NOISE_MAGIC_SEED = 1013 -local noise2d = function(x, y, seed) +--local NOISE_MAGIC_X = 1619 +--local NOISE_MAGIC_Y = 31337 +--local NOISE_MAGIC_Z = 52591 +--local NOISE_MAGIC_SEED = 1013 +local function noise2d(x, y, seed) -- TODO: implement noise2d function for biome blend return 0 --[[ From f61102279f6aff046ed203a1370ef576c4a910a7 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 25 May 2021 01:26:26 +0200 Subject: [PATCH 190/418] [_mcl_autogroup] fix warnings --- mods/CORE/_mcl_autogroup/init.lua | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/mods/CORE/_mcl_autogroup/init.lua b/mods/CORE/_mcl_autogroup/init.lua index c8475d0bd..e6b3aa2d0 100644 --- a/mods/CORE/_mcl_autogroup/init.lua +++ b/mods/CORE/_mcl_autogroup/init.lua @@ -121,7 +121,7 @@ local hardness_values = get_hardness_values_for_groups() -- hardness_value. Used for quick lookup. local hardness_lookup = get_hardness_lookup_for_groups(hardness_values) -local function compute_creativetimes(group) +--[[local function compute_creativetimes(group) local creativetimes = {} for index, hardness in pairs(hardness_values[group]) do @@ -129,7 +129,7 @@ local function compute_creativetimes(group) end return creativetimes -end +end]] -- Get the list of digging times for using a specific tool on a specific -- diggroup. @@ -239,13 +239,13 @@ function mcl_autogroup.can_harvest(nodename, toolname) end -- Get one groupcap field for using a specific tool on a specific group. -local function get_groupcap(group, can_harvest, multiplier, efficiency, uses) +--[[local function get_groupcap(group, can_harvest, multiplier, efficiency, uses) return { times = get_digtimes(group, can_harvest, multiplier, efficiency), uses = uses, maxlevel = 0, } -end +end]] -- Returns the tool_capabilities from a tool definition or a default set of -- tool_capabilities @@ -271,7 +271,7 @@ end -- toolname - Name of the tool being enchanted (like "mcl_tools:diamond_pickaxe") -- efficiency - The efficiency level the tool is enchanted with (default 0) -- --- NOTE: +-- NOTE: -- This function can only be called after mod initialization. Otherwise a mod -- would have to add _mcl_autogroup as a dependency which would break the mod -- loading order. @@ -288,7 +288,7 @@ end -- toolname - Name of the tool used -- diggroup - The name of the diggroup the tool is used on -- --- NOTE: +-- NOTE: -- This function can only be called after mod initialization. Otherwise a mod -- would have to add _mcl_autogroup as a dependency which would break the mod -- loading order. @@ -315,12 +315,12 @@ local overwrite = function() newgroups.opaque = 1 end - local creative_breakable = false + --local creative_breakable = false -- Assign groups used for digging this node depending on -- the registered digging groups for g, gdef in pairs(mcl_autogroup.registered_diggroups) do - creative_breakable = true + --creative_breakable = true local index = hardness_lookup[g][ndef._mcl_hardness or 0] if ndef.groups[g] then if gdef.levels then From 0cc11d0bbb1f8c6acf98476c2908026af462ddaf Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 25 May 2021 01:28:10 +0200 Subject: [PATCH 191/418] [mcl_loot] fix warnings --- mods/CORE/mcl_loot/init.lua | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/mods/CORE/mcl_loot/init.lua b/mods/CORE/mcl_loot/init.lua index 6db743740..1b2c50807 100644 --- a/mods/CORE/mcl_loot/init.lua +++ b/mods/CORE/mcl_loot/init.lua @@ -40,10 +40,9 @@ function mcl_loot.get_loot(loot_definitions, pr) total_weight = total_weight + (loot_definitions.items[i].weight or 1) end - local stacks_min = loot_definitions.stacks_min - local stacks_max = loot_definitions.stacks_max - if not stacks_min then stacks_min = 1 end - if not stacks_max then stacks_max = 1 end + --local stacks_min = loot_definitions.stacks_min or 1 + --local stacks_max = loot_definitions.stacks_max or 1 + local stacks = pr:next(loot_definitions.stacks_min, loot_definitions.stacks_max) for s=1, stacks do local r = pr:next(1, total_weight) From 00f4cfa5b5216bfcfe41f11598ccf2f968c4262f Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 25 May 2021 01:33:26 +0200 Subject: [PATCH 192/418] simplify mcl_util code --- mods/CORE/mcl_util/init.lua | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/mods/CORE/mcl_util/init.lua b/mods/CORE/mcl_util/init.lua index 1bf3add38..0168229f2 100644 --- a/mods/CORE/mcl_util/init.lua +++ b/mods/CORE/mcl_util/init.lua @@ -457,9 +457,7 @@ function mcl_util.calculate_durability(itemstack) end end if not uses then - local toolcaps = itemstack:get_tool_capabilities() - local groupcaps = toolcaps.groupcaps - for _, v in pairs(groupcaps) do + for _, v in pairs(itemstack:get_tool_capabilities().groupcaps) do uses = v.uses break end From 79cf98c8e30be6026eea09bfa8401243149fae8f Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 25 May 2021 01:48:14 +0200 Subject: [PATCH 193/418] [mcl_mobs] fix some warnings --- mods/ENTITIES/mcl_mobs/api/api.lua | 154 ++++++++++++----------------- mods/ENTITIES/mcl_mobs/mod.conf | 2 +- 2 files changed, 65 insertions(+), 91 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api/api.lua b/mods/ENTITIES/mcl_mobs/api/api.lua index 878474cf1..41b522fef 100644 --- a/mods/ENTITIES/mcl_mobs/api/api.lua +++ b/mods/ENTITIES/mcl_mobs/api/api.lua @@ -11,133 +11,111 @@ local minetest_get_objects_inside_radius = minetest.get_objects_inside_radius local minetest_get_modpath = minetest.get_modpath local minetest_registered_nodes = minetest.registered_nodes local minetest_get_node = minetest.get_node -local minetest_get_item_group = minetest.get_item_group +--local minetest_get_item_group = minetest.get_item_group local minetest_registered_entities = minetest.registered_entities -local minetest_line_of_sight = minetest.line_of_sight -local minetest_after = minetest.after -local minetest_sound_play = minetest.sound_play -local minetest_add_particlespawner = minetest.add_particlespawner -local minetest_registered_items = minetest.registered_items -local minetest_set_node = minetest.set_node +--local minetest_line_of_sight = minetest.line_of_sight +--local minetest_after = minetest.after +--local minetest_sound_play = minetest.sound_play +--local minetest_add_particlespawner = minetest.add_particlespawner +--local minetest_registered_items = minetest.registered_items +--local minetest_set_node = minetest.set_node local minetest_add_item = minetest.add_item -local minetest_get_craft_result = minetest.get_craft_result -local minetest_find_path = minetest.find_path -local minetest_is_protected = minetest.is_protected +--local minetest_get_craft_result = minetest.get_craft_result +--local minetest_find_path = minetest.find_path local minetest_is_creative_enabled = minetest.is_creative_enabled -local minetest_find_node_near = minetest.find_node_near -local minetest_find_nodes_in_area_under_air = minetest.find_nodes_in_area_under_air -local minetest_raycast = minetest.raycast -local minetest_get_us_time = minetest.get_us_time +--local minetest_find_node_near = minetest.find_node_near +--local minetest_find_nodes_in_area_under_air = minetest.find_nodes_in_area_under_air +--local minetest_raycast = minetest.raycast +--local minetest_get_us_time = minetest.get_us_time local minetest_add_entity = minetest.add_entity -local minetest_get_natural_light = minetest.get_natural_light -local minetest_get_node_or_nil = minetest.get_node_or_nil +--local minetest_get_natural_light = minetest.get_natural_light +--local minetest_get_node_or_nil = minetest.get_node_or_nil -- localize math functions -local math_pi = math.pi -local math_sin = math.sin -local math_cos = math.cos -local math_abs = math.abs -local math_min = math.min -local math_max = math.max -local math_atan = math.atan -local math_random = math.random -local math_floor = math.floor +local math = math -- localize vector functions -local vector_new = vector.new -local vector_add = vector.add -local vector_length = vector.length -local vector_direction = vector.direction -local vector_normalize = vector.normalize -local vector_multiply = vector.multiply -local vector_divide = vector.divide +local vector = vector + +local string = string -- mob constants -local BREED_TIME = 30 -local BREED_TIME_AGAIN = 300 -local CHILD_GROW_TIME = 60*20 -local DEATH_DELAY = 0.5 +--local BREED_TIME = 30 +--local BREED_TIME_AGAIN = 300 +--local CHILD_GROW_TIME = 60*20 +--local DEATH_DELAY = 0.5 local DEFAULT_FALL_SPEED = -10 -local FLOP_HEIGHT = 5.0 -local FLOP_HOR_SPEED = 1.5 +--local FLOP_HEIGHT = 5.0 +--local FLOP_HOR_SPEED = 1.5 local GRAVITY = minetest_settings:get("movement_gravity")-- + 9.81 +local MAX_MOB_NAME_LENGTH = 30 -local MOB_CAP = {} + +--[[local MOB_CAP = {} MOB_CAP.hostile = 70 MOB_CAP.passive = 10 MOB_CAP.ambient = 15 MOB_CAP.water = 15 +]] -- Load main settings -local damage_enabled = minetest_settings:get_bool("enable_damage") -local disable_blood = minetest_settings:get_bool("mobs_disable_blood") -local mobs_drop_items = minetest_settings:get_bool("mobs_drop_items") ~= false -local mobs_griefing = minetest_settings:get_bool("mobs_griefing") ~= false -local spawn_protected = minetest_settings:get_bool("mobs_spawn_protected") ~= false -local remove_far = true +--local damage_enabled = minetest_settings:get_bool("enable_damage") +--local disable_blood = minetest_settings:get_bool("mobs_disable_blood") +--local mobs_drop_items = minetest_settings:get_bool("mobs_drop_items") ~= false +--local mobs_griefing = minetest_settings:get_bool("mobs_griefing") ~= false +--local spawn_protected = minetest_settings:get_bool("mobs_spawn_protected") ~= false +--local remove_far = true local difficulty = tonumber(minetest_settings:get("mob_difficulty")) or 1.0 -local show_health = false -local max_per_block = tonumber(minetest_settings:get("max_objects_per_block") or 64) -local mobs_spawn_chance = tonumber(minetest_settings:get("mobs_spawn_chance") or 2.5) +--local show_health = false +--local max_per_block = tonumber(minetest_settings:get("max_objects_per_block") or 64) +---local mobs_spawn_chance = tonumber(minetest_settings:get("mobs_spawn_chance") or 2.5) -- pathfinding settings -local enable_pathfinding = true -local stuck_timeout = 3 -- how long before mob gets stuck in place and starts searching -local stuck_path_timeout = 10 -- how long will mob follow path before giving up +--local enable_pathfinding = true +--local stuck_timeout = 3 -- how long before mob gets stuck in place and starts searching +--local stuck_path_timeout = 10 -- how long will mob follow path before giving up -- default nodes -local node_ice = "mcl_core:ice" -local node_snowblock = "mcl_core:snowblock" -local node_snow = "mcl_core:snow" +--local node_ice = "mcl_core:ice" +--local node_snowblock = "mcl_core:snowblock" +--local node_snow = "mcl_core:snow" mobs.fallback_node = minetest.registered_aliases["mapgen_dirt"] or "mcl_core:dirt" -local mod_weather = minetest_get_modpath("mcl_weather") -local mod_explosions = minetest_get_modpath("mcl_explosions") +--local mod_weather = minetest_get_modpath("mcl_weather") +--local mod_explosions = minetest_get_modpath("mcl_explosions") local mod_mobspawners = minetest_get_modpath("mcl_mobspawners") -local mod_hunger = minetest_get_modpath("mcl_hunger") -local mod_worlds = minetest_get_modpath("mcl_worlds") -local mod_armor = minetest_get_modpath("mcl_armor") -local mod_experience = minetest_get_modpath("mcl_experience") +--local mod_hunger = minetest_get_modpath("mcl_hunger") +--local mod_worlds = minetest_get_modpath("mcl_worlds") +--local mod_armor = minetest_get_modpath("mcl_armor") +--local mod_experience = minetest_get_modpath("mcl_experience") -- random locals I found -local los_switcher = false -local height_switcher = false +--local los_switcher = false +--local height_switcher = false -- Get translator local S = minetest.get_translator("mcl_mobs") -- CMI support check -local use_cmi = minetest.global_exists("cmi") - - --- Invisibility mod check -mobs.invis = {} -if minetest.global_exists("invisibility") then - mobs.invis = invisibility -end - +--local use_cmi = minetest.global_exists("cmi") -- creative check function mobs.is_creative(name) return minetest_is_creative_enabled(name) end - -local atan = function(x) +--[[local function atan(x) if not x or x ~= x then return 0 else - return math_atan(x) + return math.atan(x) end -end - - - +end]] -- Shows helpful debug info above each mob -local mobs_debug = minetest_settings:get_bool("mobs_debug", false) +--local mobs_debug = minetest_settings:get_bool("mobs_debug", false) -- Peaceful mode message so players will know there are no monsters if minetest_settings:get_bool("only_peaceful_mobs", false) then @@ -191,7 +169,7 @@ function mobs:register_mob(name, def) if (not value) or (value == default) or (value == special) then return default else - return math_max(min, value * difficulty) + return math.max(min, value * difficulty) end end @@ -366,15 +344,11 @@ function mobs:register_mob(name, def) random_sound_timer_min = 3, random_sound_timer_max = 10, - --head code variables --defaults are for the cow's default --because I don't know what else to set them --to :P - has_head = def.has_head or false, - head_bone = def.head_bone, - --you must use these to adjust the mob's head positions --has_head is used as a logic gate (quick easy check) @@ -444,7 +418,7 @@ function mobs:register_mob(name, def) --on_detach_child = mob_detach_child, on_activate = function(self, staticdata, dtime) - self.object:set_acceleration(vector_new(0,-GRAVITY, 0)) + self.object:set_acceleration(vector.new(0,-GRAVITY, 0)) return mobs.mob_activate(self, staticdata, def, dtime) end, @@ -556,10 +530,10 @@ function mobs:register_arrow(name, def) and def.tail_texture then --do this to prevent clipping through main entity sprite - local pos_adjustment = vector_multiply(vector_normalize(vel), -1) + local pos_adjustment = vector.multiply(vector.normalize(vel), -1) local divider = def.tail_distance_divider or 1 - pos_adjustment = vector_divide(pos_adjustment, divider) - local new_pos = vector_add(pos, pos_adjustment) + pos_adjustment = vector.divide(pos_adjustment, divider) + local new_pos = vector.add(pos, pos_adjustment) minetest.add_particle({ pos = new_pos, velocity = {x = 0, y = 0, z = 0}, @@ -693,12 +667,12 @@ function mobs:register_egg(mob, desc, background, addegg, no_creative) if pos --and within_limits(pos, 0) - and not minetest_is_protected(pos, placer:get_player_name()) then + and not minetest.is_protected(pos, placer:get_player_name()) then local name = placer:get_player_name() local privs = minetest.get_player_privs(name) if mod_mobspawners and under.name == "mcl_mobspawners:spawner" then - if minetest_is_protected(pointed_thing.under, name) then + if minetest.is_protected(pointed_thing.under, name) then minetest.record_protection_violation(pointed_thing.under, name) return itemstack end diff --git a/mods/ENTITIES/mcl_mobs/mod.conf b/mods/ENTITIES/mcl_mobs/mod.conf index 9dfb43aef..2a91a7764 100644 --- a/mods/ENTITIES/mcl_mobs/mod.conf +++ b/mods/ENTITIES/mcl_mobs/mod.conf @@ -2,4 +2,4 @@ name = mcl_mobs author = PilzAdam description = Adds a mob API for mods to add animals or monsters, etc. depends = mcl_particles -optional_depends = mcl_weather, mcl_explosions, mcl_hunger, mcl_worlds, invisibility, cmi, doc_identifier, mcl_armor, mcl_portals, mcl_experience +optional_depends = mcl_weather, mcl_explosions, mcl_hunger, mcl_worlds, cmi, doc_identifier, mcl_armor, mcl_portals, mcl_experience From d3a237384dc5c614733799b2f93ad19343777529 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 25 May 2021 08:40:21 +0200 Subject: [PATCH 194/418] [mcl_end] fix warnings --- mods/ITEMS/mcl_end/chorus_plant.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mods/ITEMS/mcl_end/chorus_plant.lua b/mods/ITEMS/mcl_end/chorus_plant.lua index b54259885..0e35ff286 100644 --- a/mods/ITEMS/mcl_end/chorus_plant.lua +++ b/mods/ITEMS/mcl_end/chorus_plant.lua @@ -450,6 +450,8 @@ function mcl_end.grow_chorus_plant_step(pos, node, pr) end --- ABM --- +local seed = minetest.get_mapgen_params().seed +local pr = PseudoRandom(seed) minetest.register_abm({ label = "Chorus plant growth", nodenames = { "mcl_end:chorus_flower" }, From 8592670f9b0592e1e1eaf26730cbf9dc99757904 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 25 May 2021 08:44:24 +0200 Subject: [PATCH 195/418] [tsm_railcorridors] fix warnings --- mods/MAPGEN/tsm_railcorridors/init.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mods/MAPGEN/tsm_railcorridors/init.lua b/mods/MAPGEN/tsm_railcorridors/init.lua index 2414cc962..550167dc3 100644 --- a/mods/MAPGEN/tsm_railcorridors/init.lua +++ b/mods/MAPGEN/tsm_railcorridors/init.lua @@ -114,7 +114,8 @@ if not tsm_railcorridors.nodes.corridor_woods_function then end -- Random Perlin noise generators -local pr, pr_carts, pr_treasures, pr_deco, webperlin_major, webperlin_minor +local pr, pr_carts, pr_deco, webperlin_major, webperlin_minor +--local pr_treasures local function InitRandomizer(seed) -- Mostly used for corridor gen. @@ -124,7 +125,7 @@ local function InitRandomizer(seed) -- Separate randomizer for carts because spawning carts is very timing-dependent pr_carts = PseudoRandom(seed-654) -- Chest contents randomizer - pr_treasures = PseudoRandom(seed+777) + --pr_treasures = PseudoRandom(seed+777) -- Used for cobweb generation, both noises have to reach a high value for cobwebs to appear webperlin_major = PerlinNoise(934, 3, 0.6, 500) webperlin_minor = PerlinNoise(834, 3, 0.6, 50) From 42d3830c4820fe6f22ff42b271d05d5b42296dd3 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 25 May 2021 08:49:46 +0200 Subject: [PATCH 196/418] [mcl_nether] fix warnings --- mods/ITEMS/mcl_nether/lava.lua | 10 +--------- mods/ITEMS/mcl_nether/locale/mcl_nether.de.tr | 2 -- mods/ITEMS/mcl_nether/locale/mcl_nether.fr.tr | 4 +--- mods/ITEMS/mcl_nether/locale/mcl_nether.ru.tr | 2 -- mods/ITEMS/mcl_nether/locale/template.txt | 4 +--- 5 files changed, 3 insertions(+), 19 deletions(-) diff --git a/mods/ITEMS/mcl_nether/lava.lua b/mods/ITEMS/mcl_nether/lava.lua index da85b8e3c..035a50322 100644 --- a/mods/ITEMS/mcl_nether/lava.lua +++ b/mods/ITEMS/mcl_nether/lava.lua @@ -1,12 +1,6 @@ -- Lava in the Nether -local S = minetest.get_translator("mcl_nether") -local N = function(s) return s end - -local msg = { - N("@1 has become one with the lava."), - N("@1 has been consumed by the lava."), -} +local S = minetest.get_translator(minetest.get_current_modname()) -- TODO: Increase flow speed. This could be done by reducing viscosity, -- but this would also allow players to swim faster in lava. @@ -20,7 +14,6 @@ lava_src_def._doc_items_usagehelp = nil lava_src_def.liquid_range = 7 lava_src_def.liquid_alternative_source = "mcl_nether:nether_lava_source" lava_src_def.liquid_alternative_flowing = "mcl_nether:nether_lava_flowing" -lava_src_def._mcl_node_death_message = msg, minetest.register_node("mcl_nether:nether_lava_source", lava_src_def) local lava_flow_def = table.copy(minetest.registered_nodes["mcl_core:lava_flowing"]) @@ -29,7 +22,6 @@ lava_flow_def._doc_items_create_entry = false lava_flow_def.liquid_range = 7 lava_flow_def.liquid_alternative_flowing = "mcl_nether:nether_lava_flowing" lava_flow_def.liquid_alternative_source = "mcl_nether:nether_lava_source" -lava_flow_def._mcl_node_death_message = msg, minetest.register_node("mcl_nether:nether_lava_flowing", lava_flow_def) -- Add entry aliases for the Help diff --git a/mods/ITEMS/mcl_nether/locale/mcl_nether.de.tr b/mods/ITEMS/mcl_nether/locale/mcl_nether.de.tr index bfa62488c..f81f381e2 100644 --- a/mods/ITEMS/mcl_nether/locale/mcl_nether.de.tr +++ b/mods/ITEMS/mcl_nether/locale/mcl_nether.de.tr @@ -38,5 +38,3 @@ Place this item on soul sand to plant it and watch it grow.=Platzieren Sie den G Burns your feet=Verbrennt Ihre Füße Grows on soul sand=Wächst auf Seelensand Reduces walking speed=Reduziert das Schritttempo -@1 has become one with the lava.=@1 wurde eins mit der Lava. -@1 has been consumed by the lava.=@1 wurde von der Lava verzehrt. diff --git a/mods/ITEMS/mcl_nether/locale/mcl_nether.fr.tr b/mods/ITEMS/mcl_nether/locale/mcl_nether.fr.tr index 11a046374..3e3583355 100644 --- a/mods/ITEMS/mcl_nether/locale/mcl_nether.fr.tr +++ b/mods/ITEMS/mcl_nether/locale/mcl_nether.fr.tr @@ -37,6 +37,4 @@ Nether warts are plants home to the Nether. They can be planted on soul sand and Place this item on soul sand to plant it and watch it grow.=Placez cet article sur du sable d'âme pour le planter et regardez-le grandir. Burns your feet=Vous brûle les pieds Grows on soul sand=Pousse sur le sable de l'âme -Reduces walking speed=Réduit la vitesse de marche -@1 has become one with the lava.=@1 est devenu un avec la lave. -@1 has been consumed by the lava.=@1 a été consumé par la lave. \ No newline at end of file +Reduces walking speed=Réduit la vitesse de marche \ No newline at end of file diff --git a/mods/ITEMS/mcl_nether/locale/mcl_nether.ru.tr b/mods/ITEMS/mcl_nether/locale/mcl_nether.ru.tr index 2cfdd370b..f546d16ca 100644 --- a/mods/ITEMS/mcl_nether/locale/mcl_nether.ru.tr +++ b/mods/ITEMS/mcl_nether/locale/mcl_nether.ru.tr @@ -38,5 +38,3 @@ Place this item on soul sand to plant it and watch it grow.=Поместите Burns your feet=Обжигает ваши ноги Grows on soul sand=Растёт на песке душ Reduces walking speed=Уменьшает скорость ходьбы -@1 has become one with the lava.=@1 породнился(лась) с лавой. -@1 has been consumed by the lava.=@1 был(а) поглощен(а) лавой. diff --git a/mods/ITEMS/mcl_nether/locale/template.txt b/mods/ITEMS/mcl_nether/locale/template.txt index 7b5052166..0e69ad520 100644 --- a/mods/ITEMS/mcl_nether/locale/template.txt +++ b/mods/ITEMS/mcl_nether/locale/template.txt @@ -37,6 +37,4 @@ Nether warts are plants home to the Nether. They can be planted on soul sand and Place this item on soul sand to plant it and watch it grow.= Burns your feet= Grows on soul sand= -Reduces walking speed= -@1 has become one with the lava.= -@1 has been consumed by the lava.= +Reduces walking speed= \ No newline at end of file From 3f3abbbee11f0f80997886f4c131c1f61aeac7d3 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 25 May 2021 09:09:16 +0200 Subject: [PATCH 197/418] speedup mcl_particles code --- mods/CORE/mcl_particles/init.lua | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/mods/CORE/mcl_particles/init.lua b/mods/CORE/mcl_particles/init.lua index 48e9db8df..4854afd54 100644 --- a/mods/CORE/mcl_particles/init.lua +++ b/mods/CORE/mcl_particles/init.lua @@ -1,3 +1,12 @@ +local vector = vector +local table = table + +local hash_node_position = minetest.hash_node_position +local add_particlespawner = minetest.add_particlespawner +local delete_particlespawner = minetest.delete_particlespawner + +local ipairs = ipairs + mcl_particles = {} -- Table of particlespawner IDs on a per-node hash basis @@ -32,11 +41,11 @@ function mcl_particles.add_node_particlespawner(pos, particlespawner_definition, if allowed_level == 0 or levels[level] > allowed_level then return end - local poshash = minetest.hash_node_position(pos) + local poshash = hash_node_position(pos) if not poshash then return end - local id = minetest.add_particlespawner(particlespawner_definition) + local id = add_particlespawner(particlespawner_definition) if id == -1 then return end @@ -47,6 +56,8 @@ function mcl_particles.add_node_particlespawner(pos, particlespawner_definition, return id end +local add_node_particlespawner = mcl_particles.add_node_particlespawner + -- Deletes all particlespawners that are assigned to a node position. -- If no particlespawners exist for this position, nothing happens. -- pos: Node positon. MUST use integer values! @@ -55,11 +66,11 @@ function mcl_particles.delete_node_particlespawners(pos) if allowed_level == 0 then return false end - local poshash = minetest.hash_node_position(pos) + local poshash = hash_node_position(pos) local ids = particle_nodes[poshash] if ids then for i=1, #ids do - minetest.delete_particlespawner(ids[i]) + delete_particlespawner(ids[i]) end particle_nodes[poshash] = nil return true @@ -72,7 +83,6 @@ end local smoke_pdef_cached = {} function mcl_particles.spawn_smoke(pos, name, smoke_pdef_base) - local min = math.min local new_minpos = vector.add(pos, smoke_pdef_base.minrelpos) local new_maxpos = vector.add(pos, smoke_pdef_base.maxrelpos) @@ -81,7 +91,7 @@ function mcl_particles.spawn_smoke(pos, name, smoke_pdef_base) for i, smoke_pdef in ipairs(smoke_pdef_cached[name]) do smoke_pdef.minpos = new_minpos smoke_pdef.maxpos = new_maxpos - mcl_particles.add_node_particlespawner(pos, smoke_pdef, "high") + add_node_particlespawner(pos, smoke_pdef, "high") end -- cache already populated else @@ -111,13 +121,11 @@ function mcl_particles.spawn_smoke(pos, name, smoke_pdef_base) smoke_pdef.animation.length = exptime + 0.1 -- minexptime must be set such that the last frame is actully rendered, -- even if its very short. Larger exptime -> larger range - smoke_pdef.minexptime = min(exptime, (7.0/8.0 * (exptime + 0.1) + 0.1)) + smoke_pdef.minexptime = math.min(exptime, (7.0/8.0 * (exptime + 0.1) + 0.1)) smoke_pdef.texture = "mcl_particles_smoke_anim.png^[colorize:#000000:" ..colorize - - mcl_particles.add_node_particlespawner(pos, smoke_pdef, "high") - + add_node_particlespawner(pos, smoke_pdef, "high") table.insert(smoke_pdef_cached[name], table.copy(smoke_pdef)) end end end -end +end \ No newline at end of file From 981f3d5d74ed49a9748cee3d168c8626bab1fd61 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 25 May 2021 10:51:46 +0200 Subject: [PATCH 198/418] fix some codestyle issues --- mods/CORE/mcl_worlds/init.lua | 62 +++++++++++++++++------------------ 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/mods/CORE/mcl_worlds/init.lua b/mods/CORE/mcl_worlds/init.lua index 435ce51c7..ec8144794 100644 --- a/mods/CORE/mcl_worlds/init.lua +++ b/mods/CORE/mcl_worlds/init.lua @@ -33,15 +33,15 @@ end -- If the Y coordinate is not located in any dimension, it will return: -- nil, "void" function mcl_worlds.y_to_layer(y) - if y >= mcl_vars.mg_overworld_min then - return y - mcl_vars.mg_overworld_min, "overworld" - elseif y >= mcl_vars.mg_nether_min and y <= mcl_vars.mg_nether_max+128 then - return y - mcl_vars.mg_nether_min, "nether" - elseif y >= mcl_vars.mg_end_min and y <= mcl_vars.mg_end_max then - return y - mcl_vars.mg_end_min, "end" - else - return nil, "void" - end + if y >= mcl_vars.mg_overworld_min then + return y - mcl_vars.mg_overworld_min, "overworld" + elseif y >= mcl_vars.mg_nether_min and y <= mcl_vars.mg_nether_max+128 then + return y - mcl_vars.mg_nether_min, "nether" + elseif y >= mcl_vars.mg_end_min and y <= mcl_vars.mg_end_max then + return y - mcl_vars.mg_end_min, "end" + else + return nil, "void" + end end -- Takes a pos and returns the dimension it belongs to (same as above) @@ -55,38 +55,38 @@ end -- MineClone 2. -- mc_dimension is one of "overworld", "nether", "end" (default: "overworld"). function mcl_worlds.layer_to_y(layer, mc_dimension) - if mc_dimension == "overworld" or mc_dimension == nil then - return layer + mcl_vars.mg_overworld_min - elseif mc_dimension == "nether" then - return layer + mcl_vars.mg_nether_min - elseif mc_dimension == "end" then - return layer + mcl_vars.mg_end_min - end + if mc_dimension == "overworld" or mc_dimension == nil then + return layer + mcl_vars.mg_overworld_min + elseif mc_dimension == "nether" then + return layer + mcl_vars.mg_nether_min + elseif mc_dimension == "end" then + return layer + mcl_vars.mg_end_min + end end -- Takes a position and returns true if this position can have weather function mcl_worlds.has_weather(pos) - -- Weather in the Overworld and the high part of the void below - return pos.y <= mcl_vars.mg_overworld_max and pos.y >= mcl_vars.mg_overworld_min - 64 + -- Weather in the Overworld and the high part of the void below + return pos.y <= mcl_vars.mg_overworld_max and pos.y >= mcl_vars.mg_overworld_min - 64 end -- Takes a position and returns true if this position can have Nether dust function mcl_worlds.has_dust(pos) - -- Weather in the Overworld and the high part of the void below - return pos.y <= mcl_vars.mg_nether_max + 138 and pos.y >= mcl_vars.mg_nether_min - 10 + -- Weather in the Overworld and the high part of the void below + return pos.y <= mcl_vars.mg_nether_max + 138 and pos.y >= mcl_vars.mg_nether_min - 10 end -- Takes a position (pos) and returns true if compasses are working here function mcl_worlds.compass_works(pos) - -- It doesn't work in Nether and the End, but it works in the Overworld and in the high part of the void below - local _, dim = mcl_worlds.y_to_layer(pos.y) - if dim == "nether" or dim == "end" then - return false - elseif dim == "void" then - return pos.y <= mcl_vars.mg_overworld_max and pos.y >= mcl_vars.mg_overworld_min - 64 - else - return true - end + -- It doesn't work in Nether and the End, but it works in the Overworld and in the high part of the void below + local _, dim = mcl_worlds.y_to_layer(pos.y) + if dim == "nether" or dim == "end" then + return false + elseif dim == "void" then + return pos.y <= mcl_vars.mg_overworld_max and pos.y >= mcl_vars.mg_overworld_min - 64 + else + return true + end end -- Takes a position (pos) and returns true if clocks are working here @@ -112,11 +112,11 @@ local last_dimension = {} -- * player: Player who changed the dimension -- * dimension: New dimension ("overworld", "nether", "end", "void") function mcl_worlds.dimension_change(player, dimension) - local playername = player:get_player_name() + local playername = player:get_player_name() for i=1, #mcl_worlds.registered_on_dimension_change do mcl_worlds.registered_on_dimension_change[i](player, dimension, last_dimension[playername]) end - last_dimension[playername] = dimension + last_dimension[playername] = dimension end ----------------------- INTERNAL STUFF ---------------------- From 388ab6d8dffea8c7daa5760e962ee0ebf3cbaeb1 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 25 May 2021 10:56:06 +0200 Subject: [PATCH 199/418] fix some codestyle issues --- mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua | 4 ++-- .../mcl_mobs/api/mob_functions/animation.lua | 2 +- .../mcl_mobs/api/mob_functions/breeding.lua | 4 +--- .../mcl_mobs/api/mob_functions/environment.lua | 16 +++++++--------- .../mcl_mobs/api/mob_functions/head_logic.lua | 2 +- .../mcl_mobs/api/mob_functions/movement.lua | 2 +- mods/ENTITIES/mcl_mobs/api/spawning.lua | 2 +- mods/HUD/mcl_experience/init.lua | 6 +++--- mods/ITEMS/mcl_enchanting/engine.lua | 2 +- mods/MAPGEN/mcl_structures/init.lua | 2 +- mods/MAPGEN/mcl_villages/buildings.lua | 4 ++-- mods/PLAYER/mcl_playerplus/init.lua | 2 +- 12 files changed, 22 insertions(+), 26 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua index df2ccade2..ef2687455 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua @@ -416,7 +416,7 @@ local swim_turn_check = function(self,dtime) local green_flag_1 = minetest_get_item_group(minetest_get_node(test_dir).name, "solid") ~= 0 - return(green_flag_1) + return green_flag_1 end --this is to swap the built in engine acceleration modifier @@ -561,7 +561,7 @@ local fly_turn_check = function(self,dtime) local green_flag_1 = minetest_get_item_group(minetest_get_node(test_dir).name, "solid") ~= 0 - return(green_flag_1) + return green_flag_1 end --this is to swap the built in engine acceleration modifier diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/animation.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/animation.lua index 8f2ea9e31..cea6d838b 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/animation.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/animation.lua @@ -157,7 +157,7 @@ local calculate_pitch = function(self) return false end - return(minetest_dir_to_yaw(vector_new(vector_distance(vector_new(pos.x,0,pos.z),vector_new(pos2.x,0,pos2.z)),0,pos.y - pos2.y)) + HALF_PI) + return minetest_dir_to_yaw(vector_new(vector_distance(vector_new(pos.x,0,pos.z),vector_new(pos2.x,0,pos2.z)),0,pos.y - pos2.y)) + HALF_PI end --this is a helper function used to make mobs pitch rotation dynamically flow when flying/swimming diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/breeding.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/breeding.lua index 57650a9c9..c50fb6300 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/breeding.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/breeding.lua @@ -140,9 +140,7 @@ mobs.look_for_mate = function(self) winner_mate = mate end end - - return(winner_mate) - + return winner_mate end --make the baby grow up diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/environment.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/environment.lua index 3b204a4bf..5c431135e 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/environment.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/environment.lua @@ -76,8 +76,7 @@ mobs.detect_closest_player_within_radius = function(self, line_of_sight, radius, winner_player = player end end - - return(winner_player) + return winner_player end @@ -104,14 +103,13 @@ mobs.jump_check = function(self,dtime) if green_flag_1 and green_flag_2 then --can jump over node - return(1) + return 1 elseif green_flag_1 and not green_flag_2 then --wall in front of mob - return(2) + return 2 end - --nothing to jump over - return(0) + return 0 end -- a helper function to quickly turn neutral passive mobs hostile @@ -223,12 +221,12 @@ mobs.check_for_player_within_area = function(self, radius) local distance = vector_distance(pos1,pos2) if distance < radius then --found a player - return(true) + return true end end end --did not find a player - return(false) + return false end @@ -236,7 +234,7 @@ end mobs.get_2d_distance = function(pos1,pos2) pos1.y = 0 pos2.y = 0 - return(vector_distance(pos1, pos2)) + return vector_distance(pos1, pos2) end -- fall damage onto solid ground diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/head_logic.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/head_logic.lua index 13bc6584d..0f5615504 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/head_logic.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/head_logic.lua @@ -3,7 +3,7 @@ local vector = vector --converts yaw to degrees local degrees = function(yaw) - return(yaw*180.0/math.pi) + return yaw*180.0/math.pi end mobs.do_head_logic = function(self,dtime) diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/movement.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/movement.lua index 72612b1eb..893f8eede 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/movement.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/movement.lua @@ -312,7 +312,7 @@ mobs.calculate_pitch = function(pos1, pos2) return false end - return(minetest_dir_to_yaw(vector.new(vector.distance(vector.new(pos1.x,0,pos1.z),vector.new(pos2.x,0,pos2.z)),0,pos1.y - pos2.y)) + HALF_PI) + return minetest_dir_to_yaw(vector.new(vector.distance(vector.new(pos1.x,0,pos1.z),vector.new(pos2.x,0,pos2.z)),0,pos1.y - pos2.y)) + HALF_PI end --make mobs fly up or down based on their y difference diff --git a/mods/ENTITIES/mcl_mobs/api/spawning.lua b/mods/ENTITIES/mcl_mobs/api/spawning.lua index 08b161527..bf7176b99 100644 --- a/mods/ENTITIES/mcl_mobs/api/spawning.lua +++ b/mods/ENTITIES/mcl_mobs/api/spawning.lua @@ -501,7 +501,7 @@ local position_calculation = function(pos) pos.z = pos.z + math_random(inner,outer)*int[math_random(1,2)] pos.x = pos.x + math_random(-outer,outer) end - return(pos) + return pos end --[[ diff --git a/mods/HUD/mcl_experience/init.lua b/mods/HUD/mcl_experience/init.lua index 53376c63f..a40599d17 100644 --- a/mods/HUD/mcl_experience/init.lua +++ b/mods/HUD/mcl_experience/init.lua @@ -120,9 +120,9 @@ end hud_manager.hud_exists = function(player,hud_name) local name = player:get_player_name() if player_huds[name] and player_huds[name][hud_name] then - return(true) + return true else - return(false) + return false end end ------------------- @@ -150,7 +150,7 @@ end) function mcl_experience.get_player_xp_level(player) local name = player:get_player_name() - return(pool[name].level) + return pool[name].level end function mcl_experience.set_player_xp_level(player,level) diff --git a/mods/ITEMS/mcl_enchanting/engine.lua b/mods/ITEMS/mcl_enchanting/engine.lua index 47db36870..d2db2281a 100644 --- a/mods/ITEMS/mcl_enchanting/engine.lua +++ b/mods/ITEMS/mcl_enchanting/engine.lua @@ -7,7 +7,7 @@ end function mcl_enchanting.get_enchantments(itemstack) if not itemstack then - return({}) + return {} end return minetest.deserialize(itemstack:get_meta():get_string("mcl_enchanting:enchantments")) or {} end diff --git a/mods/MAPGEN/mcl_structures/init.lua b/mods/MAPGEN/mcl_structures/init.lua index e3f6b4829..f939b9c1a 100644 --- a/mods/MAPGEN/mcl_structures/init.lua +++ b/mods/MAPGEN/mcl_structures/init.lua @@ -15,7 +15,7 @@ local function ecb_place(blockpos, action, calls_remaining, param) end end mcl_structures.place_schematic = function(pos, schematic, rotation, replacements, force_placement, flags, after_placement_callback, pr, callback_param) - local s = loadstring(minetest.serialize_schematic(schematic, "lua", {lua_use_comments = false, lua_num_indent_spaces = 0}) .. " return(schematic)")() + local s = loadstring(minetest.serialize_schematic(schematic, "lua", {lua_use_comments = false, lua_num_indent_spaces = 0}) .. " return schematic")() if s and s.size then local x, z = s.size.x, s.size.z if rotation then diff --git a/mods/MAPGEN/mcl_villages/buildings.lua b/mods/MAPGEN/mcl_villages/buildings.lua index 9d8e7580f..3f4490bf9 100644 --- a/mods/MAPGEN/mcl_villages/buildings.lua +++ b/mods/MAPGEN/mcl_villages/buildings.lua @@ -14,7 +14,7 @@ function settlements.build_schematic(vm, data, va, pos, building, replace_wall, -- schematic conversion to lua local schem_lua = minetest.serialize_schematic(building, "lua", - {lua_use_comments = false, lua_num_indent_spaces = 0}).." return(schematic)" + {lua_use_comments = false, lua_num_indent_spaces = 0}).." return schematic" -- replace material if replace_wall == "y" then schem_lua = schem_lua:gsub("mcl_core:cobble", material) @@ -228,7 +228,7 @@ function settlements.place_schematics(settlement_info, pr) -- schematic conversion to lua local schem_lua = minetest.serialize_schematic(building, "lua", - {lua_use_comments = false, lua_num_indent_spaces = 0}).." return(schematic)" + {lua_use_comments = false, lua_num_indent_spaces = 0}).." return schematic" schem_lua = schem_lua:gsub("mcl_core:stonebrickcarved", "mcl_villages:stonebrickcarved") -- replace material if replace_wall then diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 3ad6ba6e8..40752b835 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -49,7 +49,7 @@ local player_collision = function(player) end end - return({x,z}) + return {x,z} end -- converts yaw to degrees From 47b6a8d7f89e3c17268d72acf88411b8aa2a519b Mon Sep 17 00:00:00 2001 From: NO11 Date: Tue, 25 May 2021 09:03:06 +0000 Subject: [PATCH 200/418] Remove unused variable --- mods/ITEMS/mcl_farming/pumpkin.lua | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_farming/pumpkin.lua b/mods/ITEMS/mcl_farming/pumpkin.lua index d9e2b59c5..50e6a7970 100644 --- a/mods/ITEMS/mcl_farming/pumpkin.lua +++ b/mods/ITEMS/mcl_farming/pumpkin.lua @@ -158,8 +158,7 @@ if minetest.get_modpath("mcl_armor") then pumpkin_face_base_def._on_unequip = remove_pumpkin_hud minetest.register_on_joinplayer(function(player) - pumpkin_head = player:get_inventory():get_stack("armor", 2):get_name() == "mcl_farming:pumpkin_face" - if pumpkin_head then + if player:get_inventory():get_stack("armor", 2):get_name() == "mcl_farming:pumpkin_face" then add_pumpkin_hud(player) end end) From 9e074af07f542adfadbc3e16456571b31579309e Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 25 May 2021 12:52:25 +0200 Subject: [PATCH 201/418] unify code style [1] --- CONTRIBUTING.md | 2 +- mods/CORE/_mcl_autogroup/init.lua | 2 +- mods/CORE/mcl_attached/init.lua | 21 ++++--- mods/CORE/mcl_util/init.lua | 4 +- mods/ENTITIES/mcl_item_entity/init.lua | 12 ++-- mods/ENTITIES/mcl_minecarts/init.lua | 4 +- mods/ENTITIES/mcl_minecarts/rails.lua | 2 +- .../mcl_mobs/api/mob_functions/ai.lua | 28 ++++----- mods/ENTITIES/mcl_mobs/api/spawning.lua | 8 +-- mods/ITEMS/REDSTONE/mesecons/presets.lua | 4 +- mods/ITEMS/REDSTONE/mesecons/services.lua | 6 +- mods/ITEMS/REDSTONE/mesecons_button/init.lua | 2 +- mods/ITEMS/mcl_fences/init.lua | 4 +- mods/ITEMS/mcl_fire/init.lua | 2 +- mods/ITEMS/mcl_fishing/init.lua | 11 ++-- mods/ITEMS/xpanes/init.lua | 2 +- mods/MAPGEN/mcl_biomes/init.lua | 8 +-- mods/MAPGEN/mcl_mapgen_core/init.lua | 16 ++--- mods/MAPGEN/mcl_strongholds/init.lua | 4 +- mods/MAPGEN/mcl_structures/init.lua | 61 ++++++++++--------- mods/MAPGEN/mcl_villages/const.lua | 2 +- mods/MAPGEN/tsm_railcorridors/gameconfig.lua | 2 +- mods/MAPGEN/tsm_railcorridors/init.lua | 6 +- mods/PLAYER/mcl_playerinfo/init.lua | 4 +- mods/PLAYER/mcl_playerplus/init.lua | 5 +- mods/PLAYER/mcl_skins/init.lua | 11 ++-- mods/PLAYER/mcl_sprint/init.lua | 2 +- 27 files changed, 118 insertions(+), 117 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 21facbd1b..5758d194f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,5 +1,5 @@ # Contributing to MineClone 2 -So you want to MineClone 2? +So you want to contribute to MineClone 2? Wow, thank you! :-) But first, some things to note: diff --git a/mods/CORE/_mcl_autogroup/init.lua b/mods/CORE/_mcl_autogroup/init.lua index e6b3aa2d0..76c68122b 100644 --- a/mods/CORE/_mcl_autogroup/init.lua +++ b/mods/CORE/_mcl_autogroup/init.lua @@ -298,7 +298,7 @@ function mcl_autogroup.get_wear(toolname, diggroup) return math.ceil(65535 / uses) end -local overwrite = function() +local function overwrite() for nname, ndef in pairs(minetest.registered_nodes) do local newgroups = table.copy(ndef.groups) if (nname ~= "ignore" and ndef.diggable) then diff --git a/mods/CORE/mcl_attached/init.lua b/mods/CORE/mcl_attached/init.lua index 146cb2251..4f538e104 100644 --- a/mods/CORE/mcl_attached/init.lua +++ b/mods/CORE/mcl_attached/init.lua @@ -1,17 +1,21 @@ +local vector = vector + +local facedir_to_dir = minetest.facedir_to_dir +local get_item_group = minetest.get_item_group +local remove_node = minetest.remove_node +local get_node = minetest.get_node + local original_function = minetest.check_single_for_falling -minetest.check_single_for_falling = function(pos) +function minetest.check_single_for_falling(pos) local ret_o = original_function(pos) - local ret = false local node = minetest.get_node(pos) - if minetest.get_item_group(node.name, "attached_node_facedir") ~= 0 then - local dir = minetest.facedir_to_dir(node.param2) + if get_item_group(node.name, "attached_node_facedir") ~= 0 then + local dir = facedir_to_dir(node.param2) if dir then - local cpos = vector.add(pos, dir) - local cnode = minetest.get_node(cpos) - if minetest.get_item_group(cnode.name, "solid") == 0 then - minetest.remove_node(pos) + if get_item_group(get_node(vector.add(pos, dir)).name, "solid") == 0 then + remove_node(pos) local drops = minetest.get_node_drops(node.name, "") for dr=1, #drops do minetest.add_item(pos, drops[dr]) @@ -20,7 +24,6 @@ minetest.check_single_for_falling = function(pos) end end end - return ret_o or ret end diff --git a/mods/CORE/mcl_util/init.lua b/mods/CORE/mcl_util/init.lua index 0168229f2..1ac2c1f9b 100644 --- a/mods/CORE/mcl_util/init.lua +++ b/mods/CORE/mcl_util/init.lua @@ -150,7 +150,7 @@ function mcl_util.get_eligible_transfer_item_slot(src_inventory, src_list, dst_i end -- Returns true if itemstack is a shulker box -local is_not_shulker_box = function(itemstack) +local function is_not_shulker_box(itemstack) local g = minetest.get_item_group(itemstack:get_name(), "shulker_box") return g == 0 or g == nil end @@ -212,7 +212,7 @@ function mcl_util.move_item_container(source_pos, destination_pos, source_list, end -- Normalize double container by forcing to always use the left segment first - local normalize_double_container = function(pos, node, ctype) + local function normalize_double_container(pos, node, ctype) if ctype == 6 then pos = mcl_util.get_double_container_neighbor_pos(pos, node.param2, "right") if not pos then diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index 0c26c38c8..a73f586e9 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -1,5 +1,5 @@ --these are lua locals, used for higher performance -local minetest,math,vector,ipairs = minetest,math,vector,ipairs +local minetest, math, vector, ipairs = minetest, math, vector, ipairs --this is used for the player pool in the sound buffer local pool = {} @@ -38,7 +38,7 @@ item_drop_settings.drop_single_item = false --if true, the drop control dro item_drop_settings.magnet_time = 0.75 -- how many seconds an item follows the player before giving up -local get_gravity = function() +local function get_gravity() return tonumber(minetest.settings:get("movement_gravity")) or 9.81 end @@ -60,7 +60,7 @@ mcl_item_entity.register_pickup_achievement("mcl_mobitems:blaze_rod", "mcl:blaze mcl_item_entity.register_pickup_achievement("mcl_mobitems:leather", "mcl:killCow") mcl_item_entity.register_pickup_achievement("mcl_core:diamond", "mcl:diamonds") -local check_pickup_achievements = function(object, player) +local function check_pickup_achievements(object, player) if has_awards then local itemname = ItemStack(object:get_luaentity().itemstring):get_name() local playername = player:get_player_name() @@ -72,7 +72,7 @@ local check_pickup_achievements = function(object, player) end end -local enable_physics = function(object, luaentity, ignore_check) +local function enable_physics(object, luaentity, ignore_check) if luaentity.physical_state == false or ignore_check == true then luaentity.physical_state = true object:set_properties({ @@ -83,7 +83,7 @@ local enable_physics = function(object, luaentity, ignore_check) end end -local disable_physics = function(object, luaentity, ignore_check, reset_movement) +local function disable_physics(object, luaentity, ignore_check, reset_movement) if luaentity.physical_state == true or ignore_check == true then luaentity.physical_state = false object:set_properties({ @@ -98,13 +98,11 @@ end minetest.register_globalstep(function(dtime) - tick = not tick for _,player in pairs(minetest.get_connected_players()) do if player:get_hp() > 0 or not minetest.settings:get_bool("enable_damage") then - local name = player:get_player_name() local pos = player:get_pos() diff --git a/mods/ENTITIES/mcl_minecarts/init.lua b/mods/ENTITIES/mcl_minecarts/init.lua index e741fb0bc..6fd98f550 100644 --- a/mods/ENTITIES/mcl_minecarts/init.lua +++ b/mods/ENTITIES/mcl_minecarts/init.lua @@ -496,7 +496,7 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick, o end -- Place a minecart at pointed_thing -mcl_minecarts.place_minecart = function(itemstack, pointed_thing, placer) +function mcl_minecarts.place_minecart(itemstack, pointed_thing, placer) if not pointed_thing.type == "node" then return end @@ -540,7 +540,7 @@ mcl_minecarts.place_minecart = function(itemstack, pointed_thing, placer) end -local register_craftitem = function(itemstring, entity_id, description, tt_help, longdesc, usagehelp, icon, creative) +local function register_craftitem(itemstring, entity_id, description, tt_help, longdesc, usagehelp, icon, creative) entity_mapping[itemstring] = entity_id local groups = { minecart = 1, transport = 1 } diff --git a/mods/ENTITIES/mcl_minecarts/rails.lua b/mods/ENTITIES/mcl_minecarts/rails.lua index 4c26aea8c..53ec86d94 100644 --- a/mods/ENTITIES/mcl_minecarts/rails.lua +++ b/mods/ENTITIES/mcl_minecarts/rails.lua @@ -1,7 +1,7 @@ local S = minetest.get_translator("mcl_minecarts") -- Template rail function -local register_rail = function(itemstring, tiles, def_extras, creative) +local function register_rail(itemstring, tiles, def_extras, creative) local groups = {handy=1,pickaxey=1, attached_node=1,rail=1,connect_to_raillike=minetest.raillike_group("rail"),dig_by_water=1,destroy_by_lava_flow=1, transport=1} if creative == false then groups.not_in_creative_inventory = 1 diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua index ef2687455..894a1f5e4 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua @@ -13,9 +13,8 @@ local minetest_get_node_light = minetest.get_node_light local DOUBLE_PI = math.pi * 2 local THIRTY_SECONDTH_PI = DOUBLE_PI * 0.03125 - --a simple helper function which is too small to move into movement.lua -local quick_rotate = function(self,dtime) +local function quick_rotate(self,dtime) self.yaw = self.yaw + THIRTY_SECONDTH_PI if self.yaw > DOUBLE_PI then self.yaw = self.yaw - DOUBLE_PI @@ -39,7 +38,7 @@ end ]]-- --this is basically reverse jump_check -local cliff_check = function(self,dtime) +local function cliff_check(self,dtime) --mobs will flip out if they are falling without this if self.object:get_velocity().y ~= 0 then return false @@ -115,7 +114,7 @@ local function land_state_switch(self, dtime) end -- states are executed here -local land_state_execution = function(self,dtime) +local function land_state_execution(self, dtime) --[[ -- this is a debug which shows the timer and makes mobs breed 100 times faster print(self.breed_timer) @@ -391,7 +390,7 @@ end -- state switching logic (stand, walk, run, attacks) local swim_state_list_wandering = {"stand", "swim"} -local swim_state_switch = function(self, dtime) +local function swim_state_switch(self, dtime) self.state_timer = self.state_timer - dtime if self.state_timer <= 0 then self.state_timer = math.random(4,10) + math.random() @@ -401,7 +400,7 @@ end --check if a mob needs to turn while swimming -local swim_turn_check = function(self,dtime) +local function swim_turn_check(self,dtime) local pos = self.object:get_pos() pos.y = pos.y + 0.1 @@ -420,8 +419,7 @@ local swim_turn_check = function(self,dtime) end --this is to swap the built in engine acceleration modifier -local swim_physics_swapper = function(self,inside_swim_node) - +local function swim_physics_swapper(self, inside_swim_node) --should be swimming, gravity is applied, switch to floating if inside_swim_node and self.object:get_acceleration().y ~= 0 then self.object:set_acceleration(vector.new(0,0,0)) @@ -435,7 +433,7 @@ end local random_pitch_multiplier = {-1,1} -- states are executed here -local swim_state_execution = function(self,dtime) +local function swim_state_execution(self, dtime) local pos = self.object:get_pos() @@ -452,7 +450,7 @@ local swim_state_execution = function(self,dtime) end --turn gravity on or off - swim_physics_swapper(self,inside_swim_node) + swim_physics_swapper(self, inside_swim_node) --swim properly if inside swim node if inside_swim_node then @@ -530,7 +528,7 @@ ______ _ -- state switching logic (stand, walk, run, attacks) local fly_state_list_wandering = {"stand", "fly"} -local fly_state_switch = function(self, dtime) +local function fly_state_switch(self, dtime) if self.hostile and self.attacking then self.state = "attack" @@ -546,7 +544,7 @@ end --check if a mob needs to turn while flying -local fly_turn_check = function(self,dtime) +local function fly_turn_check(self, dtime) local pos = self.object:get_pos() pos.y = pos.y + 0.1 @@ -565,7 +563,7 @@ local fly_turn_check = function(self,dtime) end --this is to swap the built in engine acceleration modifier -local fly_physics_swapper = function(self,inside_fly_node) +local function fly_physics_swapper(self, inside_fly_node) --should be flyming, gravity is applied, switch to floating if inside_fly_node and self.object:get_acceleration().y ~= 0 then @@ -580,7 +578,7 @@ end local random_pitch_multiplier = {-1,1} -- states are executed here -local fly_state_execution = function(self,dtime) +local function fly_state_execution(self, dtime) local pos = self.object:get_pos() pos.y = pos.y + 0.1 local current_node = minetest_get_node(pos).name @@ -794,7 +792,7 @@ ___ ___ _ _ _ ]]-- --the main loop -mobs.mob_step = function(self, dtime) +function mobs.mob_step(self, dtime) --do not continue if non-existent if not self or not self.object or not self.object:get_luaentity() then diff --git a/mods/ENTITIES/mcl_mobs/api/spawning.lua b/mods/ENTITIES/mcl_mobs/api/spawning.lua index bf7176b99..70167b421 100644 --- a/mods/ENTITIES/mcl_mobs/api/spawning.lua +++ b/mods/ENTITIES/mcl_mobs/api/spawning.lua @@ -167,7 +167,7 @@ Overworld regular: -- count how many mobs are in an area -local count_mobs = function(pos) +local function count_mobs(pos) local num = 0 for _,object in pairs(get_objects_inside_radius(pos, aoc_range)) do if object and object:get_luaentity() and object:get_luaentity()._cmi_is_mob then @@ -242,8 +242,7 @@ function mobs:spawn_specific(name, dimension, type_of_spawning, biomes, min_ligh end --[[ - local spawn_action - spawn_action = function(pos, node, active_object_count, active_object_count_wider, name) + local function spawn_action(pos, node, active_object_count, active_object_count_wider, name) local orig_pos = table.copy(pos) -- is mob actually registered? @@ -486,7 +485,8 @@ local axis local inner = 15 local outer = 64 local int = {-1,1} -local position_calculation = function(pos) + +local function position_calculation(pos) pos = vector_floor(pos) diff --git a/mods/ITEMS/REDSTONE/mesecons/presets.lua b/mods/ITEMS/REDSTONE/mesecons/presets.lua index f624c52fe..d9d8418d8 100644 --- a/mods/ITEMS/REDSTONE/mesecons/presets.lua +++ b/mods/ITEMS/REDSTONE/mesecons/presets.lua @@ -96,12 +96,12 @@ local function rules_from_dir(ruleset, dir) if dir.z == -1 then return ruleset.zn end end -mesecon.rules.buttonlike_get = function(node) +function mesecon.rules.buttonlike_get(node) local dir = minetest.facedir_to_dir(node.param2) return rules_from_dir(rules_buttonlike, dir) end -mesecon.rules.wallmounted_get = function(node) +function mesecon.rules.wallmounted_get(node) local dir = minetest.wallmounted_to_dir(node.param2) return rules_from_dir(rules_wallmounted, dir) end diff --git a/mods/ITEMS/REDSTONE/mesecons/services.lua b/mods/ITEMS/REDSTONE/mesecons/services.lua index 1e3e6237b..7d1fce2d8 100644 --- a/mods/ITEMS/REDSTONE/mesecons/services.lua +++ b/mods/ITEMS/REDSTONE/mesecons/services.lua @@ -1,6 +1,6 @@ -- Dig and place services -mesecon.on_placenode = function(pos, node) +function mesecon.on_placenode(pos, node) mesecon.execute_autoconnect_hooks_now(pos, node) -- Receptors: Send on signal when active @@ -70,7 +70,7 @@ mesecon.on_placenode = function(pos, node) end end -mesecon.on_dignode = function(pos, node) +function mesecon.on_dignode(pos, node) if mesecon.is_conductor_on(node) then mesecon.receptor_off(pos, mesecon.conductor_get_rules(node)) elseif mesecon.is_receptor_on(node.name) then @@ -95,7 +95,7 @@ mesecon.on_dignode = function(pos, node) mesecon.execute_autoconnect_hooks_queue(pos, node) end -mesecon.on_blastnode = function(pos, node) +function mesecon.on_blastnode(pos, node) local node = minetest.get_node(pos) minetest.remove_node(pos) mesecon.on_dignode(pos, node) diff --git a/mods/ITEMS/REDSTONE/mesecons_button/init.lua b/mods/ITEMS/REDSTONE/mesecons_button/init.lua index 377a24c00..a8c671004 100644 --- a/mods/ITEMS/REDSTONE/mesecons_button/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_button/init.lua @@ -21,7 +21,7 @@ local boxes_on = { } -- Push the button -mesecon.push_button = function(pos, node) +function mesecon.push_button(pos, node) -- No-op if button is already pushed if mesecon.is_receptor_on(node) then return diff --git a/mods/ITEMS/mcl_fences/init.lua b/mods/ITEMS/mcl_fences/init.lua index e60782215..ddd85d470 100644 --- a/mods/ITEMS/mcl_fences/init.lua +++ b/mods/ITEMS/mcl_fences/init.lua @@ -20,7 +20,7 @@ local cz2 = {-2/16, -0.5, 2/16, 2/16, 1.01, 0.5} --unten(quer) z mcl_fences = {} -mcl_fences.register_fence = function(id, fence_name, texture, groups, hardness, blast_resistance, connects_to, sounds) +function mcl_fences.register_fence(id, fence_name, texture, groups, hardness, blast_resistance, connects_to, sounds) local cgroups = table.copy(groups) if cgroups == nil then cgroups = {} end cgroups.fence = 1 @@ -72,7 +72,7 @@ mcl_fences.register_fence = function(id, fence_name, texture, groups, hardness, return fence_id end -mcl_fences.register_fence_gate = function(id, fence_gate_name, texture, groups, hardness, blast_resistance, sounds, sound_open, sound_close, sound_gain_open, sound_gain_close) +function mcl_fences.register_fence_gate(id, fence_gate_name, texture, groups, hardness, blast_resistance, sounds, sound_open, sound_close, sound_gain_open, sound_gain_close) local meta2 local state2 = 0 diff --git a/mods/ITEMS/mcl_fire/init.lua b/mods/ITEMS/mcl_fire/init.lua index 176fb250c..f1a95fec6 100644 --- a/mods/ITEMS/mcl_fire/init.lua +++ b/mods/ITEMS/mcl_fire/init.lua @@ -522,7 +522,7 @@ end -- * pointed_thing: Pointed thing to ignite -- * player: Player who sets fire or nil if nobody -- * allow_on_fire: If false, can't ignite fire on fire (default: true) -mcl_fire.set_fire = function(pointed_thing, player, allow_on_fire) +function mcl_fire.set_fire(pointed_thing, player, allow_on_fire) local pname if player == nil then pname = "" diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index cc7c5cca5..567e96e96 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -305,7 +305,7 @@ local flying_bobber_ENTITY={ } -- Movement function of flying bobber -local flying_bobber_on_step = function(self, dtime) +local function flying_bobber_on_step(self, dtime) self.timer=self.timer+dtime local pos = self.object:get_pos() local node = minetest.get_node(pos) @@ -315,12 +315,9 @@ local flying_bobber_on_step = function(self, dtime) -- Destroy when hitting a solid node if self._lastpos.x~=nil then if (def and (def.walkable or def.liquidtype == "flowing" or def.liquidtype == "source")) or not def then - local make_child= function(object) - local ent = object:get_luaentity() - ent.player = self._thrower - ent.child = true - end - make_child(minetest.add_entity(self._lastpos, "mcl_fishing:bobber_entity")) + local ent = minetest.add_entity(self._lastpos, "mcl_fishing:bobber_entity"):get_luaentity() + ent.player = self._thrower + ent.child = true self.object:remove() return end diff --git a/mods/ITEMS/xpanes/init.lua b/mods/ITEMS/xpanes/init.lua index b7faffb3b..472b3efdf 100644 --- a/mods/ITEMS/xpanes/init.lua +++ b/mods/ITEMS/xpanes/init.lua @@ -170,7 +170,7 @@ end local canonical_color = "yellow" -- Register glass pane (stained and unstained) -local pane = function(description, node, append) +local function pane(description, node, append) local texture1, longdesc, entry_name, create_entry local is_canonical = true -- Special case: Default (unstained) glass texture diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 4e01df5f2..9108b75c1 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -1775,7 +1775,7 @@ local function register_biomelike_ores() -- Mesa strata (registered as sheet ores) -- Helper function to create strata. - local stratum = function(y_min, height, color, seed, is_perfect) + local function stratum(y_min, height, color, seed, is_perfect) if not height then height = 1 end @@ -3079,7 +3079,7 @@ local function register_decorations() }) -- Doubletall grass - local register_doubletall_grass = function(offset, scale, biomes) + local function register_doubletall_grass(offset, scale, biomes) for b=1, #biomes do local param2 = minetest.registered_biomes[biomes[b]]._mcl_palette_index @@ -3115,7 +3115,7 @@ local function register_decorations() register_doubletall_grass(-0.0005, -0.03, {"Savanna", "SavannaM"}) -- Large ferns - local register_double_fern = function(offset, scale, biomes) + local function register_double_fern(offset, scale, biomes) for b=1, #biomes do local param2 = minetest.registered_biomes[biomes[b]]._mcl_palette_index minetest.register_decoration({ @@ -3149,7 +3149,7 @@ local function register_decorations() register_double_fern(0.15, 0.1, { "JungleM" }) -- Large flowers - local register_large_flower = function(name, biomes, seed, offset, flower_forest_offset) + local function register_large_flower(name, biomes, seed, offset, flower_forest_offset) local maxi if flower_forest_offset then maxi = 2 diff --git a/mods/MAPGEN/mcl_mapgen_core/init.lua b/mods/MAPGEN/mcl_mapgen_core/init.lua index 285da25c2..b3db122e6 100644 --- a/mods/MAPGEN/mcl_mapgen_core/init.lua +++ b/mods/MAPGEN/mcl_mapgen_core/init.lua @@ -765,7 +765,7 @@ local function register_mgv6_decorations() }) -- Large flowers - local register_large_flower = function(name, seed, offset) + local function register_large_flower(name, seed, offset) minetest.register_decoration({ deco_type = "schematic", schematic = { @@ -1169,7 +1169,7 @@ end -- minp and maxp (from an on_generated callback) and returns the real world coordinates -- as X, Z. -- Inverse function of xz_to_biomemap ---[[local biomemap_to_xz = function(index, minp, maxp) +--[[local function biomemap_to_xz(index, minp, maxp) local xwidth = maxp.x - minp.x + 1 local zwidth = maxp.z - minp.z + 1 local x = ((index-1) % xwidth) + minp.x @@ -1180,7 +1180,7 @@ end]] -- Takes x and z coordinates and minp and maxp of a generated chunk -- (in on_generated callback) and returns a biomemap index) -- Inverse function of biomemap_to_xz -local xz_to_biomemap_index = function(x, z, minp, maxp) +local function xz_to_biomemap_index(x, z, minp, maxp) local xwidth = maxp.x - minp.x + 1 local zwidth = maxp.z - minp.z + 1 local minix = x % xwidth @@ -1404,7 +1404,7 @@ local function generate_structures(minp, maxp, blockseed, biomemap) -- TODO: Spawn witch in or around hut when the mob sucks less. - local place_tree_if_free = function(pos, prev_result) + local function place_tree_if_free(pos, prev_result) local nn = minetest.get_node(pos).name if nn == "mcl_flowers:waterlily" or nn == "mcl_core:water_source" or nn == "mcl_core:water_flowing" or nn == "air" then minetest.set_node(pos, {name="mcl_core:tree", param2=0}) @@ -1720,7 +1720,7 @@ end -- Generate mushrooms in caves manually. -- Minetest's API does not support decorations in caves yet. :-( -local generate_underground_mushrooms = function(minp, maxp, seed) +local function generate_underground_mushrooms(minp, maxp, seed) local pr_shroom = PseudoRandom(seed-24359) -- Generate rare underground mushrooms -- TODO: Make them appear in groups, use Perlin noise @@ -1754,7 +1754,7 @@ else end -- Generate Nether decorations manually: Eternal fire, mushrooms, nether wart -- Minetest's API does not support decorations in caves yet. :-( -local generate_nether_decorations = function(minp, maxp, seed) +local function generate_nether_decorations(minp, maxp, seed) local pr_nether = PseudoRandom(seed+667) if minp.y > mcl_vars.mg_nether_max or maxp.y < mcl_vars.mg_nether_min then @@ -1771,7 +1771,7 @@ local generate_nether_decorations = function(minp, maxp, seed) local ssand = minetest.find_nodes_in_area_under_air(minp, maxp, {"mcl_nether:soul_sand"}) -- Helper function to spawn “fake” decoration - local special_deco = function(nodes, spawn_func) + local function special_deco(nodes, spawn_func) for n = 1, #nodes do bpos = {x = nodes[n].x, y = nodes[n].y + 1, z = nodes[n].z } @@ -1912,7 +1912,7 @@ end local bedrock_check if mcl_vars.mg_bedrock_is_rough then - bedrock_check = function(pos, _, pr) + function bedrock_check(pos, _, pr) local y = pos.y -- Bedrock layers with increasing levels of roughness, until a perfecly flat bedrock later at the bottom layer -- This code assumes a bedrock height of 5 layers. diff --git a/mods/MAPGEN/mcl_strongholds/init.lua b/mods/MAPGEN/mcl_strongholds/init.lua index e465b2e40..083172a3c 100644 --- a/mods/MAPGEN/mcl_strongholds/init.lua +++ b/mods/MAPGEN/mcl_strongholds/init.lua @@ -25,7 +25,7 @@ local superflat = mg_name == "flat" and minetest.get_mapgen_setting("mcl_superfl -- The stronghold positions are based on the world seed. -- The actual position might be offset by a few blocks because it might be shifted -- to make sure the end portal room is completely within the boundaries of a mapchunk. -local init_strongholds = function() +local function init_strongholds() if strongholds_inited then return end @@ -67,7 +67,7 @@ local init_strongholds = function() end -- Stronghold generation for register_on_generated. -local generate_strongholds = function(minp, maxp, blockseed) +local function generate_strongholds(minp, maxp, blockseed) local pr = PseudoRandom(blockseed) for s=1, #strongholds do if not strongholds[s].generated then diff --git a/mods/MAPGEN/mcl_structures/init.lua b/mods/MAPGEN/mcl_structures/init.lua index f939b9c1a..dfb7da24b 100644 --- a/mods/MAPGEN/mcl_structures/init.lua +++ b/mods/MAPGEN/mcl_structures/init.lua @@ -1,5 +1,9 @@ -local S = minetest.get_translator("mcl_structures") -mcl_structures ={} +local modname = minetest.get_current_modname() +local S = minetest.get_translator(modname) +local modpath = minetest.get_modpath(modname) + +mcl_structures = {} + local rotations = { "0", "90", @@ -14,7 +18,8 @@ local function ecb_place(blockpos, action, calls_remaining, param) param.after_placement_callback(param.p1, param.p2, param.size, param.rotation, param.pr, param.callback_param) end end -mcl_structures.place_schematic = function(pos, schematic, rotation, replacements, force_placement, flags, after_placement_callback, pr, callback_param) + +function mcl_structures.place_schematic(pos, schematic, rotation, replacements, force_placement, flags, after_placement_callback, pr, callback_param) local s = loadstring(minetest.serialize_schematic(schematic, "lua", {lua_use_comments = false, lua_num_indent_spaces = 0}) .. " return schematic")() if s and s.size then local x, z = s.size.x, s.size.z @@ -37,7 +42,7 @@ mcl_structures.place_schematic = function(pos, schematic, rotation, replacements end end -mcl_structures.get_struct = function(file) +function mcl_structures.get_struct(file) local localfile = minetest.get_modpath("mcl_structures").."/schematics/"..file local file, errorload = io.open(localfile, "rb") if errorload ~= nil then @@ -53,7 +58,7 @@ end -- Call on_construct on pos. -- Useful to init chests from formspec. -local init_node_construct = function(pos) +local function init_node_construct(pos) local node = minetest.get_node(pos) local def = minetest.registered_nodes[node.name] if def and def.on_construct then @@ -64,7 +69,7 @@ local init_node_construct = function(pos) end -- The call of Struct -mcl_structures.call_struct = function(pos, struct_style, rotation, pr) +function mcl_structures.call_struct(pos, struct_style, rotation, pr) minetest.log("action","[mcl_structures] call_struct " .. struct_style.." at "..minetest.pos_to_string(pos)) if not rotation then rotation = "random" @@ -96,13 +101,13 @@ mcl_structures.call_struct = function(pos, struct_style, rotation, pr) end end -mcl_structures.generate_desert_well = function(pos, rot) +function mcl_structures.generate_desert_well(pos, rot) local newpos = {x=pos.x,y=pos.y-2,z=pos.z} - local path = minetest.get_modpath("mcl_structures").."/schematics/mcl_structures_desert_well.mts" + local path = modpath.."/schematics/mcl_structures_desert_well.mts" return mcl_structures.place_schematic(newpos, path, rot or "0", nil, true) end -mcl_structures.generate_igloo = function(pos, rotation, pr) +function mcl_structures.generate_igloo(pos, rotation, pr) -- Place igloo local success, rotation = mcl_structures.generate_igloo_top(pos, pr) -- Place igloo basement with 50% chance @@ -148,7 +153,7 @@ mcl_structures.generate_igloo = function(pos, rotation, pr) else return success end - local set_brick = function(pos) + local function set_brick(pos) local c = pr:next(1, 3) -- cracked chance local m = pr:next(1, 10) -- chance for monster egg local brick @@ -198,11 +203,11 @@ mcl_structures.generate_igloo = function(pos, rotation, pr) return success end -mcl_structures.generate_igloo_top = function(pos, pr) +function mcl_structures.generate_igloo_top(pos, pr) -- FIXME: This spawns bookshelf instead of furnace. Fix this! -- Furnace does ot work atm because apparently meta is not set. :-( local newpos = {x=pos.x,y=pos.y-1,z=pos.z} - local path = minetest.get_modpath("mcl_structures").."/schematics/mcl_structures_igloo_top.mts" + local path = modpath.."/schematics/mcl_structures_igloo_top.mts" local rotation = tostring(pr:next(0,3)*90) return mcl_structures.place_schematic(newpos, path, rotation, nil, true), rotation end @@ -250,22 +255,22 @@ local function igloo_placement_callback(p1, p2, size, orientation, pr) mcl_loot.fill_inventory(inv, "main", lootitems, pr) end -mcl_structures.generate_igloo_basement = function(pos, orientation, pr) +function mcl_structures.generate_igloo_basement(pos, orientation, pr) -- TODO: Add brewing stand -- TODO: Add monster eggs -- TODO: Spawn villager and zombie villager - local path = minetest.get_modpath("mcl_structures").."/schematics/mcl_structures_igloo_basement.mts" + local path = modpath.."/schematics/mcl_structures_igloo_basement.mts" mcl_structures.place_schematic(pos, path, orientation, nil, true, nil, igloo_placement_callback, pr) end -mcl_structures.generate_boulder = function(pos, rotation, pr) +function mcl_structures.generate_boulder(pos, rotation, pr) -- Choose between 2 boulder sizes (2×2×2 or 3×3×3) local r = pr:next(1, 10) local path if r <= 3 then - path = minetest.get_modpath("mcl_structures").."/schematics/mcl_structures_boulder_small.mts" + path = modpath.."/schematics/mcl_structures_boulder_small.mts" else - path = minetest.get_modpath("mcl_structures").."/schematics/mcl_structures_boulder.mts" + path = modpath.."/schematics/mcl_structures_boulder.mts" end local newpos = {x=pos.x,y=pos.y-1,z=pos.z} @@ -284,22 +289,22 @@ local function hut_placement_callback(p1, p2, size, orientation, pr) end end -mcl_structures.generate_witch_hut = function(pos, rotation, pr) +function mcl_structures.generate_witch_hut(pos, rotation, pr) local path = minetest.get_modpath("mcl_structures").."/schematics/mcl_structures_witch_hut.mts" mcl_structures.place_schematic(pos, path, rotation, nil, true, nil, hut_placement_callback, pr) end -mcl_structures.generate_ice_spike_small = function(pos, rotation) +function mcl_structures.generate_ice_spike_small(pos, rotation) local path = minetest.get_modpath("mcl_structures").."/schematics/mcl_structures_ice_spike_small.mts" return minetest.place_schematic(pos, path, rotation or "random", nil, false) -- don't serialize schematics for registered biome decorations, for MT 5.4.0 end -mcl_structures.generate_ice_spike_large = function(pos, rotation) +function mcl_structures.generate_ice_spike_large(pos, rotation) local path = minetest.get_modpath("mcl_structures").."/schematics/mcl_structures_ice_spike_large.mts" return minetest.place_schematic(pos, path, rotation or "random", nil, false) -- don't serialize schematics for registered biome decorations, for MT 5.4.0 end -mcl_structures.generate_fossil = function(pos, rotation, pr) +function mcl_structures.generate_fossil(pos, rotation, pr) -- Generates one out of 8 possible fossil pieces local newpos = {x=pos.x,y=pos.y-1,z=pos.z} local fossils = { @@ -317,17 +322,17 @@ mcl_structures.generate_fossil = function(pos, rotation, pr) return mcl_structures.place_schematic(newpos, path, rotation or "random", nil, true) end -mcl_structures.generate_end_exit_portal = function(pos, rot) +function mcl_structures.generate_end_exit_portal(pos, rot) local path = minetest.get_modpath("mcl_structures").."/schematics/mcl_structures_end_exit_portal.mts" return mcl_structures.place_schematic(pos, path, rot or "0", {["mcl_portals:portal_end"] = "air"}, true) end -mcl_structures.generate_end_exit_portal_open = function(pos, rot) +function mcl_structures.generate_end_exit_portal_open(pos, rot) local path = minetest.get_modpath("mcl_structures").."/schematics/mcl_structures_end_exit_portal.mts" return mcl_structures.place_schematic(pos, path, rot or "0", nil, true) end -mcl_structures.generate_end_gateway_portal = function(pos, rot) +function mcl_structures.generate_end_gateway_portal(pos, rot) local path = minetest.get_modpath("mcl_structures").."/schematics/mcl_structures_end_gateway_portal.mts" return mcl_structures.place_schematic(pos, path, rot or "0", nil, true) end @@ -410,7 +415,7 @@ local function shrine_placement_callback(p1, p2, size, rotation, pr) end end -mcl_structures.generate_end_portal_shrine = function(pos, rotation, pr) +function mcl_structures.generate_end_portal_shrine(pos, rotation, pr) local offset = {x=6, y=4, z=6} --local size = {x=13, y=8, z=13} local newpos = { x = pos.x - offset.x, y = pos.y, z = pos.z - offset.z } @@ -493,7 +498,7 @@ local function temple_placement_callback(p1, p2, size, rotation, pr) end end -mcl_structures.generate_desert_temple = function(pos, rotation, pr) +function mcl_structures.generate_desert_temple(pos, rotation, pr) -- No Generating for the temple ... Why using it ? No Change local path = minetest.get_modpath("mcl_structures").."/schematics/mcl_structures_desert_temple.mts" local newpos = {x=pos.x,y=pos.y-12,z=pos.z} @@ -517,7 +522,7 @@ Format of return value: TODO: Implement this function for all other structure types as well. ]] -mcl_structures.get_registered_structures = function(structure_type) +function mcl_structures.get_registered_structures(structure_type) if registered_structures[structure_type] then return table.copy(registered_structures[structure_type]) else @@ -527,7 +532,7 @@ end -- Register a structures table for the given type. The table format is the same as for -- mcl_structures.get_registered_structures. -mcl_structures.register_structures = function(structure_type, structures) +function mcl_structures.register_structures(structure_type, structures) registered_structures[structure_type] = structures end diff --git a/mods/MAPGEN/mcl_villages/const.lua b/mods/MAPGEN/mcl_villages/const.lua index e5cbc9b39..eb7806209 100644 --- a/mods/MAPGEN/mcl_villages/const.lua +++ b/mods/MAPGEN/mcl_villages/const.lua @@ -1,5 +1,5 @@ -- switch for debugging -settlements.debug = function(message) +function settlements.debug(message) -- minetest.chat_send_all(message) -- minetest.log("warning", "[mcl_villages] "..message) minetest.log("verbose", "[mcl_villages] "..message) diff --git a/mods/MAPGEN/tsm_railcorridors/gameconfig.lua b/mods/MAPGEN/tsm_railcorridors/gameconfig.lua index 904c3af08..168ecf535 100644 --- a/mods/MAPGEN/tsm_railcorridors/gameconfig.lua +++ b/mods/MAPGEN/tsm_railcorridors/gameconfig.lua @@ -27,7 +27,7 @@ if mg_name == "v6" then } else -- This generates dark oak wood in mesa biomes and oak wood everywhere else. - tsm_railcorridors.nodes.corridor_woods_function = function(pos, node) + function tsm_railcorridors.nodes.corridor_woods_function(pos, node) if minetest.get_item_group(node.name, "hardened_clay") ~= 0 then return "mcl_core:darkwood", "mcl_fences:dark_oak_fence" else diff --git a/mods/MAPGEN/tsm_railcorridors/init.lua b/mods/MAPGEN/tsm_railcorridors/init.lua index 550167dc3..d7a074a00 100644 --- a/mods/MAPGEN/tsm_railcorridors/init.lua +++ b/mods/MAPGEN/tsm_railcorridors/init.lua @@ -681,11 +681,11 @@ local function create_corridor_section(waypoint, axis, sign, up_or_down, up_or_d railsegcount = segcount end for i=1,railsegcount do - local p = {x=waypoint.x+vek.x*i, y=waypoint.y+vek.y*i-1, z=waypoint.z+vek.z*i} + local p = {x = waypoint.x + vek.x * i, y = waypoint.y + vek.y * i-1, z = waypoint.z + vek.z * i} -- Randomly returns either the left or right side of the main rail. -- Also returns offset as second return value. - local left_or_right = function(pos, vek) + local function left_or_right(pos, vek) local off if pr:next(1, 2) == 1 then -- left @@ -765,7 +765,7 @@ local function create_corridor_section(waypoint, axis, sign, up_or_down, up_or_d -- Place cobwebs left and right in the corridor if place_cobwebs and tsm_railcorridors.nodes.cobweb then -- Helper function to place a cobweb at the side (based on chance an Perlin noise) - local cobweb_at_side = function(basepos, vek) + local function cobweb_at_side(basepos, vek) if pr:next(1,5) == 1 then local h = pr:next(0, 2) -- 3 possible cobweb heights local cpos = {x=basepos.x+vek.x, y=basepos.y+h, z=basepos.z+vek.z} diff --git a/mods/PLAYER/mcl_playerinfo/init.lua b/mods/PLAYER/mcl_playerinfo/init.lua index 5086f3195..9c5d1433f 100644 --- a/mods/PLAYER/mcl_playerinfo/init.lua +++ b/mods/PLAYER/mcl_playerinfo/init.lua @@ -1,3 +1,5 @@ +local table = table + -- Player state for public API mcl_playerinfo = {} @@ -21,7 +23,7 @@ end local time = 0 -local get_player_nodes = function(player_pos) +local function get_player_nodes(player_pos) local work_pos = table.copy(player_pos) -- what is around me? diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 40752b835..ceaef6346 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -25,7 +25,7 @@ local mcl_playerplus_internal = {} local time = 0 local look_pitch = 0 -local player_collision = function(player) +local function player_collision(player) local pos = player:get_pos() --local vel = player:get_velocity() @@ -48,7 +48,6 @@ local player_collision = function(player) z = z + (vec.z * force) end end - return {x,z} end @@ -57,7 +56,7 @@ local function degrees(rad) return rad * 180.0 / math.pi end -local dir_to_pitch = function(dir) +local function dir_to_pitch(dir) --local dir2 = vector.normalize(dir) local xz = math.abs(dir.x) + math.abs(dir.z) return -math.atan2(-dir.y, xz) diff --git a/mods/PLAYER/mcl_skins/init.lua b/mods/PLAYER/mcl_skins/init.lua index 0f23519ab..fb91d74d3 100644 --- a/mods/PLAYER/mcl_skins/init.lua +++ b/mods/PLAYER/mcl_skins/init.lua @@ -70,7 +70,7 @@ while true do id = id + 1 end -mcl_skins.cycle_skin = function(player) +function mcl_skins.cycle_skin(player) local skin_id = tonumber(player:get_meta():get_string("mcl_skins:skin_id")) if not skin_id then skin_id = 0 @@ -82,7 +82,7 @@ mcl_skins.cycle_skin = function(player) mcl_skins.set_player_skin(player, skin_id) end -mcl_skins.set_player_skin = function(player, skin_id) +function mcl_skins.set_player_skin(player, skin_id) if not player then return false end @@ -124,7 +124,7 @@ mcl_skins.set_player_skin = function(player, skin_id) return true end -mcl_skins.update_player_skin = function(player) +function mcl_skins.update_player_skin(player) if not player then return end @@ -134,7 +134,6 @@ end -- load player skin on join minetest.register_on_joinplayer(function(player) - local name = player:get_player_name() local skin_id = player:get_meta():get_string("mcl_skins:skin_id") local set_skin @@ -156,7 +155,7 @@ end) mcl_skins.registered_on_set_skins = {} -mcl_skins.register_on_set_skin = function(func) +function mcl_skins.register_on_set_skin(func) table.insert(mcl_skins.registered_on_set_skins, func) end @@ -231,7 +230,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end end) -mcl_skins.show_formspec = function(playername) +function mcl_skins.show_formspec(playername) local formspec = "size[7,8.5]" formspec = formspec .. "label[2,2;" .. minetest.formspec_escape(minetest.colorize("#383838", S("Select player skin:"))) .. "]" diff --git a/mods/PLAYER/mcl_sprint/init.lua b/mods/PLAYER/mcl_sprint/init.lua index 12d0394e5..546a5f4f0 100644 --- a/mods/PLAYER/mcl_sprint/init.lua +++ b/mods/PLAYER/mcl_sprint/init.lua @@ -16,7 +16,7 @@ local players = {} -- Returns true if the player with the given name is sprinting, false if not. -- Returns nil if player does not exist. -mcl_sprint.is_sprinting = function(playername) +function mcl_sprint.is_sprinting(playername) if players[playername] then return players[playername].sprinting else From 49044ac15e8bcc01044a4caf9ffa2c405723d02f Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 25 May 2021 13:18:12 +0200 Subject: [PATCH 202/418] unify codestyle [2] --- CONTRIBUTING.md | 22 ++++++++++++++++++++++ mods/ENVIRONMENT/mcl_moon/init.lua | 4 ++-- mods/ENVIRONMENT/mcl_weather/rain.lua | 24 +++++++++++------------- 3 files changed, 35 insertions(+), 15 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5758d194f..023d89de8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -46,6 +46,28 @@ Your commit names should be relatively descriptive, e.g. when saying "Fix #issue Contributors will be credited in `CREDITS.md`. +## Code Style + +Each mod must provide `mod.conf`. +Each mod which add API functions should store functions inside a global table named like the mod. +Object oriented API shoud be avoided e.g.:`function mobs.register_mod(self)` +Functions should be defined in this way: +``` +function mcl_xyz.stuff(param) end +``` +Insteed of this way: +``` +mcl_xyz.stuff = function(param) end +``` +Indentation must be unified, more likely with tabs. + +Time sensitive mods should make a local copy of most used API functions to improve performances. +``` +local vector = vector +local get_node = minetest.get_node +``` + + ## Features > 1.12 If you want to make a feature that was added in a Minecraft version later than 1.12, you should fork MineClone5 (mineclone5 branch in the repository) and add your changes to this. diff --git a/mods/ENVIRONMENT/mcl_moon/init.lua b/mods/ENVIRONMENT/mcl_moon/init.lua index 1a5030b4e..200c6ca41 100644 --- a/mods/ENVIRONMENT/mcl_moon/init.lua +++ b/mods/ENVIRONMENT/mcl_moon/init.lua @@ -13,7 +13,7 @@ minetest.log("info", "[mcl_moon] Moon phase offset of this world: "..phase_offse mcl_moon = {} mcl_moon.MOON_PHASES = MOON_PHASES -mcl_moon.get_moon_phase = function() +function mcl_moon.get_moon_phase() local after_midday = 0 -- Moon phase changes after midday local tod = minetest.get_timeofday() @@ -23,7 +23,7 @@ mcl_moon.get_moon_phase = function() return (minetest.get_day_count() + phase_offset + after_midday) % MOON_PHASES end -local get_moon_texture = function() +local function get_moon_texture() local phase = mcl_moon.get_moon_phase() local x = phase % MOON_PHASES_HALF local y diff --git a/mods/ENVIRONMENT/mcl_weather/rain.lua b/mods/ENVIRONMENT/mcl_weather/rain.lua index 786e08fa9..c128da942 100644 --- a/mods/ENVIRONMENT/mcl_weather/rain.lua +++ b/mods/ENVIRONMENT/mcl_weather/rain.lua @@ -20,7 +20,7 @@ mcl_weather.rain = { init_done = false, } -mcl_weather.rain.sound_handler = function(player) +function mcl_weather.rain.sound_handler(player) return minetest.sound_play("weather_rain", { to_player = player:get_player_name(), loop = true, @@ -28,7 +28,7 @@ mcl_weather.rain.sound_handler = function(player) end -- set skybox based on time (uses skycolor api) -mcl_weather.rain.set_sky_box = function() +function mcl_weather.rain.set_sky_box() if mcl_weather.state == "rain" then mcl_weather.skycolor.add_layer( "weather-pack-rain-sky", @@ -46,8 +46,7 @@ end -- creating manually parctiles instead of particles spawner because of easier to control -- spawn position. -mcl_weather.rain.add_rain_particles = function(player) - +function mcl_weather.rain.add_rain_particles(player) mcl_weather.rain.last_rp_count = 0 for i=mcl_weather.rain.particles_count, 1,-1 do local random_pos_x, random_pos_y, random_pos_z = mcl_weather.get_random_pos_by_player_look_dir(player) @@ -70,7 +69,7 @@ mcl_weather.rain.add_rain_particles = function(player) end -- Simple random texture getter -mcl_weather.rain.get_texture = function() +function mcl_weather.rain.get_texture() local texture_name local random_number = math.random() if random_number > 0.33 then @@ -85,7 +84,7 @@ end -- register player for rain weather. -- basically needs for origin sky reference and rain sound controls. -mcl_weather.rain.add_player = function(player) +function mcl_weather.rain.add_player(player) if mcl_weather.players[player:get_player_name()] == nil then local player_meta = {} player_meta.origin_sky = {player:get_sky()} @@ -95,7 +94,7 @@ end -- remove player from player list effected by rain. -- be sure to remove sound before removing player otherwise soundhandler reference will be lost. -mcl_weather.rain.remove_player = function(player) +function mcl_weather.rain.remove_player(player) local player_meta = mcl_weather.players[player:get_player_name()] if player_meta ~= nil and player_meta.origin_sky ~= nil then player:set_clouds({color="#FFF0F0E5"}) @@ -119,7 +118,7 @@ end) -- adds and removes rain sound depending how much rain particles around player currently exist. -- have few seconds delay before each check to avoid on/off sound too often -- when player stay on 'edge' where sound should play and stop depending from random raindrop appearance. -mcl_weather.rain.update_sound = function(player) +function mcl_weather.rain.update_sound(player) local player_meta = mcl_weather.players[player:get_player_name()] if player_meta ~= nil then if player_meta.sound_updated ~= nil and player_meta.sound_updated + 5 > minetest.get_gametime() then @@ -140,7 +139,7 @@ mcl_weather.rain.update_sound = function(player) end -- rain sound removed from player. -mcl_weather.rain.remove_sound = function(player) +function mcl_weather.rain.remove_sound(player) local player_meta = mcl_weather.players[player:get_player_name()] if player_meta ~= nil and player_meta.sound_handler ~= nil then minetest.sound_fade(player_meta.sound_handler, -0.5, 0.0) @@ -150,7 +149,7 @@ mcl_weather.rain.remove_sound = function(player) end -- callback function for removing rain -mcl_weather.rain.clear = function() +function mcl_weather.rain.clear() mcl_weather.rain.raining = false mcl_weather.rain.sky_last_update = -1 mcl_weather.rain.init_done = false @@ -166,11 +165,10 @@ minetest.register_globalstep(function(dtime) if mcl_weather.state ~= "rain" then return false end - mcl_weather.rain.make_weather() end) -mcl_weather.rain.make_weather = function() +function mcl_weather.rain.make_weather() if mcl_weather.rain.init_done == false then mcl_weather.rain.raining = true mcl_weather.rain.set_sky_box() @@ -190,7 +188,7 @@ mcl_weather.rain.make_weather = function() end -- Switch the number of raindrops: "thunder" for many raindrops, otherwise for normal raindrops -mcl_weather.rain.set_particles_mode = function(mode) +function mcl_weather.rain.set_particles_mode(mode) if mode == "thunder" then mcl_weather.rain.particles_count = PARTICLES_COUNT_THUNDER else From f421e07d1cfaaa114481550391875da3295228f3 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Tue, 25 May 2021 21:51:50 +0200 Subject: [PATCH 203/418] Add polish translation of mcl_spawn --- mods/PLAYER/mcl_spawn/locale/mcl_spawn.pl.tr | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 mods/PLAYER/mcl_spawn/locale/mcl_spawn.pl.tr diff --git a/mods/PLAYER/mcl_spawn/locale/mcl_spawn.pl.tr b/mods/PLAYER/mcl_spawn/locale/mcl_spawn.pl.tr new file mode 100644 index 000000000..df97a3d72 --- /dev/null +++ b/mods/PLAYER/mcl_spawn/locale/mcl_spawn.pl.tr @@ -0,0 +1,5 @@ +# textdomain: mcl_spawn +New respawn position set!=Ustawiono nową pozycję odradzania! +Respawn position cleared!=Usunięto pozycję odradzania! +Your spawn bed was missing or blocked.=Twoje łóżko odradzania zginęło lub zostało zablokowane. + From dcceafad4197179b7830db3e717a5c4567002c14 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Tue, 25 May 2021 21:55:16 +0200 Subject: [PATCH 204/418] Add polish translation of mcl_hunger --- mods/PLAYER/mcl_hunger/locale/mcl_hunger.pl.tr | 9 +++++++++ tools/dicts/polish.dic | 1 + 2 files changed, 10 insertions(+) create mode 100644 mods/PLAYER/mcl_hunger/locale/mcl_hunger.pl.tr diff --git a/mods/PLAYER/mcl_hunger/locale/mcl_hunger.pl.tr b/mods/PLAYER/mcl_hunger/locale/mcl_hunger.pl.tr new file mode 100644 index 000000000..be20c6d85 --- /dev/null +++ b/mods/PLAYER/mcl_hunger/locale/mcl_hunger.pl.tr @@ -0,0 +1,9 @@ +# textdomain: mcl_hunger +@1 succumbed to the poison.=@1 uległa truciźnie. +Food=Jedzenie +Saturation=Nasycenie +%s: %.1f/%d=%s: %.1f/%d +Exhaust.=Wyczerpanie. +%s: %d/%d=%s: %d/%d +@1 starved to death.=@1 umarła z wygłodzenia. + diff --git a/tools/dicts/polish.dic b/tools/dicts/polish.dic index 5de430a55..011471dd2 100644 --- a/tools/dicts/polish.dic +++ b/tools/dicts/polish.dic @@ -1,4 +1,5 @@ 1s +1f Badlandach biomeinfo creeper From 37b1191c0abdbed99b39f7371cdb533c003d3726 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Tue, 25 May 2021 21:58:23 +0200 Subject: [PATCH 205/418] Add polish translation of mcl_structures --- mods/MAPGEN/mcl_structures/locale/mcl_structures.pl.tr | 8 ++++++++ tools/dicts/polish.dic | 1 + 2 files changed, 9 insertions(+) create mode 100644 mods/MAPGEN/mcl_structures/locale/mcl_structures.pl.tr diff --git a/mods/MAPGEN/mcl_structures/locale/mcl_structures.pl.tr b/mods/MAPGEN/mcl_structures/locale/mcl_structures.pl.tr new file mode 100644 index 000000000..a0a1c69f2 --- /dev/null +++ b/mods/MAPGEN/mcl_structures/locale/mcl_structures.pl.tr @@ -0,0 +1,8 @@ +# textdomain: mcl_structures +Generate a pre-defined structure near your position.=Wygeneruj predefiniowaną strukturę nieopodal twojej pozycji. +Structure placed.=Struktura postawiona. +Village built. WARNING: Villages are experimental and might have bugs.=Wioska zbudowana. UWAGA: Wioski są eksperymentalne i mogą występować błędy. +Error: No structure type given. Please use “/spawnstruct ”.=Błąd: Nie podano typu struktury. Użyj "/spawnstruct ". +Error: Unknown structure type. Please use “/spawnstruct ”.=Błąd: Nieznany typ struktury. Użyj "/spawnstruct ". +Use /help spawnstruct to see a list of avaiable types.=Użyj /help spawnstruct aby zobaczyć listę dostępnych typów. + diff --git a/tools/dicts/polish.dic b/tools/dicts/polish.dic index 011471dd2..623db456a 100644 --- a/tools/dicts/polish.dic +++ b/tools/dicts/polish.dic @@ -68,6 +68,7 @@ spawner spawnowania spawnery spawnerze +spawnstruct szkieleta v6 Wielostrzał From 6105a9ef2292efe1a8a6da1a695d2e5d9baab322 Mon Sep 17 00:00:00 2001 From: NO11 Date: Tue, 25 May 2021 20:00:06 +0000 Subject: [PATCH 206/418] Fix function code style in mcl:core/crafting.lua --- mods/ITEMS/mcl_core/crafting.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_core/crafting.lua b/mods/ITEMS/mcl_core/crafting.lua index f031c7ca2..cec26e747 100644 --- a/mods/ITEMS/mcl_core/crafting.lua +++ b/mods/ITEMS/mcl_core/crafting.lua @@ -4,7 +4,7 @@ -- Crafting definition -- -local craft_planks = function(output, input) +local function craft_planks(output, input) minetest.register_craft({ output = "mcl_core:"..output.."wood 4", recipe = { From e797a4ec9be4447f2c5eef42c714f3339e603c84 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Tue, 25 May 2021 22:14:26 +0200 Subject: [PATCH 207/418] Add polish translation of mcl_death_messages --- .../locale/mcl_death_messages.pl.tr | 60 +++++++++++++++++++ tools/dicts/polish.dic | 8 +++ 2 files changed, 68 insertions(+) create mode 100644 mods/HUD/mcl_death_messages/locale/mcl_death_messages.pl.tr diff --git a/mods/HUD/mcl_death_messages/locale/mcl_death_messages.pl.tr b/mods/HUD/mcl_death_messages/locale/mcl_death_messages.pl.tr new file mode 100644 index 000000000..5ca027663 --- /dev/null +++ b/mods/HUD/mcl_death_messages/locale/mcl_death_messages.pl.tr @@ -0,0 +1,60 @@ +# textdomain: mcl_death_messages +@1 was fatally hit by an arrow.=@1 została śmiertelnie raniona strzałą. +@1 has been killed with an arrow.=@1 została zabita strzałą. +@1 was shot by an arrow from @2.=@1 została zastrzelona strzałą przez @2. +@1 was shot by an arrow from a skeleton.=@1 została zastrzelona strzałą przez szkieleta. +@1 was shot by an arrow from a stray.=@1 została zastrzelona strzałą przez tułacza. +@1 was shot by an arrow from an illusioner.=@1 została zastrzelona strzałą przez iluzjonistę. +@1 was shot by an arrow.=@1 została zastrzelona strzałą. +@1 forgot to breathe.=@1 zapomniała oddychać. +@1 drowned.=@1 utonęła. +@1 ran out of oxygen.=@1 skończył się tlen. +@1 was killed by @2.=@1 została zabita przez @2. +@1 was killed.=@1 została zabita. +@1 was killed by a mob.=@1 została zabita przez moba. +@1 was burned to death by a blaze's fireball.=@1 została spalona żywcem przez kulę ognia płomyka. +@1 was killed by a fireball from a blaze.=@1 została zabita kulą ognia płomyka. +@1 was burned by a fire charge.=@1 została spalona ładunkiem ognia. +A ghast scared @1 to death.=Ghast przeraził @1 na śmierć. +@1 has been fireballed by a ghast.=@1 poczuła ogień z kuli ghasta. +@1 fell from a high cliff.=@1 spadła z wysokiego klifu. +@1 took fatal fall damage.=@1 otrzymała zabójcze obrażenia od upadku. +@1 fell victim to gravity.=@1 została ofiarą bezwzględnej grawitacji. +@1 died.=@1 umarła. +@1 was killed by a zombie.=@1 została zabita przez zombie. +@1 was killed by a baby zombie.=@1 została zabita przez dziecko zombie. +@1 was killed by a blaze.=@1 została zabita przez płomyka. +@1 was killed by a slime.=@1 została zabita przez szlama. +@1 was killed by a witch.=@1 została zabita przez wiedźmę. +@1 was killed by a magma cube.=@1 została zabita przez kostkę magmy. +@1 was killed by a wolf.=@1 została zabita przez wilka. +@1 was killed by a cat.=@1 została zabita przez kota. +@1 was killed by an ocelot.=@1 została zabita przez ocelota. +@1 was killed by an ender dragon.=@1 została zabita przez smoka kresu. +@1 was killed by a wither.=@1 została zabita przez withera. +@1 was killed by an enderman.=@1 została zabita przez endermana. +@1 was killed by an endermite.=@1 została zabita przez kresomyszę. +@1 was killed by a ghast.=@1 została zabita przez ghasta. +@1 was killed by an elder guardian.=@1 została zabita przez starszego strażnika. +@1 was killed by a guardian.=@1 została zabita przez strażnika. +@1 was killed by an iron golem.=@1 została zabita przez żelaznego golema. +@1 was killed by a polar_bear.=@1 została zabita przez niedźwiedzia polarnego. +@1 was killed by a killer bunny.=@1 została zabita przez królika zabójcę. +@1 was killed by a shulker.=@1 została zabita przez shulkera. +@1 was killed by a silverfish.=@1 została zabita przez rybika cukrowego. +@1 was killed by a skeleton.=@1 została zabita przez szkieleta. +@1 was killed by a stray.=@1 została zabita przez tułacza. +@1 was killed by a slime.=@1 została zabita przez szlama. +@1 was killed by a spider.=@1 została zabita przez pająka. +@1 was killed by a cave spider.=@1 została zabita przez pająka jaskiniowego. +@1 was killed by a vex.=@1 została zabita przez dręczyciela. +@1 was killed by an evoker.=@1 została zabita przez przywoływacza. +@1 was killed by an illusioner.=@1 została zabita przez iluzjonistę. +@1 was killed by a vindicator.=@1 została zabita przez obrońcę. +@1 was killed by a zombie villager.=@1 została zabita przez zombie osadnika. +@1 was killed by a husk.=@1 została zabita przez posucha. +@1 was killed by a baby husk.=@1 została zabita przez dziecko posucha. +@1 was killed by a zombie pigman.=@1 została zabita przez zombie pigmana. +@1 was killed by a baby zombie pigman.=@1 została zabita przez dziecko zombie pigmana. +@1 was slain by @2.=@1 została zabita przez @2. + diff --git a/tools/dicts/polish.dic b/tools/dicts/polish.dic index 623db456a..199ce800b 100644 --- a/tools/dicts/polish.dic +++ b/tools/dicts/polish.dic @@ -23,7 +23,14 @@ Endermit endermitom forceenchant Ghast +ghasta Ghasta +kresomysz +kresomyszę +przywoływacza +endermana +pigmana +szlama Houstonia iskrzyłuda Iskrzyłuda @@ -74,6 +81,7 @@ v6 Wielostrzał Wither witherowego +withera Witherowy zakłuta refrenusu From 2873c7f7ce2f9a46fefaa2cc98856ef2fa9cdb41 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Wed, 26 May 2021 08:49:40 +0200 Subject: [PATCH 208/418] Add polish translation of mcl_hudbars --- mods/HUD/hudbars/locale/hudbars.pl.tr | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 mods/HUD/hudbars/locale/hudbars.pl.tr diff --git a/mods/HUD/hudbars/locale/hudbars.pl.tr b/mods/HUD/hudbars/locale/hudbars.pl.tr new file mode 100644 index 000000000..be06b3579 --- /dev/null +++ b/mods/HUD/hudbars/locale/hudbars.pl.tr @@ -0,0 +1,7 @@ +# textdomain: hudbars +Health=Życie +Breath=Tlen + +# Default format string for progress bar-style HUD bars, e.g. “Health 5/20” +@1: @2/@3=@1: @2/@3 + From d83c29f0c42df6d99769664f58b0043f1ec59cee Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Wed, 26 May 2021 09:08:44 +0200 Subject: [PATCH 209/418] Add polish translation of awards --- mods/HUD/awards/locale/awards.pl.tr | 63 +++++++++++++++++++++++++++++ tools/dicts/polish.dic | 3 ++ 2 files changed, 66 insertions(+) create mode 100644 mods/HUD/awards/locale/awards.pl.tr diff --git a/mods/HUD/awards/locale/awards.pl.tr b/mods/HUD/awards/locale/awards.pl.tr new file mode 100644 index 000000000..c81130275 --- /dev/null +++ b/mods/HUD/awards/locale/awards.pl.tr @@ -0,0 +1,63 @@ +# textdomain:awards +@1/@2 chat messages=@1/@2 wiadomości na czacie +@1/@2 crafted=Wytworzono @1/@2 +@1/@2 deaths=@1/@2 śmierci +@1/@2 dug=Wykopano @1/@2 +@1/@2 game joins=Dołączono do @1/@2 gier +@1/@2 placed=Postawiono @1/@2 +@1 (got)=@1 (zdobyto) +@1: @1=@1: @1 +@1’s awards:=Nagrody @1: +(Secret Award)=(Sekretna nagroda) += += +A Cat in a Pop-Tart?!=Kot na toście?! +Achievement gotten!=Zdobyto osiągnięcie! +Achievement gotten:=Zdobyto osiągnięcie: +Achievement gotten: @1=Zdobyto osiągnięcie: @1 +Achievement not found.=Nie znaleziono osiągnięcia. +All your awards and statistics have been cleared. You can now start again.=Wszystkie twoje nagrody i statystyki zostały usunięte. Możesz zacząć ponownie. +Awards=Nagrody. +Craft: @1×@2=Wytwórz: @1×@2 +Craft: @1=Wytwórz: @1 +Die @1 times.=Zgiń @1 razy. +Die.=Zgiń. +Get the achievements statistics for the given player or yourself=Zobacz statystyki osiągnięć danego gracza lub siebie +Join the game @1 times.=Dołącz do gry @1 razy. +Join the game.=Dołącz do gry. +List awards in chat (deprecated)=Wypisz nagrody w czacie (przestarzałe) +Place a block: @1=Postaw blok: @1 +Place blocks: @1×@2=Postaw bloki: @1×@2 +Secret Achievement gotten!=Zdobyto sekretne osiągnięcie! +Secret Achievement gotten:=Zdobyto sekretne osiągnięcie: +Secret Achievement gotten: @1=Zdobyto sekretne osiągnięcie: @1 +Show details of an achievement=Pokaż szczegóły osiągnięcia +Show, clear, disable or enable your achievements=Pokaż, wyczyść, wyłącz lub włącz swoje osiągnięcia +Get this achievement to find out what it is.=Zdobądź to osiągnięcie aby dowiedzieć się jakie ono jest. +Write @1 chat messages.=Napisz @1 wiadomości na czacie. +Write something in chat.=Napisz coś na czacie. +You have disabled your achievements.=Twoje osiągnięcia zostały wyłączone. +You have enabled your achievements.=Twoje osiągnięcia zostały włączone. +You have not gotten any awards.=Nie zdobyto żadnych osiągnięć. +You've disabled awards. Type /awards enable to reenable.=Wyłączono osiągnięcia. Napisz /awards by je włączyć. +[c|clear|disable|enable]=[c|clear|disable|enable] +OK=OK +Error: No awards available.=Błąd: Brak dostępnych nagród. +Eat: @1×@2=Zjedz: @1×@2 +Eat: @1=Zjedz: @1 +@1/@2 eaten=Zjedzono @1/@2 +Place @1 block(s).=Postaw bloki: @1. +Dig @1 block(s).=Wykop bloki: @1. +Eat @1 item(s).=Zjedz przedmioty: @1. +Craft @1 item(s).=Wytwórz przedmioty: @1. +Can give achievements to any player=Może przyznawać osiągnięcia dowolnemu graczowi. +(grant ( | all)) | list=(grant ( | all)) | list +Give achievement to player or list all achievements=Daj osiągnięcie graczowi lub wypisz wszystkie osiągnięcia +@1 (@2)=@1 (@2) +Invalid syntax.=Niepoprawna składnia. +Invalid action.=Niepoprawna czynność. +Player is not online.=Gracz nie jest online. +Done.=Gotowe. +Achievement “@1” does not exist.=Osiągnięcie "@1" nie istnieje. +@1 has made the achievement @2=@2 zostało zdobyte przez @1. + diff --git a/tools/dicts/polish.dic b/tools/dicts/polish.dic index 199ce800b..1822fe91b 100644 --- a/tools/dicts/polish.dic +++ b/tools/dicts/polish.dic @@ -31,6 +31,9 @@ przywoływacza endermana pigmana szlama +enable +disable +awards Houstonia iskrzyłuda Iskrzyłuda From a27833a0e15e3196dd3c5a72528e59471e23aaeb Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Wed, 26 May 2021 09:34:05 +0200 Subject: [PATCH 210/418] Add polish translation of mcl_achievements --- .../locale/mcl_achievements.pl.tr | 49 +++++++++++++++++++ tools/dicts/polish.dic | 1 + tools/spell_check_translate_files.py | 4 +- 3 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 mods/HUD/mcl_achievements/locale/mcl_achievements.pl.tr diff --git a/mods/HUD/mcl_achievements/locale/mcl_achievements.pl.tr b/mods/HUD/mcl_achievements/locale/mcl_achievements.pl.tr new file mode 100644 index 000000000..93c2d272e --- /dev/null +++ b/mods/HUD/mcl_achievements/locale/mcl_achievements.pl.tr @@ -0,0 +1,49 @@ +# textdomain:mcl_achievements +Aquire Hardware=Zdobądź narzędzie +Bake Bread=Upiecz chleb +Benchmarking=Rzemieślnictwo +Cow Tipper=Raz krowie śmierć +Craft a bookshelf.=Wytwórz półkę z książkami. +Craft a cake using wheat, sugar, milk and an egg.=Wytwórz ciasto z pszenicy, cukru, mleka i jajka. +Craft a crafting table from 4 wooden planks.=Wytwórz stół rzemieślniczy z 4 desek. +Craft a stone pickaxe using sticks and cobblestone.=Wytwórz kamienny kilof korzystając z patyków i brukowca. +Craft a wooden sword using wooden planks and sticks on a crafting table.=Wytwórz drewniany miecz korzystając z desek i patyków na stole rzemieślniczym. +DIAMONDS!=DIAMENTY! +Dispense With This=Dozuj to +Eat a cooked porkchop.=Zjedz upieczony kotlet. +Eat a cooked rabbit.=Zjedz pieczonego królika. +Get really desperate and eat rotten flesh.=Bądź zdesperowany i zjedz zgniłe mięso. +Getting Wood=Zbieranie drewna +Getting an Upgrade=Ulepszenie +Hit a skeleton, wither skeleton or stray by bow and arrow from a distance of at least 20 meters.=Traf szkieleta, witherowego szkieleta lub tułacza strzałą z łuku z odległości co najmniej 20 metrów. +Hot Topic=Gorący temat +Into Fire=W ogień +Into the Nether=W Nether +Iron Belly=Żelazny żołądek +Librarian=Bibliotekarz +Mine emerald ore.=Wykop rudę szmaragdu. +On A Rail=Na torach +Pick up a blaze rod from the floor.=Podnieś płomienną różdżkę z podłogi. +Pick up a diamond from the floor.=Ponieś diament z podłogi. +Pick up a wood item from the ground.@nHint: Punch a tree trunk until it pops out as an item.=Podnieś drewniany przedmiot z ziemi.@nPodpowiedź: Uderzaj pień drzewa dopóki nie wyleci jako przedmiot. +Pick up leather from the floor.@nHint: Cows and some other animals have a chance to drop leather, when killed.=Podnieś skórkę z ziemi.@nPodpowiedź: Krowy i inne zwierzęta mają szansę upuścić skórę gdy zostaną zabite. +Place a dispenser.=Postaw dozownik. +Place a flower pot.=Postaw doniczkę. +Pork Chop=Kotlet +Pot Planter=Ogrodnik +Rabbit Season=Sezon na króliki +Sniper Duel=Pojedynek snajperów +Take a cooked fish from a furnace.@nHint: Use a fishing rod to catch a fish and cook it in a furnace.=Weź upieczoną rybę z pieca.@nPodpowiedź: Użyj wędki aby złapać rybę i upiecz ją w piecu. +Take an iron ingot from a furnace's output slot.@nHint: To smelt an iron ingot, put a fuel (like coal) and iron ore into a furnace.=Weź sztabkę żelaza z wyjściowego miejsca pieca.@nPodpowiedź: Aby wytopić sztabkę żelaza, umieść paliwo (np. węgiel) w piecu. +The Haggler=Handlarz +The Lie=Kłamstwo +Time to Farm!=Czas na rolnictwo! +Time to Mine!=Czas na kopanie! +Time to Strike!=Czas na atak! +Travel by minecart for at least 1000 meters from your starting point in a single ride.=Przejedź przez przynajmniej 1000 metrów od punktu startowego pojedynczą przejażdżką. +Use 8 cobblestones to craft a furnace.=Użyj 8 brukowców by wytworzyć piec. +Use a crafting table to craft a wooden hoe from wooden planks and sticks.=Użyj stołu rzemieślniczego aby wytworzyć drewnianą motykę z desek i patyków. +Use a crafting table to craft a wooden pickaxe from wooden planks and sticks.=Użyj stołu rzemieślniczego aby wytworzyć drewniany kilof z desek i patyków. +Use obsidian and a fire starter to construct a Nether portal.=Użyj obsydianu i źródła ognia aby skonstruować portal do Netheru. +Use wheat to craft a bread.=Użyj pszenicy by wytworzyć chleb. + diff --git a/tools/dicts/polish.dic b/tools/dicts/polish.dic index 1822fe91b..e21585005 100644 --- a/tools/dicts/polish.dic +++ b/tools/dicts/polish.dic @@ -34,6 +34,7 @@ szlama enable disable awards +Dozuj Houstonia iskrzyłuda Iskrzyłuda diff --git a/tools/spell_check_translate_files.py b/tools/spell_check_translate_files.py index 894306d4a..6b3cc85b0 100644 --- a/tools/spell_check_translate_files.py +++ b/tools/spell_check_translate_files.py @@ -33,9 +33,9 @@ def get_errors(file): try: _, translated = re.split(r'[^@]=', line) except: - print("!> Too many =s in line:", line) + print("!> Too many '='s in line:", line) continue - for word in re.split(r'[\W ]',translated): + for word in re.split(r'\@.|[\W ]',translated): if not hs.spell(word): result.add(word) From a4c21de15380ff6123d6f55a48cb2a5b8a3172c9 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Wed, 26 May 2021 09:37:27 +0200 Subject: [PATCH 211/418] Add polish translation of mcl_experience --- mods/HUD/mcl_experience/locale/mcl_experience.pl.tr | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 mods/HUD/mcl_experience/locale/mcl_experience.pl.tr diff --git a/mods/HUD/mcl_experience/locale/mcl_experience.pl.tr b/mods/HUD/mcl_experience/locale/mcl_experience.pl.tr new file mode 100644 index 000000000..5834bac14 --- /dev/null +++ b/mods/HUD/mcl_experience/locale/mcl_experience.pl.tr @@ -0,0 +1,8 @@ +# textdomain: mcl_experience +[[] ]=[[] Date: Wed, 26 May 2021 09:39:57 +0200 Subject: [PATCH 212/418] Add polish translation of mcl_inventory --- .../mcl_inventory/locale/mcl_inventory.pl.tr | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 mods/HUD/mcl_inventory/locale/mcl_inventory.pl.tr diff --git a/mods/HUD/mcl_inventory/locale/mcl_inventory.pl.tr b/mods/HUD/mcl_inventory/locale/mcl_inventory.pl.tr new file mode 100644 index 000000000..3817d88a1 --- /dev/null +++ b/mods/HUD/mcl_inventory/locale/mcl_inventory.pl.tr @@ -0,0 +1,22 @@ +# textdomain: mcl_inventory +Recipe book=Książka z recepturami +Help=Pomoc +Select player skin=Wybierz skin gracza +Achievements=Osiągnięcia +Building Blocks=Bloki budowlane +Decoration Blocks=Bloki dekoracyjne +Redstone=Czerwienit +Transportation=Transport +Brewing=Warzenie +Miscellaneous=Różne +Search Items=Wyszukaj przedmioty +Foodstuffs=Jedzenie +Tools=Narzędzia +Combat=Walka +Mobs=Moby +Materials=Materiały +Survival Inventory=Ekwipunek przetrwania +Crafting=Wytwarzanie +Inventory=Ekwipunek +@1/@2=@1/@2 + From 5ef0c5bcb74ba939d338d8fa0d5a2d1e89f6f0c1 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Wed, 26 May 2021 10:24:17 +0200 Subject: [PATCH 213/418] Add polish translation of mcl_doc --- mods/HELP/mcl_doc/locale/mcl_doc.pl.tr | 80 ++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 mods/HELP/mcl_doc/locale/mcl_doc.pl.tr diff --git a/mods/HELP/mcl_doc/locale/mcl_doc.pl.tr b/mods/HELP/mcl_doc/locale/mcl_doc.pl.tr new file mode 100644 index 000000000..c451c8c39 --- /dev/null +++ b/mods/HELP/mcl_doc/locale/mcl_doc.pl.tr @@ -0,0 +1,80 @@ +# textdomain: mcl_doc +Water can flow into this block and cause it to drop as an item.=Woda może wpłynąć na ten blok i sprawić, że on wypadnie. +This block can be turned into dirt with a hoe.=Ten blok może być zamieniony w ziemię za pomocą motyki. +This block can be turned into farmland with a hoe.=Ten blok może być zamieniony w ziemię uprawną za pomocą motyki. +This block acts as a soil for all saplings.=Ten blok może być glebą dla wszystkich sadzonek. +This block acts as a soil for some saplings.=Ten blok może być glebą dla niektórych sadzonek. +Sugar canes will grow on this block.=Trzcina cukrowa będzie rosnąć na tym bloku. +Nether wart will grow on this block.=Netherowa brodawka będzie rosnąć na tym bloku. +This block quickly decays when there is no wood block of any species within a distance of @1. When decaying, it disappears and may drop one of its regular drops. The block does not decay when the block has been placed by a player.=Ten blok szybko zanika gdy w odległości @1 nie ma żadnego bloku drewna dowolnego rodzaju. Gdy zanika może wyrzucić z siebie jeden z przedmiotów typowo wyrzucanych. +This block quickly decays and disappears when there is no wood block of any species within a distance of @1. The block does not decay when the block has been placed by a player.=Ten blok szybko zanika gdy w odległości @1 nie ma żadnego bloku drewna dowolnego rodzaju. Ten blok nie zanika gdy został postawiony przez gracza. +This plant can only grow on grass blocks and dirt. To survive, it needs to have an unobstructed view to the sky above or be exposed to a light level of 8 or higher.=Ta roślina może rosnąć tylko na blokach trawy i ziemi. Aby przetrwać musi mieć nieblokowany dostęp do nieba powyżej lub być oświetlana światłem o poziomie 8 lub wyższym. +This plant can grow on grass blocks, podzol, dirt and coarse dirt. To survive, it needs to have an unobstructed view to the sky above or be exposed to a light level of 8 or higher.=Ta roślina może rosnąć na blokach trawy, bielicy, ziemi i twardej ziemi. Aby przetrwać musi mieć nieblokowany dostęp do nieba powyżej lub być oświetlana światłem o poziomie 8 lub wyższym. +This block is flammable.=Ten blok jest łatwopalny. +This block destroys any item it touches.=Ten blok niszczy się gdy dowolny przedmiot go dotyka. +To eat it, wield it, then rightclick.=Aby to zjeść, weź to, następnie kliknij prawy przycisk myszy. +You can eat this even when your hunger bar is full.=Możesz to zjeść nawet gdy twój pasek nasycenia jest pełny. +You cannot eat this when your hunger bar is full.=Nie możesz tego jeść gdy twój pasek nasycenia jest pełny. +To drink it, wield it, then rightclick.=Aby to wypić, weź to, następnie kliknij prawy przycisk myszy. +You cannot drink this when your hunger bar is full.=Nie możesz tego pić gdy twój pasek nasycenia jest pełny. +To consume it, wield it, then rightclick.=Aby to skonsumować, weź to, następnie kliknij prawy przycisk myszy. +You cannot consume this when your hunger bar is full.=Nie możesz tego skonsumować gdy twój pasek nasycenia jest pełny. +You have to wait for about 2 seconds before you can eat or drink again.=Musisz poczekać przez 2 sekundy zanim znów będziesz mogła jeść lub pić. +Hunger points restored: @1=Przywrócone punkty głodu: @1 +Saturation points restored: @1%.1f=Przywrócone punkty nasycenia: @1%.1f +This item can be repaired at an anvil with: @1.=Ten przedmiot może być naprawiony przy kowadle przy użyciu: @1. +This item can be repaired at an anvil with any wooden planks.=Ten przedmiot może być naprawiony przy kowadle przy użyciu desek. +This item can be repaired at an anvil with any item in the “@1” group.=Ten przedmiot może być naprawiony przy kowadle przy użyciu dowolnego przedmiotu z grupy "@1". +This item cannot be renamed at an anvil.=Ten przedmiot nie może być przemianowany przy kowadle. +This block crushes any block it falls into.=Ten blok rozbija dowolny blok na który spadnie. +When this block falls deeper than 1 block, it causes damage to any player it hits. The damage dealt is B×2−2 hit points with B @= number of blocks fallen. The damage can never be more than 40 HP.=Gdy ten blok spada więcej niż o 1 blok, zadaje on obrażenia dowolnemu graczowi którego uderzy. Zadaje on B×2−2 punktów obrażeń, gdzie B @= liczba bloków o który spadł. +Diamond Pickaxe=Diamentowy kilof +Iron Pickaxe=Żelazny kilof +Stone Pickaxe=Kamienny kilof +Golden Pickaxe=Złoty kilof +Wooden Pickaxe=Drewniany kilof +Diamond Axe=Diamentowa siekiera +Iron Axe=Żelazna siekiera +Stone Axe=Kamienna siekiera +Golden Axe=Złota siekiera +Wooden Axe=Drewniana siekiera +Diamond Shovel=Diamentowa łopata +Iron Shovel=Żelazna łopata +Stone Shovel=Kamienna łopata +Golden Shovel=Złota łopata +Wooden Shovel=Drewniana łopata +This block can be mined by any tool instantly.=Ten blok może zostać wykopany dowolnym narzędziem natychmiastowo. +This block can be mined by:=Ten blok może być wykopany przy użyciu: +Hardness: ∞=Twardość: ∞ +Hardness: @1=Twardość: @1 +This block will not be destroyed by TNT explosions.=Ten blok nie będzie zniszczony przez eksplozję trotylu. +This block drops itself when mined by shears.=Ten blok wyrzuca siebie gdy wykopany nożycami. +@1×@2=@1×@2 +This blocks drops the following when mined by shears: @1=Ten blok wyrzuca siebie gdy wykopany nożycami. +, =, +• Shears=• Nożyce +• Sword=• Miecz +• Hand=• Ręka +This is a melee weapon which deals damage by punching.=To jest broń ręczna która zadaje obrażenia przy uderzenia. +Maximum damage: @1 HP=Maksymalne obrażenia: @1 HP +Full punch interval: @1 s=Pełny okres uderzenia: @1 s +This tool is capable of mining.=To narzędzie jest w stanie kopać. +Mining speed: @1=Szybkość kopania: @1 +Painfully slow=Boleśnie powolne +Very slow=Bardzo wolne +Slow=Wolne +Fast=Szybkie +Very fast=Bardzo szybkie +Extremely fast=Ekstremalnie szybkie +Instantaneous=Natychmiastowe +@1 uses=@1 użyć +Unlimited uses=Nielimitowane użycia +Block breaking strength: @1=Siła niszczenia bloku: @1 +Mining durability: @1=Wytrzymałość kopania: @1 +Armor points: @1=Punkty zbroi: @1 +Armor durability: @1=Wytrzymałość zbroi: @1 +It can be worn on the head.=Może być noszony na głowie. +It can be worn on the torso.=Może być noszone na piersi. +It can be worn on the legs.=Może być noszony na nogach. +It can be worn on the feet.=Może być noszony na stopach. + From 1ad1bbef1361ff4b60f648b782a0a9e6bceeecdc Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Wed, 26 May 2021 10:52:47 +0200 Subject: [PATCH 214/418] Add polish translation of mcl_tt --- mods/HELP/mcl_tt/locale/mcl_tt.pl.tr | 48 ++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 mods/HELP/mcl_tt/locale/mcl_tt.pl.tr diff --git a/mods/HELP/mcl_tt/locale/mcl_tt.pl.tr b/mods/HELP/mcl_tt/locale/mcl_tt.pl.tr new file mode 100644 index 000000000..aecc15d1e --- /dev/null +++ b/mods/HELP/mcl_tt/locale/mcl_tt.pl.tr @@ -0,0 +1,48 @@ +# textdomain: mcl_tt +Head armor=Zbroja na głowę +Torso armor=Zbroja na pierś +Legs armor=Zbroja na nogi +Feet armor=Zbroja na stopy +Armor points: @1=Punkty zbroi +Armor durability: @1=Wytrzymałość zbroi: @1 +Protection: @1%=Ochrona: @1% +Hunger points: +@1=Punkty głodu: +@1 +Saturation points: +@1=Punkty nasycenia: +@1 +Deals damage when falling=Zadaje obrażenia gdy spada +Grows on grass blocks or dirt=Rośnie na blokach trawy i ziemi +Grows on grass blocks, podzol, dirt or coarse dirt=Rośnie na blokach trawy, bielicy, ziemi oraz twardej ziemi +Flammable=Łatwopalne +Zombie view range: -50%=Zasięg widzenia zombie: -50% +Skeleton view range: -50%=Zasięg widzenia szkieleta: -50% +Creeper view range: -50%=Zasięg widzenia creepera: -50% +Damage: @1=Obrażenia: @1 +Damage (@1): @2=Obrażenia (@1): @2 +Healing: @1=Leczenie: @1 +Healing (@1): @2=Leczenie (@1): @2 +Full punch interval: @1s=Pełny okres uderzenia: @1s +Contact damage: @1 per second=Obrażenia kontaktowe: @1 na sekundę +Contact healing: @1 per second=Leczenie kontaktowe: @1 na sekundę +Drowning damage: @1=Obrażenia od topienia: @1 +Bouncy (@1%)=Sprężystość (@1%) +Luminance: @1=Luminancja: @1 +Slippery=Śliskość +Climbable=Wspinaczkowe +Climbable (only downwards)=Wspinaczkowe (tylko w dół) +No jumping=Nie można skakać +No swimming upwards=Nie można płynąć pod górę +No rising=Nie wolno wstawać +Fall damage: @1%=Obrażenia od upadku @1% +Fall damage: +@1%=Obrażenia od upadku +@1% +No fall damage=Brak obrażeń od upadku +Mining speed: @1=Szybkość kopania: @1 +Very fast=Bardzo szybkie +Extremely fast=Ekstremalnie szybkie +Fast=Szybkie +Slow=Wolne +Very slow=Bardzo wolne +Painfully slow=Boleśnie wolne +Mining durability: @1=Wytrzymałość kopania: @1 +Block breaking strength: @1=Siła niszczenia bloku: @1 +@1 uses=@1 użyć +Unlimited uses=Nielimitowane użycia + From 425c7505ec5ab4b886a92b6b5ec468f2e9606734 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Wed, 26 May 2021 11:42:22 +0200 Subject: [PATCH 215/418] Add polish translation of doc_items --- .../HELP/doc/doc_items/locale/doc_items.pl.tr | 144 ++++++++++++++++++ tools/dicts/polish.dic | 4 + 2 files changed, 148 insertions(+) create mode 100644 mods/HELP/doc/doc_items/locale/doc_items.pl.tr diff --git a/mods/HELP/doc/doc_items/locale/doc_items.pl.tr b/mods/HELP/doc/doc_items/locale/doc_items.pl.tr new file mode 100644 index 000000000..2b0045ef8 --- /dev/null +++ b/mods/HELP/doc/doc_items/locale/doc_items.pl.tr @@ -0,0 +1,144 @@ +# textdomain:doc_items +Using it as fuel turns it into: @1.=Używanie tego jako paliwa zamienia to w: @1. +@1 seconds=@1 sekund(y) +# Item count times item name +%@1×@2=%@1×@2 +# Itemname (25%) +@1 (@2%)=@1 (@2%) +# Itemname (<0.5%) +@1 (<0.5%)=@1 (<0.5%) +# Itemname (ca. 25%) +@1 (ca. @2%)=@1 (ca. @2%) +# List separator (e.g. “one, two, three”) +, =, +# Final list separator (e.g. “One, two and three”) + and = oraz +1 second=1 sekunda +A transparent block, basically empty space. It is usually left behind after digging something.=Przezroczysty blok, praktycznie puste miejsce. Jest zwykle pozostawiany po wykopaniu czegoś. +Air=Powietrze +Blocks=Bloki +Building another block at this block will place it inside and replace it.=Postawienie innego bloku w tym bloku postawi ich wewnątrz i zastąpi go. +Building this block is completely silent.=Budowanie tego bloku jest bezgłośne. +Collidable: @1=Zderzalne: @1 +Description: @1=Opis: @1 +Falling blocks can go through this block; they destroy it when doing so.=Spadające bloki mogą przelecieć przez ten blok; niszczą go gdy tak robią. +Full punch interval: @1 s=Pełny okres uderzenia: @1 s +Hand=Ręka +Hold it in your hand, then leftclick to eat it.=Weź to do ręki, następnie kliknij lewy przycisk by je zjeść. +Hold it in your hand, then leftclick to eat it. But why would you want to do this?=Weź to do ręki, następnie kliknij lewy przycisk by je zjeść. Ale dlaczego chciałabyś to zrobić? +Item reference of all wieldable tools and weapons=Informacje na temat wszystkich narzędzi i broni możliwych do trzymania. +Item reference of blocks and other things which are capable of occupying space=Informacje na temat wszystkich bloków i innych obiektów, które są w stanie zajmować miejsce +Item reference of items which are neither blocks, tools or weapons (esp. crafting items)=Informacje na temat wszystkich rzeczy, które nie są blokami, narzędziami i broniami (głównie materiały do wytwarzania) +Liquids can flow into this block and destroy it.=Płyny mogą wpłynąć na ten blok i go zniszczyć. +Maximum stack size: @1=Maksymalny rozmiar grupy: @1 +Mining level: @1=Poziom kopania: @1 +Mining ratings:=Klasyfikacja kopania +• @1, rating @2: @3 s - @4 s=• @1, klasyfikacja @2: @3 s - @4 s +• @1, rating @2: @3 s=• @1, klasyfikacja @2: @3 s +Mining times:=Czas wykopania: +Mining this block is completely silent.=Wykopanie tego bloku jet bezgłośne. +Miscellaneous items=Różne rzeczy +No=Nie +Pointable: No=Wskazywalne: Nie +Pointable: Only by special items=Wskazywalne: Tylko przez specjalne przedmioty +Pointable: Yes=Wskazywalne: Tak +Punches with this block don't work as usual; melee combat and mining are either not possible or work differently.=Uderzanie tym blokiem nie działa tak jak zwykle; walka wręcz i kopanie są niemożliwe lub działają inaczej. +Punches with this item don't work as usual; melee combat and mining are either not possible or work differently.=Uderzanie tym przedmiotem nie działa tak jak zwykle; walka wręcz i kopanie są niemożliwe lub działają inaczej. +Punches with this tool don't work as usual; melee combat and mining are either not possible or work differently.=Uderzanie tym narzędziem nie działa tak jak zwykle; walka wręcz i kopanie są niemożliwe lub działają inaczej. +Range: @1=Zasięg: @1 +# Range: () +Range: @1 (@2)=Zasięg @1 (@2) +Range: 4=Zasięg: 4 +# Rating used for digging times +Rating @1=Klasyfikacja @1 +# @1 is minimal rating, @2 is maximum rating +Rating @1-@2=Klasyfikacja od @1 do @2 +The fall damage on this block is increased by @1%.=Obrażenia od upadku na tym bloku są zwiększone o @1%. +The fall damage on this block is reduced by @1%.=Obrażenia od upadku na tym bloku są zmniejszone o @1%. +This block allows light to propagate with a small loss of brightness, and sunlight can even go through losslessly.=Ten blok przepuszcza światło z niewielką stratą jasności, a światło słoneczne przepuszcza bezstratnie. +This block allows light to propagate with a small loss of brightness.=Ten blok przepuszcza światło z niewielką stratą jasności. +This block allows sunlight to propagate without loss in brightness.=Ten blok przepuszcza światło słoneczne bez straty jasności. +This block belongs to the @1 group.=Ten blok należy do grupy @1. +This block belongs to these groups: @1.=Ten blok należy do tych grup: @1. +This block can be climbed.=Na ten blok można się wspiąć. +This block can be destroyed by any mining tool immediately.=Ten blok może być zniszczony przez dowolne narzędzie do kopania natychmiastowo. +This block can be destroyed by any mining tool in half a second.=Ten blok może być zniszczony przez dowolne narzędzie do kopania w pół sekundy. +This block can be mined by any mining tool immediately.=Ten blok może być wykopany przez dowolne narzędzie do kopania natychmiastowo. +This block can be mined by any mining tool in half a second.=Ten blok może być wykopany przez dowolne narzędzie do kopania w pół sekundy. +This block can be mined by mining tools which match any of the following mining ratings and its toughness level.=Ten blok może zostać wykopany przez narzędzia do kopania, które pasują do którychkolwiek klasyfikacji kopania i poziomu twardości. +This block can not be destroyed by ordinary mining tools.=Ten blok nie może być zniszczony przez typowe narzędzia do kopania. +This block can not be mined by ordinary mining tools.=Ten blok nie może być wykopany przez typowe narzędzia do kopania. +This block can serve as a smelting fuel with a burning time of @1.=Ten blok może być wykorzystany jako paliwo do przetapiania z czasem palenia @1. +This block causes a damage of @1 hit point per second.=Ten blok zadaje @1 obrażenie na sekundę. +This block causes a damage of @1 hit points per second.=Ten blok zadaje @1 obrażeń na sekundę. +This block connects to blocks of the @1 group.=Ten blok łączy się do bloków z grupy @1. +This block connects to blocks of the following groups: @1.=Ten blok łączy się z blokami z następujących grup: @1. +This block connects to these blocks: @1.=Ten blok łączy się z tymi blokami: @1. +This block connects to this block: @1.=Ten blok łączy się z tym blokiem: @1. +This block decreases your breath and causes a drowning damage of @1 hit point every 2 seconds.=Ten blok zmniejsza twój tlen i zadaje @1 obrażenie co 2 sekundy. +This block decreases your breath and causes a drowning damage of @1 hit points every 2 seconds.=Ten blok zmniejsza twój tlen i zadaje @1 obrażeń co 2 sekundy. +This block is a light source with a light level of @1.=Ten blok jest źródłem światła z poziomem oświetlenia @1. +This block glows faintly with a light level of @1.=Ten blok ma poświatę o poziomie oświetlenia @1. +This block is a building block for creating various buildings.=Ten blok jest blokiem budowlanym do tworzenia różnych budowli. +This block is a liquid with these properties:=Ten blok jest płynem z tymi własnościami: +This block is affected by gravity and can fall.=Na ten blok wpływa grawitacja i może upaść. +This block is completely silent when mined or built.=Ten blok jest bezgłośny przy kopaniu i budowaniu. +This block is completely silent when walked on, mined or built.=Ten blok jest bezgłośny gdy się po nim chodzi, kopie lub buduje. +This block is destroyed when a falling block ends up inside it.=Ten blok jest zniszczony gdy upadający blok upadnie w niego. +This block negates all fall damage.=Ten blok neguje wszystkie obrażenia od upadku. +This block points to liquids.=Ten blok wskazuje na płyny. +This block will drop as an item when a falling block ends up inside it.=Ten blok wypadnie jako przedmiot gdy blok upadnie na niego. +This block will drop as an item when it is not attached to a surrounding block.=Ten blok wypadnie jako przedmiot gdy nie jest połączony z sąsiadującym blokiem. +This block will drop as an item when no collidable block is below it.=Ten blok wypadnie jako przedmiot gdy nie będzie pod nim zderzalnego bloku. +This block will drop the following items when mined: @1.=Z tego bloku wypadną następujące przedmioty po wykopaniu: @1. +This block will drop the following when mined: @1×@2.=Z tego bloku wypadną następujące rzeczy po wykopaniu: @1×@2. +This block will drop the following when mined: @1.=Z tego bloku wypadną następujące rzeczy po wykopaniu: @1. +This block will drop the following when mined: @1.=Z tego bloku wypadną następujące rzeczy po wykopaniu: @1. +This block will make you bounce off with an elasticity of @1%.=Od tego bloku odbijesz się z elastycznością @1%. +This block will randomly drop one of the following when mined: @1.=Z tego bloku wypadnie losowo jedna z następujących rzeczy po wykopaniu: @1. +This block will randomly drop up to @1 drops of the following possible drops when mined: @2.=Z tego bloku losowo wypadnie maksymalnie @1 rzeczy spośród tego zbioru: @2. +This block won't drop anything when mined.=Z tego bloku nic nie wypadnie po wykopaniu. +This is a decorational block.=Ten blok jest dekoracyjny. +This is a melee weapon which deals damage by punching.=To jest broń do walki wręcz, która zadaje obrażenia przy uderzaniu. +Maximum damage per hit:=Maksymalne obrażenia przy uderzeniu: +This item belongs to the @1 group.=Ten przedmiot należy do grupy @1. +This item belongs to these groups: @1.=Ten przedmiot należy do tych grup: @1. +This item can serve as a smelting fuel with a burning time of @1.=Ten przedmiot może być wykorzystany jako paliwo do przetapiania z czasem palenia @1. +This item is primarily used for crafting other items.=Ten przedmiot jest głównie wykorzystywany do wytwarzania innych przedmiotów. +This item points to liquids.=Ten przedmiot wskazuje na płyny. +This tool belongs to the @1 group.=To narzędzie należy do grupy @1. +This tool belongs to these groups: @1.=To narzędzie należy do tych grup: @1. +This tool can serve as a smelting fuel with a burning time of @1.=To narzędzie może być wykorzystany jako paliwo do przetapiania z czasem palenia @1. +This tool is capable of mining.=Tym narzędziem można kopać. +Maximum toughness levels:=Maksymalna poziom twardości: +This tool points to liquids.=To narzędzie wskazuje na płyny. +Tools and weapons=Narzędzia i bronie +Unknown Node=Nieznany węzeł +Usage help: @1=Sposób użycia: @1 +Walking on this block is completely silent.=Chodzenie po tym bloku jest bezgłośne. +Whenever you are not wielding any item, you use the hand which acts as a tool with its own capabilities. When you are wielding an item which is not a mining tool or a weapon it will behave as if it would be the hand.=Gdy nie trzymasz żadnego przedmiotu używasz swojej ręki która działa jak narzędzie ze swoimi własnościami. Gdy trzymasz przedmiot, który nie jest narzędziem do kopania lub bronią, będzie się ono zachowywało jakby było ręką. +Yes=Tak +You can not jump while standing on this block.=Nie możesz skakać gdy stoisz na tym bloku. +any level=dowolny poziom +level 0=poziom 0 +level 0-@1=poziom 0-@1 +unknown=nieznane +Unknown item (@1)=Nieznany przedmiot (@1) +• @1: @2=• @1: @2 +• @1: @2 HP=• @1: @2 HP +• @1: @2, @3=• @1: @2, @3 +• Flowing range: @1=• Zasięg płynięcia: @1 +• No flowing=• Brak płynięcia +• Not renewable=• Nieodnawialne +• Renewable=• Odnawialne +• Viscosity: @1=• Lepkość: @1 +Itemstring: "@1"=Id przedmiotu: "@1" +Durability: @1 uses=Wytrzymałość: @1 użyć +Durability: @1=Wytrzymałość: @1 +Mining durability:=Wytrzymałość kopania: +• @1, level @2: @3 uses=• @1, poziom @2: @3 użyć +• @1, level @2: Unlimited=• @1, poziom @2: Nielimitowane +This block's rotation is affected by the way you place it: Place it on the floor or ceiling for a vertical orientation; place it at the side for a horizontal orientation. Sneaking while placing it leads to a perpendicular orientation instead.=Na rotację tego bloku wpływa sposób postawienia: Postaw go na podłodze lub suficie aby uzyskać pionową orientację; postaw go na boku by uzyskać poziomą orientację. Skradanie się podczas postawiania sprawia, że zostanie postawiony prostopadle. +Toughness level: @1=Poziom twardości: @1 +This block is slippery.=Ten blok jest śliski. + diff --git a/tools/dicts/polish.dic b/tools/dicts/polish.dic index e21585005..197491dd1 100644 --- a/tools/dicts/polish.dic +++ b/tools/dicts/polish.dic @@ -35,6 +35,10 @@ enable disable awards Dozuj +wskazywalne +zderzalne +Zderzalne +zderzalnego Houstonia iskrzyłuda Iskrzyłuda From 4c9eeed499d225552bd7e35a4433dc1c892383bc Mon Sep 17 00:00:00 2001 From: AFCMS Date: Wed, 26 May 2021 16:25:16 +0200 Subject: [PATCH 216/418] Update CONTRIBUTING.md --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 023d89de8..1b5098a4f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -50,7 +50,7 @@ Contributors will be credited in `CREDITS.md`. Each mod must provide `mod.conf`. Each mod which add API functions should store functions inside a global table named like the mod. -Object oriented API shoud be avoided e.g.:`function mobs.register_mod(self)` +Public functions should not use self references but rather just access the table directly. Functions should be defined in this way: ``` function mcl_xyz.stuff(param) end From fd387a65af861e7e8fbd099f067cb9152c69b349 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Wed, 26 May 2021 16:42:12 +0200 Subject: [PATCH 217/418] fix some codestyle issues in hudbars --- mods/HUD/hudbars/init.lua | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/mods/HUD/hudbars/init.lua b/mods/HUD/hudbars/init.lua index 6f90aa03d..a88d14dcf 100644 --- a/mods/HUD/hudbars/init.lua +++ b/mods/HUD/hudbars/init.lua @@ -1,17 +1,22 @@ -local S = minetest.get_translator("hudbars") +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) + +local S = minetest.get_translator(modname) local N = function(s) return s end -hb = {} +local math = math +local table = table -hb.hudtables = {} - --- number of registered HUD bars -hb.hudbars_count = 0 - --- table which records which HUD bar slots have been “registered” so far; used for automatic positioning -hb.registered_slots = {} - -hb.settings = {} +hb = { + hudtables = {}, + -- number of registered HUD bars + hudbars_count = 0, + -- table which records which HUD bar slots have been “registered” so far; used for automatic positioning + registered_slots = {}, + settings = {}, + -- Table which contains all players with active default HUD bars (only for internal use) + players = {}, +} function hb.load_setting(sname, stype, defaultval, valid_values) local sval @@ -45,7 +50,8 @@ function hb.load_setting(sname, stype, defaultval, valid_values) end -- Load default settings -dofile(minetest.get_modpath("hudbars").."/default_settings.lua") +dofile(modpath.."/default_settings.lua") + if minetest.get_modpath("mcl_experience") and not minetest.is_creative_enabled("") then -- reserve some space for experience bar: hb.settings.start_offset_left.y = hb.settings.start_offset_left.y - 20 @@ -85,9 +91,6 @@ local function make_label(format_string, format_string_config, label, start_valu return ret end --- Table which contains all players with active default HUD bars (only for internal use) -hb.players = {} - function hb.value_to_barlength(value, max) if max == 0 then return 0 From ee9577b62597bab6368b66bf32985f03f7c6da5d Mon Sep 17 00:00:00 2001 From: AFCMS Date: Wed, 26 May 2021 16:43:36 +0200 Subject: [PATCH 218/418] fix functions in mcl_hbarmor --- mods/HUD/mcl_hbarmor/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/HUD/mcl_hbarmor/init.lua b/mods/HUD/mcl_hbarmor/init.lua index 9e5aa634b..f8fa6e619 100644 --- a/mods/HUD/mcl_hbarmor/init.lua +++ b/mods/HUD/mcl_hbarmor/init.lua @@ -21,11 +21,11 @@ if tonumber(set) ~= nil then end -local must_hide = function(playername, arm) +local function must_hide(playername, arm) return arm == 0 end -local arm_printable = function(arm) +local function arm_printable(arm) return math.ceil(math.floor(arm+0.5)) end From 5fc3256930545d28eca105eec0ec785558e39b1b Mon Sep 17 00:00:00 2001 From: AFCMS Date: Wed, 26 May 2021 16:55:32 +0200 Subject: [PATCH 219/418] fix codestyle in mcl_hbarmor --- mods/HUD/mcl_hbarmor/init.lua | 36 +++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/mods/HUD/mcl_hbarmor/init.lua b/mods/HUD/mcl_hbarmor/init.lua index f8fa6e619..422a409fb 100644 --- a/mods/HUD/mcl_hbarmor/init.lua +++ b/mods/HUD/mcl_hbarmor/init.lua @@ -1,23 +1,26 @@ -local S = minetest.get_translator("mcl_hbarmor") +local S = minetest.get_translator(minetest.get_current_modname()) -local mcl_hbarmor = {} +local math = math +local tonumber = tonumber --- HUD statbar values -mcl_hbarmor.armor = {} +local get_connected_players = minetest.get_connected_players --- Stores if player's HUD bar has been initialized so far. -mcl_hbarmor.player_active = {} +local mcl_hbarmor = { + -- HUD statbar values + armor = {}, + -- Stores if player's HUD bar has been initialized so far. + player_active = {}, + -- Time difference in seconds between updates to the HUD armor bar. + -- Increase this number for slow servers. + tick = 0.1, + -- If true, the armor bar is hidden when the player does not wear any armor + autohide = true, +} --- Time difference in seconds between updates to the HUD armor bar. --- Increase this number for slow servers. -mcl_hbarmor.tick = 0.1 +local tick_config = minetest.settings:get("mcl_hbarmor_tick") --- If true, the armor bar is hidden when the player does not wear any armor -mcl_hbarmor.autohide = true - -set = minetest.settings:get("mcl_hbarmor_tick") -if tonumber(set) ~= nil then - mcl_hbarmor.tick = tonumber(set) +if tonumber(tick_config) ~= nil then + mcl_hbarmor.tick = tonumber(tick_config) end @@ -106,12 +109,13 @@ end) local main_timer = 0 local timer = 0 minetest.register_globalstep(function(dtime) + --TODO: replace this by playerglobalstep API then implemented main_timer = main_timer + dtime timer = timer + dtime if main_timer > mcl_hbarmor.tick or timer > 4 then if minetest.settings:get_bool("enable_damage") then if main_timer > mcl_hbarmor.tick then main_timer = 0 end - for _,player in pairs(minetest.get_connected_players()) do + for _,player in pairs(get_connected_players()) do local name = player:get_player_name() if mcl_hbarmor.player_active[name] == true then local ret = mcl_hbarmor.get_armor(player) From bb77443892805a39471bc7d2776639cd2b72c87f Mon Sep 17 00:00:00 2001 From: NO11 Date: Wed, 26 May 2021 17:43:42 +0000 Subject: [PATCH 220/418] [mcl_core] fix function codestyle in functions.lua --- mods/ITEMS/mcl_core/functions.lua | 36 +++++++++++++++---------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index 7f9a83bc9..f66240b94 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -53,7 +53,7 @@ minetest.register_abm({ -- -- Functions -mcl_core.grow_cactus = function(pos, node) +function mcl_core.grow_cactus(pos, node) pos.y = pos.y-1 local name = minetest.get_node(pos).name if minetest.get_item_group(name, "sand") ~= 0 then @@ -71,7 +71,7 @@ mcl_core.grow_cactus = function(pos, node) end end -mcl_core.grow_reeds = function(pos, node) +function mcl_core.grow_reeds(pos, node) pos.y = pos.y-1 local name = minetest.get_node(pos).name if minetest.get_item_group(name, "soil_sugarcane") ~= 0 then @@ -114,8 +114,8 @@ local function drop_attached_node(p) end -- Helper function for node actions for liquid flow -local liquid_flow_action = function(pos, group, action) - local check_detach = function(pos, xp, yp, zp) +local function liquid_flow_action(pos, group, action) + local function check_detach(pos, xp, yp, zp) local p = {x=pos.x+xp, y=pos.y+yp, z=pos.z+zp} local n = minetest.get_node_or_nil(p) if not n then @@ -594,13 +594,13 @@ function mcl_core.generate_v6_spruce_tree(pos) vm:write_to_map() end -mcl_core.generate_spruce_tree = function(pos) +function mcl_core.generate_spruce_tree(pos) local r = math.random(1, 3) local path = minetest.get_modpath("mcl_core") .. "/schematics/mcl_core_spruce_"..r..".mts" minetest.place_schematic({ x = pos.x - 3, y = pos.y - 1, z = pos.z - 3 }, path, "0", nil, false) end -mcl_core.generate_huge_spruce_tree = function(pos) +function mcl_core.generate_huge_spruce_tree(pos) local r1 = math.random(1, 2) local r2 = math.random(1, 4) local path @@ -911,7 +911,7 @@ minetest.register_lbm({ -------------------------- local treelight = 9 -local sapling_grow_action = function(tree_id, soil_needed, one_by_one, two_by_two, sapling) +local function sapling_grow_action(tree_id, soil_needed, one_by_one, two_by_two, sapling) return function(pos) local meta = minetest.get_meta(pos) if meta:get("grown") then return end @@ -953,7 +953,7 @@ local sapling_grow_action = function(tree_id, soil_needed, one_by_one, two_by_tw -- This sapling grows in a special way when there are 4 saplings in a 2×2 pattern if two_by_two then -- Check 8 surrounding saplings and try to find a 2×2 pattern - local is_sapling = function(pos, sapling) + local function is_sapling(pos, sapling) return minetest.get_node(pos).name == sapling end local p2 = {x=pos.x+1, y=pos.y, z=pos.z} @@ -1040,7 +1040,7 @@ local grow_birch = sapling_grow_action(BIRCH_TREE_ID, 1, true, false) -- pos: Position -- node: Node table of the node at this position, from minetest.get_node -- Returns true on success and false on failure -mcl_core.grow_sapling = function(pos, node) +function mcl_core.grow_sapling(pos, node) local grow if node.name == "mcl_core:sapling" then grow = grow_oak @@ -1245,7 +1245,7 @@ minetest.register_abm({ end -- Add vines below pos (if empty) - local spread_down = function(origin, target, dir, node) + local function spread_down(origin, target, dir, node) if math.random(1, 2) == 1 then if minetest.get_node(target).name == "air" then minetest.add_node(target, {name = "mcl_core:vine", param2 = node.param2}) @@ -1254,7 +1254,7 @@ minetest.register_abm({ end -- Add vines above pos if it is backed up - local spread_up = function(origin, target, dir, node) + local function spread_up(origin, target, dir, node) local vines_in_area = minetest.find_nodes_in_area({x=origin.x-4, y=origin.y-1, z=origin.z-4}, {x=origin.x+4, y=origin.y+1, z=origin.z+4}, "mcl_core:vine") -- Less then 4 vines blocks around the ticked vines block (remember the ticked block is counted by above function as well) if #vines_in_area < 5 then @@ -1273,7 +1273,7 @@ minetest.register_abm({ end end - local spread_horizontal = function(origin, target, dir, node) + local function spread_horizontal(origin, target, dir, node) local vines_in_area = minetest.find_nodes_in_area({x=origin.x-4, y=origin.y-1, z=origin.z-4}, {x=origin.x+4, y=origin.y+1, z=origin.z+4}, "mcl_core:vine") -- Less then 4 vines blocks around the ticked vines block (remember the ticked block is counted by above function as well) if #vines_in_area < 5 then @@ -1310,7 +1310,7 @@ minetest.register_abm({ }) -- Returns true of the node supports vines -mcl_core.supports_vines = function(nodename) +function mcl_core.supports_vines(nodename) local def = minetest.registered_nodes[nodename] -- Rules: 1) walkable 2) full cube return def.walkable and @@ -1530,7 +1530,7 @@ end -- -- The snowable nodes also MUST have _mcl_snowed defined to contain the name -- of the snowed node. -mcl_core.register_snowed_node = function(itemstring_snowed, itemstring_clear, tiles, sounds, clear_colorization, desc) +function mcl_core.register_snowed_node(itemstring_snowed, itemstring_clear, tiles, sounds, clear_colorization, desc) local def = table.copy(minetest.registered_nodes[itemstring_clear]) local create_doc_alias if def.description then @@ -1593,7 +1593,7 @@ end -- Reverts a snowed dirtlike node at pos to its original snow-less form. -- This function assumes there is no snow cover node above. This function -- MUST NOT be called if there is a snow cover node above pos. -mcl_core.clear_snow_dirt = function(pos, node) +function mcl_core.clear_snow_dirt(pos, node) local def = minetest.registered_nodes[node.name] if def._mcl_snowless then minetest.swap_node(pos, {name = def._mcl_snowless, param2=node.param2}) @@ -1605,7 +1605,7 @@ end -- on_construct -- Makes constructed snowable node snowed if placed below a snow cover node. -mcl_core.on_snowable_construct = function(pos) +function mcl_core.on_snowable_construct(pos) -- Myself local node = minetest.get_node(pos) @@ -1633,7 +1633,7 @@ end -- on_construct -- Makes snowable node below snowed. -mcl_core.on_snow_construct = function(pos) +function mcl_core.on_snow_construct(pos) local npos = {x=pos.x, y=pos.y-1, z=pos.z} local node = minetest.get_node(npos) local def = minetest.registered_nodes[node.name] @@ -1643,7 +1643,7 @@ mcl_core.on_snow_construct = function(pos) end -- after_destruct -- Clears snowed dirtlike node below. -mcl_core.after_snow_destruct = function(pos) +function mcl_core.after_snow_destruct(pos) local nn = minetest.get_node(pos).name -- No-op if snow was replaced with snow if minetest.get_item_group(nn, "snow_cover") == 1 then From 211b078d3a112c47be808afe313247c8aafc5868 Mon Sep 17 00:00:00 2001 From: NO11 Date: Wed, 26 May 2021 17:51:24 +0000 Subject: [PATCH 221/418] [mcl_core] fix function codestyle in nodes_base.lua --- mods/ITEMS/mcl_core/nodes_base.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index 39015e53b..9baa6c33e 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -86,7 +86,7 @@ minetest.register_node("mcl_core:stone_with_gold", { }) local redstone_timer = 68.28 -local redstone_ore_activate = function(pos) +local function redstone_ore_activate(pos) minetest.swap_node(pos, {name="mcl_core:stone_with_redstone_lit"}) local t = minetest.get_node_timer(pos) t:start(redstone_timer) @@ -124,7 +124,7 @@ minetest.register_node("mcl_core:stone_with_redstone", { } }) -local redstone_ore_reactivate = function(pos) +local function redstone_ore_reactivate(pos) local t = minetest.get_node_timer(pos) t:start(redstone_timer) end @@ -864,7 +864,7 @@ minetest.register_node("mcl_core:packed_ice", { -- Frosted Ice (4 nodes) for i=0,3 do local ice = {} - ice.increase_age = function(pos, ice_near, first_melt) + function ice.increase_age(pos, ice_near, first_melt) -- Increase age of frosted age or turn to water source if too old local nn = minetest.get_node(pos).name local age = tonumber(string.sub(nn, -1)) From 5b433038732317304c91fa3b78505b6ebd2910ce Mon Sep 17 00:00:00 2001 From: NO11 Date: Wed, 26 May 2021 17:54:58 +0000 Subject: [PATCH 222/418] [mcl_core] fix function codestyle in nodes_climb.lua --- mods/ITEMS/mcl_core/nodes_climb.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_core/nodes_climb.lua b/mods/ITEMS/mcl_core/nodes_climb.lua index 3b2d3ab60..ad861b4f2 100644 --- a/mods/ITEMS/mcl_core/nodes_climb.lua +++ b/mods/ITEMS/mcl_core/nodes_climb.lua @@ -1,7 +1,7 @@ -- Climbable nodes local S = minetest.get_translator("mcl_core") -local rotate_climbable = function(pos, node, user, mode) +local function rotate_climbable(pos, node, user, mode) if mode == screwdriver.ROTATE_FACE then local r = screwdriver.rotate.wallmounted(pos, node, mode) node.param2 = r From 90bab9026b5f7c2b89a930368d0784f1d67f0857 Mon Sep 17 00:00:00 2001 From: NO11 Date: Wed, 26 May 2021 17:57:43 +0000 Subject: [PATCH 223/418] [mcl_core] fix function codestyle in nodes_liquid.lua --- mods/ITEMS/mcl_core/nodes_liquid.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_core/nodes_liquid.lua b/mods/ITEMS/mcl_core/nodes_liquid.lua index 99d33cf59..42276685e 100644 --- a/mods/ITEMS/mcl_core/nodes_liquid.lua +++ b/mods/ITEMS/mcl_core/nodes_liquid.lua @@ -212,7 +212,7 @@ S("• When lava is directly above water, the water turns into stone."), _mcl_hardness = -1, }) -local emit_lava_particle = function(pos) +local function emit_lava_particle(pos) local node = minetest.get_node(pos) if minetest.get_item_group(node.name, "lava_source") == 0 then return From 656891ec61412f64e3339d24e19b95954c56078a Mon Sep 17 00:00:00 2001 From: NO11 Date: Wed, 26 May 2021 18:02:28 +0000 Subject: [PATCH 224/418] [mcl_core] fix function codestyle in nodes_trees.lua --- mods/ITEMS/mcl_core/nodes_trees.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_core/nodes_trees.lua b/mods/ITEMS/mcl_core/nodes_trees.lua index cc64cd9cf..a72935f05 100644 --- a/mods/ITEMS/mcl_core/nodes_trees.lua +++ b/mods/ITEMS/mcl_core/nodes_trees.lua @@ -8,7 +8,7 @@ if mod_screwdriver then end -- Register tree trunk (wood) and bark -local register_tree_trunk = function(subname, description_trunk, description_bark, longdesc, tile_inner, tile_bark, stripped_varient) +local function register_tree_trunk(subname, description_trunk, description_bark, longdesc, tile_inner, tile_bark, stripped_varient) minetest.register_node("mcl_core:"..subname, { description = description_trunk, _doc_items_longdesc = longdesc, @@ -91,7 +91,7 @@ local register_stripped_trunk = function(subname, description_stripped_trunk, de }) end -local register_wooden_planks = function(subname, description, tiles) +local function register_wooden_planks(subname, description, tiles) minetest.register_node("mcl_core:"..subname, { description = description, _doc_items_longdesc = doc.sub.items.temp.build, @@ -106,7 +106,7 @@ local register_wooden_planks = function(subname, description, tiles) }) end -local register_leaves = function(subname, description, longdesc, tiles, sapling, drop_apples, sapling_chances, leafdecay_distance) +local function register_leaves(subname, description, longdesc, tiles, sapling, drop_apples, sapling_chances, leafdecay_distance) if leafdecay_distance == nil then leafdecay_distance = 4 end @@ -173,7 +173,7 @@ local register_leaves = function(subname, description, longdesc, tiles, sapling, }) end -local register_sapling = function(subname, description, longdesc, tt_help, texture, selbox) +local function register_sapling(subname, description, longdesc, tt_help, texture, selbox) minetest.register_node("mcl_core:"..subname, { description = description, _tt_help = tt_help, From 1b0d6a2c2dffe94022c42892e84fbeb9c34b4c71 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 26 May 2021 20:48:00 +0200 Subject: [PATCH 225/418] Fix timing out of assist death message sources --- mods/HUD/mcl_death_messages/init.lua | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/mods/HUD/mcl_death_messages/init.lua b/mods/HUD/mcl_death_messages/init.lua index 0432c3488..107daa2a3 100644 --- a/mods/HUD/mcl_death_messages/init.lua +++ b/mods/HUD/mcl_death_messages/init.lua @@ -237,12 +237,10 @@ mcl_damage.register_on_damage(function(obj, damage, reason) end) minetest.register_globalstep(function(dtime) - local new_assist = {} - for obj, tbl in pairs(mcl_death_messages.assist) do tbl.timeout = tbl.timeout - dtime - if (obj:is_player() or obj:get_luaentity()) and tbl.timeout > 0 then - new_assist[obj] = tbl + if not obj:is_player() and not obj:get_luaentity() or tbl.timeout > 0 then + mcl_death_messages.assist[obj] = nil end end end) From 772f48ed58d81c44b6a9dbbb7cbfb2ad274deacc Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 26 May 2021 20:51:39 +0200 Subject: [PATCH 226/418] Fix crash / luacheck warning caused by armor with thorns level > 10 --- mods/ITEMS/mcl_armor/damage.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_armor/damage.lua b/mods/ITEMS/mcl_armor/damage.lua index f17033495..ed616397d 100644 --- a/mods/ITEMS/mcl_armor/damage.lua +++ b/mods/ITEMS/mcl_armor/damage.lua @@ -68,7 +68,7 @@ mcl_damage.register_modifier(function(obj, damage, reason) if do_irregular_damage or thorns_damage_regular < 4 and math.random() < enchantments.thorns * 0.15 then if do_irregular_damage then - thorns_damage_irregular = thorns_damage_irregular + throrns_level - 10 + thorns_damage_irregular = thorns_damage_irregular + enchantments.thorns - 10 else thorns_damage_regular = math.min(4, thorns_damage_regular + math.random(4)) end From c57ead698591ea205d184e6a84b760816daaadce Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 26 May 2021 20:56:00 +0200 Subject: [PATCH 227/418] Use next() instead of one-time loop to fix luacheck warning in mcl_util.calculate_durability --- mods/CORE/mcl_util/init.lua | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/mods/CORE/mcl_util/init.lua b/mods/CORE/mcl_util/init.lua index 1ac2c1f9b..a7504af08 100644 --- a/mods/CORE/mcl_util/init.lua +++ b/mods/CORE/mcl_util/init.lua @@ -456,12 +456,7 @@ function mcl_util.calculate_durability(itemstack) end end end - if not uses then - for _, v in pairs(itemstack:get_tool_capabilities().groupcaps) do - uses = v.uses - break - end - end + uses = uses or (next(itemstack:get_tool_capabilities().groupcaps) or {}).uses end return uses or 0 From 138a3cd154ac6498cb4f829bd39390579bb383f0 Mon Sep 17 00:00:00 2001 From: epCode Date: Wed, 26 May 2021 19:13:30 -0700 Subject: [PATCH 228/418] Add in header blend file --- menu/Header.blend | Bin 0 -> 1670380 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 menu/Header.blend diff --git a/menu/Header.blend b/menu/Header.blend new file mode 100644 index 0000000000000000000000000000000000000000..78a9f6158d1bde99a24376353485d5becf84dd73 GIT binary patch literal 1670380 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

xSva)lF}pN%_&W7%aM24_cW_dSHbz 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